diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-08 19:11:05 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-08 19:11:05 -0500 |
commit | 44d8a7d5c1b4f9e99c5601217ce03a48412f9aac (patch) | |
tree | 2bfa80eb54b83faf163ca9f0bad576bd2bb22dba | |
parent | 516c50cde604e93f094bb4c42a2cf81411c7a78d (diff) | |
parent | 841bcd2e5014f83ed99e88bd550645d8848ce19a (diff) |
Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Arnd Bergmann:
"This is the final small set of ARM SoC bug fixes for linux-4.4, almost
all regressions:
OMAP:
- data corruption on the Nokia N900 flash
Allwinner:
- Two defconfig change to get USB working again
ARM Versatile:
- Interrupt numbers gone bad after an older bug fix
Nomadik:
- Crashes from incorrect L2 cache settings
VIA vt8500:
- SD/MMC support on WM8650 never worked"
* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
dts: vt8500: Add SDHC node to DTS file for WM8650
ARM: Fix broken USB support in multi_v7_defconfig for sunxi devices
ARM: versatile: fix MMC/SD interrupt assignment
ARM: nomadik: set latencies to 8 cycles
ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption
ARM: Fix broken USB support in sunxi_defconfig
-rw-r--r-- | arch/arm/boot/dts/ste-nomadik-stn8815.dtsi | 6 | ||||
-rw-r--r-- | arch/arm/boot/dts/versatile-ab.dts | 10 | ||||
-rw-r--r-- | arch/arm/boot/dts/versatile-pb.dts | 20 | ||||
-rw-r--r-- | arch/arm/boot/dts/wm8650.dtsi | 9 | ||||
-rw-r--r-- | arch/arm/configs/multi_v7_defconfig | 1 | ||||
-rw-r--r-- | arch/arm/configs/sunxi_defconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/gpmc-onenand.c | 14 |
7 files changed, 49 insertions, 12 deletions
diff --git a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi index 314f59c12162..d0c743853318 100644 --- a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi +++ b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi | |||
@@ -25,9 +25,9 @@ | |||
25 | cache-sets = <512>; | 25 | cache-sets = <512>; |
26 | cache-line-size = <32>; | 26 | cache-line-size = <32>; |
27 | /* At full speed latency must be >=2 */ | 27 | /* At full speed latency must be >=2 */ |
28 | arm,tag-latency = <2>; | 28 | arm,tag-latency = <8>; |
29 | arm,data-latency = <2 2>; | 29 | arm,data-latency = <8 8>; |
30 | arm,dirty-latency = <2>; | 30 | arm,dirty-latency = <8>; |
31 | }; | 31 | }; |
32 | 32 | ||
33 | mtu0: mtu@101e2000 { | 33 | mtu0: mtu@101e2000 { |
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts index 01f40197ea13..3279bf1a17a1 100644 --- a/arch/arm/boot/dts/versatile-ab.dts +++ b/arch/arm/boot/dts/versatile-ab.dts | |||
@@ -110,7 +110,11 @@ | |||
110 | interrupt-parent = <&vic>; | 110 | interrupt-parent = <&vic>; |
111 | interrupts = <31>; /* Cascaded to vic */ | 111 | interrupts = <31>; /* Cascaded to vic */ |
112 | clear-mask = <0xffffffff>; | 112 | clear-mask = <0xffffffff>; |
113 | valid-mask = <0xffc203f8>; | 113 | /* |
114 | * Valid interrupt lines mask according to | ||
115 | * table 4-36 page 4-50 of ARM DUI 0225D | ||
116 | */ | ||
117 | valid-mask = <0x0760031b>; | ||
114 | }; | 118 | }; |
115 | 119 | ||
116 | dma@10130000 { | 120 | dma@10130000 { |
@@ -266,8 +270,8 @@ | |||
266 | }; | 270 | }; |
267 | mmc@5000 { | 271 | mmc@5000 { |
268 | compatible = "arm,pl180", "arm,primecell"; | 272 | compatible = "arm,pl180", "arm,primecell"; |
269 | reg = < 0x5000 0x1000>; | 273 | reg = <0x5000 0x1000>; |
270 | interrupts-extended = <&vic 22 &sic 2>; | 274 | interrupts-extended = <&vic 22 &sic 1>; |
271 | clocks = <&xtal24mhz>, <&pclk>; | 275 | clocks = <&xtal24mhz>, <&pclk>; |
272 | clock-names = "mclk", "apb_pclk"; | 276 | clock-names = "mclk", "apb_pclk"; |
273 | }; | 277 | }; |
diff --git a/arch/arm/boot/dts/versatile-pb.dts b/arch/arm/boot/dts/versatile-pb.dts index b83137f66034..33a8eb28374e 100644 --- a/arch/arm/boot/dts/versatile-pb.dts +++ b/arch/arm/boot/dts/versatile-pb.dts | |||
@@ -5,6 +5,16 @@ | |||
5 | compatible = "arm,versatile-pb"; | 5 | compatible = "arm,versatile-pb"; |
6 | 6 | ||
7 | amba { | 7 | amba { |
8 | /* The Versatile PB is using more SIC IRQ lines than the AB */ | ||
9 | sic: intc@10003000 { | ||
10 | clear-mask = <0xffffffff>; | ||
11 | /* | ||
12 | * Valid interrupt lines mask according to | ||
13 | * figure 3-30 page 3-74 of ARM DUI 0224B | ||
14 | */ | ||
15 | valid-mask = <0x7fe003ff>; | ||
16 | }; | ||
17 | |||
8 | gpio2: gpio@101e6000 { | 18 | gpio2: gpio@101e6000 { |
9 | compatible = "arm,pl061", "arm,primecell"; | 19 | compatible = "arm,pl061", "arm,primecell"; |
10 | reg = <0x101e6000 0x1000>; | 20 | reg = <0x101e6000 0x1000>; |
@@ -67,6 +77,13 @@ | |||
67 | }; | 77 | }; |
68 | 78 | ||
69 | fpga { | 79 | fpga { |
80 | mmc@5000 { | ||
81 | /* | ||
82 | * Overrides the interrupt assignment from | ||
83 | * the Versatile AB board file. | ||
84 | */ | ||
85 | interrupts-extended = <&sic 22 &sic 23>; | ||
86 | }; | ||
70 | uart@9000 { | 87 | uart@9000 { |
71 | compatible = "arm,pl011", "arm,primecell"; | 88 | compatible = "arm,pl011", "arm,primecell"; |
72 | reg = <0x9000 0x1000>; | 89 | reg = <0x9000 0x1000>; |
@@ -86,7 +103,8 @@ | |||
86 | mmc@b000 { | 103 | mmc@b000 { |
87 | compatible = "arm,pl180", "arm,primecell"; | 104 | compatible = "arm,pl180", "arm,primecell"; |
88 | reg = <0xb000 0x1000>; | 105 | reg = <0xb000 0x1000>; |
89 | interrupts-extended = <&vic 23 &sic 2>; | 106 | interrupt-parent = <&sic>; |
107 | interrupts = <1>, <2>; | ||
90 | clocks = <&xtal24mhz>, <&pclk>; | 108 | clocks = <&xtal24mhz>, <&pclk>; |
91 | clock-names = "mclk", "apb_pclk"; | 109 | clock-names = "mclk", "apb_pclk"; |
92 | }; | 110 | }; |
diff --git a/arch/arm/boot/dts/wm8650.dtsi b/arch/arm/boot/dts/wm8650.dtsi index b1c59a766a13..e12213d16693 100644 --- a/arch/arm/boot/dts/wm8650.dtsi +++ b/arch/arm/boot/dts/wm8650.dtsi | |||
@@ -187,6 +187,15 @@ | |||
187 | interrupts = <43>; | 187 | interrupts = <43>; |
188 | }; | 188 | }; |
189 | 189 | ||
190 | sdhc@d800a000 { | ||
191 | compatible = "wm,wm8505-sdhc"; | ||
192 | reg = <0xd800a000 0x400>; | ||
193 | interrupts = <20>, <21>; | ||
194 | clocks = <&clksdhc>; | ||
195 | bus-width = <4>; | ||
196 | sdon-inverted; | ||
197 | }; | ||
198 | |||
190 | fb: fb@d8050800 { | 199 | fb: fb@d8050800 { |
191 | compatible = "wm,wm8505-fb"; | 200 | compatible = "wm,wm8505-fb"; |
192 | reg = <0xd8050800 0x200>; | 201 | reg = <0xd8050800 0x200>; |
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig index 69a22fdb52a5..cd7b198fc79e 100644 --- a/arch/arm/configs/multi_v7_defconfig +++ b/arch/arm/configs/multi_v7_defconfig | |||
@@ -366,6 +366,7 @@ CONFIG_BATTERY_MAX17042=m | |||
366 | CONFIG_CHARGER_MAX14577=m | 366 | CONFIG_CHARGER_MAX14577=m |
367 | CONFIG_CHARGER_MAX77693=m | 367 | CONFIG_CHARGER_MAX77693=m |
368 | CONFIG_CHARGER_TPS65090=y | 368 | CONFIG_CHARGER_TPS65090=y |
369 | CONFIG_AXP20X_POWER=m | ||
369 | CONFIG_POWER_RESET_AS3722=y | 370 | CONFIG_POWER_RESET_AS3722=y |
370 | CONFIG_POWER_RESET_GPIO=y | 371 | CONFIG_POWER_RESET_GPIO=y |
371 | CONFIG_POWER_RESET_GPIO_RESTART=y | 372 | CONFIG_POWER_RESET_GPIO_RESTART=y |
diff --git a/arch/arm/configs/sunxi_defconfig b/arch/arm/configs/sunxi_defconfig index 3c36e16fcacf..b503a89441bf 100644 --- a/arch/arm/configs/sunxi_defconfig +++ b/arch/arm/configs/sunxi_defconfig | |||
@@ -84,6 +84,7 @@ CONFIG_SPI_SUN4I=y | |||
84 | CONFIG_SPI_SUN6I=y | 84 | CONFIG_SPI_SUN6I=y |
85 | CONFIG_GPIO_SYSFS=y | 85 | CONFIG_GPIO_SYSFS=y |
86 | CONFIG_POWER_SUPPLY=y | 86 | CONFIG_POWER_SUPPLY=y |
87 | CONFIG_AXP20X_POWER=y | ||
87 | CONFIG_THERMAL=y | 88 | CONFIG_THERMAL=y |
88 | CONFIG_CPU_THERMAL=y | 89 | CONFIG_CPU_THERMAL=y |
89 | CONFIG_WATCHDOG=y | 90 | CONFIG_WATCHDOG=y |
diff --git a/arch/arm/mach-omap2/gpmc-onenand.c b/arch/arm/mach-omap2/gpmc-onenand.c index 17a6f752a436..7b76ce01c21d 100644 --- a/arch/arm/mach-omap2/gpmc-onenand.c +++ b/arch/arm/mach-omap2/gpmc-onenand.c | |||
@@ -149,8 +149,8 @@ static int omap2_onenand_get_freq(struct omap_onenand_platform_data *cfg, | |||
149 | freq = 104; | 149 | freq = 104; |
150 | break; | 150 | break; |
151 | default: | 151 | default: |
152 | freq = 54; | 152 | pr_err("onenand rate not detected, bad GPMC async timings?\n"); |
153 | break; | 153 | freq = 0; |
154 | } | 154 | } |
155 | 155 | ||
156 | return freq; | 156 | return freq; |
@@ -271,6 +271,11 @@ static int omap2_onenand_setup_async(void __iomem *onenand_base) | |||
271 | struct gpmc_timings t; | 271 | struct gpmc_timings t; |
272 | int ret; | 272 | int ret; |
273 | 273 | ||
274 | /* | ||
275 | * Note that we need to keep sync_write set for the call to | ||
276 | * omap2_onenand_set_async_mode() to work to detect the onenand | ||
277 | * supported clock rate for the sync timings. | ||
278 | */ | ||
274 | if (gpmc_onenand_data->of_node) { | 279 | if (gpmc_onenand_data->of_node) { |
275 | gpmc_read_settings_dt(gpmc_onenand_data->of_node, | 280 | gpmc_read_settings_dt(gpmc_onenand_data->of_node, |
276 | &onenand_async); | 281 | &onenand_async); |
@@ -281,12 +286,9 @@ static int omap2_onenand_setup_async(void __iomem *onenand_base) | |||
281 | else | 286 | else |
282 | gpmc_onenand_data->flags |= ONENAND_SYNC_READ; | 287 | gpmc_onenand_data->flags |= ONENAND_SYNC_READ; |
283 | onenand_async.sync_read = false; | 288 | onenand_async.sync_read = false; |
284 | onenand_async.sync_write = false; | ||
285 | } | 289 | } |
286 | } | 290 | } |
287 | 291 | ||
288 | omap2_onenand_set_async_mode(onenand_base); | ||
289 | |||
290 | omap2_onenand_calc_async_timings(&t); | 292 | omap2_onenand_calc_async_timings(&t); |
291 | 293 | ||
292 | ret = gpmc_cs_program_settings(gpmc_onenand_data->cs, &onenand_async); | 294 | ret = gpmc_cs_program_settings(gpmc_onenand_data->cs, &onenand_async); |
@@ -310,6 +312,8 @@ static int omap2_onenand_setup_sync(void __iomem *onenand_base, int *freq_ptr) | |||
310 | if (!freq) { | 312 | if (!freq) { |
311 | /* Very first call freq is not known */ | 313 | /* Very first call freq is not known */ |
312 | freq = omap2_onenand_get_freq(gpmc_onenand_data, onenand_base); | 314 | freq = omap2_onenand_get_freq(gpmc_onenand_data, onenand_base); |
315 | if (!freq) | ||
316 | return -ENODEV; | ||
313 | set_onenand_cfg(onenand_base); | 317 | set_onenand_cfg(onenand_base); |
314 | } | 318 | } |
315 | 319 | ||