xref: /openbmc/linux/drivers/usb/mtu3/mtu3_dr.h (revision b3f4e727)
1b3f4e727SChunfeng Yun /*
2b3f4e727SChunfeng Yun  * mtu3_dr.h - dual role switch and host glue layer header
3b3f4e727SChunfeng Yun  *
4b3f4e727SChunfeng Yun  * Copyright (C) 2016 MediaTek Inc.
5b3f4e727SChunfeng Yun  *
6b3f4e727SChunfeng Yun  * Author: Chunfeng Yun <chunfeng.yun@mediatek.com>
7b3f4e727SChunfeng Yun  *
8b3f4e727SChunfeng Yun  * This software is licensed under the terms of the GNU General Public
9b3f4e727SChunfeng Yun  * License version 2, as published by the Free Software Foundation, and
10b3f4e727SChunfeng Yun  * may be copied, distributed, and modified under those terms.
11b3f4e727SChunfeng Yun  *
12b3f4e727SChunfeng Yun  * This program is distributed in the hope that it will be useful,
13b3f4e727SChunfeng Yun  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14b3f4e727SChunfeng Yun  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15b3f4e727SChunfeng Yun  * GNU General Public License for more details.
16b3f4e727SChunfeng Yun  *
17b3f4e727SChunfeng Yun  */
18b3f4e727SChunfeng Yun 
19b3f4e727SChunfeng Yun #ifndef _MTU3_DR_H_
20b3f4e727SChunfeng Yun #define _MTU3_DR_H_
21b3f4e727SChunfeng Yun 
22b3f4e727SChunfeng Yun #if IS_ENABLED(CONFIG_USB_MTU3_HOST)
23b3f4e727SChunfeng Yun 
24b3f4e727SChunfeng Yun int ssusb_host_init(struct ssusb_mtk *ssusb, struct device_node *parent_dn);
25b3f4e727SChunfeng Yun void ssusb_host_exit(struct ssusb_mtk *ssusb);
26b3f4e727SChunfeng Yun int ssusb_wakeup_of_property_parse(struct ssusb_mtk *ssusb,
27b3f4e727SChunfeng Yun 				struct device_node *dn);
28b3f4e727SChunfeng Yun int ssusb_host_enable(struct ssusb_mtk *ssusb);
29b3f4e727SChunfeng Yun int ssusb_host_disable(struct ssusb_mtk *ssusb, bool suspend);
30b3f4e727SChunfeng Yun int ssusb_wakeup_enable(struct ssusb_mtk *ssusb);
31b3f4e727SChunfeng Yun void ssusb_wakeup_disable(struct ssusb_mtk *ssusb);
32b3f4e727SChunfeng Yun 
33b3f4e727SChunfeng Yun #else
34b3f4e727SChunfeng Yun 
35b3f4e727SChunfeng Yun static inline int ssusb_host_init(struct ssusb_mtk *ssusb,
36b3f4e727SChunfeng Yun 
37b3f4e727SChunfeng Yun 	struct device_node *parent_dn)
38b3f4e727SChunfeng Yun {
39b3f4e727SChunfeng Yun 	return 0;
40b3f4e727SChunfeng Yun }
41b3f4e727SChunfeng Yun 
42b3f4e727SChunfeng Yun static inline void ssusb_host_exit(struct ssusb_mtk *ssusb)
43b3f4e727SChunfeng Yun {}
44b3f4e727SChunfeng Yun 
45b3f4e727SChunfeng Yun static inline int ssusb_wakeup_of_property_parse(
46b3f4e727SChunfeng Yun 	struct ssusb_mtk *ssusb, struct device_node *dn)
47b3f4e727SChunfeng Yun {
48b3f4e727SChunfeng Yun 	return 0;
49b3f4e727SChunfeng Yun }
50b3f4e727SChunfeng Yun 
51b3f4e727SChunfeng Yun static inline int ssusb_host_enable(struct ssusb_mtk *ssusb)
52b3f4e727SChunfeng Yun {
53b3f4e727SChunfeng Yun 	return 0;
54b3f4e727SChunfeng Yun }
55b3f4e727SChunfeng Yun 
56b3f4e727SChunfeng Yun static inline int ssusb_host_disable(struct ssusb_mtk *ssusb, bool suspend)
57b3f4e727SChunfeng Yun {
58b3f4e727SChunfeng Yun 	return 0;
59b3f4e727SChunfeng Yun }
60b3f4e727SChunfeng Yun 
61b3f4e727SChunfeng Yun static inline int ssusb_wakeup_enable(struct ssusb_mtk *ssusb)
62b3f4e727SChunfeng Yun {
63b3f4e727SChunfeng Yun 	return 0;
64b3f4e727SChunfeng Yun }
65b3f4e727SChunfeng Yun 
66b3f4e727SChunfeng Yun static inline void ssusb_wakeup_disable(struct ssusb_mtk *ssusb)
67b3f4e727SChunfeng Yun {}
68b3f4e727SChunfeng Yun 
69b3f4e727SChunfeng Yun #endif
70b3f4e727SChunfeng Yun 
71b3f4e727SChunfeng Yun 
72b3f4e727SChunfeng Yun #if IS_ENABLED(CONFIG_USB_MTU3_GADGET)
73b3f4e727SChunfeng Yun int ssusb_gadget_init(struct ssusb_mtk *ssusb);
74b3f4e727SChunfeng Yun void ssusb_gadget_exit(struct ssusb_mtk *ssusb);
75b3f4e727SChunfeng Yun #else
76b3f4e727SChunfeng Yun static inline int ssusb_gadget_init(struct ssusb_mtk *ssusb)
77b3f4e727SChunfeng Yun {
78b3f4e727SChunfeng Yun 	return 0;
79b3f4e727SChunfeng Yun }
80b3f4e727SChunfeng Yun 
81b3f4e727SChunfeng Yun static inline void ssusb_gadget_exit(struct ssusb_mtk *ssusb)
82b3f4e727SChunfeng Yun {}
83b3f4e727SChunfeng Yun #endif
84b3f4e727SChunfeng Yun 
85b3f4e727SChunfeng Yun #endif		/* _MTU3_DR_H_ */
86