On Fri, 29 Apr 2011 11:21:08 -0700 Kristen Carlson Accardi <[email protected]> wrote:
> The OTG device can receive device interrupts while > suspended (such as for a hot add or remove). So we > need to resume the hardware in the interrupt handler > before touching it. Because this needs to be done > synchronously, we need to switch the irq handler to > a threaded one. > > Signed-off-by: Kristen Carlson Accardi <[email protected]> > Index: linux-2.6.37/drivers/usb/otg/langwell_otg.c > =================================================================== > --- linux-2.6.37.orig/drivers/usb/otg/langwell_otg.c > +++ linux-2.6.37/drivers/usb/otg/langwell_otg.c > @@ -785,11 +785,15 @@ static irqreturn_t otg_irq(int irq, void > u32 int_mask = 0; > int flag = 0; > > + pm_runtime_get_sync(lnw->dev); > + > int_sts = readl(lnw->iotg.base + CI_OTGSC); > int_en = (int_sts & OTGSC_INTEN_MASK) >> 8; > int_mask = int_sts & int_en; > - if (int_mask == 0) > + if (int_mask == 0) { > + pm_runtime_put(lnw->dev); > return IRQ_NONE; > + } > > if (int_mask & OTGSC_IDIS) { > dev_dbg(lnw->dev, "%s: id change int\n", __func__); > @@ -839,6 +843,8 @@ static irqreturn_t otg_irq(int irq, void > if (flag) > langwell_update_transceiver(); > > + pm_runtime_put(lnw->dev); > + > return IRQ_HANDLED; > } > > @@ -2094,7 +2100,7 @@ static int langwell_otg_probe(struct pci > goto err; > } > > - if (request_irq(pdev->irq, otg_irq, IRQF_SHARED, > + if (request_threaded_irq(pdev->irq, NULL, &otg_irq, should it be otg_irq? > IRQF_SHARED, driver_name, lnw) != 0) { > dev_dbg(lnw->dev, "request interrupt %d failed\n", > pdev->irq); retval = -EBUSY; > @@ -2338,7 +2344,7 @@ static int langwell_otg_resume(struct pc > goto error; > } > > - if (request_irq(pdev->irq, otg_irq, IRQF_SHARED, > + if (request_threaded_irq(pdev->irq, NULL, otg_irq, > IRQF_SHARED, driver_name, lnw) != 0) { > dev_dbg(&pdev->dev, "request interrupt %d failed\n", > pdev->irq); ret = -EBUSY; > _______________________________________________ > MeeGo-kernel mailing list > [email protected] > http://lists.meego.com/listinfo/meego-kernel [jacob pan] -- Thanks Jacob _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
