2020-04-04 16:07:31 +05:30
/* SPDX-License-Identifier: GPL-2.0 */
2016-10-19 10:28:25 +08:00
/*
* mtu3_dr . h - dual role switch and host glue layer header
*
* Copyright ( C ) 2016 MediaTek Inc .
*
* Author : Chunfeng Yun < chunfeng . yun @ mediatek . com >
*/
# ifndef _MTU3_DR_H_
# define _MTU3_DR_H_
2016-10-19 10:28:26 +08:00
# if IS_ENABLED(CONFIG_USB_MTU3_HOST) || IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE)
2016-10-19 10:28:25 +08:00
int ssusb_host_init ( struct ssusb_mtk * ssusb , struct device_node * parent_dn ) ;
void ssusb_host_exit ( struct ssusb_mtk * ssusb ) ;
int ssusb_wakeup_of_property_parse ( struct ssusb_mtk * ssusb ,
struct device_node * dn ) ;
2021-07-15 17:07:54 +08:00
int ssusb_host_resume ( struct ssusb_mtk * ssusb , bool p0_skipped ) ;
int ssusb_host_suspend ( struct ssusb_mtk * ssusb ) ;
2018-01-03 16:53:18 +08:00
void ssusb_wakeup_set ( struct ssusb_mtk * ssusb , bool enable ) ;
2016-10-19 10:28:25 +08:00
# else
static inline int ssusb_host_init ( struct ssusb_mtk * ssusb ,
struct device_node * parent_dn )
{
return 0 ;
}
static inline void ssusb_host_exit ( struct ssusb_mtk * ssusb )
{ }
static inline int ssusb_wakeup_of_property_parse (
struct ssusb_mtk * ssusb , struct device_node * dn )
{
return 0 ;
}
2021-07-15 17:07:54 +08:00
static inline int ssusb_host_resume ( struct ssusb_mtk * ssusb , bool p0_skipped )
2016-10-19 10:28:25 +08:00
{
return 0 ;
}
2021-07-15 17:07:54 +08:00
static inline int ssusb_host_suspend ( struct ssusb_mtk * ssusb )
2016-10-19 10:28:25 +08:00
{
return 0 ;
}
2018-01-10 17:45:21 +01:00
static inline void ssusb_wakeup_set ( struct ssusb_mtk * ssusb , bool enable )
2016-10-19 10:28:25 +08:00
{ }
# endif
2016-10-19 10:28:26 +08:00
# if IS_ENABLED(CONFIG_USB_MTU3_GADGET) || IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE)
2016-10-19 10:28:25 +08:00
int ssusb_gadget_init ( struct ssusb_mtk * ssusb ) ;
void ssusb_gadget_exit ( struct ssusb_mtk * ssusb ) ;
2021-07-15 17:07:57 +08:00
int ssusb_gadget_suspend ( struct ssusb_mtk * ssusb , pm_message_t msg ) ;
int ssusb_gadget_resume ( struct ssusb_mtk * ssusb , pm_message_t msg ) ;
2021-07-15 17:07:58 +08:00
bool ssusb_gadget_ip_sleep_check ( struct ssusb_mtk * ssusb ) ;
2016-10-19 10:28:25 +08:00
# else
static inline int ssusb_gadget_init ( struct ssusb_mtk * ssusb )
{
return 0 ;
}
static inline void ssusb_gadget_exit ( struct ssusb_mtk * ssusb )
{ }
2021-07-15 17:07:57 +08:00
static inline int
ssusb_gadget_suspend ( struct ssusb_mtk * ssusb , pm_message_t msg )
{
return 0 ;
}
static inline int
ssusb_gadget_resume ( struct ssusb_mtk * ssusb , pm_message_t msg )
{
return 0 ;
}
2021-07-15 17:07:58 +08:00
static inline bool ssusb_gadget_ip_sleep_check ( struct ssusb_mtk * ssusb )
{
return true ;
}
2016-10-19 10:28:25 +08:00
# endif
2016-10-19 10:28:26 +08:00
# if IS_ENABLED(CONFIG_USB_MTU3_DUAL_ROLE)
int ssusb_otg_switch_init ( struct ssusb_mtk * ssusb ) ;
void ssusb_otg_switch_exit ( struct ssusb_mtk * ssusb ) ;
2019-08-29 17:22:38 +08:00
void ssusb_mode_switch ( struct ssusb_mtk * ssusb , int to_host ) ;
2016-10-19 10:28:26 +08:00
int ssusb_set_vbus ( struct otg_switch_mtk * otg_sx , int is_on ) ;
2017-10-13 17:10:42 +08:00
void ssusb_set_force_mode ( struct ssusb_mtk * ssusb ,
enum mtu3_dr_force_mode mode ) ;
2016-10-19 10:28:26 +08:00
# else
static inline int ssusb_otg_switch_init ( struct ssusb_mtk * ssusb )
{
return 0 ;
}
static inline void ssusb_otg_switch_exit ( struct ssusb_mtk * ssusb )
{ }
2019-08-29 17:22:38 +08:00
static inline void ssusb_mode_switch ( struct ssusb_mtk * ssusb , int to_host )
{ }
2019-03-21 10:53:47 +08:00
2016-10-19 10:28:26 +08:00
static inline int ssusb_set_vbus ( struct otg_switch_mtk * otg_sx , int is_on )
{
return 0 ;
}
2017-10-13 17:10:42 +08:00
static inline void
ssusb_set_force_mode ( struct ssusb_mtk * ssusb , enum mtu3_dr_force_mode mode )
{ }
2016-10-19 10:28:26 +08:00
# endif
2016-10-19 10:28:25 +08:00
# endif /* _MTU3_DR_H_ */