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