Features Download
From: Paul Zimmerman <Paul.Zimmerman-HKixBCOQz3hWk0Htik3J/w <at> public.gmane.org>
Subject: [PATCH v4 0/5] DWC2 DesignWare HS OTG driver
Newsgroups: gmane.linux.usb.general
Date: Wednesday 20th February 2013 02:50:03 UTC (over 5 years ago)
Hi Felipe,

Here is v4 of the DWC2 patch set. I made most of the changes you asked
for, except for the following:
- I did not convert to a threaded IRQ handler. I would like to postpone
  that for now.
- I did not use an asychronous function call during driver initialization
  in dwc2_hcd_start(), because that function is also called during runtime
  if a role switch occurs.
- I did not convert to devm_request_and_ioremap() in the probe function,
  because that requires a struct resource, which you don't have in a PCI
  driver. Perhaps I'm missing something.
- I did not move the devm_request_irq() call into the dwc2 module. IMHO
  it's cleaner to have that in the bus glue module wih the other devm*
- I removed a few unneeded module parameters, but left the rest for now.
  I discovered that some of the parameters need to be set to non-
  hardware-default values, or else the driver doesn't work correctly.
- I did not change any more dev_dbg's to dev_vdbg's. As it is, with debug
  enabled you get a spew of messages during driver initialization, but
  it's quiet after that, unless you enable verbose debug. That's how I
  want it for now.

This is a host-mode driver for the Synopsys DesignWare HS OTG controller. 
This is the same controller whose peripheral mode is implemented by the
existing s3c-hsotg driver. This controller is also used in host mode in the
Raspberry Pi via a very ugly out-of-tree driver, so merging this would be a
step toward bringing that platform into mainline.

The idea is to add a dwc2/ directory alongside the existing dwc3/
initially to contain just this host-mode driver. Once that has been
we would then like to move the s3c-hsotg driver into this directory and
integrate it to make a dual-role driver. Finally we will implement support
for the OTG features of the controller.

This driver is still a work in progress, to wit:

- Only a PCI bus interface has been implemented so far. However the core
  code and the PCI bus glue code are contained in separate modules, so it
  will be easy to add platform driver interfaces in the future. I have
  already done that with a platform driver for the Raspberry Pi, but it
  is not included here since that platform is out of tree.
- The PCI bus driver has a couple dozen module parameters to control
  various optional features of the controller. I realize module parameters
  are frowned upon these days, so I would appreciate any advice on the
  best way to implement these in an acceptable manner.
- There is no power-management support yet.
- There is quite a bit of debug code included. We would like to keep that
  until the integration with s3c-hsotg is complete, then most of it can be
  stripped out.

Changes since v3 - Numerous changes in response to Felipe's second review.

Changes since v2 - Fixed a problem with periodic transfers, so hubs, mice
and keyboards work reliably now. Fixed a spurious channel halted interrupt
by disabling the interrupt if the channel is idle.

Changes since v1 - Numerous changes in response to Felipe's review.

Paul Zimmerman (5):
  Core files for the DWC2 driver
  HCD files for the DWC2 driver
  HCD descriptor DMA support for the DWC2 driver
  PCI bus interface for the DWC2 driver
  Hook the DWC2 driver into the build system

 drivers/usb/Kconfig          |    2 +
 drivers/usb/Makefile         |    2 +
 drivers/usb/dwc2/Kconfig     |   27 +
 drivers/usb/dwc2/Makefile    |   15 +
 drivers/usb/dwc2/core.c      | 2687
 drivers/usb/dwc2/core.h      |  673 ++++++++++
 drivers/usb/dwc2/core_intr.c |  511 ++++++++
 drivers/usb/dwc2/hcd.c       | 2866
 drivers/usb/dwc2/hcd.h       |  850 +++++++++++++
 drivers/usb/dwc2/hcd_ddma.c  | 1193 ++++++++++++++++++
 drivers/usb/dwc2/hcd_intr.c  | 2036 ++++++++++++++++++++++++++++++
 drivers/usb/dwc2/hcd_queue.c |  754 +++++++++++
 drivers/usb/dwc2/hw.h        |  805 ++++++++++++
 drivers/usb/dwc2/pci.c       |  355 ++++++
 14 files changed, 12776 insertions(+)
 create mode 100644 drivers/usb/dwc2/Kconfig
 create mode 100644 drivers/usb/dwc2/Makefile
 create mode 100644 drivers/usb/dwc2/core.c
 create mode 100644 drivers/usb/dwc2/core.h
 create mode 100644 drivers/usb/dwc2/core_intr.c
 create mode 100644 drivers/usb/dwc2/hcd.c
 create mode 100644 drivers/usb/dwc2/hcd.h
 create mode 100644 drivers/usb/dwc2/hcd_ddma.c
 create mode 100644 drivers/usb/dwc2/hcd_intr.c
 create mode 100644 drivers/usb/dwc2/hcd_queue.c
 create mode 100644 drivers/usb/dwc2/hw.h
 create mode 100644 drivers/usb/dwc2/pci.c


To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
CD: 2ms