Skip to content

Commit 53dd186

Browse files
committed
Merge tag 'omap-for-v4.3/fixes-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes
Two omap regression fixes: - Fix omap3 MUSB with DMA caused by driver core changes - Fix LCD DMA interrupt number for omap1 that did not get changed for sparse IRQ changes * tag 'omap-for-v4.3/fixes-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: usb: musb: omap2430: Fix regression caused by driver core change ARM: OMAP1: fix incorrect INT_DMA_LCD Signed-off-by: Olof Johansson <olof@lixom.net>
2 parents 4db7062 + 8f2279d commit 53dd186

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

drivers/usb/musb/omap2430.c

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -391,9 +391,20 @@ static int omap2430_musb_init(struct musb *musb)
391391
}
392392
musb->isr = omap2430_musb_interrupt;
393393

394+
/*
395+
* Enable runtime PM for musb parent (this driver). We can't
396+
* do it earlier as struct musb is not yet allocated and we
397+
* need to touch the musb registers for runtime PM.
398+
*/
399+
pm_runtime_enable(glue->dev);
400+
status = pm_runtime_get_sync(glue->dev);
401+
if (status < 0)
402+
goto err1;
403+
394404
status = pm_runtime_get_sync(dev);
395405
if (status < 0) {
396406
dev_err(dev, "pm_runtime_get_sync FAILED %d\n", status);
407+
pm_runtime_put_sync(glue->dev);
397408
goto err1;
398409
}
399410

@@ -426,6 +437,7 @@ static int omap2430_musb_init(struct musb *musb)
426437
phy_power_on(musb->phy);
427438

428439
pm_runtime_put_noidle(musb->controller);
440+
pm_runtime_put_noidle(glue->dev);
429441
return 0;
430442

431443
err1:
@@ -626,7 +638,11 @@ static int omap2430_probe(struct platform_device *pdev)
626638
goto err2;
627639
}
628640

629-
pm_runtime_enable(&pdev->dev);
641+
/*
642+
* Note that we cannot enable PM runtime yet for this
643+
* driver as we need struct musb initialized first.
644+
* See omap2430_musb_init above.
645+
*/
630646

631647
ret = platform_device_add(musb);
632648
if (ret) {
@@ -675,11 +691,12 @@ static int omap2430_runtime_resume(struct device *dev)
675691
struct omap2430_glue *glue = dev_get_drvdata(dev);
676692
struct musb *musb = glue_to_musb(glue);
677693

678-
if (musb) {
679-
omap2430_low_level_init(musb);
680-
musb_writel(musb->mregs, OTG_INTERFSEL,
681-
musb->context.otg_interfsel);
682-
}
694+
if (!musb)
695+
return -EPROBE_DEFER;
696+
697+
omap2430_low_level_init(musb);
698+
musb_writel(musb->mregs, OTG_INTERFSEL,
699+
musb->context.otg_interfsel);
683700

684701
return 0;
685702
}

include/linux/omap-dma.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include <linux/platform_device.h>
1919

20-
#define INT_DMA_LCD 25
20+
#define INT_DMA_LCD (NR_IRQS_LEGACY + 25)
2121

2222
#define OMAP1_DMA_TOUT_IRQ (1 << 0)
2323
#define OMAP_DMA_DROP_IRQ (1 << 1)

0 commit comments

Comments
 (0)