18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * mtu3_dr.h - dual role switch and host glue layer header 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2016 MediaTek Inc. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Author: Chunfeng Yun <chunfeng.yun@mediatek.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef _MTU3_DR_H_ 118c2ecf20Sopenharmony_ci#define _MTU3_DR_H_ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_USB_MTU3_HOST) || IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE) 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ciint ssusb_host_init(struct ssusb_mtk *ssusb, struct device_node *parent_dn); 168c2ecf20Sopenharmony_civoid ssusb_host_exit(struct ssusb_mtk *ssusb); 178c2ecf20Sopenharmony_ciint ssusb_wakeup_of_property_parse(struct ssusb_mtk *ssusb, 188c2ecf20Sopenharmony_ci struct device_node *dn); 198c2ecf20Sopenharmony_ciint ssusb_host_enable(struct ssusb_mtk *ssusb); 208c2ecf20Sopenharmony_ciint ssusb_host_disable(struct ssusb_mtk *ssusb, bool suspend); 218c2ecf20Sopenharmony_civoid ssusb_wakeup_set(struct ssusb_mtk *ssusb, bool enable); 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#else 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistatic inline int ssusb_host_init(struct ssusb_mtk *ssusb, 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci struct device_node *parent_dn) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci return 0; 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic inline void ssusb_host_exit(struct ssusb_mtk *ssusb) 338c2ecf20Sopenharmony_ci{} 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_cistatic inline int ssusb_wakeup_of_property_parse( 368c2ecf20Sopenharmony_ci struct ssusb_mtk *ssusb, struct device_node *dn) 378c2ecf20Sopenharmony_ci{ 388c2ecf20Sopenharmony_ci return 0; 398c2ecf20Sopenharmony_ci} 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cistatic inline int ssusb_host_enable(struct ssusb_mtk *ssusb) 428c2ecf20Sopenharmony_ci{ 438c2ecf20Sopenharmony_ci return 0; 448c2ecf20Sopenharmony_ci} 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_cistatic inline int ssusb_host_disable(struct ssusb_mtk *ssusb, bool suspend) 478c2ecf20Sopenharmony_ci{ 488c2ecf20Sopenharmony_ci return 0; 498c2ecf20Sopenharmony_ci} 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_cistatic inline void ssusb_wakeup_set(struct ssusb_mtk *ssusb, bool enable) 528c2ecf20Sopenharmony_ci{} 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci#endif 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_USB_MTU3_GADGET) || IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE) 588c2ecf20Sopenharmony_ciint ssusb_gadget_init(struct ssusb_mtk *ssusb); 598c2ecf20Sopenharmony_civoid ssusb_gadget_exit(struct ssusb_mtk *ssusb); 608c2ecf20Sopenharmony_ci#else 618c2ecf20Sopenharmony_cistatic inline int ssusb_gadget_init(struct ssusb_mtk *ssusb) 628c2ecf20Sopenharmony_ci{ 638c2ecf20Sopenharmony_ci return 0; 648c2ecf20Sopenharmony_ci} 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_cistatic inline void ssusb_gadget_exit(struct ssusb_mtk *ssusb) 678c2ecf20Sopenharmony_ci{} 688c2ecf20Sopenharmony_ci#endif 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE) 728c2ecf20Sopenharmony_ciint ssusb_otg_switch_init(struct ssusb_mtk *ssusb); 738c2ecf20Sopenharmony_civoid ssusb_otg_switch_exit(struct ssusb_mtk *ssusb); 748c2ecf20Sopenharmony_civoid ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host); 758c2ecf20Sopenharmony_ciint ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on); 768c2ecf20Sopenharmony_civoid ssusb_set_force_mode(struct ssusb_mtk *ssusb, 778c2ecf20Sopenharmony_ci enum mtu3_dr_force_mode mode); 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci#else 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_cistatic inline int ssusb_otg_switch_init(struct ssusb_mtk *ssusb) 828c2ecf20Sopenharmony_ci{ 838c2ecf20Sopenharmony_ci return 0; 848c2ecf20Sopenharmony_ci} 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_cistatic inline void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb) 878c2ecf20Sopenharmony_ci{} 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_cistatic inline void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host) 908c2ecf20Sopenharmony_ci{} 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_cistatic inline int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on) 938c2ecf20Sopenharmony_ci{ 948c2ecf20Sopenharmony_ci return 0; 958c2ecf20Sopenharmony_ci} 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_cistatic inline void 988c2ecf20Sopenharmony_cissusb_set_force_mode(struct ssusb_mtk *ssusb, enum mtu3_dr_force_mode mode) 998c2ecf20Sopenharmony_ci{} 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci#endif 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci#endif /* _MTU3_DR_H_ */ 104