~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/usb/chipidea.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * Platform data for the chipidea USB dual role controller
  4  */
  5 
  6 #ifndef __LINUX_USB_CHIPIDEA_H
  7 #define __LINUX_USB_CHIPIDEA_H
  8 
  9 #include <linux/extcon.h>
 10 #include <linux/usb/otg.h>
 11 
 12 struct ci_hdrc;
 13 
 14 /**
 15  * struct ci_hdrc_cable - structure for external connector cable state tracking
 16  * @connected: true if cable is connected, false otherwise
 17  * @changed: set to true when extcon event happen
 18  * @enabled: set to true if we've enabled the vbus or id interrupt
 19  * @edev: device which generate events
 20  * @ci: driver state of the chipidea device
 21  * @nb: hold event notification callback
 22  * @conn: used for notification registration
 23  */
 24 struct ci_hdrc_cable {
 25         bool                            connected;
 26         bool                            changed;
 27         bool                            enabled;
 28         struct extcon_dev               *edev;
 29         struct ci_hdrc                  *ci;
 30         struct notifier_block           nb;
 31 };
 32 
 33 struct ci_hdrc_platform_data {
 34         const char      *name;
 35         /* offset of the capability registers */
 36         uintptr_t        capoffset;
 37         unsigned         power_budget;
 38         struct phy      *phy;
 39         /* old usb_phy interface */
 40         struct usb_phy  *usb_phy;
 41         enum usb_phy_interface phy_mode;
 42         unsigned long    flags;
 43 #define CI_HDRC_REGS_SHARED             BIT(0)
 44 #define CI_HDRC_DISABLE_DEVICE_STREAMING        BIT(1)
 45 #define CI_HDRC_SUPPORTS_RUNTIME_PM     BIT(2)
 46 #define CI_HDRC_DISABLE_HOST_STREAMING  BIT(3)
 47 #define CI_HDRC_DISABLE_STREAMING (CI_HDRC_DISABLE_DEVICE_STREAMING |   \
 48                 CI_HDRC_DISABLE_HOST_STREAMING)
 49         /*
 50          * Only set it when DCCPARAMS.DC==1 and DCCPARAMS.HC==1,
 51          * but otg is not supported (no register otgsc).
 52          */
 53 #define CI_HDRC_DUAL_ROLE_NOT_OTG       BIT(4)
 54 #define CI_HDRC_IMX28_WRITE_FIX         BIT(5)
 55 #define CI_HDRC_FORCE_FULLSPEED         BIT(6)
 56 #define CI_HDRC_TURN_VBUS_EARLY_ON      BIT(7)
 57 #define CI_HDRC_SET_NON_ZERO_TTHA       BIT(8)
 58 #define CI_HDRC_OVERRIDE_AHB_BURST      BIT(9)
 59 #define CI_HDRC_OVERRIDE_TX_BURST       BIT(10)
 60 #define CI_HDRC_OVERRIDE_RX_BURST       BIT(11)
 61 #define CI_HDRC_OVERRIDE_PHY_CONTROL    BIT(12) /* Glue layer manages phy */
 62 #define CI_HDRC_REQUIRES_ALIGNED_DMA    BIT(13)
 63 #define CI_HDRC_IMX_IS_HSIC             BIT(14)
 64 #define CI_HDRC_PMQOS                   BIT(15)
 65 #define CI_HDRC_PHY_VBUS_CONTROL        BIT(16)
 66 #define CI_HDRC_HAS_PORTSC_PEC_MISSED   BIT(17)
 67 #define CI_HDRC_FORCE_VBUS_ACTIVE_ALWAYS        BIT(18)
 68         enum usb_dr_mode        dr_mode;
 69 #define CI_HDRC_CONTROLLER_RESET_EVENT          0
 70 #define CI_HDRC_CONTROLLER_STOPPED_EVENT        1
 71 #define CI_HDRC_IMX_HSIC_ACTIVE_EVENT           2
 72 #define CI_HDRC_IMX_HSIC_SUSPEND_EVENT          3
 73 #define CI_HDRC_CONTROLLER_VBUS_EVENT           4
 74         int     (*notify_event) (struct ci_hdrc *ci, unsigned event);
 75         struct regulator        *reg_vbus;
 76         struct usb_otg_caps     ci_otg_caps;
 77         bool                    tpl_support;
 78         /* interrupt threshold setting */
 79         u32                     itc_setting;
 80         u32                     ahb_burst_config;
 81         u32                     tx_burst_size;
 82         u32                     rx_burst_size;
 83 
 84         /* VBUS and ID signal state tracking, using extcon framework */
 85         struct ci_hdrc_cable            vbus_extcon;
 86         struct ci_hdrc_cable            id_extcon;
 87         u32                     phy_clkgate_delay_us;
 88 
 89         /* pins */
 90         struct pinctrl *pctl;
 91         struct pinctrl_state *pins_default;
 92         struct pinctrl_state *pins_host;
 93         struct pinctrl_state *pins_device;
 94 
 95         /* platform-specific hooks */
 96         int (*hub_control)(struct ci_hdrc *ci, u16 typeReq, u16 wValue,
 97                            u16 wIndex, char *buf, u16 wLength,
 98                            bool *done, unsigned long *flags);
 99         void (*enter_lpm)(struct ci_hdrc *ci, bool enable);
100 };
101 
102 /* Default offset of capability registers */
103 #define DEF_CAPOFFSET           0x100
104 
105 /* Add ci hdrc device */
106 struct platform_device *ci_hdrc_add_device(struct device *dev,
107                         struct resource *res, int nres,
108                         struct ci_hdrc_platform_data *platdata);
109 /* Remove ci hdrc device */
110 void ci_hdrc_remove_device(struct platform_device *pdev);
111 /* Get current available role */
112 enum usb_dr_mode ci_hdrc_query_available_role(struct platform_device *pdev);
113 
114 #endif
115 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php