提交 b1dae3d8 编写于 作者: O Olof Johansson

Merge tag 'fixes-v4.0-rc4' of...

Merge tag 'fixes-v4.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes

Fixes for omaps for the -rc cycle:

- Fix a device tree based booting vs legacy booting regression for
  omap3 crypto hardware by adding the missing DMA channels.

- Fix /sys/bus/soc/devices/soc0/family for am33xx devices.

- Fix two timer issues that can cause hangs if the timer related
  hwmod data is missing like it often initially is for new SoCs.

- Remove pcie hwmods entry from dts as that causes runtime PM to
  fail for the PHYs.

- A paper bag type dts configuration fix for dm816x GPIO
  interrupts that I just noticed. This is most of the changes
  diffstat wise, but as it's a basic feature for connecting
  devices and things work otherwise, it should be fixed.

* tag 'fixes-v4.0-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: dts: Fix gpio interrupts for dm816x
  ARM: dts: dra7: remove ti,hwmod property from pcie phy
  ARM: OMAP: dmtimer: disable pm runtime on remove
  ARM: OMAP: dmtimer: check for pm_runtime_get_sync() failure
  ARM: OMAP2+: Fix socbus family info for AM33xx devices
  ARM: dts: omap3: Add missing dmas for crypto
Signed-off-by: NOlof Johansson <olof@lixom.net>
...@@ -36,6 +36,20 @@ ...@@ -36,6 +36,20 @@
>; >;
}; };
mmc_pins: pinmux_mmc_pins {
pinctrl-single,pins = <
DM816X_IOPAD(0x0a70, MUX_MODE0) /* SD_POW */
DM816X_IOPAD(0x0a74, MUX_MODE0) /* SD_CLK */
DM816X_IOPAD(0x0a78, MUX_MODE0) /* SD_CMD */
DM816X_IOPAD(0x0a7C, MUX_MODE0) /* SD_DAT0 */
DM816X_IOPAD(0x0a80, MUX_MODE0) /* SD_DAT1 */
DM816X_IOPAD(0x0a84, MUX_MODE0) /* SD_DAT2 */
DM816X_IOPAD(0x0a88, MUX_MODE0) /* SD_DAT2 */
DM816X_IOPAD(0x0a8c, MUX_MODE2) /* GP1[7] */
DM816X_IOPAD(0x0a90, MUX_MODE2) /* GP1[8] */
>;
};
usb0_pins: pinmux_usb0_pins { usb0_pins: pinmux_usb0_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
DM816X_IOPAD(0x0d00, MUX_MODE0) /* USB0_DRVVBUS */ DM816X_IOPAD(0x0d00, MUX_MODE0) /* USB0_DRVVBUS */
...@@ -137,7 +151,12 @@ ...@@ -137,7 +151,12 @@
}; };
&mmc1 { &mmc1 {
pinctrl-names = "default";
pinctrl-0 = <&mmc_pins>;
vmmc-supply = <&vmmcsd_fixed>; vmmc-supply = <&vmmcsd_fixed>;
bus-width = <4>;
cd-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
wp-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
}; };
/* At least dm8168-evm rev c won't support multipoint, later may */ /* At least dm8168-evm rev c won't support multipoint, later may */
......
...@@ -150,17 +150,27 @@ ...@@ -150,17 +150,27 @@
}; };
gpio1: gpio@48032000 { gpio1: gpio@48032000 {
compatible = "ti,omap3-gpio"; compatible = "ti,omap4-gpio";
ti,hwmods = "gpio1"; ti,hwmods = "gpio1";
ti,gpio-always-on;
reg = <0x48032000 0x1000>; reg = <0x48032000 0x1000>;
interrupts = <97>; interrupts = <96>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
}; };
gpio2: gpio@4804c000 { gpio2: gpio@4804c000 {
compatible = "ti,omap3-gpio"; compatible = "ti,omap4-gpio";
ti,hwmods = "gpio2"; ti,hwmods = "gpio2";
ti,gpio-always-on;
reg = <0x4804c000 0x1000>; reg = <0x4804c000 0x1000>;
interrupts = <99>; interrupts = <98>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
}; };
gpmc: gpmc@50000000 { gpmc: gpmc@50000000 {
......
...@@ -1111,7 +1111,6 @@ ...@@ -1111,7 +1111,6 @@
"wkupclk", "refclk", "wkupclk", "refclk",
"div-clk", "phy-div"; "div-clk", "phy-div";
#phy-cells = <0>; #phy-cells = <0>;
ti,hwmods = "pcie1-phy";
}; };
pcie2_phy: pciephy@4a095000 { pcie2_phy: pciephy@4a095000 {
...@@ -1130,7 +1129,6 @@ ...@@ -1130,7 +1129,6 @@
"wkupclk", "refclk", "wkupclk", "refclk",
"div-clk", "phy-div"; "div-clk", "phy-div";
#phy-cells = <0>; #phy-cells = <0>;
ti,hwmods = "pcie2-phy";
status = "disabled"; status = "disabled";
}; };
}; };
......
...@@ -92,6 +92,8 @@ ...@@ -92,6 +92,8 @@
ti,hwmods = "aes"; ti,hwmods = "aes";
reg = <0x480c5000 0x50>; reg = <0x480c5000 0x50>;
interrupts = <0>; interrupts = <0>;
dmas = <&sdma 65 &sdma 66>;
dma-names = "tx", "rx";
}; };
prm: prm@48306000 { prm: prm@48306000 {
...@@ -550,6 +552,8 @@ ...@@ -550,6 +552,8 @@
ti,hwmods = "sham"; ti,hwmods = "sham";
reg = <0x480c3000 0x64>; reg = <0x480c3000 0x64>;
interrupts = <49>; interrupts = <49>;
dmas = <&sdma 69>;
dma-names = "rx";
}; };
smartreflex_core: smartreflex@480cb000 { smartreflex_core: smartreflex@480cb000 {
......
...@@ -720,6 +720,8 @@ static const char * __init omap_get_family(void) ...@@ -720,6 +720,8 @@ static const char * __init omap_get_family(void)
return kasprintf(GFP_KERNEL, "OMAP4"); return kasprintf(GFP_KERNEL, "OMAP4");
else if (soc_is_omap54xx()) else if (soc_is_omap54xx())
return kasprintf(GFP_KERNEL, "OMAP5"); return kasprintf(GFP_KERNEL, "OMAP5");
else if (soc_is_am33xx() || soc_is_am335x())
return kasprintf(GFP_KERNEL, "AM33xx");
else if (soc_is_am43xx()) else if (soc_is_am43xx())
return kasprintf(GFP_KERNEL, "AM43xx"); return kasprintf(GFP_KERNEL, "AM43xx");
else if (soc_is_dra7xx()) else if (soc_is_dra7xx())
......
...@@ -799,6 +799,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) ...@@ -799,6 +799,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
const struct of_device_id *match; const struct of_device_id *match;
const struct dmtimer_platform_data *pdata; const struct dmtimer_platform_data *pdata;
int ret;
match = of_match_device(of_match_ptr(omap_timer_match), dev); match = of_match_device(of_match_ptr(omap_timer_match), dev);
pdata = match ? match->data : dev->platform_data; pdata = match ? match->data : dev->platform_data;
...@@ -860,7 +861,12 @@ static int omap_dm_timer_probe(struct platform_device *pdev) ...@@ -860,7 +861,12 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
} }
if (!timer->reserved) { if (!timer->reserved) {
pm_runtime_get_sync(dev); ret = pm_runtime_get_sync(dev);
if (ret < 0) {
dev_err(dev, "%s: pm_runtime_get_sync failed!\n",
__func__);
goto err_get_sync;
}
__omap_dm_timer_init_regs(timer); __omap_dm_timer_init_regs(timer);
pm_runtime_put(dev); pm_runtime_put(dev);
} }
...@@ -873,6 +879,11 @@ static int omap_dm_timer_probe(struct platform_device *pdev) ...@@ -873,6 +879,11 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
dev_dbg(dev, "Device Probed.\n"); dev_dbg(dev, "Device Probed.\n");
return 0; return 0;
err_get_sync:
pm_runtime_put_noidle(dev);
pm_runtime_disable(dev);
return ret;
} }
/** /**
...@@ -899,6 +910,8 @@ static int omap_dm_timer_remove(struct platform_device *pdev) ...@@ -899,6 +910,8 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
} }
spin_unlock_irqrestore(&dm_timer_lock, flags); spin_unlock_irqrestore(&dm_timer_lock, flags);
pm_runtime_disable(&pdev->dev);
return ret; return ret;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册