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_enable(struct ssusb_mtk *ssusb); 20 int ssusb_host_disable(struct ssusb_mtk *ssusb, bool suspend); 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_enable(struct ssusb_mtk *ssusb) 42 { 43 return 0; 44 } 45 46 static inline int ssusb_host_disable(struct ssusb_mtk *ssusb, bool suspend) 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 #else 61 static inline int ssusb_gadget_init(struct ssusb_mtk *ssusb) 62 { 63 return 0; 64 } 65 66 static inline void ssusb_gadget_exit(struct ssusb_mtk *ssusb) 67 {} 68 #endif 69 70 71 #if IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE) 72 int ssusb_otg_switch_init(struct ssusb_mtk *ssusb); 73 void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb); 74 int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on); 75 void ssusb_set_force_mode(struct ssusb_mtk *ssusb, 76 enum mtu3_dr_force_mode mode); 77 78 #else 79 80 static inline int ssusb_otg_switch_init(struct ssusb_mtk *ssusb) 81 { 82 return 0; 83 } 84 85 static inline void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb) 86 {} 87 88 static inline int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on) 89 { 90 return 0; 91 } 92 93 static inline void 94 ssusb_set_force_mode(struct ssusb_mtk *ssusb, enum mtu3_dr_force_mode mode) 95 {} 96 97 #endif 98 99 #endif /* _MTU3_DR_H_ */ 100