diff options
| author | Olof Johansson <olof@lixom.net> | 2015-03-29 16:58:54 -0400 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2015-03-29 16:59:16 -0400 |
| commit | b1dae3d8b0563f49d2eeddb8403b6e0b2fc93a80 (patch) | |
| tree | 901b0cb63379253771d4235647c6b22458e97aa0 | |
| parent | ebc0aa8fd5e7c5b3d9831eec58e11439516ff35b (diff) | |
| parent | 599c376c49323127c9bdbb0fa61a3d4743819bc2 (diff) | |
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: Olof Johansson <olof@lixom.net>
| -rw-r--r-- | arch/arm/boot/dts/dm8168-evm.dts | 19 | ||||
| -rw-r--r-- | arch/arm/boot/dts/dm816x.dtsi | 18 | ||||
| -rw-r--r-- | arch/arm/boot/dts/dra7.dtsi | 2 | ||||
| -rw-r--r-- | arch/arm/boot/dts/omap3.dtsi | 4 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/id.c | 2 | ||||
| -rw-r--r-- | arch/arm/plat-omap/dmtimer.c | 15 |
6 files changed, 53 insertions, 7 deletions
diff --git a/arch/arm/boot/dts/dm8168-evm.dts b/arch/arm/boot/dts/dm8168-evm.dts index d3a29c1b8417..afe678f6d2e9 100644 --- a/arch/arm/boot/dts/dm8168-evm.dts +++ b/arch/arm/boot/dts/dm8168-evm.dts | |||
| @@ -36,6 +36,20 @@ | |||
| 36 | >; | 36 | >; |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| 39 | mmc_pins: pinmux_mmc_pins { | ||
| 40 | pinctrl-single,pins = < | ||
| 41 | DM816X_IOPAD(0x0a70, MUX_MODE0) /* SD_POW */ | ||
| 42 | DM816X_IOPAD(0x0a74, MUX_MODE0) /* SD_CLK */ | ||
| 43 | DM816X_IOPAD(0x0a78, MUX_MODE0) /* SD_CMD */ | ||
| 44 | DM816X_IOPAD(0x0a7C, MUX_MODE0) /* SD_DAT0 */ | ||
| 45 | DM816X_IOPAD(0x0a80, MUX_MODE0) /* SD_DAT1 */ | ||
| 46 | DM816X_IOPAD(0x0a84, MUX_MODE0) /* SD_DAT2 */ | ||
| 47 | DM816X_IOPAD(0x0a88, MUX_MODE0) /* SD_DAT2 */ | ||
| 48 | DM816X_IOPAD(0x0a8c, MUX_MODE2) /* GP1[7] */ | ||
| 49 | DM816X_IOPAD(0x0a90, MUX_MODE2) /* GP1[8] */ | ||
| 50 | >; | ||
| 51 | }; | ||
| 52 | |||
| 39 | usb0_pins: pinmux_usb0_pins { | 53 | usb0_pins: pinmux_usb0_pins { |
| 40 | pinctrl-single,pins = < | 54 | pinctrl-single,pins = < |
| 41 | DM816X_IOPAD(0x0d00, MUX_MODE0) /* USB0_DRVVBUS */ | 55 | DM816X_IOPAD(0x0d00, MUX_MODE0) /* USB0_DRVVBUS */ |
| @@ -137,7 +151,12 @@ | |||
| 137 | }; | 151 | }; |
| 138 | 152 | ||
| 139 | &mmc1 { | 153 | &mmc1 { |
| 154 | pinctrl-names = "default"; | ||
| 155 | pinctrl-0 = <&mmc_pins>; | ||
| 140 | vmmc-supply = <&vmmcsd_fixed>; | 156 | vmmc-supply = <&vmmcsd_fixed>; |
| 157 | bus-width = <4>; | ||
| 158 | cd-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>; | ||
| 159 | wp-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>; | ||
| 141 | }; | 160 | }; |
| 142 | 161 | ||
| 143 | /* At least dm8168-evm rev c won't support multipoint, later may */ | 162 | /* At least dm8168-evm rev c won't support multipoint, later may */ |
diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi index 3c97b5f2addc..f35715bc6992 100644 --- a/arch/arm/boot/dts/dm816x.dtsi +++ b/arch/arm/boot/dts/dm816x.dtsi | |||
| @@ -150,17 +150,27 @@ | |||
| 150 | }; | 150 | }; |
| 151 | 151 | ||
| 152 | gpio1: gpio@48032000 { | 152 | gpio1: gpio@48032000 { |
| 153 | compatible = "ti,omap3-gpio"; | 153 | compatible = "ti,omap4-gpio"; |
| 154 | ti,hwmods = "gpio1"; | 154 | ti,hwmods = "gpio1"; |
| 155 | ti,gpio-always-on; | ||
| 155 | reg = <0x48032000 0x1000>; | 156 | reg = <0x48032000 0x1000>; |
| 156 | interrupts = <97>; | 157 | interrupts = <96>; |
| 158 | gpio-controller; | ||
| 159 | #gpio-cells = <2>; | ||
| 160 | interrupt-controller; | ||
| 161 | #interrupt-cells = <2>; | ||
| 157 | }; | 162 | }; |
| 158 | 163 | ||
| 159 | gpio2: gpio@4804c000 { | 164 | gpio2: gpio@4804c000 { |
| 160 | compatible = "ti,omap3-gpio"; | 165 | compatible = "ti,omap4-gpio"; |
| 161 | ti,hwmods = "gpio2"; | 166 | ti,hwmods = "gpio2"; |
| 167 | ti,gpio-always-on; | ||
| 162 | reg = <0x4804c000 0x1000>; | 168 | reg = <0x4804c000 0x1000>; |
| 163 | interrupts = <99>; | 169 | interrupts = <98>; |
| 170 | gpio-controller; | ||
| 171 | #gpio-cells = <2>; | ||
| 172 | interrupt-controller; | ||
| 173 | #interrupt-cells = <2>; | ||
| 164 | }; | 174 | }; |
| 165 | 175 | ||
| 166 | gpmc: gpmc@50000000 { | 176 | gpmc: gpmc@50000000 { |
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi index 127608d79033..c4659a979c41 100644 --- a/arch/arm/boot/dts/dra7.dtsi +++ b/arch/arm/boot/dts/dra7.dtsi | |||
| @@ -1111,7 +1111,6 @@ | |||
| 1111 | "wkupclk", "refclk", | 1111 | "wkupclk", "refclk", |
| 1112 | "div-clk", "phy-div"; | 1112 | "div-clk", "phy-div"; |
| 1113 | #phy-cells = <0>; | 1113 | #phy-cells = <0>; |
| 1114 | ti,hwmods = "pcie1-phy"; | ||
| 1115 | }; | 1114 | }; |
| 1116 | 1115 | ||
| 1117 | pcie2_phy: pciephy@4a095000 { | 1116 | pcie2_phy: pciephy@4a095000 { |
| @@ -1130,7 +1129,6 @@ | |||
| 1130 | "wkupclk", "refclk", | 1129 | "wkupclk", "refclk", |
| 1131 | "div-clk", "phy-div"; | 1130 | "div-clk", "phy-div"; |
| 1132 | #phy-cells = <0>; | 1131 | #phy-cells = <0>; |
| 1133 | ti,hwmods = "pcie2-phy"; | ||
| 1134 | status = "disabled"; | 1132 | status = "disabled"; |
| 1135 | }; | 1133 | }; |
| 1136 | }; | 1134 | }; |
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi index f4f78c40b564..3fdc84fddb70 100644 --- a/arch/arm/boot/dts/omap3.dtsi +++ b/arch/arm/boot/dts/omap3.dtsi | |||
| @@ -92,6 +92,8 @@ | |||
| 92 | ti,hwmods = "aes"; | 92 | ti,hwmods = "aes"; |
| 93 | reg = <0x480c5000 0x50>; | 93 | reg = <0x480c5000 0x50>; |
| 94 | interrupts = <0>; | 94 | interrupts = <0>; |
| 95 | dmas = <&sdma 65 &sdma 66>; | ||
| 96 | dma-names = "tx", "rx"; | ||
| 95 | }; | 97 | }; |
| 96 | 98 | ||
| 97 | prm: prm@48306000 { | 99 | prm: prm@48306000 { |
| @@ -550,6 +552,8 @@ | |||
| 550 | ti,hwmods = "sham"; | 552 | ti,hwmods = "sham"; |
| 551 | reg = <0x480c3000 0x64>; | 553 | reg = <0x480c3000 0x64>; |
| 552 | interrupts = <49>; | 554 | interrupts = <49>; |
| 555 | dmas = <&sdma 69>; | ||
| 556 | dma-names = "rx"; | ||
| 553 | }; | 557 | }; |
| 554 | 558 | ||
| 555 | smartreflex_core: smartreflex@480cb000 { | 559 | smartreflex_core: smartreflex@480cb000 { |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 2a2f4d56e4c8..25f1beea453e 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
| @@ -720,6 +720,8 @@ static const char * __init omap_get_family(void) | |||
| 720 | return kasprintf(GFP_KERNEL, "OMAP4"); | 720 | return kasprintf(GFP_KERNEL, "OMAP4"); |
| 721 | else if (soc_is_omap54xx()) | 721 | else if (soc_is_omap54xx()) |
| 722 | return kasprintf(GFP_KERNEL, "OMAP5"); | 722 | return kasprintf(GFP_KERNEL, "OMAP5"); |
| 723 | else if (soc_is_am33xx() || soc_is_am335x()) | ||
| 724 | return kasprintf(GFP_KERNEL, "AM33xx"); | ||
| 723 | else if (soc_is_am43xx()) | 725 | else if (soc_is_am43xx()) |
| 724 | return kasprintf(GFP_KERNEL, "AM43xx"); | 726 | return kasprintf(GFP_KERNEL, "AM43xx"); |
| 725 | else if (soc_is_dra7xx()) | 727 | else if (soc_is_dra7xx()) |
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index db10169a08de..8ca94d379bc3 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
| @@ -799,6 +799,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) | |||
| 799 | struct device *dev = &pdev->dev; | 799 | struct device *dev = &pdev->dev; |
| 800 | const struct of_device_id *match; | 800 | const struct of_device_id *match; |
| 801 | const struct dmtimer_platform_data *pdata; | 801 | const struct dmtimer_platform_data *pdata; |
| 802 | int ret; | ||
| 802 | 803 | ||
| 803 | match = of_match_device(of_match_ptr(omap_timer_match), dev); | 804 | match = of_match_device(of_match_ptr(omap_timer_match), dev); |
| 804 | pdata = match ? match->data : dev->platform_data; | 805 | pdata = match ? match->data : dev->platform_data; |
| @@ -860,7 +861,12 @@ static int omap_dm_timer_probe(struct platform_device *pdev) | |||
| 860 | } | 861 | } |
| 861 | 862 | ||
| 862 | if (!timer->reserved) { | 863 | if (!timer->reserved) { |
| 863 | pm_runtime_get_sync(dev); | 864 | ret = pm_runtime_get_sync(dev); |
| 865 | if (ret < 0) { | ||
| 866 | dev_err(dev, "%s: pm_runtime_get_sync failed!\n", | ||
| 867 | __func__); | ||
| 868 | goto err_get_sync; | ||
| 869 | } | ||
| 864 | __omap_dm_timer_init_regs(timer); | 870 | __omap_dm_timer_init_regs(timer); |
| 865 | pm_runtime_put(dev); | 871 | pm_runtime_put(dev); |
| 866 | } | 872 | } |
| @@ -873,6 +879,11 @@ static int omap_dm_timer_probe(struct platform_device *pdev) | |||
| 873 | dev_dbg(dev, "Device Probed.\n"); | 879 | dev_dbg(dev, "Device Probed.\n"); |
| 874 | 880 | ||
| 875 | return 0; | 881 | return 0; |
| 882 | |||
| 883 | err_get_sync: | ||
| 884 | pm_runtime_put_noidle(dev); | ||
| 885 | pm_runtime_disable(dev); | ||
| 886 | return ret; | ||
| 876 | } | 887 | } |
| 877 | 888 | ||
| 878 | /** | 889 | /** |
| @@ -899,6 +910,8 @@ static int omap_dm_timer_remove(struct platform_device *pdev) | |||
| 899 | } | 910 | } |
| 900 | spin_unlock_irqrestore(&dm_timer_lock, flags); | 911 | spin_unlock_irqrestore(&dm_timer_lock, flags); |
| 901 | 912 | ||
| 913 | pm_runtime_disable(&pdev->dev); | ||
| 914 | |||
| 902 | return ret; | 915 | return ret; |
| 903 | } | 916 | } |
| 904 | 917 | ||
