mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
spi: pxa2xx: Prepare for edge-triggered interrupts
When using the a device with edge-triggered interrupts, such as MSIs, the interrupt handler has to ensure that there is a point in time during its execution where all interrupts sources are silent so that a new event can trigger a new interrupt again. This is achieved here by disabling all interrupt sources for a moment before processing them according to the status register. If a new interrupt should have arrived after we read the status, it will now re-trigger the interrupt, even in edge mode. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Acked-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
b03124825b
commit
e51e9b9304
@ -785,6 +785,9 @@ static irqreturn_t ssp_int(int irq, void *dev_id)
|
||||
if (!(status & mask))
|
||||
return IRQ_NONE;
|
||||
|
||||
pxa2xx_spi_write(drv_data, SSCR1, sccr1_reg & ~drv_data->int_cr1);
|
||||
pxa2xx_spi_write(drv_data, SSCR1, sccr1_reg);
|
||||
|
||||
if (!drv_data->master->cur_msg) {
|
||||
handle_bad_msg(drv_data);
|
||||
/* Never fail */
|
||||
|
Loading…
Reference in New Issue
Block a user