ec447ab138
When tried to enable OTG FSM, we need to rebuild both kernel Image and modules, since there are some codes at gadget modules which are controlled by related configurations. Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
72 lines
2.4 KiB
Plaintext
72 lines
2.4 KiB
Plaintext
1. How to test OTG FSM(HNP and SRP)
|
|
-----------------------------------
|
|
To show how to demo OTG HNP and SRP functions via sys input files
|
|
with 2 Freescale i.MX6Q sabre SD boards.
|
|
|
|
1.1 How to enable OTG FSM in menuconfig
|
|
---------------------------------------
|
|
Select CONFIG_USB_OTG_FSM, rebuild kernel Image and modules.
|
|
If you want to check some internal variables for otg fsm,
|
|
select CONFIG_USB_CHIPIDEA_DEBUG, there are 2 files which
|
|
can show otg fsm variables and some controller registers value:
|
|
cat /sys/kernel/debug/ci_hdrc.0/otg
|
|
cat /sys/kernel/debug/ci_hdrc.0/registers
|
|
|
|
1.2 Test operations
|
|
-------------------
|
|
1) Power up 2 Freescale i.MX6Q sabre SD boards with gadget class driver loaded
|
|
(e.g. g_mass_storage).
|
|
|
|
2) Connect 2 boards with usb cable with one end is micro A plug, the other end
|
|
is micro B plug.
|
|
|
|
The A-device(with micro A plug inserted) should enumrate B-device.
|
|
|
|
3) Role switch
|
|
On B-device:
|
|
echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
|
|
|
|
if HNP polling is not supported, also need:
|
|
On A-device:
|
|
echo 0 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_req
|
|
|
|
B-device should take host role and enumrate A-device.
|
|
|
|
4) A-device switch back to host.
|
|
On B-device:
|
|
echo 0 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
|
|
|
|
A-device should switch back to host and enumrate B-device.
|
|
|
|
5) Remove B-device(unplug micro B plug) and insert again in 10 seconds,
|
|
A-device should enumrate B-device again.
|
|
|
|
6) Remove B-device(unplug micro B plug) and insert again after 10 seconds,
|
|
A-device should NOT enumrate B-device.
|
|
|
|
if A-device wants to use bus:
|
|
On A-device:
|
|
echo 0 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_drop
|
|
echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_req
|
|
|
|
if B-device wants to use bus:
|
|
On B-device:
|
|
echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
|
|
|
|
7) A-device power down the bus.
|
|
On A-device:
|
|
echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_drop
|
|
|
|
A-device should disconnect with B-device and power down the bus.
|
|
|
|
8) B-device does data pulse for SRP.
|
|
On B-device:
|
|
echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
|
|
|
|
A-device should resume usb bus and enumrate B-device.
|
|
|
|
1.3 Reference document
|
|
----------------------
|
|
"On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification
|
|
July 27, 2012 Revision 2.0 version 1.1a"
|