On 06/01/2013 11:42 AM, Aaro Koskinen wrote:
Add support for Octeon USB HCD. Tested on EdgeRouter Lite with USB mass storage. The driver has been extracted from GPL sources of EdgeRouter Lite firmware (based on Linux 2.6.32.13). Some minor fixes and cleanups have been done to make it work with 3.10-rc3. $ uname -a Linux (none) 3.10.0-rc3-edge-00005-g86cb5bc #41 SMP PREEMPT Sat Jun 1 20:41:46 EEST 2013 mips64 GNU/Linux $ modprobe octeon-usb [ 37.971683] octeon_usb: module is from the staging directory, the quality is unknown, you have been warned. [ 37.983649] OcteonUSB: Detected 1 ports [ 37.999360] OcteonUSB OcteonUSB.0: Octeon Host Controller [ 38.004847] OcteonUSB OcteonUSB.0: new USB bus registered, assigned bus number 1 [ 38.012332] OcteonUSB OcteonUSB.0: irq 122, io mem 0x00000000 [ 38.019970] hub 1-0:1.0: USB hub found [ 38.023851] hub 1-0:1.0: 1 port detected [ 38.028101] OcteonUSB: Registered HCD for port 0 on irq 122 [ 38.391443] usb 1-1: new high-speed USB device number 2 using OcteonUSB [ 38.586922] usb-storage 1-1:1.0: USB Mass Storage device detected [ 38.597375] scsi0 : usb-storage 1-1:1.0 [ 39.604111] scsi 0:0:0:0: Direct-Access USB DISK 2.0 PMAP PQ: 0 ANSI: 4 [ 39.619113] sd 0:0:0:0: [sda] 7579008 512-byte logical blocks: (3.88 GB/3.61 GiB) [ 39.630696] sd 0:0:0:0: [sda] Write Protect is off [ 39.635945] sd 0:0:0:0: [sda] No Caching mode page present [ 39.641464] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 39.651341] sd 0:0:0:0: [sda] No Caching mode page present [ 39.656917] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 39.664296] sda: sda1 sda2 [ 39.675574] sd 0:0:0:0: [sda] No Caching mode page present [ 39.681093] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 39.687223] sd 0:0:0:0: [sda] Attached SCSI removable disk Signed-off-by: Aaro Koskinen <aaro.koskinen@xxxxxx> --- drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/octeon-usb/Kconfig | 10 + drivers/staging/octeon-usb/Makefile | 3 + drivers/staging/octeon-usb/TODO | 11 + drivers/staging/octeon-usb/cvmx-usb.c | 3344 ++++++++++++++++++++++++++ drivers/staging/octeon-usb/cvmx-usb.h | 1085 +++++++++ drivers/staging/octeon-usb/cvmx-usbcx-defs.h | 3086 ++++++++++++++++++++++++ drivers/staging/octeon-usb/cvmx-usbnx-defs.h | 1596 ++++++++++++ drivers/staging/octeon-usb/octeon-hcd.c | 854 +++++++ 10 files changed, 9992 insertions(+) create mode 100644 drivers/staging/octeon-usb/Kconfig create mode 100644 drivers/staging/octeon-usb/Makefile create mode 100644 drivers/staging/octeon-usb/TODO create mode 100644 drivers/staging/octeon-usb/cvmx-usb.c create mode 100644 drivers/staging/octeon-usb/cvmx-usb.h create mode 100644 drivers/staging/octeon-usb/cvmx-usbcx-defs.h create mode 100644 drivers/staging/octeon-usb/cvmx-usbnx-defs.h create mode 100644 drivers/staging/octeon-usb/octeon-hcd.c
FYI: This is an alternate, host only, driver for the DesignWare USB2 controller as found on some OCTEON SoCs. drivers/staging/dwc2 contains the code supplied by Synopsys for the same controller.
One might ask why an alternate driver was ever written. The answer to this question is: The octeon-hcd driver is much better than the dwc2 driver when running the hardware in host mode.
David Daney