• Jeffrey Lee's avatar
    Update OS_IICOp to support multiple IIC buses · 327d3980
    Jeffrey Lee authored
      OS_IICOp (and in turn, RISCOS_IICOpV) now treat the top byte of R1 as containing the IIC bus number, allowing multiple buses to be used.
      hdr/KernelWS - Changed workspace a bit so that the kernel can support up to IICBus_Count buses (currently 3), each with its own IICBus_* block.
      s/HAL - Update Reset_IRQ_Handler to cope with interrupts from all IIC buses instead of just the first. Fix/update RISCOS_IICOpV description.
      s/NewIRQs - Update InitialiseIRQ1Vtable to set up interrupt handlers for all IRQ-supporting IIC buses
      s/NewReset - Get rid of the IICAbort call that was just before IICInit. IICInit now calls IICAbort itself.
      s/PMF/IIC - Bulk of the changes. Code now uses the IICBus_ structures instead of the IICStatus and IICType variables. Re-entrancy code has been updated to take into account the possiblity of multiple buses; when OS_IICOp calls are nested, the IIC transfers will be added to bus-specific queues instead of all going in the same queue. However only one queue will be processed at a time.
      s/ChangeDyn - Workspace shuffling means a couple of MOV's needed to be swapped with LDR's when getting immediate constants
      Tested with OMAP & IOMD ROM builds.
      Both high & low-level bus types seem to work OK, along with re-entrancy, both on the same bus and on a different bus.
    Version 5.35, Tagged as 'Kernel-5_35-4_79_2_98_2_33'
ChangeDyn 182 KB