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