1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * mtu3_dr.h - dual role switch and host glue layer header |
4 | * |
5 | * Copyright (C) 2016 MediaTek Inc. |
6 | * |
7 | * Author: Chunfeng Yun <chunfeng.yun@mediatek.com> |
8 | */ |
9 | |
10 | #ifndef _MTU3_DR_H_ |
11 | #define _MTU3_DR_H_ |
12 | |
13 | #if IS_ENABLED(CONFIG_USB_MTU3_HOST) || IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE) |
14 | |
15 | int ssusb_host_init(struct ssusb_mtk *ssusb, struct device_node *parent_dn); |
16 | void ssusb_host_exit(struct ssusb_mtk *ssusb); |
17 | int ssusb_wakeup_of_property_parse(struct ssusb_mtk *ssusb, |
18 | struct device_node *dn); |
19 | int ssusb_host_resume(struct ssusb_mtk *ssusb, bool p0_skipped); |
20 | int ssusb_host_suspend(struct ssusb_mtk *ssusb); |
21 | void ssusb_wakeup_set(struct ssusb_mtk *ssusb, bool enable); |
22 | |
23 | #else |
24 | |
25 | static inline int ssusb_host_init(struct ssusb_mtk *ssusb, |
26 | |
27 | struct device_node *parent_dn) |
28 | { |
29 | return 0; |
30 | } |
31 | |
32 | static inline void ssusb_host_exit(struct ssusb_mtk *ssusb) |
33 | {} |
34 | |
35 | static inline int ssusb_wakeup_of_property_parse( |
36 | struct ssusb_mtk *ssusb, struct device_node *dn) |
37 | { |
38 | return 0; |
39 | } |
40 | |
41 | static inline int ssusb_host_resume(struct ssusb_mtk *ssusb, bool p0_skipped) |
42 | { |
43 | return 0; |
44 | } |
45 | |
46 | static inline int ssusb_host_suspend(struct ssusb_mtk *ssusb) |
47 | { |
48 | return 0; |
49 | } |
50 | |
51 | static inline void ssusb_wakeup_set(struct ssusb_mtk *ssusb, bool enable) |
52 | {} |
53 | |
54 | #endif |
55 | |
56 | |
57 | #if IS_ENABLED(CONFIG_USB_MTU3_GADGET) || IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE) |
58 | int ssusb_gadget_init(struct ssusb_mtk *ssusb); |
59 | void ssusb_gadget_exit(struct ssusb_mtk *ssusb); |
60 | int ssusb_gadget_suspend(struct ssusb_mtk *ssusb, pm_message_t msg); |
61 | int ssusb_gadget_resume(struct ssusb_mtk *ssusb, pm_message_t msg); |
62 | bool ssusb_gadget_ip_sleep_check(struct ssusb_mtk *ssusb); |
63 | |
64 | #else |
65 | static inline int ssusb_gadget_init(struct ssusb_mtk *ssusb) |
66 | { |
67 | return 0; |
68 | } |
69 | |
70 | static inline void ssusb_gadget_exit(struct ssusb_mtk *ssusb) |
71 | {} |
72 | |
73 | static inline int |
74 | ssusb_gadget_suspend(struct ssusb_mtk *ssusb, pm_message_t msg) |
75 | { |
76 | return 0; |
77 | } |
78 | |
79 | static inline int |
80 | ssusb_gadget_resume(struct ssusb_mtk *ssusb, pm_message_t msg) |
81 | { |
82 | return 0; |
83 | } |
84 | |
85 | static inline bool ssusb_gadget_ip_sleep_check(struct ssusb_mtk *ssusb) |
86 | { |
87 | return true; |
88 | } |
89 | |
90 | #endif |
91 | |
92 | |
93 | #if IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE) |
94 | int ssusb_otg_switch_init(struct ssusb_mtk *ssusb); |
95 | void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb); |
96 | void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host); |
97 | int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on); |
98 | void ssusb_set_force_mode(struct ssusb_mtk *ssusb, |
99 | enum mtu3_dr_force_mode mode); |
100 | |
101 | #else |
102 | |
103 | static inline int ssusb_otg_switch_init(struct ssusb_mtk *ssusb) |
104 | { |
105 | return 0; |
106 | } |
107 | |
108 | static inline void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb) |
109 | {} |
110 | |
111 | static inline void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host) |
112 | {} |
113 | |
114 | static inline int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on) |
115 | { |
116 | return 0; |
117 | } |
118 | |
119 | static inline void |
120 | ssusb_set_force_mode(struct ssusb_mtk *ssusb, enum mtu3_dr_force_mode mode) |
121 | {} |
122 | |
123 | #endif |
124 | |
125 | #endif /* _MTU3_DR_H_ */ |
126 | |