• Ben Avison's avatar
    IIC code is now re-entrant. Also a bugfix. · 4ecea6cc
    Ben Avison authored
    Detail:
      I pinched the IIC code from here to build MPEGDriver-0_32-1_33_2_2; now
      that I've added re-entrancy there (MPEGDriver-0_32-1_33_2_4), I'm folding
      the changes back in here, in case it's ever of use to someone else.
      Re-entrancy is achieved by restricting register use to r0-r3,r10,r11,CPSR
      so that re-entered code can complete any pending IIC operation by
      pulling those registers from the IRQ stack, before executing the new
      operation.
      The bugfix is regarding a continued read transaction - previously, the
      final byte read of a read transaction was never acknowledged; it needs to
      be acknowledged if it is immediately followed by another read transaction
      without its own repeated Start condition.
    Admin:
      Tested as part of MPEGDriver, but not as part of a kernel build.
    
    Version 5.35, 4.79.2.47. Tagged as 'Kernel-5_35-4_79_2_47'
    4ecea6cc
IIC 23.4 KB