1. 17 Nov, 2015 1 commit
    • Robert Sprowson's avatar
      Don't build a veneer that points to nothing · 4a445ff6
      Robert Sprowson authored
      The safety struct fillers added in OHCIDriver 0.44 and EHCIDriver 0.30 respectively were being carefully replaced by veneers to nothing. Skip veneer generation is the method isn't implemented.
      
      Version 1.09. Tagged as 'NetBSD-1_09'
      4a445ff6
  2. 15 Nov, 2015 2 commits
    • ROOL's avatar
      Init structures for OHCI & EHCI unused members · 15af186e
      ROOL authored
      Detail:
        Play safe, put NULLs in for the unused HC overrides.
      
      Version 1.08. Not tagged
      15af186e
    • ROOL's avatar
      Add support for HC with hardware enumerate phase · 25810b20
      ROOL authored
      Detail:
        Support controllers such as the XHCI which perform some steps of enumeration themselves in hardware, thereby needing some steps of the software enumeration to be bypassed.
        usb.c:
          Internally permit addr of 0, to represent the root hub, since the controller is responsible for allocating 1+. Merged from NetBSD 1.144.
        usb_subr.c:
          Test pointers against NULL not 0. Merged from NetBSD 1.191.
          Add 4 new bus methods, for prior to enumeration, address assignment phase, post enumeration fixup, and device removal.
        usbdivar.h:
          Prototypes of 4 new bus methods.
      Admin:
        HC API version number bumped.
        Submission from Elesar.
      
      Version 1.08. Tagged as 'NetBSD-1_08'
      25810b20
  3. 12 Nov, 2015 1 commit
    • Robert Sprowson's avatar
      Resolve porting mistake on initial bus registration · 3ced0223
      Robert Sprowson authored
      On first registering a new bus in the the NetBSD build of the code usb_kthread_create(usb_create_event_thread, sc) is called which in turn creates the main event thread ("usb_event_thread").
      The first thing usb_event_thread() does is set
        sc->sc_bus->needs_explore = 1;
        usb_discover(sc);
      however in the RISC OS version of the code (usb.c around line 254) only the first action is performed, no discover happens.
      This change schedules a callback via usb_needs_explore_callback() which in turn calls discover_callback() when the OS is next free, which calls usb_discover() for each bus in an equivalent way to NetBSD's event thread. There's then no longer any need for the special one-shot 11s rediscover callback, only the repeating 30s rediscover is needed.
      
      For reference, the places that set needs_explore in this version are all in usb.c
        Line 254: set, but doesn't schedule a callback, as noted above
        Line 339: code not compiled for __riscos
        Line 548: set, does schedule a callback
        Line 727: cleared, in usb_discover()
        Line 743: set, does schedule a callback
        Line 756: code not called in RISC OS
      
      NetBSD uses 500ms initial delay before discover, then 60s between discovers (or until requested by a hub, whichever is sooner).
      RISC OS has a periodic callback of 30s (in usbmodule.c) and an initial discover of however long it is from the bus being registered until callbacks next fire usb_event_thread(), assumed ~500ms.
      
      Version 1.07. Tagged as 'NetBSD-1_07'
      3ced0223
  4. 09 Nov, 2015 1 commit
    • Ben Avison's avatar
      Fix HAL breakages caused by HAL_USBPortPower calls · 09c2d619
      Ben Avison authored
      Detail:
        In version 1.05, the USB library which is exported for the use of the HAL
        keyboard scan code unconditionally required the HAL_USBPortPower symbol.
        Not all HALs provide that entry point; for those that didn't, they would
        no longer link. Fixed by use of a bit of magic assembler.
      Admin:
        Verified that OMAP3 ROM now builds again.
      
      Version 1.06. Tagged as 'NetBSD-1_06'
      09c2d619
  5. 04 Nov, 2015 1 commit
  6. 28 Sep, 2015 1 commit
    • Robert Sprowson's avatar
      Internationalisation, help, and syntax improvments · 2f96fb78
      Robert Sprowson authored
      Assign a proper error number and translate "Incompatible USBDriver version".
      Don't bother internationalising the *commands which are for debug builds only.
      Rephrase the help for USBQuirk so it makes sense, and trim the unmatched '<' from the syntax example.
      Bracket the USBDiscover help with the same switch that governs the code, which has been disabled for over a decade.
      
      Version 1.04. Tagged as 'NetBSD-1_04'
      2f96fb78
  7. 17 Sep, 2015 1 commit
    • ROOL's avatar
      Update table of device quirks · 02ba7000
      ROOL authored
      Detail:
        From NetBSD usb_quirks.c revision 1.81.
        usbmodule: NULL is for pointer types, not ints.
        usb_quirks: Group the RISC OS specific ones together, disable the non applicable UQ_APPLE_ISO ones, UQ_LOST_CS_DESC doesn't apply either but is only used for USB modem drivers not ported here. Untangle ifdefs around usbd_find_quirk().
      Admin:
        Removed unused source file ums.c
      
      Version 1.03. Tagged as 'NetBSD-1_03'
      02ba7000
  8. 24 Aug, 2015 1 commit
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 01 Jan, 2015 1 commit
  19. 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
  20. 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
  21. 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
  22. 12 Aug, 2014 1 commit
  23. 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
  24. 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
  25. 06 May, 2014 1 commit
  26. 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
  27. 13 Jul, 2013 1 commit
  28. 30 May, 2013 1 commit
  29. 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
  30. 25 May, 2013 1 commit
  31. 10 May, 2013 1 commit
  32. 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