diff options
46 files changed, 248 insertions, 220 deletions
diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt index 3a268127b054..bc50899e0c81 100644 --- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt | |||
| @@ -81,7 +81,8 @@ PA31 TXD4 | |||
| 81 | Required properties for pin configuration node: | 81 | Required properties for pin configuration node: |
| 82 | - atmel,pins: 4 integers array, represents a group of pins mux and config | 82 | - atmel,pins: 4 integers array, represents a group of pins mux and config |
| 83 | setting. The format is atmel,pins = <PIN_BANK PIN_BANK_NUM PERIPH CONFIG>. | 83 | setting. The format is atmel,pins = <PIN_BANK PIN_BANK_NUM PERIPH CONFIG>. |
| 84 | The PERIPH 0 means gpio. | 84 | The PERIPH 0 means gpio, PERIPH 1 is periph A, PERIPH 2 is periph B... |
| 85 | PIN_BANK 0 is pioA, PIN_BANK 1 is pioB... | ||
| 85 | 86 | ||
| 86 | Bits used for CONFIG: | 87 | Bits used for CONFIG: |
| 87 | PULL_UP (1 << 0): indicate this pin need a pull up. | 88 | PULL_UP (1 << 0): indicate this pin need a pull up. |
| @@ -126,7 +127,7 @@ pinctrl@fffff400 { | |||
| 126 | pinctrl_dbgu: dbgu-0 { | 127 | pinctrl_dbgu: dbgu-0 { |
| 127 | atmel,pins = | 128 | atmel,pins = |
| 128 | <1 14 0x1 0x0 /* PB14 periph A */ | 129 | <1 14 0x1 0x0 /* PB14 periph A */ |
| 129 | 1 15 0x1 0x1>; /* PB15 periph with pullup */ | 130 | 1 15 0x1 0x1>; /* PB15 periph A with pullup */ |
| 130 | }; | 131 | }; |
| 131 | }; | 132 | }; |
| 132 | }; | 133 | }; |
diff --git a/arch/arm/boot/dts/armada-370-db.dts b/arch/arm/boot/dts/armada-370-db.dts index 00044026ef1f..9b82facb2561 100644 --- a/arch/arm/boot/dts/armada-370-db.dts +++ b/arch/arm/boot/dts/armada-370-db.dts | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | memory { | 27 | memory { |
| 28 | device_type = "memory"; | 28 | device_type = "memory"; |
| 29 | reg = <0x00000000 0x20000000>; /* 512 MB */ | 29 | reg = <0x00000000 0x40000000>; /* 1 GB */ |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | soc { | 32 | soc { |
diff --git a/arch/arm/boot/dts/armada-xp-mv78230.dtsi b/arch/arm/boot/dts/armada-xp-mv78230.dtsi index 271855a6e224..e041f42ed711 100644 --- a/arch/arm/boot/dts/armada-xp-mv78230.dtsi +++ b/arch/arm/boot/dts/armada-xp-mv78230.dtsi | |||
| @@ -50,27 +50,25 @@ | |||
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | gpio0: gpio@d0018100 { | 52 | gpio0: gpio@d0018100 { |
| 53 | compatible = "marvell,armadaxp-gpio"; | 53 | compatible = "marvell,orion-gpio"; |
| 54 | reg = <0xd0018100 0x40>, | 54 | reg = <0xd0018100 0x40>; |
| 55 | <0xd0018800 0x30>; | ||
| 56 | ngpios = <32>; | 55 | ngpios = <32>; |
| 57 | gpio-controller; | 56 | gpio-controller; |
| 58 | #gpio-cells = <2>; | 57 | #gpio-cells = <2>; |
| 59 | interrupt-controller; | 58 | interrupt-controller; |
| 60 | #interrupts-cells = <2>; | 59 | #interrupts-cells = <2>; |
| 61 | interrupts = <16>, <17>, <18>, <19>; | 60 | interrupts = <82>, <83>, <84>, <85>; |
| 62 | }; | 61 | }; |
| 63 | 62 | ||
| 64 | gpio1: gpio@d0018140 { | 63 | gpio1: gpio@d0018140 { |
| 65 | compatible = "marvell,armadaxp-gpio"; | 64 | compatible = "marvell,orion-gpio"; |
| 66 | reg = <0xd0018140 0x40>, | 65 | reg = <0xd0018140 0x40>; |
| 67 | <0xd0018840 0x30>; | ||
| 68 | ngpios = <17>; | 66 | ngpios = <17>; |
| 69 | gpio-controller; | 67 | gpio-controller; |
| 70 | #gpio-cells = <2>; | 68 | #gpio-cells = <2>; |
| 71 | interrupt-controller; | 69 | interrupt-controller; |
| 72 | #interrupts-cells = <2>; | 70 | #interrupts-cells = <2>; |
| 73 | interrupts = <20>, <21>, <22>; | 71 | interrupts = <87>, <88>, <89>; |
| 74 | }; | 72 | }; |
| 75 | }; | 73 | }; |
| 76 | }; | 74 | }; |
diff --git a/arch/arm/boot/dts/armada-xp-mv78260.dtsi b/arch/arm/boot/dts/armada-xp-mv78260.dtsi index 1c1937dbce73..9e23bd8c9536 100644 --- a/arch/arm/boot/dts/armada-xp-mv78260.dtsi +++ b/arch/arm/boot/dts/armada-xp-mv78260.dtsi | |||
| @@ -51,39 +51,36 @@ | |||
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | gpio0: gpio@d0018100 { | 53 | gpio0: gpio@d0018100 { |
| 54 | compatible = "marvell,armadaxp-gpio"; | 54 | compatible = "marvell,orion-gpio"; |
| 55 | reg = <0xd0018100 0x40>, | 55 | reg = <0xd0018100 0x40>; |
| 56 | <0xd0018800 0x30>; | ||
| 57 | ngpios = <32>; | 56 | ngpios = <32>; |
| 58 | gpio-controller; | 57 | gpio-controller; |
| 59 | #gpio-cells = <2>; | 58 | #gpio-cells = <2>; |
| 60 | interrupt-controller; | 59 | interrupt-controller; |
| 61 | #interrupts-cells = <2>; | 60 | #interrupts-cells = <2>; |
| 62 | interrupts = <16>, <17>, <18>, <19>; | 61 | interrupts = <82>, <83>, <84>, <85>; |
| 63 | }; | 62 | }; |
| 64 | 63 | ||
| 65 | gpio1: gpio@d0018140 { | 64 | gpio1: gpio@d0018140 { |
| 66 | compatible = "marvell,armadaxp-gpio"; | 65 | compatible = "marvell,orion-gpio"; |
| 67 | reg = <0xd0018140 0x40>, | 66 | reg = <0xd0018140 0x40>; |
| 68 | <0xd0018840 0x30>; | ||
| 69 | ngpios = <32>; | 67 | ngpios = <32>; |
| 70 | gpio-controller; | 68 | gpio-controller; |
| 71 | #gpio-cells = <2>; | 69 | #gpio-cells = <2>; |
| 72 | interrupt-controller; | 70 | interrupt-controller; |
| 73 | #interrupts-cells = <2>; | 71 | #interrupts-cells = <2>; |
| 74 | interrupts = <20>, <21>, <22>, <23>; | 72 | interrupts = <87>, <88>, <89>, <90>; |
| 75 | }; | 73 | }; |
| 76 | 74 | ||
| 77 | gpio2: gpio@d0018180 { | 75 | gpio2: gpio@d0018180 { |
| 78 | compatible = "marvell,armadaxp-gpio"; | 76 | compatible = "marvell,orion-gpio"; |
| 79 | reg = <0xd0018180 0x40>, | 77 | reg = <0xd0018180 0x40>; |
| 80 | <0xd0018870 0x30>; | ||
| 81 | ngpios = <3>; | 78 | ngpios = <3>; |
| 82 | gpio-controller; | 79 | gpio-controller; |
| 83 | #gpio-cells = <2>; | 80 | #gpio-cells = <2>; |
| 84 | interrupt-controller; | 81 | interrupt-controller; |
| 85 | #interrupts-cells = <2>; | 82 | #interrupts-cells = <2>; |
| 86 | interrupts = <24>; | 83 | interrupts = <91>; |
| 87 | }; | 84 | }; |
| 88 | 85 | ||
| 89 | ethernet@d0034000 { | 86 | ethernet@d0034000 { |
diff --git a/arch/arm/boot/dts/armada-xp-mv78460.dtsi b/arch/arm/boot/dts/armada-xp-mv78460.dtsi index 4905cf3a5ef8..965966110e38 100644 --- a/arch/arm/boot/dts/armada-xp-mv78460.dtsi +++ b/arch/arm/boot/dts/armada-xp-mv78460.dtsi | |||
| @@ -66,39 +66,36 @@ | |||
| 66 | }; | 66 | }; |
| 67 | 67 | ||
| 68 | gpio0: gpio@d0018100 { | 68 | gpio0: gpio@d0018100 { |
| 69 | compatible = "marvell,armadaxp-gpio"; | 69 | compatible = "marvell,orion-gpio"; |
| 70 | reg = <0xd0018100 0x40>, | 70 | reg = <0xd0018100 0x40>; |
| 71 | <0xd0018800 0x30>; | ||
| 72 | ngpios = <32>; | 71 | ngpios = <32>; |
| 73 | gpio-controller; | 72 | gpio-controller; |
| 74 | #gpio-cells = <2>; | 73 | #gpio-cells = <2>; |
| 75 | interrupt-controller; | 74 | interrupt-controller; |
| 76 | #interrupts-cells = <2>; | 75 | #interrupts-cells = <2>; |
| 77 | interrupts = <16>, <17>, <18>, <19>; | 76 | interrupts = <82>, <83>, <84>, <85>; |
| 78 | }; | 77 | }; |
| 79 | 78 | ||
| 80 | gpio1: gpio@d0018140 { | 79 | gpio1: gpio@d0018140 { |
| 81 | compatible = "marvell,armadaxp-gpio"; | 80 | compatible = "marvell,orion-gpio"; |
| 82 | reg = <0xd0018140 0x40>, | 81 | reg = <0xd0018140 0x40>; |
| 83 | <0xd0018840 0x30>; | ||
| 84 | ngpios = <32>; | 82 | ngpios = <32>; |
| 85 | gpio-controller; | 83 | gpio-controller; |
| 86 | #gpio-cells = <2>; | 84 | #gpio-cells = <2>; |
| 87 | interrupt-controller; | 85 | interrupt-controller; |
| 88 | #interrupts-cells = <2>; | 86 | #interrupts-cells = <2>; |
| 89 | interrupts = <20>, <21>, <22>, <23>; | 87 | interrupts = <87>, <88>, <89>, <90>; |
| 90 | }; | 88 | }; |
| 91 | 89 | ||
| 92 | gpio2: gpio@d0018180 { | 90 | gpio2: gpio@d0018180 { |
| 93 | compatible = "marvell,armadaxp-gpio"; | 91 | compatible = "marvell,orion-gpio"; |
| 94 | reg = <0xd0018180 0x40>, | 92 | reg = <0xd0018180 0x40>; |
| 95 | <0xd0018870 0x30>; | ||
| 96 | ngpios = <3>; | 93 | ngpios = <3>; |
| 97 | gpio-controller; | 94 | gpio-controller; |
| 98 | #gpio-cells = <2>; | 95 | #gpio-cells = <2>; |
| 99 | interrupt-controller; | 96 | interrupt-controller; |
| 100 | #interrupts-cells = <2>; | 97 | #interrupts-cells = <2>; |
| 101 | interrupts = <24>; | 98 | interrupts = <91>; |
| 102 | }; | 99 | }; |
| 103 | 100 | ||
| 104 | ethernet@d0034000 { | 101 | ethernet@d0034000 { |
diff --git a/arch/arm/boot/dts/at91rm9200.dtsi b/arch/arm/boot/dts/at91rm9200.dtsi index e154f242c680..222047f1ece9 100644 --- a/arch/arm/boot/dts/at91rm9200.dtsi +++ b/arch/arm/boot/dts/at91rm9200.dtsi | |||
| @@ -336,8 +336,8 @@ | |||
| 336 | 336 | ||
| 337 | i2c@0 { | 337 | i2c@0 { |
| 338 | compatible = "i2c-gpio"; | 338 | compatible = "i2c-gpio"; |
| 339 | gpios = <&pioA 23 0 /* sda */ | 339 | gpios = <&pioA 25 0 /* sda */ |
| 340 | &pioA 24 0 /* scl */ | 340 | &pioA 26 0 /* scl */ |
| 341 | >; | 341 | >; |
| 342 | i2c-gpio,sda-open-drain; | 342 | i2c-gpio,sda-open-drain; |
| 343 | i2c-gpio,scl-open-drain; | 343 | i2c-gpio,scl-open-drain; |
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi index 3a47cf952146..8ecca6948d81 100644 --- a/arch/arm/boot/dts/at91sam9x5.dtsi +++ b/arch/arm/boot/dts/at91sam9x5.dtsi | |||
| @@ -143,6 +143,11 @@ | |||
| 143 | atmel,pins = | 143 | atmel,pins = |
| 144 | <0 3 0x1 0x0>; /* PA3 periph A */ | 144 | <0 3 0x1 0x0>; /* PA3 periph A */ |
| 145 | }; | 145 | }; |
| 146 | |||
| 147 | pinctrl_usart0_sck: usart0_sck-0 { | ||
| 148 | atmel,pins = | ||
| 149 | <0 4 0x1 0x0>; /* PA4 periph A */ | ||
| 150 | }; | ||
| 146 | }; | 151 | }; |
| 147 | 152 | ||
| 148 | usart1 { | 153 | usart1 { |
| @@ -154,12 +159,17 @@ | |||
| 154 | 159 | ||
| 155 | pinctrl_usart1_rts: usart1_rts-0 { | 160 | pinctrl_usart1_rts: usart1_rts-0 { |
| 156 | atmel,pins = | 161 | atmel,pins = |
| 157 | <3 27 0x3 0x0>; /* PC27 periph C */ | 162 | <2 27 0x3 0x0>; /* PC27 periph C */ |
| 158 | }; | 163 | }; |
| 159 | 164 | ||
| 160 | pinctrl_usart1_cts: usart1_cts-0 { | 165 | pinctrl_usart1_cts: usart1_cts-0 { |
| 161 | atmel,pins = | 166 | atmel,pins = |
| 162 | <3 28 0x3 0x0>; /* PC28 periph C */ | 167 | <2 28 0x3 0x0>; /* PC28 periph C */ |
| 168 | }; | ||
| 169 | |||
| 170 | pinctrl_usart1_sck: usart1_sck-0 { | ||
| 171 | atmel,pins = | ||
| 172 | <2 28 0x3 0x0>; /* PC29 periph C */ | ||
| 163 | }; | 173 | }; |
| 164 | }; | 174 | }; |
| 165 | 175 | ||
| @@ -172,46 +182,56 @@ | |||
| 172 | 182 | ||
| 173 | pinctrl_uart2_rts: uart2_rts-0 { | 183 | pinctrl_uart2_rts: uart2_rts-0 { |
| 174 | atmel,pins = | 184 | atmel,pins = |
| 175 | <0 0 0x2 0x0>; /* PB0 periph B */ | 185 | <1 0 0x2 0x0>; /* PB0 periph B */ |
| 176 | }; | 186 | }; |
| 177 | 187 | ||
| 178 | pinctrl_uart2_cts: uart2_cts-0 { | 188 | pinctrl_uart2_cts: uart2_cts-0 { |
| 179 | atmel,pins = | 189 | atmel,pins = |
| 180 | <0 1 0x2 0x0>; /* PB1 periph B */ | 190 | <1 1 0x2 0x0>; /* PB1 periph B */ |
| 191 | }; | ||
| 192 | |||
| 193 | pinctrl_usart2_sck: usart2_sck-0 { | ||
| 194 | atmel,pins = | ||
| 195 | <1 2 0x2 0x0>; /* PB2 periph B */ | ||
| 181 | }; | 196 | }; |
| 182 | }; | 197 | }; |
| 183 | 198 | ||
| 184 | usart3 { | 199 | usart3 { |
| 185 | pinctrl_uart3: usart3-0 { | 200 | pinctrl_uart3: usart3-0 { |
| 186 | atmel,pins = | 201 | atmel,pins = |
| 187 | <3 23 0x2 0x1 /* PC22 periph B with pullup */ | 202 | <2 23 0x2 0x1 /* PC22 periph B with pullup */ |
| 188 | 3 23 0x2 0x0>; /* PC23 periph B */ | 203 | 2 23 0x2 0x0>; /* PC23 periph B */ |
| 189 | }; | 204 | }; |
| 190 | 205 | ||
| 191 | pinctrl_usart3_rts: usart3_rts-0 { | 206 | pinctrl_usart3_rts: usart3_rts-0 { |
| 192 | atmel,pins = | 207 | atmel,pins = |
| 193 | <3 24 0x2 0x0>; /* PC24 periph B */ | 208 | <2 24 0x2 0x0>; /* PC24 periph B */ |
| 194 | }; | 209 | }; |
| 195 | 210 | ||
| 196 | pinctrl_usart3_cts: usart3_cts-0 { | 211 | pinctrl_usart3_cts: usart3_cts-0 { |
| 197 | atmel,pins = | 212 | atmel,pins = |
| 198 | <3 25 0x2 0x0>; /* PC25 periph B */ | 213 | <2 25 0x2 0x0>; /* PC25 periph B */ |
| 214 | }; | ||
| 215 | |||
| 216 | pinctrl_usart3_sck: usart3_sck-0 { | ||
| 217 | atmel,pins = | ||
| 218 | <2 26 0x2 0x0>; /* PC26 periph B */ | ||
| 199 | }; | 219 | }; |
| 200 | }; | 220 | }; |
| 201 | 221 | ||
| 202 | uart0 { | 222 | uart0 { |
| 203 | pinctrl_uart0: uart0-0 { | 223 | pinctrl_uart0: uart0-0 { |
| 204 | atmel,pins = | 224 | atmel,pins = |
| 205 | <3 8 0x3 0x0 /* PC8 periph C */ | 225 | <2 8 0x3 0x0 /* PC8 periph C */ |
| 206 | 3 9 0x3 0x1>; /* PC9 periph C with pullup */ | 226 | 2 9 0x3 0x1>; /* PC9 periph C with pullup */ |
| 207 | }; | 227 | }; |
| 208 | }; | 228 | }; |
| 209 | 229 | ||
| 210 | uart1 { | 230 | uart1 { |
| 211 | pinctrl_uart1: uart1-0 { | 231 | pinctrl_uart1: uart1-0 { |
| 212 | atmel,pins = | 232 | atmel,pins = |
| 213 | <3 16 0x3 0x0 /* PC16 periph C */ | 233 | <2 16 0x3 0x0 /* PC16 periph C */ |
| 214 | 3 17 0x3 0x1>; /* PC17 periph C with pullup */ | 234 | 2 17 0x3 0x1>; /* PC17 periph C with pullup */ |
| 215 | }; | 235 | }; |
| 216 | }; | 236 | }; |
| 217 | 237 | ||
| @@ -240,14 +260,14 @@ | |||
| 240 | 260 | ||
| 241 | pinctrl_macb0_rmii_mii: macb0_rmii_mii-0 { | 261 | pinctrl_macb0_rmii_mii: macb0_rmii_mii-0 { |
| 242 | atmel,pins = | 262 | atmel,pins = |
| 243 | <1 8 0x1 0x0 /* PA8 periph A */ | 263 | <1 8 0x1 0x0 /* PB8 periph A */ |
| 244 | 1 11 0x1 0x0 /* PA11 periph A */ | 264 | 1 11 0x1 0x0 /* PB11 periph A */ |
| 245 | 1 12 0x1 0x0 /* PA12 periph A */ | 265 | 1 12 0x1 0x0 /* PB12 periph A */ |
| 246 | 1 13 0x1 0x0 /* PA13 periph A */ | 266 | 1 13 0x1 0x0 /* PB13 periph A */ |
| 247 | 1 14 0x1 0x0 /* PA14 periph A */ | 267 | 1 14 0x1 0x0 /* PB14 periph A */ |
| 248 | 1 15 0x1 0x0 /* PA15 periph A */ | 268 | 1 15 0x1 0x0 /* PB15 periph A */ |
| 249 | 1 16 0x1 0x0 /* PA16 periph A */ | 269 | 1 16 0x1 0x0 /* PB16 periph A */ |
| 250 | 1 17 0x1 0x0>; /* PA17 periph A */ | 270 | 1 17 0x1 0x0>; /* PB17 periph A */ |
| 251 | }; | 271 | }; |
| 252 | }; | 272 | }; |
| 253 | 273 | ||
diff --git a/arch/arm/boot/dts/cros5250-common.dtsi b/arch/arm/boot/dts/cros5250-common.dtsi index fddd17417433..46c098017036 100644 --- a/arch/arm/boot/dts/cros5250-common.dtsi +++ b/arch/arm/boot/dts/cros5250-common.dtsi | |||
| @@ -96,8 +96,8 @@ | |||
| 96 | fifo-depth = <0x80>; | 96 | fifo-depth = <0x80>; |
| 97 | card-detect-delay = <200>; | 97 | card-detect-delay = <200>; |
| 98 | samsung,dw-mshc-ciu-div = <3>; | 98 | samsung,dw-mshc-ciu-div = <3>; |
| 99 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 99 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 100 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 100 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 101 | 101 | ||
| 102 | slot@0 { | 102 | slot@0 { |
| 103 | reg = <0>; | 103 | reg = <0>; |
| @@ -120,8 +120,8 @@ | |||
| 120 | fifo-depth = <0x80>; | 120 | fifo-depth = <0x80>; |
| 121 | card-detect-delay = <200>; | 121 | card-detect-delay = <200>; |
| 122 | samsung,dw-mshc-ciu-div = <3>; | 122 | samsung,dw-mshc-ciu-div = <3>; |
| 123 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 123 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 124 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 124 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 125 | 125 | ||
| 126 | slot@0 { | 126 | slot@0 { |
| 127 | reg = <0>; | 127 | reg = <0>; |
| @@ -141,8 +141,8 @@ | |||
| 141 | fifo-depth = <0x80>; | 141 | fifo-depth = <0x80>; |
| 142 | card-detect-delay = <200>; | 142 | card-detect-delay = <200>; |
| 143 | samsung,dw-mshc-ciu-div = <3>; | 143 | samsung,dw-mshc-ciu-div = <3>; |
| 144 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 144 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 145 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 145 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 146 | 146 | ||
| 147 | slot@0 { | 147 | slot@0 { |
| 148 | reg = <0>; | 148 | reg = <0>; |
diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts index fed7d3f9f431..cdee96fca6e2 100644 --- a/arch/arm/boot/dts/dove-cubox.dts +++ b/arch/arm/boot/dts/dove-cubox.dts | |||
| @@ -26,10 +26,15 @@ | |||
| 26 | }; | 26 | }; |
| 27 | 27 | ||
| 28 | &uart0 { status = "okay"; }; | 28 | &uart0 { status = "okay"; }; |
| 29 | &sdio0 { status = "okay"; }; | ||
| 30 | &sata0 { status = "okay"; }; | 29 | &sata0 { status = "okay"; }; |
| 31 | &i2c0 { status = "okay"; }; | 30 | &i2c0 { status = "okay"; }; |
| 32 | 31 | ||
| 32 | &sdio0 { | ||
| 33 | status = "okay"; | ||
| 34 | /* sdio0 card detect is connected to wrong pin on CuBox */ | ||
| 35 | cd-gpios = <&gpio0 12 1>; | ||
| 36 | }; | ||
| 37 | |||
| 33 | &spi0 { | 38 | &spi0 { |
| 34 | status = "okay"; | 39 | status = "okay"; |
| 35 | 40 | ||
| @@ -42,9 +47,14 @@ | |||
| 42 | }; | 47 | }; |
| 43 | 48 | ||
| 44 | &pinctrl { | 49 | &pinctrl { |
| 45 | pinctrl-0 = <&pmx_gpio_18>; | 50 | pinctrl-0 = <&pmx_gpio_12 &pmx_gpio_18>; |
| 46 | pinctrl-names = "default"; | 51 | pinctrl-names = "default"; |
| 47 | 52 | ||
| 53 | pmx_gpio_12: pmx-gpio-12 { | ||
| 54 | marvell,pins = "mpp12"; | ||
| 55 | marvell,function = "gpio"; | ||
| 56 | }; | ||
| 57 | |||
| 48 | pmx_gpio_18: pmx-gpio-18 { | 58 | pmx_gpio_18: pmx-gpio-18 { |
| 49 | marvell,pins = "mpp18"; | 59 | marvell,pins = "mpp18"; |
| 50 | marvell,function = "gpio"; | 60 | marvell,function = "gpio"; |
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index 942d5761ca97..e05b18f3c33d 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts | |||
| @@ -115,8 +115,8 @@ | |||
| 115 | fifo-depth = <0x80>; | 115 | fifo-depth = <0x80>; |
| 116 | card-detect-delay = <200>; | 116 | card-detect-delay = <200>; |
| 117 | samsung,dw-mshc-ciu-div = <3>; | 117 | samsung,dw-mshc-ciu-div = <3>; |
| 118 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 118 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 119 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 119 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 120 | 120 | ||
| 121 | slot@0 { | 121 | slot@0 { |
| 122 | reg = <0>; | 122 | reg = <0>; |
| @@ -139,8 +139,8 @@ | |||
| 139 | fifo-depth = <0x80>; | 139 | fifo-depth = <0x80>; |
| 140 | card-detect-delay = <200>; | 140 | card-detect-delay = <200>; |
| 141 | samsung,dw-mshc-ciu-div = <3>; | 141 | samsung,dw-mshc-ciu-div = <3>; |
| 142 | samsung,dw-mshc-sdr-timing = <2 3 3>; | 142 | samsung,dw-mshc-sdr-timing = <2 3>; |
| 143 | samsung,dw-mshc-ddr-timing = <1 2 3>; | 143 | samsung,dw-mshc-ddr-timing = <1 2>; |
| 144 | 144 | ||
| 145 | slot@0 { | 145 | slot@0 { |
| 146 | reg = <0>; | 146 | reg = <0>; |
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi index 9bc6785ad228..77d21abfcdf7 100644 --- a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi +++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | /include/ "kirkwood.dtsi" | 1 | /include/ "kirkwood.dtsi" |
| 2 | /include/ "kirkwood-6281.dtsi" | ||
| 2 | 3 | ||
| 3 | / { | 4 | / { |
| 4 | chosen { | 5 | chosen { |
| @@ -6,6 +7,21 @@ | |||
| 6 | }; | 7 | }; |
| 7 | 8 | ||
| 8 | ocp@f1000000 { | 9 | ocp@f1000000 { |
| 10 | pinctrl: pinctrl@10000 { | ||
| 11 | pinctrl-0 = < &pmx_spi &pmx_twsi0 &pmx_uart0 | ||
| 12 | &pmx_ns2_sata0 &pmx_ns2_sata1>; | ||
| 13 | pinctrl-names = "default"; | ||
| 14 | |||
| 15 | pmx_ns2_sata0: pmx-ns2-sata0 { | ||
| 16 | marvell,pins = "mpp21"; | ||
| 17 | marvell,function = "sata0"; | ||
| 18 | }; | ||
| 19 | pmx_ns2_sata1: pmx-ns2-sata1 { | ||
| 20 | marvell,pins = "mpp20"; | ||
| 21 | marvell,function = "sata1"; | ||
| 22 | }; | ||
| 23 | }; | ||
| 24 | |||
| 9 | serial@12000 { | 25 | serial@12000 { |
| 10 | clock-frequency = <166666667>; | 26 | clock-frequency = <166666667>; |
| 11 | status = "okay"; | 27 | status = "okay"; |
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi index 110d6cbb795b..d6ab442b7011 100644 --- a/arch/arm/boot/dts/kirkwood.dtsi +++ b/arch/arm/boot/dts/kirkwood.dtsi | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | reg = <0x10100 0x40>; | 36 | reg = <0x10100 0x40>; |
| 37 | ngpios = <32>; | 37 | ngpios = <32>; |
| 38 | interrupt-controller; | 38 | interrupt-controller; |
| 39 | #interrupt-cells = <2>; | ||
| 39 | interrupts = <35>, <36>, <37>, <38>; | 40 | interrupts = <35>, <36>, <37>, <38>; |
| 40 | }; | 41 | }; |
| 41 | 42 | ||
| @@ -46,6 +47,7 @@ | |||
| 46 | reg = <0x10140 0x40>; | 47 | reg = <0x10140 0x40>; |
| 47 | ngpios = <18>; | 48 | ngpios = <18>; |
| 48 | interrupt-controller; | 49 | interrupt-controller; |
| 50 | #interrupt-cells = <2>; | ||
| 49 | interrupts = <39>, <40>, <41>; | 51 | interrupts = <39>, <40>, <41>; |
| 50 | }; | 52 | }; |
| 51 | 53 | ||
diff --git a/arch/arm/boot/dts/kizbox.dts b/arch/arm/boot/dts/kizbox.dts index e8814fe0e277..b4dc3ed9a3ec 100644 --- a/arch/arm/boot/dts/kizbox.dts +++ b/arch/arm/boot/dts/kizbox.dts | |||
| @@ -48,6 +48,8 @@ | |||
| 48 | 48 | ||
| 49 | macb0: ethernet@fffc4000 { | 49 | macb0: ethernet@fffc4000 { |
| 50 | phy-mode = "mii"; | 50 | phy-mode = "mii"; |
| 51 | pinctrl-0 = <&pinctrl_macb_rmii | ||
| 52 | &pinctrl_macb_rmii_mii_alt>; | ||
| 51 | status = "okay"; | 53 | status = "okay"; |
| 52 | }; | 54 | }; |
| 53 | 55 | ||
diff --git a/arch/arm/boot/dts/sunxi.dtsi b/arch/arm/boot/dts/sunxi.dtsi index 8bbc2bfef221..8b36abea9f2e 100644 --- a/arch/arm/boot/dts/sunxi.dtsi +++ b/arch/arm/boot/dts/sunxi.dtsi | |||
| @@ -60,19 +60,21 @@ | |||
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | uart0: uart@01c28000 { | 62 | uart0: uart@01c28000 { |
| 63 | compatible = "ns8250"; | 63 | compatible = "snps,dw-apb-uart"; |
| 64 | reg = <0x01c28000 0x400>; | 64 | reg = <0x01c28000 0x400>; |
| 65 | interrupts = <1>; | 65 | interrupts = <1>; |
| 66 | reg-shift = <2>; | 66 | reg-shift = <2>; |
| 67 | reg-io-width = <4>; | ||
| 67 | clock-frequency = <24000000>; | 68 | clock-frequency = <24000000>; |
| 68 | status = "disabled"; | 69 | status = "disabled"; |
| 69 | }; | 70 | }; |
| 70 | 71 | ||
| 71 | uart1: uart@01c28400 { | 72 | uart1: uart@01c28400 { |
| 72 | compatible = "ns8250"; | 73 | compatible = "snps,dw-apb-uart"; |
| 73 | reg = <0x01c28400 0x400>; | 74 | reg = <0x01c28400 0x400>; |
| 74 | interrupts = <2>; | 75 | interrupts = <2>; |
| 75 | reg-shift = <2>; | 76 | reg-shift = <2>; |
| 77 | reg-io-width = <4>; | ||
| 76 | clock-frequency = <24000000>; | 78 | clock-frequency = <24000000>; |
| 77 | status = "disabled"; | 79 | status = "disabled"; |
| 78 | }; | 80 | }; |
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts index 1fc405a9ecfb..cf8071ad22d5 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | |||
| @@ -45,7 +45,6 @@ | |||
| 45 | reg = <1>; | 45 | reg = <1>; |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
| 48 | /* A7s disabled till big.LITTLE patches are available... | ||
| 49 | cpu2: cpu@2 { | 48 | cpu2: cpu@2 { |
| 50 | device_type = "cpu"; | 49 | device_type = "cpu"; |
| 51 | compatible = "arm,cortex-a7"; | 50 | compatible = "arm,cortex-a7"; |
| @@ -63,7 +62,6 @@ | |||
| 63 | compatible = "arm,cortex-a7"; | 62 | compatible = "arm,cortex-a7"; |
| 64 | reg = <0x102>; | 63 | reg = <0x102>; |
| 65 | }; | 64 | }; |
| 66 | */ | ||
| 67 | }; | 65 | }; |
| 68 | 66 | ||
| 69 | memory@80000000 { | 67 | memory@80000000 { |
diff --git a/arch/arm/configs/at91_dt_defconfig b/arch/arm/configs/at91_dt_defconfig index b175577d7abb..1ea959019fcd 100644 --- a/arch/arm/configs/at91_dt_defconfig +++ b/arch/arm/configs/at91_dt_defconfig | |||
| @@ -19,6 +19,7 @@ CONFIG_SOC_AT91SAM9260=y | |||
| 19 | CONFIG_SOC_AT91SAM9263=y | 19 | CONFIG_SOC_AT91SAM9263=y |
| 20 | CONFIG_SOC_AT91SAM9G45=y | 20 | CONFIG_SOC_AT91SAM9G45=y |
| 21 | CONFIG_SOC_AT91SAM9X5=y | 21 | CONFIG_SOC_AT91SAM9X5=y |
| 22 | CONFIG_SOC_AT91SAM9N12=y | ||
| 22 | CONFIG_MACH_AT91SAM_DT=y | 23 | CONFIG_MACH_AT91SAM_DT=y |
| 23 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | 24 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y |
| 24 | CONFIG_AT91_TIMER_HZ=128 | 25 | CONFIG_AT91_TIMER_HZ=128 |
| @@ -31,7 +32,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0 | |||
| 31 | CONFIG_ZBOOT_ROM_BSS=0x0 | 32 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 32 | CONFIG_ARM_APPENDED_DTB=y | 33 | CONFIG_ARM_APPENDED_DTB=y |
| 33 | CONFIG_ARM_ATAG_DTB_COMPAT=y | 34 | CONFIG_ARM_ATAG_DTB_COMPAT=y |
| 34 | CONFIG_CMDLINE="mem=128M console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw" | 35 | CONFIG_CMDLINE="console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw" |
| 35 | CONFIG_KEXEC=y | 36 | CONFIG_KEXEC=y |
| 36 | CONFIG_AUTO_ZRELADDR=y | 37 | CONFIG_AUTO_ZRELADDR=y |
| 37 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 38 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index 6809200c31fb..14f7c3b14632 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S | |||
| @@ -100,12 +100,14 @@ ENTRY(printch) | |||
| 100 | b 1b | 100 | b 1b |
| 101 | ENDPROC(printch) | 101 | ENDPROC(printch) |
| 102 | 102 | ||
| 103 | #ifdef CONFIG_MMU | ||
| 103 | ENTRY(debug_ll_addr) | 104 | ENTRY(debug_ll_addr) |
| 104 | addruart r2, r3, ip | 105 | addruart r2, r3, ip |
| 105 | str r2, [r0] | 106 | str r2, [r0] |
| 106 | str r3, [r1] | 107 | str r3, [r1] |
| 107 | mov pc, lr | 108 | mov pc, lr |
| 108 | ENDPROC(debug_ll_addr) | 109 | ENDPROC(debug_ll_addr) |
| 110 | #endif | ||
| 109 | 111 | ||
| 110 | #else | 112 | #else |
| 111 | 113 | ||
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index 9ee866ce0478..4b678478cf95 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c | |||
| @@ -105,6 +105,8 @@ static void __init soc_detect(u32 dbgu_base) | |||
| 105 | switch (socid) { | 105 | switch (socid) { |
| 106 | case ARCH_ID_AT91RM9200: | 106 | case ARCH_ID_AT91RM9200: |
| 107 | at91_soc_initdata.type = AT91_SOC_RM9200; | 107 | at91_soc_initdata.type = AT91_SOC_RM9200; |
| 108 | if (at91_soc_initdata.subtype == AT91_SOC_SUBTYPE_NONE) | ||
| 109 | at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA; | ||
| 108 | at91_boot_soc = at91rm9200_soc; | 110 | at91_boot_soc = at91rm9200_soc; |
| 109 | break; | 111 | break; |
| 110 | 112 | ||
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 3e628fd7a674..0a2349dc7018 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
| @@ -851,6 +851,7 @@ config SOC_IMX6Q | |||
| 851 | select HAVE_CAN_FLEXCAN if CAN | 851 | select HAVE_CAN_FLEXCAN if CAN |
| 852 | select HAVE_IMX_GPC | 852 | select HAVE_IMX_GPC |
| 853 | select HAVE_IMX_MMDC | 853 | select HAVE_IMX_MMDC |
| 854 | select HAVE_IMX_SRC | ||
| 854 | select HAVE_SMP | 855 | select HAVE_SMP |
| 855 | select MFD_SYSCON | 856 | select MFD_SYSCON |
| 856 | select PINCTRL | 857 | select PINCTRL |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 7f2c10c7413a..c0c4e723b7f5 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
| @@ -436,6 +436,9 @@ int __init mx6q_clocks_init(void) | |||
| 436 | for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) | 436 | for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) |
| 437 | clk_prepare_enable(clk[clks_init_on[i]]); | 437 | clk_prepare_enable(clk[clks_init_on[i]]); |
| 438 | 438 | ||
| 439 | /* Set initial power mode */ | ||
| 440 | imx6q_set_lpm(WAIT_CLOCKED); | ||
| 441 | |||
| 439 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); | 442 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); |
| 440 | base = of_iomap(np, 0); | 443 | base = of_iomap(np, 0); |
| 441 | WARN_ON(!base); | 444 | WARN_ON(!base); |
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index 7191ab4434e5..fa36fb84ab19 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h | |||
| @@ -142,6 +142,7 @@ extern int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode); | |||
| 142 | extern void imx6q_clock_map_io(void); | 142 | extern void imx6q_clock_map_io(void); |
| 143 | 143 | ||
| 144 | extern void imx_cpu_die(unsigned int cpu); | 144 | extern void imx_cpu_die(unsigned int cpu); |
| 145 | extern int imx_cpu_kill(unsigned int cpu); | ||
| 145 | 146 | ||
| 146 | #ifdef CONFIG_PM | 147 | #ifdef CONFIG_PM |
| 147 | extern void imx6q_pm_init(void); | 148 | extern void imx6q_pm_init(void); |
diff --git a/arch/arm/mach-imx/devices/platform-imx-fb.c b/arch/arm/mach-imx/devices/platform-imx-fb.c index 10b0ed39f07f..25a47c616b2d 100644 --- a/arch/arm/mach-imx/devices/platform-imx-fb.c +++ b/arch/arm/mach-imx/devices/platform-imx-fb.c | |||
| @@ -54,7 +54,7 @@ struct platform_device *__init imx_add_imx_fb( | |||
| 54 | .flags = IORESOURCE_IRQ, | 54 | .flags = IORESOURCE_IRQ, |
| 55 | }, | 55 | }, |
| 56 | }; | 56 | }; |
| 57 | return imx_add_platform_device_dmamask("imx-fb", 0, | 57 | return imx_add_platform_device_dmamask(data->devid, 0, |
| 58 | res, ARRAY_SIZE(res), | 58 | res, ARRAY_SIZE(res), |
| 59 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); | 59 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); |
| 60 | } | 60 | } |
diff --git a/arch/arm/mach-imx/hotplug.c b/arch/arm/mach-imx/hotplug.c index 3dec962b0770..7bc5fe15dda2 100644 --- a/arch/arm/mach-imx/hotplug.c +++ b/arch/arm/mach-imx/hotplug.c | |||
| @@ -46,9 +46,11 @@ static inline void cpu_enter_lowpower(void) | |||
| 46 | void imx_cpu_die(unsigned int cpu) | 46 | void imx_cpu_die(unsigned int cpu) |
| 47 | { | 47 | { |
| 48 | cpu_enter_lowpower(); | 48 | cpu_enter_lowpower(); |
| 49 | imx_enable_cpu(cpu, false); | 49 | cpu_do_idle(); |
| 50 | } | ||
| 50 | 51 | ||
| 51 | /* spin here until hardware takes it down */ | 52 | int imx_cpu_kill(unsigned int cpu) |
| 52 | while (1) | 53 | { |
| 53 | ; | 54 | imx_enable_cpu(cpu, false); |
| 55 | return 1; | ||
| 54 | } | 56 | } |
diff --git a/arch/arm/mach-imx/iram_alloc.c b/arch/arm/mach-imx/iram_alloc.c index 6c80424f678e..e05cf407db65 100644 --- a/arch/arm/mach-imx/iram_alloc.c +++ b/arch/arm/mach-imx/iram_alloc.c | |||
| @@ -22,8 +22,7 @@ | |||
| 22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
| 23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
| 24 | #include <linux/genalloc.h> | 24 | #include <linux/genalloc.h> |
| 25 | 25 | #include "linux/platform_data/imx-iram.h" | |
| 26 | #include "iram.h" | ||
| 27 | 26 | ||
| 28 | static unsigned long iram_phys_base; | 27 | static unsigned long iram_phys_base; |
| 29 | static void __iomem *iram_virt_base; | 28 | static void __iomem *iram_virt_base; |
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c index 3777b805b76b..66fae885c842 100644 --- a/arch/arm/mach-imx/platsmp.c +++ b/arch/arm/mach-imx/platsmp.c | |||
| @@ -92,5 +92,6 @@ struct smp_operations imx_smp_ops __initdata = { | |||
| 92 | .smp_boot_secondary = imx_boot_secondary, | 92 | .smp_boot_secondary = imx_boot_secondary, |
| 93 | #ifdef CONFIG_HOTPLUG_CPU | 93 | #ifdef CONFIG_HOTPLUG_CPU |
| 94 | .cpu_die = imx_cpu_die, | 94 | .cpu_die = imx_cpu_die, |
| 95 | .cpu_kill = imx_cpu_kill, | ||
| 95 | #endif | 96 | #endif |
| 96 | }; | 97 | }; |
diff --git a/arch/arm/mach-imx/pm-imx6q.c b/arch/arm/mach-imx/pm-imx6q.c index a17543da602d..ee42d20cba19 100644 --- a/arch/arm/mach-imx/pm-imx6q.c +++ b/arch/arm/mach-imx/pm-imx6q.c | |||
| @@ -41,6 +41,7 @@ static int imx6q_pm_enter(suspend_state_t state) | |||
| 41 | cpu_suspend(0, imx6q_suspend_finish); | 41 | cpu_suspend(0, imx6q_suspend_finish); |
| 42 | imx_smp_prepare(); | 42 | imx_smp_prepare(); |
| 43 | imx_gpc_post_resume(); | 43 | imx_gpc_post_resume(); |
| 44 | imx6q_set_lpm(WAIT_CLOCKED); | ||
| 44 | break; | 45 | break; |
| 45 | default: | 46 | default: |
| 46 | return -EINVAL; | 47 | return -EINVAL; |
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c index be50e795536d..e7fcea7f3300 100644 --- a/arch/arm/mach-integrator/pci_v3.c +++ b/arch/arm/mach-integrator/pci_v3.c | |||
| @@ -475,13 +475,12 @@ int __init pci_v3_setup(int nr, struct pci_sys_data *sys) | |||
| 475 | { | 475 | { |
| 476 | int ret = 0; | 476 | int ret = 0; |
| 477 | 477 | ||
| 478 | if (!ap_syscon_base) | ||
| 479 | return -EINVAL; | ||
| 480 | |||
| 478 | if (nr == 0) { | 481 | if (nr == 0) { |
| 479 | sys->mem_offset = PHYS_PCI_MEM_BASE; | 482 | sys->mem_offset = PHYS_PCI_MEM_BASE; |
| 480 | ret = pci_v3_setup_resources(sys); | 483 | ret = pci_v3_setup_resources(sys); |
| 481 | /* Remap the Integrator system controller */ | ||
| 482 | ap_syscon_base = ioremap(INTEGRATOR_SC_BASE, 0x100); | ||
| 483 | if (!ap_syscon_base) | ||
| 484 | return -EINVAL; | ||
| 485 | } | 484 | } |
| 486 | 485 | ||
| 487 | return ret; | 486 | return ret; |
| @@ -497,6 +496,13 @@ void __init pci_v3_preinit(void) | |||
| 497 | unsigned int temp; | 496 | unsigned int temp; |
| 498 | int ret; | 497 | int ret; |
| 499 | 498 | ||
| 499 | /* Remap the Integrator system controller */ | ||
| 500 | ap_syscon_base = ioremap(INTEGRATOR_SC_BASE, 0x100); | ||
| 501 | if (!ap_syscon_base) { | ||
| 502 | pr_err("unable to remap the AP syscon for PCIv3\n"); | ||
| 503 | return; | ||
| 504 | } | ||
| 505 | |||
| 500 | pcibios_min_mem = 0x00100000; | 506 | pcibios_min_mem = 0x00100000; |
| 501 | 507 | ||
| 502 | /* | 508 | /* |
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c index 8821720ab5a4..f4632a809f68 100644 --- a/arch/arm/mach-kirkwood/board-ns2.c +++ b/arch/arm/mach-kirkwood/board-ns2.c | |||
| @@ -18,47 +18,11 @@ | |||
| 18 | #include <linux/gpio.h> | 18 | #include <linux/gpio.h> |
| 19 | #include <linux/of.h> | 19 | #include <linux/of.h> |
| 20 | #include "common.h" | 20 | #include "common.h" |
| 21 | #include "mpp.h" | ||
| 22 | 21 | ||
| 23 | static struct mv643xx_eth_platform_data ns2_ge00_data = { | 22 | static struct mv643xx_eth_platform_data ns2_ge00_data = { |
| 24 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | 23 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), |
| 25 | }; | 24 | }; |
| 26 | 25 | ||
| 27 | static unsigned int ns2_mpp_config[] __initdata = { | ||
| 28 | MPP0_SPI_SCn, | ||
| 29 | MPP1_SPI_MOSI, | ||
| 30 | MPP2_SPI_SCK, | ||
| 31 | MPP3_SPI_MISO, | ||
| 32 | MPP4_NF_IO6, | ||
| 33 | MPP5_NF_IO7, | ||
| 34 | MPP6_SYSRST_OUTn, | ||
| 35 | MPP7_GPO, /* Fan speed (bit 1) */ | ||
| 36 | MPP8_TW0_SDA, | ||
| 37 | MPP9_TW0_SCK, | ||
| 38 | MPP10_UART0_TXD, | ||
| 39 | MPP11_UART0_RXD, | ||
| 40 | MPP12_GPO, /* Red led */ | ||
| 41 | MPP14_GPIO, /* USB fuse */ | ||
| 42 | MPP16_GPIO, /* SATA 0 power */ | ||
| 43 | MPP17_GPIO, /* SATA 1 power */ | ||
| 44 | MPP18_NF_IO0, | ||
| 45 | MPP19_NF_IO1, | ||
| 46 | MPP20_SATA1_ACTn, | ||
| 47 | MPP21_SATA0_ACTn, | ||
| 48 | MPP22_GPIO, /* Fan speed (bit 0) */ | ||
| 49 | MPP23_GPIO, /* Fan power */ | ||
| 50 | MPP24_GPIO, /* USB mode select */ | ||
| 51 | MPP25_GPIO, /* Fan rotation fail */ | ||
| 52 | MPP26_GPIO, /* USB device vbus */ | ||
| 53 | MPP28_GPIO, /* USB enable host vbus */ | ||
| 54 | MPP29_GPIO, /* Blue led (slow register) */ | ||
| 55 | MPP30_GPIO, /* Blue led (command register) */ | ||
| 56 | MPP31_GPIO, /* Board power off */ | ||
| 57 | MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */ | ||
| 58 | MPP33_GPO, /* Fan speed (bit 2) */ | ||
| 59 | 0 | ||
| 60 | }; | ||
| 61 | |||
| 62 | #define NS2_GPIO_POWER_OFF 31 | 26 | #define NS2_GPIO_POWER_OFF 31 |
| 63 | 27 | ||
| 64 | static void ns2_power_off(void) | 28 | static void ns2_power_off(void) |
| @@ -71,8 +35,6 @@ void __init ns2_init(void) | |||
| 71 | /* | 35 | /* |
| 72 | * Basic setup. Needs to be called early. | 36 | * Basic setup. Needs to be called early. |
| 73 | */ | 37 | */ |
| 74 | kirkwood_mpp_conf(ns2_mpp_config); | ||
| 75 | |||
| 76 | if (of_machine_is_compatible("lacie,netspace_lite_v2") || | 38 | if (of_machine_is_compatible("lacie,netspace_lite_v2") || |
| 77 | of_machine_is_compatible("lacie,netspace_mini_v2")) | 39 | of_machine_is_compatible("lacie,netspace_mini_v2")) |
| 78 | ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); | 40 | ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); |
diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile index 5dcb369b58aa..99df4df680fd 100644 --- a/arch/arm/mach-mvebu/Makefile +++ b/arch/arm/mach-mvebu/Makefile | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ | 1 | ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ |
| 2 | -I$(srctree)/arch/arm/plat-orion/include | 2 | -I$(srctree)/arch/arm/plat-orion/include |
| 3 | 3 | ||
| 4 | AFLAGS_coherency_ll.o := -Wa,-march=armv7-a | ||
| 5 | |||
| 4 | obj-y += system-controller.o | 6 | obj-y += system-controller.o |
| 5 | obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o addr-map.o coherency.o coherency_ll.o pmsu.o | 7 | obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o addr-map.o coherency.o coherency_ll.o pmsu.o |
| 6 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o | 8 | obj-$(CONFIG_SMP) += platsmp.o headsmp.o |
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 5c8e9cee2c2e..769c1feee1c4 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c | |||
| @@ -397,6 +397,12 @@ static struct omap_board_mux board_mux[] __initdata = { | |||
| 397 | OMAP_PULL_ENA), | 397 | OMAP_PULL_ENA), |
| 398 | OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), | 398 | OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT), |
| 399 | 399 | ||
| 400 | /* UART2 - BT/FM/GPS shared transport */ | ||
| 401 | OMAP4_MUX(UART2_CTS, OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
| 402 | OMAP4_MUX(UART2_RTS, OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
| 403 | OMAP4_MUX(UART2_RX, OMAP_PIN_INPUT | OMAP_MUX_MODE0), | ||
| 404 | OMAP4_MUX(UART2_TX, OMAP_PIN_OUTPUT | OMAP_MUX_MODE0), | ||
| 405 | |||
| 400 | { .reg_offset = OMAP_MUX_TERMINATOR }, | 406 | { .reg_offset = OMAP_MUX_TERMINATOR }, |
| 401 | }; | 407 | }; |
| 402 | 408 | ||
diff --git a/arch/arm/mach-omap2/cclock2420_data.c b/arch/arm/mach-omap2/cclock2420_data.c index 7e5febe456d9..ab7e952d2070 100644 --- a/arch/arm/mach-omap2/cclock2420_data.c +++ b/arch/arm/mach-omap2/cclock2420_data.c | |||
| @@ -1935,6 +1935,8 @@ int __init omap2420_clk_init(void) | |||
| 1935 | omap2_init_clk_hw_omap_clocks(c->lk.clk); | 1935 | omap2_init_clk_hw_omap_clocks(c->lk.clk); |
| 1936 | } | 1936 | } |
| 1937 | 1937 | ||
| 1938 | omap2xxx_clkt_vps_late_init(); | ||
| 1939 | |||
| 1938 | omap2_clk_disable_autoidle_all(); | 1940 | omap2_clk_disable_autoidle_all(); |
| 1939 | 1941 | ||
| 1940 | omap2_clk_enable_init_clocks(enable_init_clks, | 1942 | omap2_clk_enable_init_clocks(enable_init_clks, |
diff --git a/arch/arm/mach-omap2/cclock2430_data.c b/arch/arm/mach-omap2/cclock2430_data.c index eda079b96c6a..eb3dab68d536 100644 --- a/arch/arm/mach-omap2/cclock2430_data.c +++ b/arch/arm/mach-omap2/cclock2430_data.c | |||
| @@ -2050,6 +2050,8 @@ int __init omap2430_clk_init(void) | |||
| 2050 | omap2_init_clk_hw_omap_clocks(c->lk.clk); | 2050 | omap2_init_clk_hw_omap_clocks(c->lk.clk); |
| 2051 | } | 2051 | } |
| 2052 | 2052 | ||
| 2053 | omap2xxx_clkt_vps_late_init(); | ||
| 2054 | |||
| 2053 | omap2_clk_disable_autoidle_all(); | 2055 | omap2_clk_disable_autoidle_all(); |
| 2054 | 2056 | ||
| 2055 | omap2_clk_enable_init_clocks(enable_init_clks, | 2057 | omap2_clk_enable_init_clocks(enable_init_clks, |
diff --git a/arch/arm/mach-omap2/cclock44xx_data.c b/arch/arm/mach-omap2/cclock44xx_data.c index 5789a5e25563..a2cc046b47f4 100644 --- a/arch/arm/mach-omap2/cclock44xx_data.c +++ b/arch/arm/mach-omap2/cclock44xx_data.c | |||
| @@ -2026,14 +2026,13 @@ int __init omap4xxx_clk_init(void) | |||
| 2026 | * On OMAP4460 the ABE DPLL fails to turn on if in idle low-power | 2026 | * On OMAP4460 the ABE DPLL fails to turn on if in idle low-power |
| 2027 | * state when turning the ABE clock domain. Workaround this by | 2027 | * state when turning the ABE clock domain. Workaround this by |
| 2028 | * locking the ABE DPLL on boot. | 2028 | * locking the ABE DPLL on boot. |
| 2029 | * Lock the ABE DPLL in any case to avoid issues with audio. | ||
| 2029 | */ | 2030 | */ |
| 2030 | if (cpu_is_omap446x()) { | 2031 | rc = clk_set_parent(&abe_dpll_refclk_mux_ck, &sys_32k_ck); |
| 2031 | rc = clk_set_parent(&abe_dpll_refclk_mux_ck, &sys_32k_ck); | 2032 | if (!rc) |
| 2032 | if (!rc) | 2033 | rc = clk_set_rate(&dpll_abe_ck, OMAP4_DPLL_ABE_DEFFREQ); |
| 2033 | rc = clk_set_rate(&dpll_abe_ck, OMAP4_DPLL_ABE_DEFFREQ); | 2034 | if (rc) |
| 2034 | if (rc) | 2035 | pr_err("%s: failed to configure ABE DPLL!\n", __func__); |
| 2035 | pr_err("%s: failed to configure ABE DPLL!\n", __func__); | ||
| 2036 | } | ||
| 2037 | 2036 | ||
| 2038 | return 0; | 2037 | return 0; |
| 2039 | } | 2038 | } |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 5e304d0719a2..626f3ea3142f 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
| @@ -639,7 +639,7 @@ static int count_ocp2scp_devices(struct omap_ocp2scp_dev *ocp2scp_dev) | |||
| 639 | return cnt; | 639 | return cnt; |
| 640 | } | 640 | } |
| 641 | 641 | ||
| 642 | static void omap_init_ocp2scp(void) | 642 | static void __init omap_init_ocp2scp(void) |
| 643 | { | 643 | { |
| 644 | struct omap_hwmod *oh; | 644 | struct omap_hwmod *oh; |
| 645 | struct platform_device *pdev; | 645 | struct platform_device *pdev; |
diff --git a/arch/arm/mach-omap2/drm.c b/arch/arm/mach-omap2/drm.c index 4c7566c7e24a..2a2cfa88ddbf 100644 --- a/arch/arm/mach-omap2/drm.c +++ b/arch/arm/mach-omap2/drm.c | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | #include <linux/dma-mapping.h> | 25 | #include <linux/dma-mapping.h> |
| 26 | #include <linux/platform_data/omap_drm.h> | 26 | #include <linux/platform_data/omap_drm.h> |
| 27 | 27 | ||
| 28 | #include "soc.h" | ||
| 28 | #include "omap_device.h" | 29 | #include "omap_device.h" |
| 29 | #include "omap_hwmod.h" | 30 | #include "omap_hwmod.h" |
| 30 | 31 | ||
| @@ -56,7 +57,7 @@ static int __init omap_init_drm(void) | |||
| 56 | oh->name); | 57 | oh->name); |
| 57 | } | 58 | } |
| 58 | 59 | ||
| 59 | platform_data.omaprev = GET_OMAP_REVISION(); | 60 | platform_data.omaprev = GET_OMAP_TYPE; |
| 60 | 61 | ||
| 61 | return platform_device_register(&omap_drm_device); | 62 | return platform_device_register(&omap_drm_device); |
| 62 | 63 | ||
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 129d5081ed15..793f54ac7d14 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
| @@ -2132,8 +2132,12 @@ static struct omap_hwmod omap44xx_mcpdm_hwmod = { | |||
| 2132 | * currently reset very early during boot, before I2C is | 2132 | * currently reset very early during boot, before I2C is |
| 2133 | * available, so it doesn't seem that we have any choice in | 2133 | * available, so it doesn't seem that we have any choice in |
| 2134 | * the kernel other than to avoid resetting it. | 2134 | * the kernel other than to avoid resetting it. |
| 2135 | * | ||
| 2136 | * Also, McPDM needs to be configured to NO_IDLE mode when it | ||
| 2137 | * is in used otherwise vital clocks will be gated which | ||
| 2138 | * results 'slow motion' audio playback. | ||
| 2135 | */ | 2139 | */ |
| 2136 | .flags = HWMOD_EXT_OPT_MAIN_CLK, | 2140 | .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE, |
| 2137 | .mpu_irqs = omap44xx_mcpdm_irqs, | 2141 | .mpu_irqs = omap44xx_mcpdm_irqs, |
| 2138 | .sdma_reqs = omap44xx_mcpdm_sdma_reqs, | 2142 | .sdma_reqs = omap44xx_mcpdm_sdma_reqs, |
| 2139 | .main_clk = "mcpdm_fck", | 2143 | .main_clk = "mcpdm_fck", |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 691aa674665a..b8ad6e632bb8 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
| @@ -165,15 +165,11 @@ static struct device_node * __init omap_get_timer_dt(struct of_device_id *match, | |||
| 165 | struct device_node *np; | 165 | struct device_node *np; |
| 166 | 166 | ||
| 167 | for_each_matching_node(np, match) { | 167 | for_each_matching_node(np, match) { |
| 168 | if (!of_device_is_available(np)) { | 168 | if (!of_device_is_available(np)) |
| 169 | of_node_put(np); | ||
| 170 | continue; | 169 | continue; |
| 171 | } | ||
| 172 | 170 | ||
| 173 | if (property && !of_get_property(np, property, NULL)) { | 171 | if (property && !of_get_property(np, property, NULL)) |
| 174 | of_node_put(np); | ||
| 175 | continue; | 172 | continue; |
| 176 | } | ||
| 177 | 173 | ||
| 178 | of_add_property(np, &device_disabled); | 174 | of_add_property(np, &device_disabled); |
| 179 | return np; | 175 | return np; |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c index 553059f51841..755c0bb119f4 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c | |||
| @@ -47,7 +47,7 @@ static struct spi_board_info wm1253_devs[] = { | |||
| 47 | .bus_num = 0, | 47 | .bus_num = 0, |
| 48 | .chip_select = 0, | 48 | .chip_select = 0, |
| 49 | .mode = SPI_MODE_0, | 49 | .mode = SPI_MODE_0, |
| 50 | .irq = S3C_EINT(5), | 50 | .irq = S3C_EINT(4), |
| 51 | .controller_data = &wm0010_spi_csinfo, | 51 | .controller_data = &wm0010_spi_csinfo, |
| 52 | .platform_data = &wm0010_pdata, | 52 | .platform_data = &wm0010_pdata, |
| 53 | }, | 53 | }, |
diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c index 7feb426fc202..d2e1a16690bd 100644 --- a/arch/arm/mach-s3c64xx/pm.c +++ b/arch/arm/mach-s3c64xx/pm.c | |||
| @@ -338,8 +338,10 @@ int __init s3c64xx_pm_init(void) | |||
| 338 | for (i = 0; i < ARRAY_SIZE(s3c64xx_pm_domains); i++) | 338 | for (i = 0; i < ARRAY_SIZE(s3c64xx_pm_domains); i++) |
| 339 | pm_genpd_init(&s3c64xx_pm_domains[i]->pd, NULL, false); | 339 | pm_genpd_init(&s3c64xx_pm_domains[i]->pd, NULL, false); |
| 340 | 340 | ||
| 341 | #ifdef CONFIG_S3C_DEV_FB | ||
| 341 | if (dev_get_platdata(&s3c_device_fb.dev)) | 342 | if (dev_get_platdata(&s3c_device_fb.dev)) |
| 342 | pm_genpd_add_device(&s3c64xx_pm_f.pd, &s3c_device_fb.dev); | 343 | pm_genpd_add_device(&s3c64xx_pm_f.pd, &s3c_device_fb.dev); |
| 344 | #endif | ||
| 343 | 345 | ||
| 344 | return 0; | 346 | return 0; |
| 345 | } | 347 | } |
diff --git a/arch/arm/plat-versatile/headsmp.S b/arch/arm/plat-versatile/headsmp.S index dd703ef09b8d..b178d44e9eaa 100644 --- a/arch/arm/plat-versatile/headsmp.S +++ b/arch/arm/plat-versatile/headsmp.S | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | */ | 20 | */ |
| 21 | ENTRY(versatile_secondary_startup) | 21 | ENTRY(versatile_secondary_startup) |
| 22 | mrc p15, 0, r0, c0, c0, 5 | 22 | mrc p15, 0, r0, c0, c0, 5 |
| 23 | and r0, r0, #15 | 23 | bic r0, #0xff000000 |
| 24 | adr r4, 1f | 24 | adr r4, 1f |
| 25 | ldmia r4, {r5, r6} | 25 | ldmia r4, {r5, r6} |
| 26 | sub r4, r4, r5 | 26 | sub r4, r4, r5 |
diff --git a/drivers/clk/mvebu/clk-cpu.c b/drivers/clk/mvebu/clk-cpu.c index ff004578a119..9dd2551a0a41 100644 --- a/drivers/clk/mvebu/clk-cpu.c +++ b/drivers/clk/mvebu/clk-cpu.c | |||
| @@ -124,7 +124,7 @@ void __init of_cpu_clk_setup(struct device_node *node) | |||
| 124 | 124 | ||
| 125 | clks = kzalloc(ncpus * sizeof(*clks), GFP_KERNEL); | 125 | clks = kzalloc(ncpus * sizeof(*clks), GFP_KERNEL); |
| 126 | if (WARN_ON(!clks)) | 126 | if (WARN_ON(!clks)) |
| 127 | return; | 127 | goto clks_out; |
| 128 | 128 | ||
| 129 | for_each_node_by_type(dn, "cpu") { | 129 | for_each_node_by_type(dn, "cpu") { |
| 130 | struct clk_init_data init; | 130 | struct clk_init_data init; |
| @@ -134,11 +134,11 @@ void __init of_cpu_clk_setup(struct device_node *node) | |||
| 134 | int cpu, err; | 134 | int cpu, err; |
| 135 | 135 | ||
| 136 | if (WARN_ON(!clk_name)) | 136 | if (WARN_ON(!clk_name)) |
| 137 | return; | 137 | goto bail_out; |
| 138 | 138 | ||
| 139 | err = of_property_read_u32(dn, "reg", &cpu); | 139 | err = of_property_read_u32(dn, "reg", &cpu); |
| 140 | if (WARN_ON(err)) | 140 | if (WARN_ON(err)) |
| 141 | return; | 141 | goto bail_out; |
| 142 | 142 | ||
| 143 | sprintf(clk_name, "cpu%d", cpu); | 143 | sprintf(clk_name, "cpu%d", cpu); |
| 144 | parent_clk = of_clk_get(node, 0); | 144 | parent_clk = of_clk_get(node, 0); |
| @@ -167,6 +167,9 @@ void __init of_cpu_clk_setup(struct device_node *node) | |||
| 167 | return; | 167 | return; |
| 168 | bail_out: | 168 | bail_out: |
| 169 | kfree(clks); | 169 | kfree(clks); |
| 170 | while(ncpus--) | ||
| 171 | kfree(cpuclk[ncpus].clk_name); | ||
| 172 | clks_out: | ||
| 170 | kfree(cpuclk); | 173 | kfree(cpuclk); |
| 171 | } | 174 | } |
| 172 | 175 | ||
diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c index 1cf8293c0fb0..4a980e029ca7 100644 --- a/drivers/media/platform/coda.c +++ b/drivers/media/platform/coda.c | |||
| @@ -23,8 +23,8 @@ | |||
| 23 | #include <linux/slab.h> | 23 | #include <linux/slab.h> |
| 24 | #include <linux/videodev2.h> | 24 | #include <linux/videodev2.h> |
| 25 | #include <linux/of.h> | 25 | #include <linux/of.h> |
| 26 | #include <linux/platform_data/imx-iram.h> | ||
| 26 | 27 | ||
| 27 | #include <mach/iram.h> | ||
| 28 | #include <media/v4l2-ctrls.h> | 28 | #include <media/v4l2-ctrls.h> |
| 29 | #include <media/v4l2-device.h> | 29 | #include <media/v4l2-device.h> |
| 30 | #include <media/v4l2-ioctl.h> | 30 | #include <media/v4l2-ioctl.h> |
diff --git a/drivers/mfd/vexpress-sysreg.c b/drivers/mfd/vexpress-sysreg.c index e5d8f63b252a..77048b18439e 100644 --- a/drivers/mfd/vexpress-sysreg.c +++ b/drivers/mfd/vexpress-sysreg.c | |||
| @@ -313,19 +313,11 @@ static void vexpress_sysreg_config_complete(unsigned long data) | |||
| 313 | } | 313 | } |
| 314 | 314 | ||
| 315 | 315 | ||
| 316 | void __init vexpress_sysreg_early_init(void __iomem *base) | 316 | void __init vexpress_sysreg_setup(struct device_node *node) |
| 317 | { | 317 | { |
| 318 | struct device_node *node = of_find_compatible_node(NULL, NULL, | 318 | if (WARN_ON(!vexpress_sysreg_base)) |
| 319 | "arm,vexpress-sysreg"); | ||
| 320 | |||
| 321 | if (node) | ||
| 322 | base = of_iomap(node, 0); | ||
| 323 | |||
| 324 | if (WARN_ON(!base)) | ||
| 325 | return; | 319 | return; |
| 326 | 320 | ||
| 327 | vexpress_sysreg_base = base; | ||
| 328 | |||
| 329 | if (readl(vexpress_sysreg_base + SYS_MISC) & SYS_MISC_MASTERSITE) | 321 | if (readl(vexpress_sysreg_base + SYS_MISC) & SYS_MISC_MASTERSITE) |
| 330 | vexpress_master_site = VEXPRESS_SITE_DB2; | 322 | vexpress_master_site = VEXPRESS_SITE_DB2; |
| 331 | else | 323 | else |
| @@ -336,9 +328,23 @@ void __init vexpress_sysreg_early_init(void __iomem *base) | |||
| 336 | WARN_ON(!vexpress_sysreg_config_bridge); | 328 | WARN_ON(!vexpress_sysreg_config_bridge); |
| 337 | } | 329 | } |
| 338 | 330 | ||
| 331 | void __init vexpress_sysreg_early_init(void __iomem *base) | ||
| 332 | { | ||
| 333 | vexpress_sysreg_base = base; | ||
| 334 | vexpress_sysreg_setup(NULL); | ||
| 335 | } | ||
| 336 | |||
| 339 | void __init vexpress_sysreg_of_early_init(void) | 337 | void __init vexpress_sysreg_of_early_init(void) |
| 340 | { | 338 | { |
| 341 | vexpress_sysreg_early_init(NULL); | 339 | struct device_node *node = of_find_compatible_node(NULL, NULL, |
| 340 | "arm,vexpress-sysreg"); | ||
| 341 | |||
| 342 | if (node) { | ||
| 343 | vexpress_sysreg_base = of_iomap(node, 0); | ||
| 344 | vexpress_sysreg_setup(node); | ||
| 345 | } else { | ||
| 346 | pr_info("vexpress-sysreg: No Device Tree node found."); | ||
| 347 | } | ||
| 342 | } | 348 | } |
| 343 | 349 | ||
| 344 | 350 | ||
| @@ -426,9 +432,11 @@ static int vexpress_sysreg_probe(struct platform_device *pdev) | |||
| 426 | return -EBUSY; | 432 | return -EBUSY; |
| 427 | } | 433 | } |
| 428 | 434 | ||
| 429 | if (!vexpress_sysreg_base) | 435 | if (!vexpress_sysreg_base) { |
| 430 | vexpress_sysreg_base = devm_ioremap(&pdev->dev, res->start, | 436 | vexpress_sysreg_base = devm_ioremap(&pdev->dev, res->start, |
| 431 | resource_size(res)); | 437 | resource_size(res)); |
| 438 | vexpress_sysreg_setup(pdev->dev.of_node); | ||
| 439 | } | ||
| 432 | 440 | ||
| 433 | if (!vexpress_sysreg_base) { | 441 | if (!vexpress_sysreg_base) { |
| 434 | dev_err(&pdev->dev, "Failed to obtain base address!\n"); | 442 | dev_err(&pdev->dev, "Failed to obtain base address!\n"); |
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c index de4c20b3936c..f8dd36102949 100644 --- a/drivers/mmc/host/mvsdio.c +++ b/drivers/mmc/host/mvsdio.c | |||
| @@ -50,8 +50,6 @@ struct mvsd_host { | |||
| 50 | struct timer_list timer; | 50 | struct timer_list timer; |
| 51 | struct mmc_host *mmc; | 51 | struct mmc_host *mmc; |
| 52 | struct device *dev; | 52 | struct device *dev; |
| 53 | struct resource *res; | ||
| 54 | int irq; | ||
| 55 | struct clk *clk; | 53 | struct clk *clk; |
| 56 | int gpio_card_detect; | 54 | int gpio_card_detect; |
| 57 | int gpio_write_protect; | 55 | int gpio_write_protect; |
| @@ -718,10 +716,6 @@ static int __init mvsd_probe(struct platform_device *pdev) | |||
| 718 | if (!r || irq < 0 || !mvsd_data) | 716 | if (!r || irq < 0 || !mvsd_data) |
| 719 | return -ENXIO; | 717 | return -ENXIO; |
| 720 | 718 | ||
| 721 | r = request_mem_region(r->start, SZ_1K, DRIVER_NAME); | ||
| 722 | if (!r) | ||
| 723 | return -EBUSY; | ||
| 724 | |||
| 725 | mmc = mmc_alloc_host(sizeof(struct mvsd_host), &pdev->dev); | 719 | mmc = mmc_alloc_host(sizeof(struct mvsd_host), &pdev->dev); |
| 726 | if (!mmc) { | 720 | if (!mmc) { |
| 727 | ret = -ENOMEM; | 721 | ret = -ENOMEM; |
| @@ -731,8 +725,8 @@ static int __init mvsd_probe(struct platform_device *pdev) | |||
| 731 | host = mmc_priv(mmc); | 725 | host = mmc_priv(mmc); |
| 732 | host->mmc = mmc; | 726 | host->mmc = mmc; |
| 733 | host->dev = &pdev->dev; | 727 | host->dev = &pdev->dev; |
| 734 | host->res = r; | ||
| 735 | host->base_clock = mvsd_data->clock / 2; | 728 | host->base_clock = mvsd_data->clock / 2; |
| 729 | host->clk = ERR_PTR(-EINVAL); | ||
| 736 | 730 | ||
| 737 | mmc->ops = &mvsd_ops; | 731 | mmc->ops = &mvsd_ops; |
| 738 | 732 | ||
| @@ -752,7 +746,7 @@ static int __init mvsd_probe(struct platform_device *pdev) | |||
| 752 | 746 | ||
| 753 | spin_lock_init(&host->lock); | 747 | spin_lock_init(&host->lock); |
| 754 | 748 | ||
| 755 | host->base = ioremap(r->start, SZ_4K); | 749 | host->base = devm_request_and_ioremap(&pdev->dev, r); |
| 756 | if (!host->base) { | 750 | if (!host->base) { |
| 757 | ret = -ENOMEM; | 751 | ret = -ENOMEM; |
| 758 | goto out; | 752 | goto out; |
| @@ -765,44 +759,45 @@ static int __init mvsd_probe(struct platform_device *pdev) | |||
| 765 | 759 | ||
| 766 | mvsd_power_down(host); | 760 | mvsd_power_down(host); |
| 767 | 761 | ||
| 768 | ret = request_irq(irq, mvsd_irq, 0, DRIVER_NAME, host); | 762 | ret = devm_request_irq(&pdev->dev, irq, mvsd_irq, 0, DRIVER_NAME, host); |
| 769 | if (ret) { | 763 | if (ret) { |
| 770 | pr_err("%s: cannot assign irq %d\n", DRIVER_NAME, irq); | 764 | pr_err("%s: cannot assign irq %d\n", DRIVER_NAME, irq); |
| 771 | goto out; | 765 | goto out; |
| 772 | } else | 766 | } |
| 773 | host->irq = irq; | ||
| 774 | 767 | ||
| 775 | /* Not all platforms can gate the clock, so it is not | 768 | /* Not all platforms can gate the clock, so it is not |
| 776 | an error if the clock does not exists. */ | 769 | an error if the clock does not exists. */ |
| 777 | host->clk = clk_get(&pdev->dev, NULL); | 770 | host->clk = devm_clk_get(&pdev->dev, NULL); |
| 778 | if (!IS_ERR(host->clk)) { | 771 | if (!IS_ERR(host->clk)) |
| 779 | clk_prepare_enable(host->clk); | 772 | clk_prepare_enable(host->clk); |
| 780 | } | ||
| 781 | 773 | ||
| 782 | if (mvsd_data->gpio_card_detect) { | 774 | if (mvsd_data->gpio_card_detect) { |
| 783 | ret = gpio_request(mvsd_data->gpio_card_detect, | 775 | ret = devm_gpio_request_one(&pdev->dev, |
| 784 | DRIVER_NAME " cd"); | 776 | mvsd_data->gpio_card_detect, |
| 777 | GPIOF_IN, DRIVER_NAME " cd"); | ||
| 785 | if (ret == 0) { | 778 | if (ret == 0) { |
| 786 | gpio_direction_input(mvsd_data->gpio_card_detect); | ||
| 787 | irq = gpio_to_irq(mvsd_data->gpio_card_detect); | 779 | irq = gpio_to_irq(mvsd_data->gpio_card_detect); |
| 788 | ret = request_irq(irq, mvsd_card_detect_irq, | 780 | ret = devm_request_irq(&pdev->dev, irq, |
| 789 | IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING, | 781 | mvsd_card_detect_irq, |
| 790 | DRIVER_NAME " cd", host); | 782 | IRQ_TYPE_EDGE_RISING | |
| 783 | IRQ_TYPE_EDGE_FALLING, | ||
| 784 | DRIVER_NAME " cd", host); | ||
| 791 | if (ret == 0) | 785 | if (ret == 0) |
| 792 | host->gpio_card_detect = | 786 | host->gpio_card_detect = |
| 793 | mvsd_data->gpio_card_detect; | 787 | mvsd_data->gpio_card_detect; |
| 794 | else | 788 | else |
| 795 | gpio_free(mvsd_data->gpio_card_detect); | 789 | devm_gpio_free(&pdev->dev, |
| 790 | mvsd_data->gpio_card_detect); | ||
| 796 | } | 791 | } |
| 797 | } | 792 | } |
| 798 | if (!host->gpio_card_detect) | 793 | if (!host->gpio_card_detect) |
| 799 | mmc->caps |= MMC_CAP_NEEDS_POLL; | 794 | mmc->caps |= MMC_CAP_NEEDS_POLL; |
| 800 | 795 | ||
| 801 | if (mvsd_data->gpio_write_protect) { | 796 | if (mvsd_data->gpio_write_protect) { |
| 802 | ret = gpio_request(mvsd_data->gpio_write_protect, | 797 | ret = devm_gpio_request_one(&pdev->dev, |
| 803 | DRIVER_NAME " wp"); | 798 | mvsd_data->gpio_write_protect, |
| 799 | GPIOF_IN, DRIVER_NAME " wp"); | ||
| 804 | if (ret == 0) { | 800 | if (ret == 0) { |
| 805 | gpio_direction_input(mvsd_data->gpio_write_protect); | ||
| 806 | host->gpio_write_protect = | 801 | host->gpio_write_protect = |
| 807 | mvsd_data->gpio_write_protect; | 802 | mvsd_data->gpio_write_protect; |
| 808 | } | 803 | } |
| @@ -824,26 +819,11 @@ static int __init mvsd_probe(struct platform_device *pdev) | |||
| 824 | return 0; | 819 | return 0; |
| 825 | 820 | ||
| 826 | out: | 821 | out: |
| 827 | if (host) { | 822 | if (mmc) { |
| 828 | if (host->irq) | 823 | if (!IS_ERR(host->clk)) |
| 829 | free_irq(host->irq, host); | ||
| 830 | if (host->gpio_card_detect) { | ||
| 831 | free_irq(gpio_to_irq(host->gpio_card_detect), host); | ||
| 832 | gpio_free(host->gpio_card_detect); | ||
| 833 | } | ||
| 834 | if (host->gpio_write_protect) | ||
| 835 | gpio_free(host->gpio_write_protect); | ||
| 836 | if (host->base) | ||
| 837 | iounmap(host->base); | ||
| 838 | } | ||
| 839 | if (r) | ||
| 840 | release_resource(r); | ||
| 841 | if (mmc) | ||
| 842 | if (!IS_ERR_OR_NULL(host->clk)) { | ||
| 843 | clk_disable_unprepare(host->clk); | 824 | clk_disable_unprepare(host->clk); |
| 844 | clk_put(host->clk); | ||
| 845 | } | ||
| 846 | mmc_free_host(mmc); | 825 | mmc_free_host(mmc); |
| 826 | } | ||
| 847 | 827 | ||
| 848 | return ret; | 828 | return ret; |
| 849 | } | 829 | } |
| @@ -852,28 +832,16 @@ static int __exit mvsd_remove(struct platform_device *pdev) | |||
| 852 | { | 832 | { |
| 853 | struct mmc_host *mmc = platform_get_drvdata(pdev); | 833 | struct mmc_host *mmc = platform_get_drvdata(pdev); |
| 854 | 834 | ||
| 855 | if (mmc) { | 835 | struct mvsd_host *host = mmc_priv(mmc); |
| 856 | struct mvsd_host *host = mmc_priv(mmc); | ||
| 857 | 836 | ||
| 858 | if (host->gpio_card_detect) { | 837 | mmc_remove_host(mmc); |
| 859 | free_irq(gpio_to_irq(host->gpio_card_detect), host); | 838 | del_timer_sync(&host->timer); |
| 860 | gpio_free(host->gpio_card_detect); | 839 | mvsd_power_down(host); |
| 861 | } | 840 | |
| 862 | mmc_remove_host(mmc); | 841 | if (!IS_ERR(host->clk)) |
| 863 | free_irq(host->irq, host); | 842 | clk_disable_unprepare(host->clk); |
| 864 | if (host->gpio_write_protect) | 843 | mmc_free_host(mmc); |
| 865 | gpio_free(host->gpio_write_protect); | ||
| 866 | del_timer_sync(&host->timer); | ||
| 867 | mvsd_power_down(host); | ||
| 868 | iounmap(host->base); | ||
| 869 | release_resource(host->res); | ||
| 870 | 844 | ||
| 871 | if (!IS_ERR(host->clk)) { | ||
| 872 | clk_disable_unprepare(host->clk); | ||
| 873 | clk_put(host->clk); | ||
| 874 | } | ||
| 875 | mmc_free_host(mmc); | ||
| 876 | } | ||
| 877 | platform_set_drvdata(pdev, NULL); | 845 | platform_set_drvdata(pdev, NULL); |
| 878 | return 0; | 846 | return 0; |
| 879 | } | 847 | } |
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c index 12526787a7c7..0abf2bf20836 100644 --- a/drivers/video/imxfb.c +++ b/drivers/video/imxfb.c | |||
| @@ -139,6 +139,7 @@ struct imxfb_info { | |||
| 139 | struct clk *clk_ahb; | 139 | struct clk *clk_ahb; |
| 140 | struct clk *clk_per; | 140 | struct clk *clk_per; |
| 141 | enum imxfb_type devtype; | 141 | enum imxfb_type devtype; |
| 142 | bool enabled; | ||
| 142 | 143 | ||
| 143 | /* | 144 | /* |
| 144 | * These are the addresses we mapped | 145 | * These are the addresses we mapped |
| @@ -536,6 +537,10 @@ static void imxfb_exit_backlight(struct imxfb_info *fbi) | |||
| 536 | 537 | ||
| 537 | static void imxfb_enable_controller(struct imxfb_info *fbi) | 538 | static void imxfb_enable_controller(struct imxfb_info *fbi) |
| 538 | { | 539 | { |
| 540 | |||
| 541 | if (fbi->enabled) | ||
| 542 | return; | ||
| 543 | |||
| 539 | pr_debug("Enabling LCD controller\n"); | 544 | pr_debug("Enabling LCD controller\n"); |
| 540 | 545 | ||
| 541 | writel(fbi->screen_dma, fbi->regs + LCDC_SSA); | 546 | writel(fbi->screen_dma, fbi->regs + LCDC_SSA); |
| @@ -556,6 +561,7 @@ static void imxfb_enable_controller(struct imxfb_info *fbi) | |||
| 556 | clk_prepare_enable(fbi->clk_ipg); | 561 | clk_prepare_enable(fbi->clk_ipg); |
| 557 | clk_prepare_enable(fbi->clk_ahb); | 562 | clk_prepare_enable(fbi->clk_ahb); |
| 558 | clk_prepare_enable(fbi->clk_per); | 563 | clk_prepare_enable(fbi->clk_per); |
| 564 | fbi->enabled = true; | ||
| 559 | 565 | ||
| 560 | if (fbi->backlight_power) | 566 | if (fbi->backlight_power) |
| 561 | fbi->backlight_power(1); | 567 | fbi->backlight_power(1); |
| @@ -565,6 +571,9 @@ static void imxfb_enable_controller(struct imxfb_info *fbi) | |||
| 565 | 571 | ||
| 566 | static void imxfb_disable_controller(struct imxfb_info *fbi) | 572 | static void imxfb_disable_controller(struct imxfb_info *fbi) |
| 567 | { | 573 | { |
| 574 | if (!fbi->enabled) | ||
| 575 | return; | ||
| 576 | |||
| 568 | pr_debug("Disabling LCD controller\n"); | 577 | pr_debug("Disabling LCD controller\n"); |
| 569 | 578 | ||
| 570 | if (fbi->backlight_power) | 579 | if (fbi->backlight_power) |
| @@ -575,6 +584,7 @@ static void imxfb_disable_controller(struct imxfb_info *fbi) | |||
| 575 | clk_disable_unprepare(fbi->clk_per); | 584 | clk_disable_unprepare(fbi->clk_per); |
| 576 | clk_disable_unprepare(fbi->clk_ipg); | 585 | clk_disable_unprepare(fbi->clk_ipg); |
| 577 | clk_disable_unprepare(fbi->clk_ahb); | 586 | clk_disable_unprepare(fbi->clk_ahb); |
| 587 | fbi->enabled = false; | ||
| 578 | 588 | ||
| 579 | writel(0, fbi->regs + LCDC_RMCR); | 589 | writel(0, fbi->regs + LCDC_RMCR); |
| 580 | } | 590 | } |
| @@ -729,6 +739,8 @@ static int __init imxfb_init_fbinfo(struct platform_device *pdev) | |||
| 729 | 739 | ||
| 730 | memset(fbi, 0, sizeof(struct imxfb_info)); | 740 | memset(fbi, 0, sizeof(struct imxfb_info)); |
| 731 | 741 | ||
| 742 | fbi->devtype = pdev->id_entry->driver_data; | ||
| 743 | |||
| 732 | strlcpy(info->fix.id, IMX_NAME, sizeof(info->fix.id)); | 744 | strlcpy(info->fix.id, IMX_NAME, sizeof(info->fix.id)); |
| 733 | 745 | ||
| 734 | info->fix.type = FB_TYPE_PACKED_PIXELS; | 746 | info->fix.type = FB_TYPE_PACKED_PIXELS; |
| @@ -789,7 +801,6 @@ static int __init imxfb_probe(struct platform_device *pdev) | |||
| 789 | return -ENOMEM; | 801 | return -ENOMEM; |
| 790 | 802 | ||
| 791 | fbi = info->par; | 803 | fbi = info->par; |
| 792 | fbi->devtype = pdev->id_entry->driver_data; | ||
| 793 | 804 | ||
| 794 | if (!fb_mode) | 805 | if (!fb_mode) |
| 795 | fb_mode = pdata->mode[0].mode.name; | 806 | fb_mode = pdata->mode[0].mode.name; |
diff --git a/arch/arm/mach-imx/iram.h b/include/linux/platform_data/imx-iram.h index 022690c33702..022690c33702 100644 --- a/arch/arm/mach-imx/iram.h +++ b/include/linux/platform_data/imx-iram.h | |||
