Commit 56ef9db2 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Olof Johansson:
 "This should be our final batch of fixes for 4.3:

   - A patch from Sudeep Holla that fixes annotation of wakeup sources
     properly, old unused format seems to have spread through copying.

   - Two patches from Tony for OMAP.  One dealing with MUSB setup
     problems due to runtime PM being enabled too early on the parent
     device.  The other fixes IRQ numbering for OMAP1"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  usb: musb: omap2430: Fix regression caused by driver core change
  ARM: OMAP1: fix incorrect INT_DMA_LCD
  ARM: dts: fix gpio-keys wakeup-source property
parents 060b85b0 53dd186b
...@@ -35,28 +35,28 @@ gpio_keys { ...@@ -35,28 +35,28 @@ gpio_keys {
button@1 { button@1 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
label = "DSW2-1"; label = "DSW2-1";
linux,code = <KEY_1>; linux,code = <KEY_1>;
gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
}; };
button@2 { button@2 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
label = "DSW2-2"; label = "DSW2-2";
linux,code = <KEY_2>; linux,code = <KEY_2>;
gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
}; };
button@3 { button@3 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
label = "DSW2-3"; label = "DSW2-3";
linux,code = <KEY_3>; linux,code = <KEY_3>;
gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
}; };
button@4 { button@4 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
label = "DSW2-4"; label = "DSW2-4";
linux,code = <KEY_4>; linux,code = <KEY_4>;
gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>; gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
......
...@@ -47,35 +47,35 @@ gpio_keys { ...@@ -47,35 +47,35 @@ gpio_keys {
button@1 { button@1 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <2>; linux,code = <2>;
label = "userpb"; label = "userpb";
gpios = <&gpio1 0 0x4>; gpios = <&gpio1 0 0x4>;
}; };
button@2 { button@2 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <3>; linux,code = <3>;
label = "extkb1"; label = "extkb1";
gpios = <&gpio4 23 0x4>; gpios = <&gpio4 23 0x4>;
}; };
button@3 { button@3 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <4>; linux,code = <4>;
label = "extkb2"; label = "extkb2";
gpios = <&gpio4 24 0x4>; gpios = <&gpio4 24 0x4>;
}; };
button@4 { button@4 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <5>; linux,code = <5>;
label = "extkb3"; label = "extkb3";
gpios = <&gpio5 1 0x4>; gpios = <&gpio5 1 0x4>;
}; };
button@5 { button@5 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <6>; linux,code = <6>;
label = "extkb4"; label = "extkb4";
gpios = <&gpio5 2 0x4>; gpios = <&gpio5 2 0x4>;
......
...@@ -61,42 +61,42 @@ gpio_keys { ...@@ -61,42 +61,42 @@ gpio_keys {
button@1 { button@1 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <116>; linux,code = <116>;
label = "POWER"; label = "POWER";
gpios = <&iofpga_gpio0 0 0x4>; gpios = <&iofpga_gpio0 0 0x4>;
}; };
button@2 { button@2 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <102>; linux,code = <102>;
label = "HOME"; label = "HOME";
gpios = <&iofpga_gpio0 1 0x4>; gpios = <&iofpga_gpio0 1 0x4>;
}; };
button@3 { button@3 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <152>; linux,code = <152>;
label = "RLOCK"; label = "RLOCK";
gpios = <&iofpga_gpio0 2 0x4>; gpios = <&iofpga_gpio0 2 0x4>;
}; };
button@4 { button@4 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <115>; linux,code = <115>;
label = "VOL+"; label = "VOL+";
gpios = <&iofpga_gpio0 3 0x4>; gpios = <&iofpga_gpio0 3 0x4>;
}; };
button@5 { button@5 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <114>; linux,code = <114>;
label = "VOL-"; label = "VOL-";
gpios = <&iofpga_gpio0 4 0x4>; gpios = <&iofpga_gpio0 4 0x4>;
}; };
button@6 { button@6 {
debounce_interval = <50>; debounce_interval = <50>;
wakeup = <1>; wakeup-source;
linux,code = <99>; linux,code = <99>;
label = "NMI"; label = "NMI";
gpios = <&iofpga_gpio0 5 0x4>; gpios = <&iofpga_gpio0 5 0x4>;
......
...@@ -391,9 +391,20 @@ static int omap2430_musb_init(struct musb *musb) ...@@ -391,9 +391,20 @@ static int omap2430_musb_init(struct musb *musb)
} }
musb->isr = omap2430_musb_interrupt; musb->isr = omap2430_musb_interrupt;
/*
* Enable runtime PM for musb parent (this driver). We can't
* do it earlier as struct musb is not yet allocated and we
* need to touch the musb registers for runtime PM.
*/
pm_runtime_enable(glue->dev);
status = pm_runtime_get_sync(glue->dev);
if (status < 0)
goto err1;
status = pm_runtime_get_sync(dev); status = pm_runtime_get_sync(dev);
if (status < 0) { if (status < 0) {
dev_err(dev, "pm_runtime_get_sync FAILED %d\n", status); dev_err(dev, "pm_runtime_get_sync FAILED %d\n", status);
pm_runtime_put_sync(glue->dev);
goto err1; goto err1;
} }
...@@ -426,6 +437,7 @@ static int omap2430_musb_init(struct musb *musb) ...@@ -426,6 +437,7 @@ static int omap2430_musb_init(struct musb *musb)
phy_power_on(musb->phy); phy_power_on(musb->phy);
pm_runtime_put_noidle(musb->controller); pm_runtime_put_noidle(musb->controller);
pm_runtime_put_noidle(glue->dev);
return 0; return 0;
err1: err1:
...@@ -626,7 +638,11 @@ static int omap2430_probe(struct platform_device *pdev) ...@@ -626,7 +638,11 @@ static int omap2430_probe(struct platform_device *pdev)
goto err2; goto err2;
} }
pm_runtime_enable(&pdev->dev); /*
* Note that we cannot enable PM runtime yet for this
* driver as we need struct musb initialized first.
* See omap2430_musb_init above.
*/
ret = platform_device_add(musb); ret = platform_device_add(musb);
if (ret) { if (ret) {
...@@ -675,11 +691,12 @@ static int omap2430_runtime_resume(struct device *dev) ...@@ -675,11 +691,12 @@ static int omap2430_runtime_resume(struct device *dev)
struct omap2430_glue *glue = dev_get_drvdata(dev); struct omap2430_glue *glue = dev_get_drvdata(dev);
struct musb *musb = glue_to_musb(glue); struct musb *musb = glue_to_musb(glue);
if (musb) { if (!musb)
omap2430_low_level_init(musb); return -EPROBE_DEFER;
musb_writel(musb->mregs, OTG_INTERFSEL,
musb->context.otg_interfsel); omap2430_low_level_init(musb);
} musb_writel(musb->mregs, OTG_INTERFSEL,
musb->context.otg_interfsel);
return 0; return 0;
} }
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#define INT_DMA_LCD 25 #define INT_DMA_LCD (NR_IRQS_LEGACY + 25)
#define OMAP1_DMA_TOUT_IRQ (1 << 0) #define OMAP1_DMA_TOUT_IRQ (1 << 0)
#define OMAP_DMA_DROP_IRQ (1 << 1) #define OMAP_DMA_DROP_IRQ (1 << 1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment