RE: [PATCH v3 00/13] Add USB OTG HNP and SRP support on Chipidea usb driver

2014-03-12 Thread Peter Chen
 
> 
> On Fri, Mar 07, 2014 at 10:32:30AM +0800, Peter Chen wrote:
> > On Thu, Feb 27, 2014 at 07:38:18AM +0800, Li Jun wrote:
> > > From: b47624 
> > >
> > > This patchset adds USB OTG HNP and SRP support on chipidea usb
> > > driver, existing OTG port role swtich function by ID pin status kept
> > > unchanged, based on that, if select CONFIG_USB_OTG_FSM, OTG HNP and
> > > SRP will be supported.
> >
> > The CONFIG_USB_OTG should also be needed?
> >
> 
> CONFIG_USB_OTG_FSM is selecting CONFIG_USB_OTG.
> 

Yes.

> > >
> > > Reference to:
> > > "On-The-Go and Embedded Host Supplement to the USB Revision 2.0
> > > Specification July 27, 2012 Revision 2.0 version 1.1a"
> > >
> >
> > Jun, at next time, you can have a patch at Documentation/ to introduce
> > how to do it.
> >
> 
> It also can be in Documentation/ABI/testing/sysfs-platform-chipidea-usb-
> otg?
> 

Documentation/usb/

 
Peter

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 00/13] Add USB OTG HNP and SRP support on Chipidea usb driver

2014-03-12 Thread Li Jun
On Fri, Mar 07, 2014 at 10:32:30AM +0800, Peter Chen wrote:
> On Thu, Feb 27, 2014 at 07:38:18AM +0800, Li Jun wrote:
> > From: b47624 
> > 
> > This patchset adds USB OTG HNP and SRP support on chipidea usb driver,
> > existing OTG port role swtich function by ID pin status kept unchanged,
> > based on that, if select CONFIG_USB_OTG_FSM, OTG HNP and SRP will be
> > supported.
> 
> The CONFIG_USB_OTG should also be needed?
> 

CONFIG_USB_OTG_FSM is selecting CONFIG_USB_OTG.

> > 
> > Reference to:
> > "On-The-Go and Embedded Host Supplement to the USB Revision 2.0 
> > Specification July 27, 2012
> > Revision 2.0 version 1.1a"
> > 
> 
> Jun, at next time, you can have a patch at Documentation/ to introduce
> how to do it.
> 

It also can be in Documentation/ABI/testing/sysfs-platform-chipidea-usb-otg?

> > How to test HNP&SRP with 2 Freescale i.MX6Q sabre SD boards:
> > 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.
> > 
> > 3. The A device with micro A plug inserted should enumrate B device.
> > 
> 
> If I swap step 1 and step 2, it can't enumerate. Plug out and plug in
> again can work. Have a check please.
> 

That's the required sequence by design, A-device should not release bus before
B-device request it.

> > 4. Role switch.
> >On B device:
> >echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
> > 
> >if HNP polling patchset is not applied, also need:
> 
> You can say if HNP polling is not supported
> 

OK, will update.

> >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(peripheral).
> 
> It works.
> 
> > 
> > 5. 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.
> 
> works.
> 
> > 
> > 6. Remove B device and insert again in 10 seconds, A device should
> >enumrate B device again.
> > 
> 
> 
> > 7. Remove B device and insert again after 10 seconds, A device should
> >NOT enumrate B device.
> > 
> >if A device wants to use bus:
> >On A device:
> >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
> 
> Works.
> 
> What does A(B) device wants to use bus? The vbus should always
> from A device, correct?
> 

That means A(B) want to initiate the communication with B(A), yes, vbus always
from A-device.

> > 
> > 8. A device power down the bus.
> >On A device:
> >echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_drop
> > 
> > 9. B device do data pulse for SRP.
> >On B device:
> >echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
> > 
> >A device usb bus should be resumed and enumrate B device.
> 
> Works.
> 
> Peter
> 
> > 
> > Changes since v2:
> > - Add ABI document for sysfs input files description:
> >   Documentation/ABI/testing/sysfs-platform-chipidea-usb-otg
> > - Add a debug file for show some USB registers value.
> > - Split host driver change to be 2 patches, one for otg_port number init;
> >   the other one for vbus control change.
> > - Export interrupt enable and status read functions from udc driver.
> > - Only enable AVV irq in otg fsm init.
> > - Remove duplicated USBSTS bits definitions.
> > - typo correction.
> > - Add HowTo demo role switch with 2 Freescale i.MX6Q sabre SD boards
> >   in cover letter.
> > 
> > Changes since v1:
> > - Move out HNP polling patch from this series, which will be a seperated 
> > patchset
> >   followed this one
> > - Change fsm timers global variables to be a structure embeded in ci_hdrc,
> >   to make multiple OTG instances can exist in one system
> > - Change some otg fsm functions to be static
> > - Re-split timer init patch to avoid a later patch changing a previous one
> >   in the same series
> > - Change timer structure memory allocation to be devm_kzalloc
> > - Update some format alignment and spelling errors
> > 
> > Li Jun (13):
> >   usb: phy-fsm: update OTG HNP state transition conditions according to
> > OTG and EH 2.0 spec.
> >   usb: chipidea: usb OTG fsm initialization.
> >   usb: chipidea: host: vbus control change for OTG HNP.
> >   usb: chipidea: host: init otg port number.
> >   usb: chipidea: udc: driver update for OTG HNP.
> >   usb: chipidea: export interrupt enable and status register read
> > functions.
> >   usb: chipidea: add OTG fsm operation functions implemenation.
> >   usb: chipidea: OTG fsm timers initialization.
> >   usb: chipidea: OTG HNP and SRP fsm implementation.
> >   usb: chipidea: add sys inputs for OTG fsm input.
> >   usb: chipidea: debug: add debug file for OTG vari

