1. 11 Jul, 2022 3 commits
    • Ben Avison's avatar
      Improved SD support · 9bf7f187
      Ben Avison authored
      * Enable background operation support (in practice, interrupts were correctly
        specified in this case, but SDIODriver requires higher HAL device versions
        before trusting us).
      * Set up the GPIO lines controlling the WiFi/Bluetooth module. Previously,
        these were floating, leading to intermittent responses on the SD bus
        depending on recent activity. Pad configuration is copied from the Linux
        device tree, and the pattern of high/low voltages were determined
      Version 1.06. Tagged as 'HAL_iMx6-1_06'
    • Ben Avison's avatar
      Enable GitLab CI and address issues identified · 3b1fd3f9
      Ben Avison authored
      * Add missing `.gitignore`
    • Ben Avison's avatar
      Build system update; cross-compilable · a3fea7d9
      Ben Avison authored
      * Makefile now uses shared HAL makefile fragment
      * Filenames converted to consistent OS-agnostic forms
      * Remove PIC attributes from AREA declarations: since the code isn't
        position-independent, this is factually incorrect, and will produce
        false linker warnings when we link with libraries that are also non-PIC
      * Replaced a couple of UAL instructions with their pre-UAL counterparts to
        reduce number of warnings
      * Remove unused header file
      * Remove --cpu overrride from ASFLAGS (since objasm 4.12, --cpu Cortex-A9 no
        longer warns about SMI)
      Note, now requires objasm 4.12 to build (due to hdr suffixes in filespecs).
  2. 16 May, 2020 1 commit
    • Jeffrey Lee's avatar
      Fix SMP doorbell device · ab4dbe5a
      Jeffrey Lee authored
      With FIQs enabled, the doorbell interrupts were only being delivered as
      FIQs, not IRQs. Fix so that they'll be delivered as both (the current
      SMP module expects them to be IRQs, but FIQs could be a sensible future
      Fixes hang on Service_PagesUnsafe when SMP module is active (+
      unreliable SMP thread scheduling), due to the doorbell interrupts never
      Version 1.05. Tagged as 'HAL_iMx6-1_05'
  3. 01 Feb, 2019 1 commit
  4. 06 Dec, 2018 2 commits
    • Jeffrey Lee's avatar
      Implement CPU/SoC die temperature sensing · 80e47e0b
      Jeffrey Lee authored
        hdr/CPUSpeed, s/CPUSpeed - Increase CPU clock device to API 0.2, and implement GetDieTemperature function
        hdr/iMx6qMemMap, hdr/iMx6qReg - Additional register definitions
        Tested on wandboard
      Version 1.03. Tagged as 'iMx6-1_03'
    • Jeffrey Lee's avatar
      Implement FIQ support · 73799d6c
      Jeffrey Lee authored
        The iMX6 features a GICv1 with security extensions implemented. This means that (because we're running in secure state) we can get it to generate FIQs from interrupt sources which are assigned to "group 0", and IRQs from interrupt sources which are assigned to "group 1"
        The way that RISC OS handles FIQs isn't particularly well-suited to the way the GIC handles FIQs (we don't call HAL_FIQSource on entry to the FIQ vector), but by invoking HAL_FIQSource from the start of the FIQ enable/disable/clear entry points (and using cached values where appropriate) we arrive at behaviour that the GIC seems to be happy with
        hdr/StaticWS - Reserve some space for storing FIQ state, and a spinlock for controlling access to some shared hardware registers
        hdr/iMx6q - Add macros for claiming/releasing the HAL spinlock
        hdr/iMx6qIRQs - Add extra definitions required for using FIQs
        s/Boot - Adjust SMP startup to assign private IRQs to group 1 by default
        s/Interrupts - Adjust IRQ startup to assign IRQs to group 1 by default, and route group 0 to the FIQ pin. Implement the HAL FIQ calls, switching them between group 1 and group 0 as appropriate.
        Tested on wandboard
      Version 1.02. Tagged as 'iMx6-1_02'
  5. 03 Aug, 2018 1 commit
    • John Ballance's avatar
      Changes to ethernet phy detection · 443fc226
      John Ballance authored
        Recent changes, which used active pin control when releasing the phy
        reset pin, failed to work in the RevD iMx6 boards. Reverted to older method
        for these.
        tested in various iMx6 variants
      Version 1.01. Tagged as 'iMx6-1_01'
  6. 29 Jul, 2018 1 commit
    • Jeffrey Lee's avatar
      Fix analogue audio being very prone to FIFO underflows · d4e9420e
      Jeffrey Lee authored
        s/SDMA - Fix the last descriptor of circular DMA transfers to have both WRAP+CONT set. By only setting WRAP, the transfer stops, which for audio playback meant that the CPU had a very tight time window to spot the unexpected stoppage and restart it before the FIFO in the I2S transmitter runs dry.
        s/Audio - Fix FIFO underflow IRQ handler to disable the correct IRQ
        hdr/StaticWS - Update comment
        Tested on iMx6
        Fixes frequent pauses in audio when playing CDs via DiskSample, where the bug was causing frequent FIFO underflows (and then a very noticeable pause while the OS stops and restarts audio output)
        Theoretically this could have happened with any workload, but CD+DiskSample seemed to be the perfect storm to make it very obvious.
      Version 1.00. Tagged as 'iMx6-1_00'
  7. 21 Jul, 2018 1 commit
  8. 20 Jul, 2018 1 commit
    • John Ballance's avatar
      Make HAL Ethernet chip detection detect incorrect phy POR address · e101abe8
      John Ballance authored
        Some devices do not stabilise one of the phy configuration pins
        whilst the phy is being reset. As a result it might come up with one
        of 2 different addresses. The HAL now detects this and propagates the
        correct phy address via the Ethernet HAL_Device
        tested on iMx6
      Version 0.98. Tagged as 'iMx6-0_98'
  9. 07 Jul, 2018 1 commit
    • Jeffrey Lee's avatar
      Merge SMP branch to trunk · 3f3e9d52
      Jeffrey Lee authored
        Makefile, s/DBell - Add doorbell HAL device implementation, using GIC SGIs
        h/irq_numbers, hdr/iMx6IRQs - Increase IMX_INTERRUPT_COUNT. Core 0 private interrupts are 0-31, core 1 160-191, core 2 192-223, core 3 224-255. Shared interrupts are 32-159.
        hdr/StaticWS - Reserve space for doorbell device & storing last SGI for each core
        hdr/iMx6q - Tidy things up a bit by removing the DebugInterrupts code
        s/Boot - Implement SMP HAL entry points
        s/Interrupts - Tidy up interrupt handling and implement new HAL IRQ calls
        s/Top - Enable cache/TLB maintenance op broadcast, and add some silicion errata workarounds
        Requires Kernel-6_09
      Version 0.97. Tagged as 'iMx6-0_97'
  10. 29 Jun, 2018 1 commit
  11. 28 Jun, 2018 1 commit
  12. 21 Jun, 2018 1 commit
  13. 14 May, 2018 2 commits
  14. 13 May, 2018 1 commit
  15. 03 Feb, 2018 1 commit
    • Jeffrey Lee's avatar
      Disable HAL video driver · f893280b
      Jeffrey Lee authored
        Makefile - Now that the full IMXVideo module is in public CVS, and we're moving towards a stable release, there's no particular need for having the HAL version of the video driver enabled. Disable it to reduce the potential for bugs or other weird behaviour.
        Tested on wandboard
      Version 0.90. Tagged as 'iMx6-0_90'
  16. 31 Dec, 2017 1 commit
    • John Ballance's avatar
      Improved GPIO isolation · 066d20b0
      John Ballance authored
      Occasional misstarts of EtherTH in RevD boards resolved to GPIO issues.
      Barrier instructions added.
      Version 0.89. Tagged as 'iMx6-0_89'
  17. 25 Oct, 2017 1 commit
  18. 09 Sep, 2017 1 commit
    • ROOL's avatar
      Participate in keyboard scan dependencies · d13cbfef
      ROOL authored
        Add keyboard scan code with list of modules that the kernel needs to do the same (the EHCI code was bypassed, and the HAL EHCI not linked against).
        Reorder the HALEntries to match Kernel-5_89.
        Remove unused stub functions.
        Submission for USB bounty.
      Version 0.87. Tagged as 'iMx6-0_87'
  19. 05 Sep, 2017 1 commit
  20. 04 Sep, 2017 1 commit
  21. 30 Aug, 2017 1 commit
  22. 17 Aug, 2017 1 commit
  23. 04 Aug, 2017 1 commit
    • John Ballance's avatar
      Resolve I2C error recovery abort · a28f024f
      John Ballance authored
        The code for unlocking stuck I2C transaction failed to get the base
        address of the I2C GPIO port. This had caused an AODT if the I2C transaction
        failed. Issue corrected
      Version 0.82. Tagged as 'iMx6-0_82'
  24. 30 Jul, 2017 1 commit
    • ROOL's avatar
      Build fix · d1c1f3f2
      ROOL authored
        As a side effect of changes in USBDriver-1_20, rename the library object.
      Version 0.81. Tagged as 'iMx6-0_81'
  25. 26 Jul, 2017 1 commit
    • John Ballance's avatar
      Resolve I2C differences between RevB and C boards and RevD · 614ca66e
      John Ballance authored
         RevD boards have put the HDMI EDID I2C lines on I2C2 instead of
         I2C1. This conflicts with the CMOS RAM. A routine has been created
         to detect the RevD board (by the presence of a power swithch on the
         Ethernet Phy), so the HAL can set up appropriately.
         Tested on Rev B and Rev D iMx6 boards
      Version 0.80. Tagged as 'iMx6-0_80'
  26. 18 Jul, 2017 1 commit
    • John Ballance's avatar
      Added routine to control Ethernet Phy power and reset pins · b248c405
      John Ballance authored
        HAL_EtherDevice now gives access to a routine to control the
        Ethernet Phy power and reset pins. This updated device is present if the
        hal workspace pointer is non zero (bug fix) and GPIO_WriteBit routine
        now writes correctly in all cases.
        tested on iMx6 revC2 and revD1
      Version 0.79. Tagged as 'iMx6-0_79'
  27. 24 Apr, 2017 1 commit
    • John Ballance's avatar
      Correct HAL Serial handshake configuration call. · 59fb0e1c
      John Ballance authored
      Further serial port testing showed inconsistency in handshake configuration.
      This in now corrected.
      Tested using a DeviceFS test setup and DeviceFS calls.
      Version 0.78. Tagged as 'iMx6-0_78'
  28. 07 Apr, 2017 1 commit
  29. 11 Mar, 2017 1 commit
  30. 20 Jan, 2017 1 commit