Skip to content

Commit

Permalink
spi/pxa2xx: add support for shared IRQ handler
Browse files Browse the repository at this point in the history
This is required in case the interrupt line is shared with other
devices.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
  • Loading branch information
Sebastian Andrzej Siewior committed Dec 1, 2010
1 parent fbd29a1 commit 49cbb1e
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion drivers/spi/pxa2xx_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -742,6 +742,18 @@ static irqreturn_t ssp_int(int irq, void *dev_id)
{
struct driver_data *drv_data = dev_id;
void __iomem *reg = drv_data->ioaddr;
u32 sccr1_reg = read_SSCR1(reg);
u32 mask = drv_data->mask_sr;
u32 status;

status = read_SSSR(reg);

/* Ignore possible writes if we don't need to write */
if (!(sccr1_reg & SSCR1_TIE))
mask &= ~SSSR_TFS;

if (!(status & mask))
return IRQ_NONE;

if (!drv_data->cur_msg) {

Expand Down Expand Up @@ -1512,7 +1524,8 @@ static int __devinit pxa2xx_spi_probe(struct platform_device *pdev)
drv_data->mask_sr = SSSR_TINT | SSSR_RFS | SSSR_TFS | SSSR_ROR;
}

status = request_irq(ssp->irq, ssp_int, 0, dev_name(dev), drv_data);
status = request_irq(ssp->irq, ssp_int, IRQF_SHARED, dev_name(dev),
drv_data);
if (status < 0) {
dev_err(&pdev->dev, "cannot get IRQ %d\n", ssp->irq);
goto out_error_master_alloc;
Expand Down

0 comments on commit 49cbb1e

Please sign in to comment.