Re: Synchronization between ISR and IST - I2C Based device



Hi Greats

We solved the problem by masking the UART Interrupt on every read /
Write Operation.

The logic is
Read / Write Smbus()
{
EnterCriticalSection()
InterruptMask(UART_INTERRUPT, TRUE)
SMBus Read / Write Operation
InterruptMask(UART_INTERRUPT, FALSE)
LeaveCriticalSection()
}

Now the Interrupt is being masked and the ISR will not occur when the
bus is being accessed. Since the UART is producing only Level Interrupt
it will not be cleared and will not process any more interrupts. Thus
when the bus access is finished the interrupt is served immediately.

Thanks
Mams and Team

.



Relevant Pages

  • Re: SIO Interrupt storms and unhandled interrupts
    ... >Note that hacking sio to not use INTR_FAST would have had the same result. ... >Note that in his dmesg diff, sio4 has to fall back to normal interrupt mode. ... its the only one with the modem (it does not have the patch forcing it to ... be a PUC device) that shares its interrupt with the onboard SMBus ...
    (freebsd-current)
  • Re: SIO Interrupt storms and unhandled interrupts
    ... > be a PUC device) that shares its interrupt with the onboard SMBus ... Yes, that would be a storm, and only a driver for the smbus controller could ...
    (freebsd-current)
  • Re: Serial related oops
    ... of the interrupt dispatch handler, ... an interrupt for the UART, and another interrupt is also pending. ... When the UART interrupt is handled, it is masked at the interrupt ... the 8250 driver loads it takes control of the 8250 ports, ...
    (Linux-Kernel)
  • Re: Synchronization between ISR and IST - I2C Based device
    ... Sooner or later "USB Host Controllers" should inspire ... We'll call them I2C client drivers and they will use services ... Now the Interrupt is being masked and the ISR will not occur when the ... when the bus access is finished the interrupt is served immediately. ...
    (microsoft.public.windowsce.platbuilder)