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
15int ssusb_host_init(struct ssusb_mtk *ssusb, struct device_node *parent_dn);
16void ssusb_host_exit(struct ssusb_mtk *ssusb);
17int ssusb_wakeup_of_property_parse(struct ssusb_mtk *ssusb,
18 struct device_node *dn);
19int ssusb_host_resume(struct ssusb_mtk *ssusb, bool p0_skipped);
20int ssusb_host_suspend(struct ssusb_mtk *ssusb);
21void ssusb_wakeup_set(struct ssusb_mtk *ssusb, bool enable);
22
23#else
24
25static inline int ssusb_host_init(struct ssusb_mtk *ssusb,
26
27 struct device_node *parent_dn)
28{
29 return 0;
30}
31
32static inline void ssusb_host_exit(struct ssusb_mtk *ssusb)
33{}
34
35static inline int ssusb_wakeup_of_property_parse(
36 struct ssusb_mtk *ssusb, struct device_node *dn)
37{
38 return 0;
39}
40
41static inline int ssusb_host_resume(struct ssusb_mtk *ssusb, bool p0_skipped)
42{
43 return 0;
44}
45
46static inline int ssusb_host_suspend(struct ssusb_mtk *ssusb)
47{
48 return 0;
49}
50
51static 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)
58int ssusb_gadget_init(struct ssusb_mtk *ssusb);
59void ssusb_gadget_exit(struct ssusb_mtk *ssusb);
60int ssusb_gadget_suspend(struct ssusb_mtk *ssusb, pm_message_t msg);
61int ssusb_gadget_resume(struct ssusb_mtk *ssusb, pm_message_t msg);
62bool ssusb_gadget_ip_sleep_check(struct ssusb_mtk *ssusb);
63
64#else
65static inline int ssusb_gadget_init(struct ssusb_mtk *ssusb)
66{
67 return 0;
68}
69
70static inline void ssusb_gadget_exit(struct ssusb_mtk *ssusb)
71{}
72
73static inline int
74ssusb_gadget_suspend(struct ssusb_mtk *ssusb, pm_message_t msg)
75{
76 return 0;
77}
78
79static inline int
80ssusb_gadget_resume(struct ssusb_mtk *ssusb, pm_message_t msg)
81{
82 return 0;
83}
84
85static 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)
94int ssusb_otg_switch_init(struct ssusb_mtk *ssusb);
95void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb);
96void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host);
97int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on);
98void ssusb_set_force_mode(struct ssusb_mtk *ssusb,
99 enum mtu3_dr_force_mode mode);
100
101#else
102
103static inline int ssusb_otg_switch_init(struct ssusb_mtk *ssusb)
104{
105 return 0;
106}
107
108static inline void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb)
109{}
110
111static inline void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host)
112{}
113
114static inline int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on)
115{
116 return 0;
117}
118
119static inline void
120ssusb_set_force_mode(struct ssusb_mtk *ssusb, enum mtu3_dr_force_mode mode)
121{}
122
123#endif
124
125#endif /* _MTU3_DR_H_ */
126

source code of linux/drivers/usb/mtu3/mtu3_dr.h