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 void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host); 75 int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on); 76 void ssusb_set_force_mode(struct ssusb_mtk *ssusb, 77 enum mtu3_dr_force_mode mode); 78 79 #else 80 81 static inline int ssusb_otg_switch_init(struct ssusb_mtk *ssusb) 82 { 83 return 0; 84 } 85 86 static inline void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb) 87 {} 88 89 static inline void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host) 90 {} 91 92 static inline int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on) 93 { 94 return 0; 95 } 96 97 static inline void 98 ssusb_set_force_mode(struct ssusb_mtk *ssusb, enum mtu3_dr_force_mode mode) 99 {} 100 101 #endif 102 103 #endif /* _MTU3_DR_H_ */ 104