linux/drivers/usb/mtu3/mtu3_dr.h
<<
>>
Prefs
   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
  15int ssusb_host_init(struct ssusb_mtk *ssusb, struct device_node *parent_dn);
  16void ssusb_host_exit(struct ssusb_mtk *ssusb);
  17int ssusb_wakeup_of_property_parse(struct ssusb_mtk *ssusb,
  18                                struct device_node *dn);
  19int ssusb_host_resume(struct ssusb_mtk *ssusb, bool p0_skipped);
  20int ssusb_host_suspend(struct ssusb_mtk *ssusb);
  21void ssusb_wakeup_set(struct ssusb_mtk *ssusb, bool enable);
  22
  23#else
  24
  25static inline int ssusb_host_init(struct ssusb_mtk *ssusb,
  26
  27        struct device_node *parent_dn)
  28{
  29        return 0;
  30}
  31
  32static inline void ssusb_host_exit(struct ssusb_mtk *ssusb)
  33{}
  34
  35static inline int ssusb_wakeup_of_property_parse(
  36        struct ssusb_mtk *ssusb, struct device_node *dn)
  37{
  38        return 0;
  39}
  40
  41static inline int ssusb_host_resume(struct ssusb_mtk *ssusb, bool p0_skipped)
  42{
  43        return 0;
  44}
  45
  46static inline int ssusb_host_suspend(struct ssusb_mtk *ssusb)
  47{
  48        return 0;
  49}
  50
  51static 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)
  58int ssusb_gadget_init(struct ssusb_mtk *ssusb);
  59void ssusb_gadget_exit(struct ssusb_mtk *ssusb);
  60int ssusb_gadget_suspend(struct ssusb_mtk *ssusb, pm_message_t msg);
  61int ssusb_gadget_resume(struct ssusb_mtk *ssusb, pm_message_t msg);
  62bool ssusb_gadget_ip_sleep_check(struct ssusb_mtk *ssusb);
  63
  64#else
  65static inline int ssusb_gadget_init(struct ssusb_mtk *ssusb)
  66{
  67        return 0;
  68}
  69
  70static inline void ssusb_gadget_exit(struct ssusb_mtk *ssusb)
  71{}
  72
  73static inline int
  74ssusb_gadget_suspend(struct ssusb_mtk *ssusb, pm_message_t msg)
  75{
  76        return 0;
  77}
  78
  79static inline int
  80ssusb_gadget_resume(struct ssusb_mtk *ssusb, pm_message_t msg)
  81{
  82        return 0;
  83}
  84
  85static 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)
  94int ssusb_otg_switch_init(struct ssusb_mtk *ssusb);
  95void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb);
  96void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host);
  97int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on);
  98void ssusb_set_force_mode(struct ssusb_mtk *ssusb,
  99                          enum mtu3_dr_force_mode mode);
 100
 101#else
 102
 103static inline int ssusb_otg_switch_init(struct ssusb_mtk *ssusb)
 104{
 105        return 0;
 106}
 107
 108static inline void ssusb_otg_switch_exit(struct ssusb_mtk *ssusb)
 109{}
 110
 111static inline void ssusb_mode_switch(struct ssusb_mtk *ssusb, int to_host)
 112{}
 113
 114static inline int ssusb_set_vbus(struct otg_switch_mtk *otg_sx, int is_on)
 115{
 116        return 0;
 117}
 118
 119static inline void
 120ssusb_set_force_mode(struct ssusb_mtk *ssusb, enum mtu3_dr_force_mode mode)
 121{}
 122
 123#endif
 124
 125#endif          /* _MTU3_DR_H_ */
 126