1. 23 Aug, 2015 1 commit
    • Robert Sprowson's avatar
      Build fix · d86cd0ec
      Robert Sprowson authored
      In products using OHCIDriver/EHCIDriver when they came to do a header export would overwrite the USBDriver header with an empty one.
      d86cd0ec
  2. 22 Aug, 2015 4 commits
    • ROOL's avatar
      Allow the endpoint validation string to include a direction flag · 1d4b111e
      ROOL authored
      However, internally we get that info from the descriptor, so mask it off.
      Submission from Colin Granville.
      
      No version number bump, it's already been incremented today.
      
      Version 1.01. Tagged as 'NetBSD-1_01'
      1d4b111e
    • Robert Sprowson's avatar
      Add some missing struct members · 2318e734
      Robert Sprowson authored
      From NetBSD dev/usb/usbdivar.h 1.109.
      As these extra members change the struct layout, bump the API version number too. Having carefully analysed which headers are actually required by host controllers (in NetBSD-0_98) also be explicit about them in Hdr/USBDriver rather than the former vague comment in h/usbdivar.
      
      Hdr/USBDriver:
        Relocate API define here.
      usbmodule.c:
        Include USBDriver.h to get the API define.
      usbdivar.h:
        Add struct members from recent NetBSD.
      
      Version 1.00. Tagged as 'NetBSD-1_00'
      2318e734
    • ROOL's avatar
      Fix to interface matching function · 496328e3
      ROOL authored
      Use -1 as the invalid mark, so that an accidental match on interface=0 alternate=0 is no longer possible.
      Submission from Colin Granville.
      
      Version 0.99. Tagged as 'NetBSD-0_99'
      496328e3
    • ROOL's avatar
      Update USB device table · 3cb1f971
      ROOL authored
      From NetBSD 1.698.
      3cb1f971
  3. 21 Aug, 2015 3 commits
    • Robert Sprowson's avatar
      Export USBDriver definitions to normal location · c6cbb401
      Robert Sprowson authored
      USBDriver was not exporting its SWI (and other) definitions to the export directory like other modules do, meaning the host controller drivers all have to reach into this component to get their hands on it.
      Makefile:
        Export an assembler header, conversion to C, and SWI definitions from CMHG.
        Rationalise the dev/usb/h/* headers which are exported in addition to those that are pertinent to host controllers (was missing usbdivar, and was exporting unused usbdi_util).
        Export machine/h/bus too.
        As it's unusual for a CModule to output both a library and module and headers, the EXPDIR has been divided into EXPLIBDIR for those things in C:USB, and EXPDIR for the others.
      ehcimodule.c/ohcimodule.c:
        Use the exported USBDriver.h
      
      Version 0.98. Tagged as 'NetBSD-0_98'
      c6cbb401
    • Robert Sprowson's avatar
      Correction to include guard · f42c7dcf
      Robert Sprowson authored
      f42c7dcf
    • Robert Sprowson's avatar
      Trim unused headers · c5e9a6fa
      Robert Sprowson authored
      c5e9a6fa
  4. 14 Aug, 2015 1 commit
    • Jeffrey Lee's avatar
      Add memory barriers · c3ccfd15
      Jeffrey Lee authored
      Detail:
        dev/usb/h/usb_port - Implement usb_syncmem to call the appropriate memory barrier function. Required for when PCI_RAMAlloc starts returning Normal, non-cacheable memory rather than Device (although technically these barriers have always been needed for ARMv6+)
        build/c/port - Memory barrier implementation; uses the appropriate OS routine if available, otherwise uses a null op.
        build/Version - Bump EHCIDriver version number (the only module that uses these barriers so far)
      Admin:
        Tested on BB-xM, PandaBoard
      
      
      Version 0.97. Tagged as 'NetBSD-0_97'
      c3ccfd15
  5. 02 Aug, 2015 1 commit
    • Robert Sprowson's avatar
      Build fix · 656fe21f
      Robert Sprowson authored
      Don't set RES_OBJ to an empty string.
      Rename merged messages variable to be merged resources dir (even though not used in that manner here).
      
      Version 0.96. Tagged as 'NetBSD-0_96'
      656fe21f
  6. 04 Jul, 2015 1 commit
    • Robert Sprowson's avatar
      Fix to system variable launch & debug build · a9d698a9
      Robert Sprowson authored
      ohcimodule.c:
       Variable renamed so it builds with debug enabled.
      usbmodule.c:
       Tighten up the logic deciding when to launch a USB$<thing> variable, previously it would be launched both for the initial device attach and then again for each interface.
       Remove local <stdlib.h> function prototypes.
       Reindent to 4 spaces to match the rest of the file.
       Fix confusion of ->dv_unit being an int not a pointer.
      Submission from Colin Granville. Built, but not tested.
      
      Version 0.95. Tagged as 'NetBSD-0_95'
      a9d698a9
  7. 29 Jun, 2015 1 commit
    • Jeffrey Lee's avatar
      Handle absolute pointing devices in a more sensible manner · 59cb172b
      Jeffrey Lee authored
      Detail:
        build/c/usbmouse - For absolute pointing devices, use the PointerV_Report "Abso" call to report absolute positions instead of relative
        build/Version - Bump USBDriver version number
      Admin:
        Based on code supplied by Chris Mahoney; allows USB touchscreens such as the Adafruit AR1100 to work under RISC OS
        Tested locally in an Iyonix ROM build (with regular mouse)
      
      
      Version 0.94. Tagged as 'NetBSD-0_94'
      59cb172b
  8. 06 Jan, 2015 1 commit
    • Jeffrey Lee's avatar
      Deregister IRQ handlers in Service_PreReset · 034314f3
      Jeffrey Lee authored
      Detail:
        build/c/ehcimodule, build/c/ohcimodule - Deregister IRQ handlers in Service_PreReset. Fixes a hang during reset on OMAP4.
        build/Version - Bump module version numbers for recent changes.
      Admin:
        Tested on Pandaboard, Iyonix
      
      
      Version 0.93. Tagged as 'NetBSD-0_93'
      034314f3
  9. 02 Jan, 2015 1 commit
    • John Ballance's avatar
      Revisit Service_PreReset activity · 1e4558ff
      John Ballance authored
      Detail:
        Recent investigations in stalling of OS_Reset showed that with multiple
        driver modules it was possible for the monotonic timer to be turned off
        before the usb system had shut down. Service_PreReset needs a rapid finite
        response to silence the relevant module's hardware and ensure it cannot
        intiiate something that could stall the reset process.
        As a result USBDriver module no longer issues Service_USB_DriverDying in
        its Service_PreReset response; it merely silences itself and removes itself
        from any vectors. This EHCIDriver and OHCIDriver modules now only need to
        silence themselves when receiving Service_PreReset.
      Admin:
        tested in iMx6 and iyonix
      
      
      Version 0.92. Tagged as 'NetBSD-0_92'
      1e4558ff
  10. 01 Jan, 2015 1 commit
  11. 17 Dec, 2014 1 commit
    • Robert Sprowson's avatar
      Add some extra SMSC usbdevs · 4208502f
      Robert Sprowson authored
      From NetBSD revision 1.687, this adds the 9514 hub featured on the Pandaboard.
      Tested on a Pandaboard rev A3, now named in *USBDEVICES.
      
      Version 0.90. Tagged as 'NetBSD-0_90'
      4208502f
  12. 25 Oct, 2014 1 commit
    • Robert Sprowson's avatar
      Update to use rationalised power and overcurrent API · 24cbac6b
      Robert Sprowson authored
      OHCIDriver (only) had sketchy support for a HAL based scheme for controlling the port power and monitor overcurrent. However the implementation was limited to supporting the single port required for an embedded product (aka Rhenium in the CVS history). The change makes it follow a model much more akin to the HAL_TimerDevice/HAL_TimerIRQStatus/HAL_TimerIRQClear set of functions.
      Version:
        Bumped OHCIDriver and USBDriver version numbers.
      ohcimodule.c:
        Use some defines from OsBytes.h.
        Group the debug variables within the OHCI_DEBUG define so they go away in the release case.
        Allow for up to 15 ports to be controlled via the revised HAL API, and pass something other than a hardwired controller of 0 when controlling/monitoring power.
        Enumerate the device numbers for overcurrent monitoring on startup.
        Deal with the possibility of one (or more) of the device numbers being shared interrupts.
        Squash a few trivial compiler warnings.
      ohcimodhead.cmhg:
        rename the handler/entry to reflect their use for overcurrent
      ohci.c:
        Allow for up to 15 ports to be controlled by passing in the port index where needed.
      usb_subr.c/usbdivar.h:
        Remove a RISC OS-ism in datatoggle, to converge with NetBSD a bit.
      ehcivar.h/usb_port.h:
        Relocate the overrides for mutex_ functions here since this is the only controller using them. Previously when in "usb_port.h" they would indirectly get dragged in ia the nested include in "usb.h". The could in fact now be implemented using SyncLib, an exercise left to the reader.
      usb.h
        Merge some of the device classes and other allocations from NetBSD.
      
      While it's not been possible to test the revised API, due to not having sight of the original platform on which it was implemented, none of the actively maintained HALs currently use the HAL based power and overcurrent scheme anyway, so the new code never gets called. In that respect, it's no more broken then the previous single port-single controller version.
      
      Version 0.89. Tagged as 'NetBSD-0_89'
      24cbac6b
  13. 29 Aug, 2014 2 commits
    • Jeffrey Lee's avatar
      HAL library build fix · 122cdff0
      Jeffrey Lee authored
      Detail:
        build/c/ehcihal - Corrected EHCIF_ETTF flag
      Admin:
        Tested on BB-xM
      
      
      Version 0.88. Retagged as 'NetBSD-0_88'
      122cdff0
    • Jeffrey Lee's avatar
      Merge in some EHCI fixes from NetBSD. Other minor changes. · eeba9f07
      Jeffrey Lee authored
      Detail:
        build/Version - Bump EHCIDriver version number
        build/c/ehcihal, build/c/ehcimodule, build/c/ohcimodule - Use the HAL USB controller type & flag definitions from Hdr:HALEntries instead of using magic numbers
        build/c/ehcimodule - Avoid double-read of hardware register in debug version of bus_space_read_4(); ensures that we report the value that's actually returned to the driver
        dev/usb/c/ehci - Merge in the following revisions from NetBSD:
        - 1.172, 1.173, 1.178, 1.193 - Support for controllers with embedded transaction translators
        - 1.174 - alloc_sqtd_chain() fix for short packets that end on page boundaries
        - 1.179 - ehci_set_qh_qtd() fixed to terminate alternate next qTD pointer with EHCI_NULL, not 0
        dev/usb/h/ehcireg - Updated to latest NetBSD version (1.34)
        dev/usb/h/ehcivar - Merge in revision 1.38 (ETTF support)
      Admin:
        Tested on BB-xM
      
      
      Version 0.88. Tagged as 'NetBSD-0_88'
      eeba9f07
  14. 12 Aug, 2014 1 commit
  15. 01 Jun, 2014 2 commits
    • Jeffrey Lee's avatar
      Updated to latest usbdevs file from NetBSD · 66f81289
      Jeffrey Lee authored
      Detail:
        dev/usb/usbdevs - Updated to the latest version from the NetBSD CVS, mainly for several new DisplayLink product IDs. Merged in our TouchBook definitions from rev 1.5, and commented out a couple of duplicate products.
        dev/usb/c/usb_quirks - Updated to cope with MetaGeek vendor being renamed to Misc
        build/Version - Bump USBDriver version number
      Admin:
        Tested in OMAP3 ROM build
      
      
      Version 0.86. Tagged as 'NetBSD-0_86'
      66f81289
    • Jeffrey Lee's avatar
      Tidy up exported USBDevFS.h · 93d0c0cd
      Jeffrey Lee authored
      Detail:
        build/h/USBDevFS - Added extra #ifdef guard to allow USBDevFS.h to be safely included by software that uses the BSD USB headers. Add the DeviceFS_CallDevice codes that USBDriver uses.
        build/h/service - Removed redundant secondary definition of the service call structures which the drivers were using internally
        build/c/ehcihal - Removed redundant #includes
        build/c/ehcidriver, build/c/ohcidriver - Use USBDevFS.h instead of service.h
        build/c/usbmodule - Use USBDevFS.h instead of service.h. Get rid of local DeviceCall definitions and use the ones which are now in USBDevFS.h. Also switched over to using Interface/DevicsFS.h for the main DevicsFS call reason codes, to match the naming convention used by USBDevFS.h (as opposed to the OSLib naming convention that was used previously). Stripped the unused OBSOLETE_SERVICE_CALLS code.
        build/Makefile - Add usbdi_util.h to the header exports
      Admin:
        Tested with building OMAP3, Tungsten & BCM2835 ROMs
        Builds to binary-identical modules as previous version.
      
      
      Version 0.85. Tagged as 'NetBSD-0_85'
      93d0c0cd
  16. 27 May, 2014 1 commit
    • Jeffrey Lee's avatar
      Fixes to callback implementation used by HAL drivers · 2fed18b2
      Jeffrey Lee authored
      Detail:
        build/c/usbhal - Restructured triggercbs() so that it doesn't use irqsema to prevent callbacks triggering recursively, as this behaviour can be required sometimes (e.g. xfer timeout callback for a blocking xfer that's being performed within the bus explore callback).
        Instead, a 'callbacks needed' flag is used to decide whether callbacks should be processed, which operates in a similar way to the kernel's CBack_VectorReq flag - once a triggercbs() instance starts processing callbacks, no other calls will process them until a new callback is inserted.
        Also fixed indexing of the callback array within triggercbs() to correctly deal with wrap-around
        build/Hdr/usbhal, dev/usb/h/usbhal - Add cbs_needed to workspace
      Admin:
        Tested on BB-xM with high processor vectors
        Fixes hang during boot time keyboard scan that was seen when certain devices were connected
      
      
      Version 0.84. Tagged as 'NetBSD-0_84'
      2fed18b2
  17. 06 May, 2014 1 commit
  18. 26 Apr, 2014 1 commit
    • Jeffrey Lee's avatar
      Merge in latest usbd_new_device() changes from NetBSD · c7120078
      Jeffrey Lee authored
      Detail:
        dev/usb/c/usb_subr - Merge in latest usbd_new_device() changes from NetBSD (rev 1.196). This primarily changes around the order of the SET_ADDRESS and descriptor get calls, as well as changing the descriptor get to request 64 bytes of data instead of 8.
        build/Version - Bump USBDriver version number
      Admin:
        Tested on BB-xM, Raspberry Pi, Iyonix ROM softload
        Fixes issue reported on forums with Raspberry Pi Model A not initialising correctly when connected as a device. Previously it was getting stuck fetching the descriptors after setting the address.
        http://www.riscosopen.org/forum/forums/5/topics/2534
      
      
      Version 0.82. Tagged as 'NetBSD-0_82'
      c7120078
  19. 13 Jul, 2013 1 commit
  20. 30 May, 2013 1 commit
  21. 27 May, 2013 1 commit
    • Robert Sprowson's avatar
      Improvements to interface/alternate matching from partially specified special strings · 6ee0a741
      Robert Sprowson authored
      Previously, if an endpoint was specified the endpoint type would be matched as type BULK even if that wasn't the case for the given endpoint number.
      Also, the find_interface_and_endpoint could exit without assigning the alternate.
      
      Line 2001: only search for BULK when neither the type nor endpoint were given
      Line 2028: take the first match on any fields that were given, assign all 3 return values
      Line 2094: remove some dead code, 'ep' is not read by find_interface_and_endpoint, so no need to initialise it
      
      Test case
        OPENIN "devicefs#endpoint1;size8:USB1"
      now gets the actual endpoint_type of the device, rather than BULK all the time.
      
      Changes from Colin, ref http://www.riscosopen.org/forum/forums/3/topics/1895
      
      
      Version 0.80. Tagged as 'NetBSD-0_80'
      6ee0a741
  22. 25 May, 2013 1 commit
  23. 10 May, 2013 1 commit
  24. 30 Mar, 2013 1 commit
    • Jeffrey Lee's avatar
      Add re-entrancy check to USBDriver registration · 3fa44e08
      Jeffrey Lee authored
      Detail:
        build/c/ehcimodule, build/c/ohcimodule - Added a re-entrancy check to USBDriver registration, to avoid shenanigans if we receive "USBDriver has started" service calls while in the middle of registering
        build/Version - Bump EHCIDriver & OHCIDriver versions & dates
      Admin:
        Tested on BB-xM
        Doesn't fix any known EHCIDriver/OHCIDriver-related issues, but is the same fix as was made to DWCDriver after the above-mentioned problem was found to be the cause of a hang on boot in recent Pi ROMs
      
      
      Version 0.77. Tagged as 'NetBSD-0_77'
      3fa44e08
  25. 05 Dec, 2012 1 commit
    • Jeffrey Lee's avatar
      Let other keyboard drivers know when the last USB keyboard is disconnected · c81eed2f
      Jeffrey Lee authored
      Detail:
        build/c/usbkboard - detach_keyboard() now issues KeyV_KeyboardRemoved when the last keyboard is removed, to provide a hint to other keyboard drivers (e.g. PandoraKey) that they can reclaim KeyV.
        build/Version - Increased USBDriver version number
      Admin:
        Tested on Pandora
      
      
      Version 0.76. Tagged as 'NetBSD-0_76'
      c81eed2f
  26. 19 Sep, 2012 1 commit
    • Jeffrey Lee's avatar
      Fix one read at the filesystem level turning into two transfers at the USB level · b6f7a82e
      Jeffrey Lee authored
      Detail:
        build/c/usbmodule - The introduction of the delayed_read flag brought with it a bug, whereby performing one read at the filing system level would result in two transfers at the USB level: One transfer triggered by the RxWakeUp device call, and a second read triggered by the Resume device call once the devices buffer becomes empty.
        To counter this a new read_status variable is used to track the state of the filesystem-level transfer; idle, busy, or complete. Only start_read calls triggered by RxWakeUp are able to start new filesystem-level transfers, while Resume is only able to continue transfers which had been paused due to lack of buffer space.
        Additionally if a RxWakeUp call is received before the previous transfer had finished, the read amount is now buffered correctly, and the read count/padding count will only be reset once the new read actually starts.
        Also made DeviceFS-level debug output more verbose and useful; most read/write debug output now lists the associated usbd_xfer_handle, making it easier to track transfers once they enter the NetBSD layer.
        build/Version - Increase USBDriver version number
      Admin:
        Tested on BB-xM
        FTDIDriver now apears to work correctly again
      
      
      Version 0.75. Tagged as 'NetBSD-0_75'
      b6f7a82e
  27. 13 Jul, 2012 1 commit
    • Jeffrey Lee's avatar
      Make delayed_read handling more robust · 14dbf1ce
      Jeffrey Lee authored
      Detail:
        build/c/usbmodule - read_cb() now explicitly clears the delayed_read flag, and only issues a delayed read if the pipe isn't a repeating type
        build/Version - Increased USBDriver version number
      Admin:
        Tested on BB-xM
      
      
      Version 0.74. Tagged as 'NetBSD-0_74'
      14dbf1ce
  28. 09 Jul, 2012 1 commit
    • Jeffrey Lee's avatar
      Make get_transfer_info() take into account any delayed xfer · ca606f7f
      Jeffrey Lee authored
      Detail:
        build/c/usbmodule - If there's a read xfer which has been delayed due to RxWakeup being called before the previous xfer had finished (e.g. while inside a buffer filling upcall), report the transfer as having not finished yet. Should match the old behaviour before the delayed reads were introduced.
        build/Version - Increment USBDriver version number
      Admin:
        Tested briefly on BB-xM
      
      
      Version 0.73. Tagged as 'NetBSD-0_73'
      ca606f7f
  29. 24 Jun, 2012 1 commit
    • Jeffrey Lee's avatar
      Fix null pointer dereferences. Add protection against DeviceFS xfers being... · 4a66dfdd
      Jeffrey Lee authored
      Fix null pointer dereferences. Add protection against DeviceFS xfers being multiply inserted into their pipes xfer queue.
      
      Detail:
        build/Version - Increased version numbers
        build/c/ehcimodule, build/c/ohcimodule - Fixed null pointer dereferences in debug code
        build/c/port, build/s/triggercbs - Fix debug code in tsleep() using hardcoded IRQsema ptr. Now requests the right pointer from build/s/triggercbs.
        build/c/usbmodule - Fix null pointer deferences in debug code and MonitorTX/MonitorRX handlers. Add xfer_busy and delayed_read flags to devstream struct in order to track whether the xfer associated with the stream is busy or not. Previously if the TxWakeUp/RxWakeUp device calls were made on a stream which already had an active xfer, the xfer would end up being inserted in the USB pipes xfer queue twice, creating a circular reference, resulting in (at the least) infinite loops in usbd_dump_queue() when debugging is enabled. Now, in the case of reads, a second read will automatically be issued once the first completes, while in the case of writes, the write request will simply be ignored. This isn't a proper fix for all the shortcomings of the DeviceFS interface, but at least the code is now a little bit safer.
      Admin:
        Tested on Raspberry Pi with high processor vectors
      
      
      Version 0.72. Tagged as 'NetBSD-0_72'
      4a66dfdd
  30. 07 Jun, 2012 1 commit
    • Jeffrey Lee's avatar
      Make RHENIUM build switch go away. Misc housekeeping · 444dc606
      Jeffrey Lee authored
      Detail:
        build/Makefile, build/!MkDebug,fd7 - Debug versions of the modules can now be built just by passing "DEBUG=TRUE" to amu
        build/!MkRhenium,fd7 - Deleted obsolete file
        build/Version - Increased version numbers
        build/c/ehcihal, build/c/ehcimodule, build/c/ohcimodule - Only accept USB controllers if HAL_USBControllerInfo says the struct size is an exact match with what we expect. Rework USB controller enumeration to allow modules to properly support both PCI and HAL controllers being available on the same machine, and without RHENIUM switch (module sources only).
        build/c/ehcimodule - Get rid of remaining RHENIUM bits; RHENIUM flag no longer needed for 32bit wide register reads/writes to be supported
        build/c/ohcimodule, build/cmhg/ohcimodhead, dev/usb/c/ohci - Get rid of remaining RHENIUM bits; RHENIUM flag no longer needed for HAL port power controls to be supported.
        build/c/usbhal, build/c/usbmodule, dev/usb/c/uhub, dev/usb/h/usb_port - Get rid of empty riscos_failed_device function
        build/s/call_veneer, build/s/triggercbs - Use Entry/EXIT macros to avoid single-reg LDM/STM performance warnings. Convert tabs to spaces.
        dev/usb/h/usb - Get rid of RHENIUM switch on USB_PORT_RESET_DELAY. Now always uses non-RHENIUM value of 100ms.
      Admin:
        Tested on rev A2 BB-xM, Iyonix, Raspberry Pi
      
      
      Version 0.71. Tagged as 'NetBSD-0_71'
      444dc606
  31. 14 May, 2012 1 commit
  32. 20 Feb, 2012 1 commit
  33. 18 Feb, 2012 1 commit
    • Robert Sprowson's avatar
      Add some more usbdevs from the NetBSD sources. · 1b44a876
      Robert Sprowson authored
      In particular, the SMSC ethernet controller and hub on the Beagleboard
      xm.
      Changed pointer assignments & comparisons with 0 to be NULL for clarity.
      Implement a left trim function for any printed out strings obtained from
      the device (to mirror usbd_trim_spaces) so that when dopey manufacturers
      use a space instead of their company name everything lines up still.
      
      Version 0.68. Tagged as 'NetBSD-0_68'
      1b44a876