diff options
| -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 | ||
