Skip to content

Allow OHCI/EHCI drivers to override more hub operations

Laurent Pinchart linux-arm-kernel 4 versions – New

Get series with b4
b4 am 1397664012-28022-1-git-send-email-laurent.pinchart@ideasonboard.com

Versions newest first · linked by author and title

  1. v4 Latest4 patches 0 repliesNew
  2. v34 patches 0 repliesSuperseded
  3. v24 patches 0 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v10 of 3 patches0 repliesSuperseded

Changes in v4 from the cover letter

- Turn vbus off only after removing the hcd in ohci-pxa27x
- Added Alan Stern's acked-by for patches 1 to 3

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4USB: OHCI: Export the OHCI hub control and status_data functionsdrivers/usb/host/ohci-at91.c drivers/usb/host/ohci-hub.c drivers/usb/host/ohci-s3c2410.c +1 more+12 -230 replies
2/4USB: EHCI: Export the ehci_hub_control functiondrivers/usb/host/ehci-hub.c drivers/usb/host/ehci-tegra.c drivers/usb/host/ehci.h+6 -171 reply
3/4USB: ohci-pxa27x: Add support for external vbus regulatorsdrivers/usb/host/ohci-pxa27x.c+68 -00 replies
4/4ARM: pxa: zeus: Replace OHCI init/exit functions with a regulatorarch/arm/mach-pxa/zeus.c+48 -410 replies

Reviews trailers per patch

3 of 4 patches have a Reviewed-by or Acked-by.

PatchAlan SternStephen Warren
1/4A-b
2/4A-b A-b
3/4A-b
4/4

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v4 thread

Cover letter [PATCH v4 0/4] Allow OHCI/EHCI drivers to override more hub operations

Hello,

The PXA27x OHCI implementation doesn't perform automatic control of port power supplies for all ports. While the PPS and LSDA bits of the HcRhPortStatus register are implemented, only a subset of ports have an external power enable pin controlled by the port status register. Other ports need their power supply to be controlled manually.

In order to do so I've implemented manual regulator control in the ohci-pxa27x driver. This requires overriding the default behaviour of the CLEAR_FEATURE and SET_FEATURE requests for USB_PORT_FEAT_POWER with a custom hub control operation. In turn this requires calling the currently static ohci_hub_control function from the ohci-pxa27x driver.

The ohci-at91 and ohci-s3c2410 drivers already implement a similar feature, and access the ohci_hub_control and ohci_hub_status_data functions by saving the struct hc_driver hub_control and hub_status_data values to a variables right after calling ohci_init_driver. This vtable-like implementation can be optimized by exporting the ohci_hub_control and ohci_hub_status_data functions and calling them directly. As the ohci-pxa27x driver needs to override hub control operations as well I've decided to export the functions.

For the sake of completeness I've also exported the ehci_hub_control function and modified the ehci-tegra driver to call it directly.

As a side note regarding the ohci-at91 driver, the "atmel,vbus-gpio" DT property should really have referenced a regulator instead of a GPIO. Fixing this in a backward-compatible way would be messy

Please note that I haven't been able to test the third and fourth patches due to lack of hardware. I've however tested a similar implementation for OHCI on an out of tree PXA270 board.

Changes compared to v3:

- Turn vbus off only after removing the hcd in ohci-pxa27x
- Added Alan Stern's acked-by for patches 1 to 3

Changes compared to v2:

- Export ohci_hub_status_data()
- Call ohci_hub_status_data() directly from ohci-at91 and ohci-s3c2410

Changes compared to v1:

- Export ehci_hub_control()
- Call ehci_hub_control() directly from ehci-tegra
- Call ohci_hub_control() directly from ohci-at91

Laurent Pinchart (4):
USB: OHCI: Export the OHCI hub control and status_data functions
USB: EHCI: Export the ehci_hub_control function
USB: ohci-pxa27x: Add support for external vbus regulators
ARM: pxa: zeus: Replace OHCI init/exit functions with a regulator

 arch/arm/mach-pxa/zeus.c        | 89 ++++++++++++++++++++++-------------------
 drivers/usb/host/ehci-hub.c     | 12 +-----
 drivers/usb/host/ehci-tegra.c   |  8 +---
 drivers/usb/host/ehci.h         |  3 ++
 drivers/usb/host/ohci-at91.c    | 11 +----
 drivers/usb/host/ohci-hub.c     |  8 ++--
 drivers/usb/host/ohci-pxa27x.c  | 68 +++++++++++++++++++++++++++++++
 drivers/usb/host/ohci-s3c2410.c | 13 ++----
 drivers/usb/host/ohci.h         |  3 ++
 9 files changed, 134 insertions(+), 81 deletions(-)
Signature · 3 lines
Regards,

Laurent Pinchart