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

TOMOYO Linux Cross Reference
Linux/Documentation/usb/chipidea.rst

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 ==============================================
  2 ChipIdea Highspeed Dual Role Controller Driver
  3 ==============================================
  4 
  5 1. How to test OTG FSM(HNP and SRP)
  6 -----------------------------------
  7 
  8 To show how to demo OTG HNP and SRP functions via sys input files
  9 with 2 Freescale i.MX6Q sabre SD boards.
 10 
 11 1.1 How to enable OTG FSM
 12 -------------------------
 13 
 14 1.1.1 Select CONFIG_USB_OTG_FSM in menuconfig, rebuild kernel
 15 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 16 
 17 Image and modules. If you want to check some internal
 18 variables for otg fsm, mount debugfs, there are 2 files
 19 which can show otg fsm variables and some controller registers value::
 20 
 21         cat /sys/kernel/debug/ci_hdrc.0/otg
 22         cat /sys/kernel/debug/ci_hdrc.0/registers
 23 
 24 1.1.2 Add below entries in your dts file for your controller node
 25 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 26 
 27 ::
 28 
 29         otg-rev = <0x0200>;
 30         adp-disable;
 31 
 32 1.2 Test operations
 33 -------------------
 34 
 35 1) Power up 2 Freescale i.MX6Q sabre SD boards with gadget class driver loaded
 36    (e.g. g_mass_storage).
 37 
 38 2) Connect 2 boards with usb cable: one end is micro A plug, the other end
 39    is micro B plug.
 40 
 41    The A-device (with micro A plug inserted) should enumerate B-device.
 42 
 43 3) Role switch
 44 
 45    On B-device::
 46 
 47         echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
 48 
 49    B-device should take host role and enumerate A-device.
 50 
 51 4) A-device switch back to host.
 52 
 53    On B-device::
 54 
 55         echo 0 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
 56 
 57    or, by introducing HNP polling, B-Host can know when A-peripheral wishes to
 58    be in the host role, so this role switch also can be triggered in
 59    A-peripheral side by answering the polling from B-Host. This can be done on
 60    A-device::
 61 
 62         echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_req
 63 
 64    A-device should switch back to host and enumerate B-device.
 65 
 66 5) Remove B-device (unplug micro B plug) and insert again in 10 seconds;
 67    A-device should enumerate B-device again.
 68 
 69 6) Remove B-device (unplug micro B plug) and insert again after 10 seconds;
 70    A-device should NOT enumerate B-device.
 71 
 72    if A-device wants to use bus:
 73 
 74    On A-device::
 75 
 76         echo 0 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_drop
 77         echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_req
 78 
 79    if B-device wants to use bus:
 80 
 81    On B-device::
 82 
 83         echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
 84 
 85 7) A-device power down the bus.
 86 
 87    On A-device::
 88 
 89         echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_drop
 90 
 91    A-device should disconnect with B-device and power down the bus.
 92 
 93 8) B-device does data pulse for SRP.
 94 
 95    On B-device::
 96 
 97         echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
 98 
 99    A-device should resume usb bus and enumerate B-device.
100 
101 1.3 Reference document
102 ----------------------
103 "On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification
104 July 27, 2012 Revision 2.0 version 1.1a"
105 
106 2. How to enable USB as system wakeup source
107 --------------------------------------------
108 Below is the example for how to enable USB as system wakeup source
109 on an imx6 platform.
110 
111 2.1 Enable core's wakeup::
112 
113         echo enabled > /sys/bus/platform/devices/ci_hdrc.0/power/wakeup
114 
115 2.2 Enable glue layer's wakeup::
116 
117         echo enabled > /sys/bus/platform/devices/2184000.usb/power/wakeup
118 
119 2.3 Enable PHY's wakeup (optional)::
120 
121         echo enabled > /sys/bus/platform/devices/20c9000.usbphy/power/wakeup
122 
123 2.4 Enable roothub's wakeup::
124 
125         echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
126 
127 2.5 Enable related device's wakeup::
128 
129         echo enabled > /sys/bus/usb/devices/1-1/power/wakeup
130 
131 If the system has only one usb port, and you want usb wakeup at this port, you
132 can use the below script to enable usb wakeup::
133 
134         for i in $(find /sys -name wakeup | grep usb);do echo enabled > $i;done;

~ [ 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