Re: [PATCH v3 00/13] Add USB OTG HNP and SRP support on Chipidea usb driver

2014-03-06 Thread Peter Chen
On Thu, Feb 27, 2014 at 07:38:18AM +0800, Li Jun wrote:
> From: b47624 
> 
> This patchset adds USB OTG HNP and SRP support on chipidea usb driver,
> existing OTG port role swtich function by ID pin status kept unchanged,
> based on that, if select CONFIG_USB_OTG_FSM, OTG HNP and SRP will be
> supported.

The CONFIG_USB_OTG should also be needed?

> 
> Reference to:
> "On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification 
> July 27, 2012
> Revision 2.0 version 1.1a"
> 

Jun, at next time, you can have a patch at Documentation/ to introduce
how to do it.

> How to test HNP&SRP with 2 Freescale i.MX6Q sabre SD boards:
> 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.
> 
> 3. The A device with micro A plug inserted should enumrate B device.
> 

If I swap step 1 and step 2, it can't enumerate. Plug out and plug in
again can work. Have a check please.

> 4. Role switch.
>On B device:
>echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
> 
>if HNP polling patchset is not applied, also need:

You can say if HNP polling is not supported

>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(peripheral).

It works.

> 
> 5. 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.

works.

> 
> 6. Remove B device and insert again in 10 seconds, A device should
>enumrate B device again.
> 


> 7. Remove B device and insert again after 10 seconds, A device should
>NOT enumrate B device.
> 
>if A device wants to use bus:
>On A device:
>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

Works.

What does A(B) device wants to use bus? The vbus should always
from A device, correct?

> 
> 8. A device power down the bus.
>On A device:
>echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/a_bus_drop
> 
> 9. B device do data pulse for SRP.
>On B device:
>echo 1 > /sys/bus/platform/devices/ci_hdrc.0/inputs/b_bus_req
> 
>A device usb bus should be resumed and enumrate B device.

Works.

Peter

> 
> Changes since v2:
> - Add ABI document for sysfs input files description:
>   Documentation/ABI/testing/sysfs-platform-chipidea-usb-otg
> - Add a debug file for show some USB registers value.
> - Split host driver change to be 2 patches, one for otg_port number init;
>   the other one for vbus control change.
> - Export interrupt enable and status read functions from udc driver.
> - Only enable AVV irq in otg fsm init.
> - Remove duplicated USBSTS bits definitions.
> - typo correction.
> - Add HowTo demo role switch with 2 Freescale i.MX6Q sabre SD boards
>   in cover letter.
> 
> Changes since v1:
> - Move out HNP polling patch from this series, which will be a seperated 
> patchset
>   followed this one
> - Change fsm timers global variables to be a structure embeded in ci_hdrc,
>   to make multiple OTG instances can exist in one system
> - Change some otg fsm functions to be static
> - Re-split timer init patch to avoid a later patch changing a previous one
>   in the same series
> - Change timer structure memory allocation to be devm_kzalloc
> - Update some format alignment and spelling errors
> 
> Li Jun (13):
>   usb: phy-fsm: update OTG HNP state transition conditions according to
> OTG and EH 2.0 spec.
>   usb: chipidea: usb OTG fsm initialization.
>   usb: chipidea: host: vbus control change for OTG HNP.
>   usb: chipidea: host: init otg port number.
>   usb: chipidea: udc: driver update for OTG HNP.
>   usb: chipidea: export interrupt enable and status register read
> functions.
>   usb: chipidea: add OTG fsm operation functions implemenation.
>   usb: chipidea: OTG fsm timers initialization.
>   usb: chipidea: OTG HNP and SRP fsm implementation.
>   usb: chipidea: add sys inputs for OTG fsm input.
>   usb: chipidea: debug: add debug file for OTG variables show.
>   usb: chipidea: debug: add debug file for controller registers dump.
>   Documentation: ABI: usb: chipidea USB OTG HNP sysfs interface
> description.
> 
>  .../ABI/testing/sysfs-platform-chipidea-usb-otg|   55 ++
>  drivers/usb/chipidea/Makefile  |1 +
>  drivers/usb/chipidea/bits.h|   12 +
>  drivers/usb/chipidea/ci.h  |6 +
>  drivers/usb/chipidea/core.c|   30 +-
>  drivers/usb/chipidea/debug.c   |  133 +++
>  drivers/usb/chipidea/host.c|   13 +-
>  drivers/usb/chipidea/host.h|9 +
>