• Ben Avison's avatar
    Implement interrupt-driven and background transfer support · 81c583d7
    Ben Avison authored
    The operation state machine is now polled both when the HAL device's specified
    interrupt fires, and also on TickerV. TickerV is the minimum requirement to
    enable background transfers, since some state changes (not least timeouts)
    won't generate a device interrupt, so would otherwise never complete.
    
    Some existing implementations of HAL devices don't specify the interrupt
    number correctly. If we were to enable interrupts in the SD controller for
    these, we wouldn't be acking the correct interrupt in the interrupt
    controller. The kernel's default interrupt handler traditionally disabled
    unhandled interrupt sources, but this no longer seems to work and we end up in
    an infinite loop as kernel interrupt dispatch unwinds with the interrupt still
    pending. Even if this were fixed, failing to ack a genuine interrupt would
    still be undesirable behaviour in the case of shared interrupt lines, because
    then the other interrupts sharing the line would be collate...
    81c583d7
.gitattributes 605 Bytes