1. 20 Jan, 2017 1 commit
    • Jeffrey Lee's avatar
      Disable WFI (Portable_Idle) on ARM11 · 378b37a0
      Jeffrey Lee authored
        On a Raspberry Pi 1B and 1B+, reading a constant stream of data from the serial port was found to eventually result in a CPU deadlock within the WFI code, consistent with that described in the ARM11 erratum 486865 notice
        Tweaking the already-implemented workaround for the erratum didn't bring any luck, so I'm going with the fallback approach of disabling WFI completely for ARM11.
        s/GetAll - Extend the Erratum_486865 switch to support three different modes
        s/Front - Replace magic number that gave the workaround code size
        s/StPortable - Check the CPU ID to make sure the Erratum_486865 switch only affects ARM11 CPUs. Add support for disabling WFI on ARM11, and tweak the workaround implementation so that it's now an exact match for that given by ARM.
        Tested on Raspberry Pi 1 B
        With WFI enabled the test code used to crash after anywhere between a few minutes to ~20 hours, but with WFI disabled it's survived 48 hours
      Version 0.81. Tagged as 'PortableHAL-0_81'
  2. 26 Mar, 2016 1 commit
  3. 25 Mar, 2016 1 commit
    • Jeffrey Lee's avatar
      Make Portable_Idle perform a DSB before the WFI, and use the CP15 WFI op on... · 31b17015
      Jeffrey Lee authored
      Make Portable_Idle perform a DSB before the WFI, and use the CP15 WFI op on ARMv6. Allow the CPU clock device to vanish and re-appear. Export a C version of the CPUClkDevice header.
        s/Front, s/GetAll, s/StPortable - Improve Portable_Idle implementation so that it issues a DSB before the WFI, and uses the CP15 WFI (potentially with erratum 486865 workaround) for ARMv6. Adjust handling of CPU clock device in order to allow it to be registered and deregistered at runtime.
        Makefile, h/CPUClkDevice - Export a C version of the CPUClkDevice header
        Tested on Raspberry Pi 1B/2B/3B
      Version 0.79. Tagged as 'PortableHAL-0_79'
  4. 03 Mar, 2016 1 commit
    • Jeffrey Lee's avatar
      Fix speed inversion in Portable_Speed2 8/9 · a7ad841a
      Jeffrey Lee authored
        s/StPortable - CPUSpeed bit 0 is 0 for fast and 1 for slow, make sure we get it the right way round when re-applying the current speed setting after accepting new fast & slow speed values
        Issue spotted by Willi Theiss
      Version 0.78. Tagged as 'PortableHAL-0_78'
  5. 12 Dec, 2015 1 commit
    • ROOL's avatar
      Fix for incorrect register use · 71e6ae92
      ROOL authored
        The CPUClkDevice struct pointer should be in a1, not a3.
        Submission from Willi Theiss.
      Version 0.77. Tagged as 'PortableHAL-0_77'
  6. 05 Dec, 2015 1 commit
    • Robert Sprowson's avatar
      Add sensor reading SWI · 9fc9fef8
      Robert Sprowson authored
      New Portable_ReadSensor is a general front end to sensors that might be of concern to the Portable module.
      Starter for 10 is temperature, and we support reading the CPU die temperature (from a new CPUClk entry point, since faster=botter they're physically related parameters) and the BMU charger. Each supports multiple units, so in future multicore temperatures can be reported.
      New error message in the resources, plus enable tokenisation of the Messages file since it's used via a buffered MessageTrans_ErrorLookup call.
      Tested briefly on a HAL with fake temperature sensor returning a hardwired kelvin value.
      Version 0.76. Tagged as 'PortableHAL-0_76'
  7. 21 Jun, 2015 1 commit
    • Robert Sprowson's avatar
      Minor cleanups · 182f19f7
      Robert Sprowson authored
      * A few redundant includes removed
      * Use ObjAsm {TRUE} and {FALSE}
      * Since there's no command table, don't declare the messages file in the module header
      * Use WFI directly instead of DCI &E320F003
      * Remove *FreezeTime command help from messages
      Built, but not tested.
      Version 0.75. Tagged as 'PortableHAL-0_75'
  8. 14 Apr, 2013 1 commit
  9. 21 Nov, 2012 1 commit
    • Jeffrey Lee's avatar
      Add initial implementation of the new HAL friendly BMU interface · f39eb189
      Jeffrey Lee authored
        hdr/BMUDevice - New header describing layout of BMU HAL devices
        Makefile - export hdr/BMUDevice, and a C version of hdr/Portable
        hdr/Portable - Lots of new definitions related to the BMU interface. VirtualRPC BMU vars renamed slightly to match the A4/HAL naming convention (PortableBMUV_) instead of the Stork naming convention (Portable_BMUVar_).
        s/Front, s/GetAll, s/StPortable - BMU interface implementation. Two new SWIs (Portable_EnumerateBMU & Portable_ReadBMUVariables) are provided, along with a semi backwards compatible Portable_ReadBMUVariable implementation. Code also updated to use OSHW_ constants instead of magic numbers.
        Resources/UK/Messages - New error message text added
        Tested in ROM on BB-xM, Pandora, TouchBook
      Version 0.73. Tagged as 'PortableHAL-0_73'
  10. 26 Feb, 2012 1 commit
  11. 27 Jan, 2012 1 commit
  12. 19 Mar, 2011 1 commit
    • Jeffrey Lee's avatar
      Add code for controlling CPU speed via interacting with a CPUClk HAL device. · ab299835
      Jeffrey Lee authored
        Makefile, hdr/CPUClkDevice - Add HALDevice_CPUClk descriptor to header exports
        hdr/Portable - Trim some obsolete definitions, tidy formatting, add Speed2 and (unimplemented) WakeTime SWI numbers, add BatteryTimeRemaining and MaxBatteryTime BMU variables (from VirtualRPC)
        s/Front, s/GetAll, s/StPortable - Added Portable_Speed and Portable_Speed2 implementations, for controlling CPU speed. Portable_Speed is fully compatible with the old A4 version; all new features are exposed via Portable_Speed2 instead. Also added some debug-only stats logging code to track how much time is spent in various states.
        Resources/UK/Messages - New error messages.
        Tested on rev C2 BB, A2 BB-xM, C1 TouchBook.
        Portable_Speed2 & HALDevice_CPUClk documentation will be on the wiki soon.
      Version 0.70. Tagged as 'PortableHAL-0_70'
  13. 21 Mar, 2010 1 commit
    • Jeffrey Lee's avatar
      Tweak Portable_Idle implementation in PortableHAL module · fc5e15e5
      Jeffrey Lee authored
        In an attempt to solve a problem that doesn't exist, my Portable_Idle implementation was taking measures to avoid executing the WFI instruction if the module might have been running on pre-ARMv3 hardware.
        However I've since discovered that this was unnecessary, since WFI degrades to a NOP MSR on pre-ARMv6K, and MSR itself is a NOP on pre-ARMv3.
        Untested, but should be safe.
      Version 0.69. Tagged as 'PortableHAL-0_69'
  14. 30 Jan, 2010 1 commit