diff options
111 files changed, 2416 insertions, 3040 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index f9f4c4d9c704..000cf7628e6e 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
| @@ -48,6 +48,7 @@ dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \ | |||
| 48 | da850-evm.dtb | 48 | da850-evm.dtb |
| 49 | dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \ | 49 | dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \ |
| 50 | dove-cubox.dtb \ | 50 | dove-cubox.dtb \ |
| 51 | dove-d2plug.dtb \ | ||
| 51 | dove-dove-db.dtb | 52 | dove-dove-db.dtb |
| 52 | dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \ | 53 | dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \ |
| 53 | exynos4210-smdkv310.dtb \ | 54 | exynos4210-smdkv310.dtb \ |
| @@ -85,6 +86,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \ | |||
| 85 | kirkwood-lschlv2.dtb \ | 86 | kirkwood-lschlv2.dtb \ |
| 86 | kirkwood-lsxhl.dtb \ | 87 | kirkwood-lsxhl.dtb \ |
| 87 | kirkwood-mplcec4.dtb \ | 88 | kirkwood-mplcec4.dtb \ |
| 89 | kirkwood-mv88f6281gtw-ge.dtb \ | ||
| 88 | kirkwood-netgear_readynas_duo_v2.dtb \ | 90 | kirkwood-netgear_readynas_duo_v2.dtb \ |
| 89 | kirkwood-ns2.dtb \ | 91 | kirkwood-ns2.dtb \ |
| 90 | kirkwood-ns2lite.dtb \ | 92 | kirkwood-ns2lite.dtb \ |
diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts index 5cae2ab69762..022646ef4b38 100644 --- a/arch/arm/boot/dts/dove-cubox.dts +++ b/arch/arm/boot/dts/dove-cubox.dts | |||
| @@ -42,6 +42,8 @@ | |||
| 42 | regulator-always-on; | 42 | regulator-always-on; |
| 43 | regulator-boot-on; | 43 | regulator-boot-on; |
| 44 | gpio = <&gpio0 1 0>; | 44 | gpio = <&gpio0 1 0>; |
| 45 | pinctrl-0 = <&pmx_gpio_1>; | ||
| 46 | pinctrl-names = "default"; | ||
| 45 | }; | 47 | }; |
| 46 | }; | 48 | }; |
| 47 | 49 | ||
| @@ -53,10 +55,24 @@ | |||
| 53 | clock-frequency = <25000000>; | 55 | clock-frequency = <25000000>; |
| 54 | }; | 56 | }; |
| 55 | }; | 57 | }; |
| 58 | |||
| 59 | ir_recv: ir-receiver { | ||
| 60 | compatible = "gpio-ir-receiver"; | ||
| 61 | gpios = <&gpio0 19 1>; | ||
| 62 | pinctrl-0 = <&pmx_gpio_19>; | ||
| 63 | pinctrl-names = "default"; | ||
| 64 | }; | ||
| 56 | }; | 65 | }; |
| 57 | 66 | ||
| 58 | &uart0 { status = "okay"; }; | 67 | &uart0 { status = "okay"; }; |
| 59 | &sata0 { status = "okay"; }; | 68 | &sata0 { status = "okay"; }; |
| 69 | &mdio { status = "okay"; }; | ||
| 70 | ð { status = "okay"; }; | ||
| 71 | |||
| 72 | ðphy { | ||
| 73 | compatible = "marvell,88e1310"; | ||
| 74 | reg = <1>; | ||
| 75 | }; | ||
| 60 | 76 | ||
| 61 | &i2c0 { | 77 | &i2c0 { |
| 62 | status = "okay"; | 78 | status = "okay"; |
| @@ -103,6 +119,7 @@ | |||
| 103 | status = "okay"; | 119 | status = "okay"; |
| 104 | /* sdio0 card detect is connected to wrong pin on CuBox */ | 120 | /* sdio0 card detect is connected to wrong pin on CuBox */ |
| 105 | cd-gpios = <&gpio0 12 1>; | 121 | cd-gpios = <&gpio0 12 1>; |
| 122 | pinctrl-0 = <&pmx_sdio0 &pmx_gpio_12>; | ||
| 106 | }; | 123 | }; |
| 107 | 124 | ||
| 108 | &spi0 { | 125 | &spi0 { |
| @@ -115,23 +132,3 @@ | |||
| 115 | reg = <0>; | 132 | reg = <0>; |
| 116 | }; | 133 | }; |
| 117 | }; | 134 | }; |
| 118 | |||
| 119 | &pinctrl { | ||
| 120 | pinctrl-0 = <&pmx_gpio_1 &pmx_gpio_12>; | ||
| 121 | pinctrl-names = "default"; | ||
| 122 | |||
| 123 | pmx_gpio_1: pmx-gpio-1 { | ||
| 124 | marvell,pins = "mpp1"; | ||
| 125 | marvell,function = "gpio"; | ||
| 126 | }; | ||
| 127 | |||
| 128 | pmx_gpio_12: pmx-gpio-12 { | ||
| 129 | marvell,pins = "mpp12"; | ||
| 130 | marvell,function = "gpio"; | ||
| 131 | }; | ||
| 132 | |||
| 133 | pmx_gpio_18: pmx-gpio-18 { | ||
| 134 | marvell,pins = "mpp18"; | ||
| 135 | marvell,function = "gpio"; | ||
| 136 | }; | ||
| 137 | }; | ||
diff --git a/arch/arm/boot/dts/dove-d2plug.dts b/arch/arm/boot/dts/dove-d2plug.dts new file mode 100644 index 000000000000..e2222ce94f2f --- /dev/null +++ b/arch/arm/boot/dts/dove-d2plug.dts | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | /dts-v1/; | ||
| 2 | |||
| 3 | /include/ "dove.dtsi" | ||
| 4 | |||
| 5 | / { | ||
| 6 | model = "Globalscale D2Plug"; | ||
| 7 | compatible = "globalscale,d2plug", "marvell,dove"; | ||
| 8 | |||
| 9 | memory { | ||
| 10 | device_type = "memory"; | ||
| 11 | reg = <0x00000000 0x40000000>; | ||
| 12 | }; | ||
| 13 | |||
| 14 | chosen { | ||
| 15 | bootargs = "console=ttyS0,115200n8 earlyprintk"; | ||
| 16 | }; | ||
| 17 | |||
| 18 | leds { | ||
| 19 | compatible = "gpio-leds"; | ||
| 20 | pinctrl-0 = <&pmx_gpio_0 &pmx_gpio_1 &pmx_gpio_2>; | ||
| 21 | pinctrl-names = "default"; | ||
| 22 | |||
| 23 | wlan-ap { | ||
| 24 | label = "wlan-ap"; | ||
| 25 | gpios = <&gpio0 0 1>; | ||
| 26 | }; | ||
| 27 | |||
| 28 | wlan-act { | ||
| 29 | label = "wlan-act"; | ||
| 30 | gpios = <&gpio0 1 1>; | ||
| 31 | }; | ||
| 32 | |||
| 33 | bluetooth-act { | ||
| 34 | label = "bt-act"; | ||
| 35 | gpios = <&gpio0 2 1>; | ||
| 36 | }; | ||
| 37 | }; | ||
| 38 | }; | ||
| 39 | |||
| 40 | &uart0 { status = "okay"; }; | ||
| 41 | &sata0 { status = "okay"; }; | ||
| 42 | &i2c0 { status = "okay"; }; | ||
| 43 | &mdio { status = "okay"; }; | ||
| 44 | ð { status = "okay"; }; | ||
| 45 | |||
| 46 | /* Samsung M8G2F eMMC */ | ||
| 47 | &sdio0 { | ||
| 48 | status = "okay"; | ||
| 49 | non-removable; | ||
| 50 | bus-width = <4>; | ||
| 51 | }; | ||
| 52 | |||
| 53 | /* Marvell SD8787 WLAN/BT */ | ||
| 54 | &sdio1 { | ||
| 55 | status = "okay"; | ||
| 56 | non-removable; | ||
| 57 | bus-width = <4>; | ||
| 58 | }; | ||
| 59 | |||
| 60 | &spi0 { | ||
| 61 | status = "okay"; | ||
| 62 | |||
| 63 | /* spi0.0: 4M Flash Macronix MX25L3205D */ | ||
| 64 | spi-flash@0 { | ||
| 65 | compatible = "st,m25l3205d"; | ||
| 66 | spi-max-frequency = <20000000>; | ||
| 67 | reg = <0>; | ||
| 68 | }; | ||
| 69 | }; | ||
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi index 6cab46849cdb..cc279166646f 100644 --- a/arch/arm/boot/dts/dove.dtsi +++ b/arch/arm/boot/dts/dove.dtsi | |||
| @@ -10,6 +10,23 @@ | |||
| 10 | gpio2 = &gpio2; | 10 | gpio2 = &gpio2; |
| 11 | }; | 11 | }; |
| 12 | 12 | ||
| 13 | cpus { | ||
| 14 | #address-cells = <1>; | ||
| 15 | #size-cells = <0>; | ||
| 16 | |||
| 17 | cpu0: cpu@0 { | ||
| 18 | compatible = "marvell,pj4a", "marvell,sheeva-v7"; | ||
| 19 | device_type = "cpu"; | ||
| 20 | next-level-cache = <&l2>; | ||
| 21 | reg = <0>; | ||
| 22 | }; | ||
| 23 | }; | ||
| 24 | |||
| 25 | l2: l2-cache { | ||
| 26 | compatible = "marvell,tauros2-cache"; | ||
| 27 | marvell,tauros2-cache-features = <0>; | ||
| 28 | }; | ||
| 29 | |||
| 13 | soc@f1000000 { | 30 | soc@f1000000 { |
| 14 | compatible = "simple-bus"; | 31 | compatible = "simple-bus"; |
| 15 | #address-cells = <1>; | 32 | #address-cells = <1>; |
| @@ -25,16 +42,28 @@ | |||
| 25 | 0xf2100000 0xf2100000 0x0100000 /* PCIe0 I/O 1M */ | 42 | 0xf2100000 0xf2100000 0x0100000 /* PCIe0 I/O 1M */ |
| 26 | 0xf8000000 0xf8000000 0x8000000>; /* BootROM 128M */ | 43 | 0xf8000000 0xf8000000 0x8000000>; /* BootROM 128M */ |
| 27 | 44 | ||
| 28 | l2: l2-cache { | 45 | timer: timer@20300 { |
| 29 | compatible = "marvell,tauros2-cache"; | 46 | compatible = "marvell,orion-timer"; |
| 30 | marvell,tauros2-cache-features = <0>; | 47 | reg = <0x20300 0x20>; |
| 48 | interrupt-parent = <&bridge_intc>; | ||
| 49 | interrupts = <1>, <2>; | ||
| 50 | clocks = <&core_clk 0>; | ||
| 31 | }; | 51 | }; |
| 32 | 52 | ||
| 33 | intc: interrupt-controller { | 53 | intc: main-interrupt-ctrl@20200 { |
| 34 | compatible = "marvell,orion-intc"; | 54 | compatible = "marvell,orion-intc"; |
| 35 | interrupt-controller; | 55 | interrupt-controller; |
| 36 | #interrupt-cells = <1>; | 56 | #interrupt-cells = <1>; |
| 37 | reg = <0x20204 0x04>, <0x20214 0x04>; | 57 | reg = <0x20200 0x10>, <0x20210 0x10>; |
| 58 | }; | ||
| 59 | |||
| 60 | bridge_intc: bridge-interrupt-ctrl@20110 { | ||
| 61 | compatible = "marvell,orion-bridge-intc"; | ||
| 62 | interrupt-controller; | ||
| 63 | #interrupt-cells = <1>; | ||
| 64 | reg = <0x20110 0x8>; | ||
| 65 | interrupts = <0>; | ||
| 66 | marvell,#interrupts = <5>; | ||
| 38 | }; | 67 | }; |
| 39 | 68 | ||
| 40 | core_clk: core-clocks@d0214 { | 69 | core_clk: core-clocks@d0214 { |
| @@ -43,14 +72,14 @@ | |||
| 43 | #clock-cells = <1>; | 72 | #clock-cells = <1>; |
| 44 | }; | 73 | }; |
| 45 | 74 | ||
| 46 | gate_clk: clock-gating-control@d0038 { | 75 | gate_clk: clock-gating-ctrl@d0038 { |
| 47 | compatible = "marvell,dove-gating-clock"; | 76 | compatible = "marvell,dove-gating-clock"; |
| 48 | reg = <0xd0038 0x4>; | 77 | reg = <0xd0038 0x4>; |
| 49 | clocks = <&core_clk 0>; | 78 | clocks = <&core_clk 0>; |
| 50 | #clock-cells = <1>; | 79 | #clock-cells = <1>; |
| 51 | }; | 80 | }; |
| 52 | 81 | ||
| 53 | thermal: thermal@d001c { | 82 | thermal: thermal-diode@d001c { |
| 54 | compatible = "marvell,dove-thermal"; | 83 | compatible = "marvell,dove-thermal"; |
| 55 | reg = <0xd001c 0x0c>, <0xd005c 0x08>; | 84 | reg = <0xd001c 0x0c>, <0xd005c 0x08>; |
| 56 | }; | 85 | }; |
| @@ -70,6 +99,8 @@ | |||
| 70 | reg-shift = <2>; | 99 | reg-shift = <2>; |
| 71 | interrupts = <8>; | 100 | interrupts = <8>; |
| 72 | clocks = <&core_clk 0>; | 101 | clocks = <&core_clk 0>; |
| 102 | pinctrl-0 = <&pmx_uart1>; | ||
| 103 | pinctrl-names = "default"; | ||
| 73 | status = "disabled"; | 104 | status = "disabled"; |
| 74 | }; | 105 | }; |
| 75 | 106 | ||
| @@ -91,7 +122,7 @@ | |||
| 91 | status = "disabled"; | 122 | status = "disabled"; |
| 92 | }; | 123 | }; |
| 93 | 124 | ||
| 94 | gpio0: gpio@d0400 { | 125 | gpio0: gpio-ctrl@d0400 { |
| 95 | compatible = "marvell,orion-gpio"; | 126 | compatible = "marvell,orion-gpio"; |
| 96 | #gpio-cells = <2>; | 127 | #gpio-cells = <2>; |
| 97 | gpio-controller; | 128 | gpio-controller; |
| @@ -102,7 +133,7 @@ | |||
| 102 | interrupts = <12>, <13>, <14>, <60>; | 133 | interrupts = <12>, <13>, <14>, <60>; |
| 103 | }; | 134 | }; |
| 104 | 135 | ||
| 105 | gpio1: gpio@d0420 { | 136 | gpio1: gpio-ctrl@d0420 { |
| 106 | compatible = "marvell,orion-gpio"; | 137 | compatible = "marvell,orion-gpio"; |
| 107 | #gpio-cells = <2>; | 138 | #gpio-cells = <2>; |
| 108 | gpio-controller; | 139 | gpio-controller; |
| @@ -113,7 +144,7 @@ | |||
| 113 | interrupts = <61>; | 144 | interrupts = <61>; |
| 114 | }; | 145 | }; |
| 115 | 146 | ||
| 116 | gpio2: gpio@e8400 { | 147 | gpio2: gpio-ctrl@e8400 { |
| 117 | compatible = "marvell,orion-gpio"; | 148 | compatible = "marvell,orion-gpio"; |
| 118 | #gpio-cells = <2>; | 149 | #gpio-cells = <2>; |
| 119 | gpio-controller; | 150 | gpio-controller; |
| @@ -121,13 +152,188 @@ | |||
| 121 | ngpios = <8>; | 152 | ngpios = <8>; |
| 122 | }; | 153 | }; |
| 123 | 154 | ||
| 124 | pinctrl: pinctrl@d0200 { | 155 | pinctrl: pin-ctrl@d0200 { |
| 125 | compatible = "marvell,dove-pinctrl"; | 156 | compatible = "marvell,dove-pinctrl"; |
| 126 | reg = <0xd0200 0x10>; | 157 | reg = <0xd0200 0x10>; |
| 127 | clocks = <&gate_clk 22>; | 158 | clocks = <&gate_clk 22>; |
| 159 | |||
| 160 | pmx_gpio_0: pmx-gpio-0 { | ||
| 161 | marvell,pins = "mpp0"; | ||
| 162 | marvell,function = "gpio"; | ||
| 163 | }; | ||
| 164 | |||
| 165 | pmx_gpio_1: pmx-gpio-1 { | ||
| 166 | marvell,pins = "mpp1"; | ||
| 167 | marvell,function = "gpio"; | ||
| 168 | }; | ||
| 169 | |||
| 170 | pmx_gpio_2: pmx-gpio-2 { | ||
| 171 | marvell,pins = "mpp2"; | ||
| 172 | marvell,function = "gpio"; | ||
| 173 | }; | ||
| 174 | |||
| 175 | pmx_gpio_3: pmx-gpio-3 { | ||
| 176 | marvell,pins = "mpp3"; | ||
| 177 | marvell,function = "gpio"; | ||
| 178 | }; | ||
| 179 | |||
| 180 | pmx_gpio_4: pmx-gpio-4 { | ||
| 181 | marvell,pins = "mpp4"; | ||
| 182 | marvell,function = "gpio"; | ||
| 183 | }; | ||
| 184 | |||
| 185 | pmx_gpio_5: pmx-gpio-5 { | ||
| 186 | marvell,pins = "mpp5"; | ||
| 187 | marvell,function = "gpio"; | ||
| 188 | }; | ||
| 189 | |||
| 190 | pmx_gpio_6: pmx-gpio-6 { | ||
| 191 | marvell,pins = "mpp6"; | ||
| 192 | marvell,function = "gpio"; | ||
| 193 | }; | ||
| 194 | |||
| 195 | pmx_gpio_7: pmx-gpio-7 { | ||
| 196 | marvell,pins = "mpp7"; | ||
| 197 | marvell,function = "gpio"; | ||
| 198 | }; | ||
| 199 | |||
| 200 | pmx_gpio_8: pmx-gpio-8 { | ||
| 201 | marvell,pins = "mpp8"; | ||
| 202 | marvell,function = "gpio"; | ||
| 203 | }; | ||
| 204 | |||
| 205 | pmx_gpio_9: pmx-gpio-9 { | ||
| 206 | marvell,pins = "mpp9"; | ||
| 207 | marvell,function = "gpio"; | ||
| 208 | }; | ||
| 209 | |||
| 210 | pmx_gpio_10: pmx-gpio-10 { | ||
| 211 | marvell,pins = "mpp10"; | ||
| 212 | marvell,function = "gpio"; | ||
| 213 | }; | ||
| 214 | |||
| 215 | pmx_gpio_11: pmx-gpio-11 { | ||
| 216 | marvell,pins = "mpp11"; | ||
| 217 | marvell,function = "gpio"; | ||
| 218 | }; | ||
| 219 | |||
| 220 | pmx_gpio_12: pmx-gpio-12 { | ||
| 221 | marvell,pins = "mpp12"; | ||
| 222 | marvell,function = "gpio"; | ||
| 223 | }; | ||
| 224 | |||
| 225 | pmx_gpio_13: pmx-gpio-13 { | ||
| 226 | marvell,pins = "mpp13"; | ||
| 227 | marvell,function = "gpio"; | ||
| 228 | }; | ||
| 229 | |||
| 230 | pmx_gpio_14: pmx-gpio-14 { | ||
| 231 | marvell,pins = "mpp14"; | ||
| 232 | marvell,function = "gpio"; | ||
| 233 | }; | ||
| 234 | |||
| 235 | pmx_gpio_15: pmx-gpio-15 { | ||
| 236 | marvell,pins = "mpp15"; | ||
| 237 | marvell,function = "gpio"; | ||
| 238 | }; | ||
| 239 | |||
| 240 | pmx_gpio_16: pmx-gpio-16 { | ||
| 241 | marvell,pins = "mpp16"; | ||
| 242 | marvell,function = "gpio"; | ||
| 243 | }; | ||
| 244 | |||
| 245 | pmx_gpio_17: pmx-gpio-17 { | ||
| 246 | marvell,pins = "mpp17"; | ||
| 247 | marvell,function = "gpio"; | ||
| 248 | }; | ||
| 249 | |||
| 250 | pmx_gpio_18: pmx-gpio-18 { | ||
| 251 | marvell,pins = "mpp18"; | ||
| 252 | marvell,function = "gpio"; | ||
| 253 | }; | ||
| 254 | |||
| 255 | pmx_gpio_19: pmx-gpio-19 { | ||
| 256 | marvell,pins = "mpp19"; | ||
| 257 | marvell,function = "gpio"; | ||
| 258 | }; | ||
| 259 | |||
| 260 | pmx_gpio_20: pmx-gpio-20 { | ||
| 261 | marvell,pins = "mpp20"; | ||
| 262 | marvell,function = "gpio"; | ||
| 263 | }; | ||
| 264 | |||
| 265 | pmx_gpio_21: pmx-gpio-21 { | ||
| 266 | marvell,pins = "mpp21"; | ||
| 267 | marvell,function = "gpio"; | ||
| 268 | }; | ||
| 269 | |||
| 270 | pmx_camera: pmx-camera { | ||
| 271 | marvell,pins = "mpp_camera"; | ||
| 272 | marvell,function = "camera"; | ||
| 273 | }; | ||
| 274 | |||
| 275 | pmx_camera_gpio: pmx-camera-gpio { | ||
| 276 | marvell,pins = "mpp_camera"; | ||
| 277 | marvell,function = "gpio"; | ||
| 278 | }; | ||
| 279 | |||
| 280 | pmx_sdio0: pmx-sdio0 { | ||
| 281 | marvell,pins = "mpp_sdio0"; | ||
| 282 | marvell,function = "sdio0"; | ||
| 283 | }; | ||
| 284 | |||
| 285 | pmx_sdio0_gpio: pmx-sdio0-gpio { | ||
| 286 | marvell,pins = "mpp_sdio0"; | ||
| 287 | marvell,function = "gpio"; | ||
| 288 | }; | ||
| 289 | |||
| 290 | pmx_sdio1: pmx-sdio1 { | ||
| 291 | marvell,pins = "mpp_sdio1"; | ||
| 292 | marvell,function = "sdio1"; | ||
| 293 | }; | ||
| 294 | |||
| 295 | pmx_sdio1_gpio: pmx-sdio1-gpio { | ||
| 296 | marvell,pins = "mpp_sdio1"; | ||
| 297 | marvell,function = "gpio"; | ||
| 298 | }; | ||
| 299 | |||
| 300 | pmx_audio1_gpio: pmx-audio1-gpio { | ||
| 301 | marvell,pins = "mpp_audio1"; | ||
| 302 | marvell,function = "gpio"; | ||
| 303 | }; | ||
| 304 | |||
| 305 | pmx_spi0: pmx-spi0 { | ||
| 306 | marvell,pins = "mpp_spi0"; | ||
| 307 | marvell,function = "spi0"; | ||
| 308 | }; | ||
| 309 | |||
| 310 | pmx_spi0_gpio: pmx-spi0-gpio { | ||
| 311 | marvell,pins = "mpp_spi0"; | ||
| 312 | marvell,function = "gpio"; | ||
| 313 | }; | ||
| 314 | |||
| 315 | pmx_uart1: pmx-uart1 { | ||
| 316 | marvell,pins = "mpp_uart1"; | ||
| 317 | marvell,function = "uart1"; | ||
| 318 | }; | ||
| 319 | |||
| 320 | pmx_uart1_gpio: pmx-uart1-gpio { | ||
| 321 | marvell,pins = "mpp_uart1"; | ||
| 322 | marvell,function = "gpio"; | ||
| 323 | }; | ||
| 324 | |||
| 325 | pmx_nand: pmx-nand { | ||
| 326 | marvell,pins = "mpp_nand"; | ||
| 327 | marvell,function = "nand"; | ||
| 328 | }; | ||
| 329 | |||
| 330 | pmx_nand_gpo: pmx-nand-gpo { | ||
| 331 | marvell,pins = "mpp_nand"; | ||
| 332 | marvell,function = "gpo"; | ||
| 333 | }; | ||
| 128 | }; | 334 | }; |
| 129 | 335 | ||
| 130 | spi0: spi@10600 { | 336 | spi0: spi-ctrl@10600 { |
| 131 | compatible = "marvell,orion-spi"; | 337 | compatible = "marvell,orion-spi"; |
| 132 | #address-cells = <1>; | 338 | #address-cells = <1>; |
| 133 | #size-cells = <0>; | 339 | #size-cells = <0>; |
| @@ -135,10 +341,12 @@ | |||
| 135 | interrupts = <6>; | 341 | interrupts = <6>; |
| 136 | reg = <0x10600 0x28>; | 342 | reg = <0x10600 0x28>; |
| 137 | clocks = <&core_clk 0>; | 343 | clocks = <&core_clk 0>; |
| 344 | pinctrl-0 = <&pmx_spi0>; | ||
| 345 | pinctrl-names = "default"; | ||
| 138 | status = "disabled"; | 346 | status = "disabled"; |
| 139 | }; | 347 | }; |
| 140 | 348 | ||
| 141 | spi1: spi@14600 { | 349 | spi1: spi-ctrl@14600 { |
| 142 | compatible = "marvell,orion-spi"; | 350 | compatible = "marvell,orion-spi"; |
| 143 | #address-cells = <1>; | 351 | #address-cells = <1>; |
| 144 | #size-cells = <0>; | 352 | #size-cells = <0>; |
| @@ -149,7 +357,7 @@ | |||
| 149 | status = "disabled"; | 357 | status = "disabled"; |
| 150 | }; | 358 | }; |
| 151 | 359 | ||
| 152 | i2c0: i2c@11000 { | 360 | i2c0: i2c-ctrl@11000 { |
| 153 | compatible = "marvell,mv64xxx-i2c"; | 361 | compatible = "marvell,mv64xxx-i2c"; |
| 154 | reg = <0x11000 0x20>; | 362 | reg = <0x11000 0x20>; |
| 155 | #address-cells = <1>; | 363 | #address-cells = <1>; |
| @@ -177,23 +385,27 @@ | |||
| 177 | status = "okay"; | 385 | status = "okay"; |
| 178 | }; | 386 | }; |
| 179 | 387 | ||
| 180 | sdio0: sdio@92000 { | 388 | sdio0: sdio-host@92000 { |
| 181 | compatible = "marvell,dove-sdhci"; | 389 | compatible = "marvell,dove-sdhci"; |
| 182 | reg = <0x92000 0x100>; | 390 | reg = <0x92000 0x100>; |
| 183 | interrupts = <35>, <37>; | 391 | interrupts = <35>, <37>; |
| 184 | clocks = <&gate_clk 8>; | 392 | clocks = <&gate_clk 8>; |
| 393 | pinctrl-0 = <&pmx_sdio0>; | ||
| 394 | pinctrl-names = "default"; | ||
| 185 | status = "disabled"; | 395 | status = "disabled"; |
| 186 | }; | 396 | }; |
| 187 | 397 | ||
| 188 | sdio1: sdio@90000 { | 398 | sdio1: sdio-host@90000 { |
| 189 | compatible = "marvell,dove-sdhci"; | 399 | compatible = "marvell,dove-sdhci"; |
| 190 | reg = <0x90000 0x100>; | 400 | reg = <0x90000 0x100>; |
| 191 | interrupts = <36>, <38>; | 401 | interrupts = <36>, <38>; |
| 192 | clocks = <&gate_clk 9>; | 402 | clocks = <&gate_clk 9>; |
| 403 | pinctrl-0 = <&pmx_sdio1>; | ||
| 404 | pinctrl-names = "default"; | ||
| 193 | status = "disabled"; | 405 | status = "disabled"; |
| 194 | }; | 406 | }; |
| 195 | 407 | ||
| 196 | sata0: sata@a0000 { | 408 | sata0: sata-host@a0000 { |
| 197 | compatible = "marvell,orion-sata"; | 409 | compatible = "marvell,orion-sata"; |
| 198 | reg = <0xa0000 0x2400>; | 410 | reg = <0xa0000 0x2400>; |
| 199 | interrupts = <62>; | 411 | interrupts = <62>; |
| @@ -202,12 +414,12 @@ | |||
| 202 | status = "disabled"; | 414 | status = "disabled"; |
| 203 | }; | 415 | }; |
| 204 | 416 | ||
| 205 | rtc@d8500 { | 417 | rtc: real-time-clock@d8500 { |
| 206 | compatible = "marvell,orion-rtc"; | 418 | compatible = "marvell,orion-rtc"; |
| 207 | reg = <0xd8500 0x20>; | 419 | reg = <0xd8500 0x20>; |
| 208 | }; | 420 | }; |
| 209 | 421 | ||
| 210 | crypto: crypto@30000 { | 422 | crypto: crypto-engine@30000 { |
| 211 | compatible = "marvell,orion-crypto"; | 423 | compatible = "marvell,orion-crypto"; |
| 212 | reg = <0x30000 0x10000>, | 424 | reg = <0x30000 0x10000>, |
| 213 | <0xc8000000 0x800>; | 425 | <0xc8000000 0x800>; |
| @@ -258,5 +470,40 @@ | |||
| 258 | dmacap,xor; | 470 | dmacap,xor; |
| 259 | }; | 471 | }; |
| 260 | }; | 472 | }; |
| 473 | |||
| 474 | mdio: mdio-bus@72004 { | ||
| 475 | compatible = "marvell,orion-mdio"; | ||
| 476 | #address-cells = <1>; | ||
| 477 | #size-cells = <0>; | ||
| 478 | reg = <0x72004 0x84>; | ||
| 479 | interrupts = <30>; | ||
| 480 | clocks = <&gate_clk 2>; | ||
| 481 | status = "disabled"; | ||
| 482 | |||
| 483 | ethphy: ethernet-phy { | ||
| 484 | device-type = "ethernet-phy"; | ||
| 485 | /* set phy address in board file */ | ||
| 486 | }; | ||
| 487 | }; | ||
| 488 | |||
| 489 | eth: ethernet-controller@72000 { | ||
| 490 | compatible = "marvell,orion-eth"; | ||
| 491 | #address-cells = <1>; | ||
| 492 | #size-cells = <0>; | ||
| 493 | reg = <0x72000 0x4000>; | ||
| 494 | clocks = <&gate_clk 2>; | ||
| 495 | marvell,tx-checksum-limit = <1600>; | ||
| 496 | status = "disabled"; | ||
| 497 | |||
| 498 | ethernet-port@0 { | ||
| 499 | device_type = "network"; | ||
| 500 | compatible = "marvell,orion-eth-port"; | ||
| 501 | reg = <0>; | ||
| 502 | interrupts = <29>; | ||
| 503 | /* overwrite MAC address in bootloader */ | ||
| 504 | local-mac-address = [00 00 00 00 00 00]; | ||
| 505 | phy-handle = <ðphy>; | ||
| 506 | }; | ||
| 507 | }; | ||
| 261 | }; | 508 | }; |
| 262 | }; | 509 | }; |
diff --git a/arch/arm/boot/dts/kirkwood-cloudbox.dts b/arch/arm/boot/dts/kirkwood-cloudbox.dts index 9bf139c5a34d..142b9cd3b454 100644 --- a/arch/arm/boot/dts/kirkwood-cloudbox.dts +++ b/arch/arm/boot/dts/kirkwood-cloudbox.dts | |||
| @@ -89,3 +89,19 @@ | |||
| 89 | gpios = <&gpio0 17 0>; | 89 | gpios = <&gpio0 17 0>; |
| 90 | }; | 90 | }; |
| 91 | }; | 91 | }; |
| 92 | |||
| 93 | &mdio { | ||
| 94 | status = "okay"; | ||
| 95 | |||
| 96 | ethphy0: ethernet-phy@0 { | ||
| 97 | device_type = "ethernet-phy"; | ||
| 98 | reg = <0>; | ||
| 99 | }; | ||
| 100 | }; | ||
| 101 | |||
| 102 | ð0 { | ||
| 103 | status = "okay"; | ||
| 104 | ethernet0-port@0 { | ||
| 105 | phy-handle = <ðphy0>; | ||
| 106 | }; | ||
| 107 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-db.dtsi b/arch/arm/boot/dts/kirkwood-db.dtsi index 45c1bf74ac00..c0e2a5879174 100644 --- a/arch/arm/boot/dts/kirkwood-db.dtsi +++ b/arch/arm/boot/dts/kirkwood-db.dtsi | |||
| @@ -79,3 +79,19 @@ | |||
| 79 | }; | 79 | }; |
| 80 | }; | 80 | }; |
| 81 | }; | 81 | }; |
| 82 | |||
| 83 | &mdio { | ||
| 84 | status = "okay"; | ||
| 85 | |||
| 86 | ethphy0: ethernet-phy@8 { | ||
| 87 | device_type = "ethernet-phy"; | ||
| 88 | reg = <8>; | ||
| 89 | }; | ||
| 90 | }; | ||
| 91 | |||
| 92 | ð0 { | ||
| 93 | status = "okay"; | ||
| 94 | ethernet0-port@0 { | ||
| 95 | phy-handle = <ðphy0>; | ||
| 96 | }; | ||
| 97 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-dnskw.dtsi b/arch/arm/boot/dts/kirkwood-dnskw.dtsi index 2e04284846a0..d544f77a4ca4 100644 --- a/arch/arm/boot/dts/kirkwood-dnskw.dtsi +++ b/arch/arm/boot/dts/kirkwood-dnskw.dtsi | |||
| @@ -219,3 +219,19 @@ | |||
| 219 | }; | 219 | }; |
| 220 | }; | 220 | }; |
| 221 | }; | 221 | }; |
| 222 | |||
| 223 | &mdio { | ||
| 224 | status = "okay"; | ||
| 225 | |||
| 226 | ethphy0: ethernet-phy@8 { | ||
| 227 | device_type = "ethernet-phy"; | ||
| 228 | reg = <8>; | ||
| 229 | }; | ||
| 230 | }; | ||
| 231 | |||
| 232 | ð0 { | ||
| 233 | status = "okay"; | ||
| 234 | ethernet0-port@0 { | ||
| 235 | phy-handle = <ðphy0>; | ||
| 236 | }; | ||
| 237 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-dockstar.dts b/arch/arm/boot/dts/kirkwood-dockstar.dts index 4387ae8e93fe..59a2117c35a7 100644 --- a/arch/arm/boot/dts/kirkwood-dockstar.dts +++ b/arch/arm/boot/dts/kirkwood-dockstar.dts | |||
| @@ -90,3 +90,20 @@ | |||
| 90 | }; | 90 | }; |
| 91 | }; | 91 | }; |
| 92 | }; | 92 | }; |
| 93 | |||
| 94 | &mdio { | ||
| 95 | status = "okay"; | ||
| 96 | |||
| 97 | ethphy0: ethernet-phy@0 { | ||
| 98 | device_type = "ethernet-phy"; | ||
| 99 | compatible = "marvell,88e1116"; | ||
| 100 | reg = <0>; | ||
| 101 | }; | ||
| 102 | }; | ||
| 103 | |||
| 104 | ð0 { | ||
| 105 | status = "okay"; | ||
| 106 | ethernet0-port@0 { | ||
| 107 | phy-handle = <ðphy0>; | ||
| 108 | }; | ||
| 109 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts index c62837837246..6f62af99c9cb 100644 --- a/arch/arm/boot/dts/kirkwood-dreamplug.dts +++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts | |||
| @@ -99,3 +99,31 @@ | |||
| 99 | }; | 99 | }; |
| 100 | }; | 100 | }; |
| 101 | }; | 101 | }; |
| 102 | |||
| 103 | &mdio { | ||
| 104 | status = "okay"; | ||
| 105 | |||
| 106 | ethphy0: ethernet-phy@0 { | ||
| 107 | device_type = "ethernet-phy"; | ||
| 108 | reg = <0>; | ||
| 109 | }; | ||
| 110 | |||
| 111 | ethphy1: ethernet-phy@1 { | ||
| 112 | device_type = "ethernet-phy"; | ||
| 113 | reg = <1>; | ||
| 114 | }; | ||
| 115 | }; | ||
| 116 | |||
| 117 | ð0 { | ||
| 118 | status = "okay"; | ||
| 119 | ethernet0-port@0 { | ||
| 120 | phy-handle = <ðphy0>; | ||
| 121 | }; | ||
| 122 | }; | ||
| 123 | |||
| 124 | ð1 { | ||
| 125 | status = "okay"; | ||
| 126 | ethernet1-port@0 { | ||
| 127 | phy-handle = <ðphy1>; | ||
| 128 | }; | ||
| 129 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-goflexnet.dts b/arch/arm/boot/dts/kirkwood-goflexnet.dts index e57118039277..6f7c7d7ecf2a 100644 --- a/arch/arm/boot/dts/kirkwood-goflexnet.dts +++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts | |||
| @@ -170,3 +170,19 @@ | |||
| 170 | }; | 170 | }; |
| 171 | }; | 171 | }; |
| 172 | }; | 172 | }; |
| 173 | |||
| 174 | &mdio { | ||
| 175 | status = "okay"; | ||
| 176 | |||
| 177 | ethphy0: ethernet-phy@0 { | ||
| 178 | device_type = "ethernet-phy"; | ||
| 179 | reg = <0>; | ||
| 180 | }; | ||
| 181 | }; | ||
| 182 | |||
| 183 | ð0 { | ||
| 184 | status = "okay"; | ||
| 185 | ethernet0-port@0 { | ||
| 186 | phy-handle = <ðphy0>; | ||
| 187 | }; | ||
| 188 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts index 2c5673adb4bd..6548b9dc6855 100644 --- a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts +++ b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts | |||
| @@ -96,3 +96,33 @@ | |||
| 96 | }; | 96 | }; |
| 97 | }; | 97 | }; |
| 98 | }; | 98 | }; |
| 99 | |||
| 100 | &mdio { | ||
| 101 | status = "okay"; | ||
| 102 | |||
| 103 | ethphy0: ethernet-phy@0 { | ||
| 104 | device_type = "ethernet-phy"; | ||
| 105 | compatible = "marvell,88e1121"; | ||
| 106 | reg = <0>; | ||
| 107 | }; | ||
| 108 | |||
| 109 | ethphy1: ethernet-phy@1 { | ||
| 110 | device_type = "ethernet-phy"; | ||
| 111 | compatible = "marvell,88e1121"; | ||
| 112 | reg = <1>; | ||
| 113 | }; | ||
| 114 | }; | ||
| 115 | |||
| 116 | ð0 { | ||
| 117 | status = "okay"; | ||
| 118 | ethernet0-port@0 { | ||
| 119 | phy-handle = <ðphy0>; | ||
| 120 | }; | ||
| 121 | }; | ||
| 122 | |||
| 123 | ð1 { | ||
| 124 | status = "okay"; | ||
| 125 | ethernet1-port@0 { | ||
| 126 | phy-handle = <ðphy1>; | ||
| 127 | }; | ||
| 128 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ib62x0.dts b/arch/arm/boot/dts/kirkwood-ib62x0.dts index 158161ff6826..cb711a3bd983 100644 --- a/arch/arm/boot/dts/kirkwood-ib62x0.dts +++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts | |||
| @@ -122,3 +122,19 @@ | |||
| 122 | 122 | ||
| 123 | 123 | ||
| 124 | }; | 124 | }; |
| 125 | |||
| 126 | &mdio { | ||
| 127 | status = "okay"; | ||
| 128 | |||
| 129 | ethphy0: ethernet-phy@8 { | ||
| 130 | device_type = "ethernet-phy"; | ||
| 131 | reg = <8>; | ||
| 132 | }; | ||
| 133 | }; | ||
| 134 | |||
| 135 | ð0 { | ||
| 136 | status = "okay"; | ||
| 137 | ethernet0-port@0 { | ||
| 138 | phy-handle = <ðphy0>; | ||
| 139 | }; | ||
| 140 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-iconnect.dts b/arch/arm/boot/dts/kirkwood-iconnect.dts index 8314118b6b8a..0323f017eeed 100644 --- a/arch/arm/boot/dts/kirkwood-iconnect.dts +++ b/arch/arm/boot/dts/kirkwood-iconnect.dts | |||
| @@ -179,3 +179,19 @@ | |||
| 179 | }; | 179 | }; |
| 180 | }; | 180 | }; |
| 181 | }; | 181 | }; |
| 182 | |||
| 183 | &mdio { | ||
| 184 | status = "okay"; | ||
| 185 | |||
| 186 | ethphy0: ethernet-phy@11 { | ||
| 187 | device_type = "ethernet-phy"; | ||
| 188 | reg = <11>; | ||
| 189 | }; | ||
| 190 | }; | ||
| 191 | |||
| 192 | ð0 { | ||
| 193 | status = "okay"; | ||
| 194 | ethernet0-port@0 { | ||
| 195 | phy-handle = <ðphy0>; | ||
| 196 | }; | ||
| 197 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts index fd7f053e9c96..df8447442b37 100644 --- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts +++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts | |||
| @@ -194,3 +194,27 @@ | |||
| 194 | }; | 194 | }; |
| 195 | }; | 195 | }; |
| 196 | }; | 196 | }; |
| 197 | |||
| 198 | &mdio { | ||
| 199 | status = "okay"; | ||
| 200 | |||
| 201 | ethphy1: ethernet-phy@11 { | ||
| 202 | device_type = "ethernet-phy"; | ||
| 203 | reg = <11>; | ||
| 204 | }; | ||
| 205 | }; | ||
| 206 | |||
| 207 | ð0 { | ||
| 208 | status = "okay"; | ||
| 209 | ethernet0-port@0 { | ||
| 210 | speed = <1000>; | ||
| 211 | duplex = <1>; | ||
| 212 | }; | ||
| 213 | }; | ||
| 214 | |||
| 215 | ð1 { | ||
| 216 | status = "okay"; | ||
| 217 | ethernet1-port@0 { | ||
| 218 | phy-handle = <ðphy1>; | ||
| 219 | }; | ||
| 220 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts index bd88a236f729..da674bbd49a8 100644 --- a/arch/arm/boot/dts/kirkwood-is2.dts +++ b/arch/arm/boot/dts/kirkwood-is2.dts | |||
| @@ -30,3 +30,5 @@ | |||
| 30 | }; | 30 | }; |
| 31 | }; | 31 | }; |
| 32 | }; | 32 | }; |
| 33 | |||
| 34 | ðphy0 { reg = <8>; }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts index b071d37cc291..6899408482d2 100644 --- a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts +++ b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts | |||
| @@ -50,3 +50,19 @@ | |||
| 50 | i2c-gpio,delay-us = <2>; /* ~100 kHz */ | 50 | i2c-gpio,delay-us = <2>; /* ~100 kHz */ |
| 51 | }; | 51 | }; |
| 52 | }; | 52 | }; |
| 53 | |||
| 54 | &mdio { | ||
| 55 | status = "okay"; | ||
| 56 | |||
| 57 | ethphy0: ethernet-phy@0 { | ||
| 58 | device_type = "ethernet-phy"; | ||
| 59 | reg = <0>; | ||
| 60 | }; | ||
| 61 | }; | ||
| 62 | |||
| 63 | ð0 { | ||
| 64 | status = "okay"; | ||
| 65 | ethernet0-port@0 { | ||
| 66 | phy-handle = <ðphy0>; | ||
| 67 | }; | ||
| 68 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/arch/arm/boot/dts/kirkwood-lsxl.dtsi index f7e247cc925a..4e8f9e42c592 100644 --- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi +++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi | |||
| @@ -207,3 +207,31 @@ | |||
| 207 | }; | 207 | }; |
| 208 | }; | 208 | }; |
| 209 | }; | 209 | }; |
| 210 | |||
| 211 | &mdio { | ||
| 212 | status = "okay"; | ||
| 213 | |||
| 214 | ethphy0: ethernet-phy@0 { | ||
| 215 | device_type = "ethernet-phy"; | ||
| 216 | reg = <0>; | ||
| 217 | }; | ||
| 218 | |||
| 219 | ethphy1: ethernet-phy@8 { | ||
| 220 | device_type = "ethernet-phy"; | ||
| 221 | reg = <8>; | ||
| 222 | }; | ||
| 223 | }; | ||
| 224 | |||
| 225 | ð0 { | ||
| 226 | status = "okay"; | ||
| 227 | ethernet0-port@0 { | ||
| 228 | phy-handle = <ðphy0>; | ||
| 229 | }; | ||
| 230 | }; | ||
| 231 | |||
| 232 | ð1 { | ||
| 233 | status = "okay"; | ||
| 234 | ethernet1-port@0 { | ||
| 235 | phy-handle = <ðphy1>; | ||
| 236 | }; | ||
| 237 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-mplcec4.dts b/arch/arm/boot/dts/kirkwood-mplcec4.dts index 21f1954c9e54..ce2b94b513db 100644 --- a/arch/arm/boot/dts/kirkwood-mplcec4.dts +++ b/arch/arm/boot/dts/kirkwood-mplcec4.dts | |||
| @@ -194,3 +194,30 @@ | |||
| 194 | }; | 194 | }; |
| 195 | }; | 195 | }; |
| 196 | 196 | ||
| 197 | &mdio { | ||
| 198 | status = "okay"; | ||
| 199 | |||
| 200 | ethphy0: ethernet-phy@1 { | ||
| 201 | device_type = "ethernet-phy"; | ||
| 202 | reg = <1>; | ||
| 203 | }; | ||
| 204 | |||
| 205 | ethphy1: ethernet-phy@2 { | ||
| 206 | device_type = "ethernet-phy"; | ||
| 207 | reg = <2>; | ||
| 208 | }; | ||
| 209 | }; | ||
| 210 | |||
| 211 | ð0 { | ||
| 212 | status = "okay"; | ||
| 213 | ethernet0-port@0 { | ||
| 214 | phy-handle = <ðphy0>; | ||
| 215 | }; | ||
| 216 | }; | ||
| 217 | |||
| 218 | ð1 { | ||
| 219 | status = "okay"; | ||
| 220 | ethernet1-port@0 { | ||
| 221 | phy-handle = <ðphy1>; | ||
| 222 | }; | ||
| 223 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts new file mode 100644 index 000000000000..6317e1d088b3 --- /dev/null +++ b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts | |||
| @@ -0,0 +1,125 @@ | |||
| 1 | /* | ||
| 2 | * Marvell 88F6281 GTW GE Board | ||
| 3 | * | ||
| 4 | * Lennert Buytenhek <buytenh@marvell.com> | ||
| 5 | * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | ||
| 6 | * | ||
| 7 | * This file is licensed under the terms of the GNU General Public | ||
| 8 | * License version 2. This program is licensed "as is" without any | ||
| 9 | * warranty of any kind, whether express or implied. | ||
| 10 | * | ||
| 11 | * This file contains the definitions that are common between the 6281 | ||
| 12 | * and 6282 variants of the Marvell Kirkwood Development Board. | ||
| 13 | */ | ||
| 14 | |||
| 15 | /dts-v1/; | ||
| 16 | |||
| 17 | #include "kirkwood.dtsi" | ||
| 18 | #include "kirkwood-6281.dtsi" | ||
| 19 | |||
| 20 | / { | ||
| 21 | model = "Marvell 88F6281 GTW GE Board"; | ||
| 22 | compatible = "marvell,mv88f6281gtw-ge", "marvell,kirkwood-88f6281", "marvell,kirkwood"; | ||
| 23 | |||
| 24 | memory { | ||
| 25 | device_type = "memory"; | ||
| 26 | reg = <0x00000000 0x20000000>; /* 512 MB */ | ||
| 27 | }; | ||
| 28 | |||
| 29 | chosen { | ||
| 30 | bootargs = "console=ttyS0,115200n8 earlyprintk"; | ||
| 31 | }; | ||
| 32 | |||
| 33 | ocp@f1000000 { | ||
| 34 | pinctrl@10000 { | ||
| 35 | pmx_usb_led: pmx-usb-led { | ||
| 36 | marvell,pins = "mpp12"; | ||
| 37 | marvell,function = "gpo"; | ||
| 38 | }; | ||
| 39 | |||
| 40 | pmx_leds: pmx-leds { | ||
| 41 | marvell,pins = "mpp20", "mpp21"; | ||
| 42 | marvell,function = "gpio"; | ||
| 43 | }; | ||
| 44 | |||
| 45 | pmx_keys: pmx-keys { | ||
| 46 | marvell,pins = "mpp46", "mpp47"; | ||
| 47 | marvell,function = "gpio"; | ||
| 48 | }; | ||
| 49 | }; | ||
| 50 | |||
| 51 | spi@10600 { | ||
| 52 | pinctrl-0 = <&pmx_spi>; | ||
| 53 | pinctrl-names = "default"; | ||
| 54 | status = "okay"; | ||
| 55 | |||
| 56 | flash@0 { | ||
| 57 | #address-cells = <1>; | ||
| 58 | #size-cells = <1>; | ||
| 59 | compatible = "mx25l12805d"; | ||
| 60 | reg = <0>; | ||
| 61 | spi-max-frequency = <50000000>; | ||
| 62 | mode = <0>; | ||
| 63 | }; | ||
| 64 | }; | ||
| 65 | |||
| 66 | serial@12000 { | ||
| 67 | pinctrl-0 = <&pmx_uart0>; | ||
| 68 | pinctrl-names = "default"; | ||
| 69 | clock-frequency = <200000000>; | ||
| 70 | status = "ok"; | ||
| 71 | }; | ||
| 72 | |||
| 73 | ehci@50000 { | ||
| 74 | status = "okay"; | ||
| 75 | }; | ||
| 76 | |||
| 77 | pcie-controller { | ||
| 78 | status = "okay"; | ||
| 79 | |||
| 80 | pcie@1,0 { | ||
| 81 | status = "okay"; | ||
| 82 | }; | ||
| 83 | }; | ||
| 84 | }; | ||
| 85 | |||
| 86 | gpio-leds { | ||
| 87 | compatible = "gpio-leds"; | ||
| 88 | pinctrl-0 = <&pmx_leds &pmx_usb_led>; | ||
| 89 | pinctrl-names = "default"; | ||
| 90 | |||
| 91 | green-status { | ||
| 92 | label = "gtw:green:Status"; | ||
| 93 | gpios = <&gpio0 20 0>; | ||
| 94 | }; | ||
| 95 | |||
| 96 | red-status { | ||
| 97 | label = "gtw:red:Status"; | ||
| 98 | gpios = <&gpio0 21 0>; | ||
| 99 | }; | ||
| 100 | |||
| 101 | green-usb { | ||
| 102 | label = "gtw:green:USB"; | ||
| 103 | gpios = <&gpio0 12 0>; | ||
| 104 | }; | ||
| 105 | }; | ||
| 106 | |||
| 107 | gpio_keys { | ||
| 108 | compatible = "gpio-keys"; | ||
| 109 | #address-cells = <1>; | ||
| 110 | #size-cells = <0>; | ||
| 111 | pinctrl-0 = <&pmx_keys>; | ||
| 112 | pinctrl-names = "default"; | ||
| 113 | |||
| 114 | button@1 { | ||
| 115 | label = "SWR Button"; | ||
| 116 | linux,code = <0x198>; /* KEY_RESTART */ | ||
| 117 | gpios = <&gpio1 15 1>; | ||
| 118 | }; | ||
| 119 | button@2 { | ||
| 120 | label = "WPS Button"; | ||
| 121 | linux,code = <0x211>; /* KEY_WPS_BUTTON */ | ||
| 122 | gpios = <&gpio1 14 1>; | ||
| 123 | }; | ||
| 124 | }; | ||
| 125 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts index cc40f19ae3fc..874857ea9cb8 100644 --- a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts +++ b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts | |||
| @@ -207,3 +207,19 @@ | |||
| 207 | }; | 207 | }; |
| 208 | }; | 208 | }; |
| 209 | }; | 209 | }; |
| 210 | |||
| 211 | &mdio { | ||
| 212 | status = "okay"; | ||
| 213 | |||
| 214 | ethphy0: ethernet-phy@0 { | ||
| 215 | device_type = "ethernet-phy"; | ||
| 216 | reg = <0>; | ||
| 217 | }; | ||
| 218 | }; | ||
| 219 | |||
| 220 | ð0 { | ||
| 221 | status = "okay"; | ||
| 222 | ethernet0-port@0 { | ||
| 223 | phy-handle = <ðphy0>; | ||
| 224 | }; | ||
| 225 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi index d0fb34dc1667..2fcb82e20828 100644 --- a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi +++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi | |||
| @@ -84,3 +84,19 @@ | |||
| 84 | }; | 84 | }; |
| 85 | 85 | ||
| 86 | }; | 86 | }; |
| 87 | |||
| 88 | &mdio { | ||
| 89 | status = "okay"; | ||
| 90 | |||
| 91 | ethphy0: ethernet-phy { | ||
| 92 | device_type = "ethernet-phy"; | ||
| 93 | /* overwrite reg property in board file */ | ||
| 94 | }; | ||
| 95 | }; | ||
| 96 | |||
| 97 | ð0 { | ||
| 98 | status = "okay"; | ||
| 99 | ethernet0-port@0 { | ||
| 100 | phy-handle = <ðphy0>; | ||
| 101 | }; | ||
| 102 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2.dts b/arch/arm/boot/dts/kirkwood-ns2.dts index 0599f3cb844e..53368d1022cc 100644 --- a/arch/arm/boot/dts/kirkwood-ns2.dts +++ b/arch/arm/boot/dts/kirkwood-ns2.dts | |||
| @@ -30,3 +30,5 @@ | |||
| 30 | }; | 30 | }; |
| 31 | }; | 31 | }; |
| 32 | }; | 32 | }; |
| 33 | |||
| 34 | ðphy0 { reg = <8>; }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2lite.dts b/arch/arm/boot/dts/kirkwood-ns2lite.dts index b0e17984aea0..279607093cdb 100644 --- a/arch/arm/boot/dts/kirkwood-ns2lite.dts +++ b/arch/arm/boot/dts/kirkwood-ns2lite.dts | |||
| @@ -30,3 +30,5 @@ | |||
| 30 | }; | 30 | }; |
| 31 | }; | 31 | }; |
| 32 | }; | 32 | }; |
| 33 | |||
| 34 | ðphy0 { reg = <0>; }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts index d4f6a586d553..defdc77fb550 100644 --- a/arch/arm/boot/dts/kirkwood-ns2max.dts +++ b/arch/arm/boot/dts/kirkwood-ns2max.dts | |||
| @@ -49,3 +49,5 @@ | |||
| 49 | }; | 49 | }; |
| 50 | }; | 50 | }; |
| 51 | }; | 51 | }; |
| 52 | |||
| 53 | ðphy0 { reg = <8>; }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ns2mini.dts b/arch/arm/boot/dts/kirkwood-ns2mini.dts index f30e05af6473..adbafdd90991 100644 --- a/arch/arm/boot/dts/kirkwood-ns2mini.dts +++ b/arch/arm/boot/dts/kirkwood-ns2mini.dts | |||
| @@ -50,3 +50,5 @@ | |||
| 50 | }; | 50 | }; |
| 51 | }; | 51 | }; |
| 52 | }; | 52 | }; |
| 53 | |||
| 54 | ðphy0 { reg = <0>; }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts index 365b792b23a7..85ccf8d8abb1 100644 --- a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts +++ b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts | |||
| @@ -166,3 +166,19 @@ | |||
| 166 | }; | 166 | }; |
| 167 | }; | 167 | }; |
| 168 | }; | 168 | }; |
| 169 | |||
| 170 | &mdio { | ||
| 171 | status = "okay"; | ||
| 172 | |||
| 173 | ethphy0: ethernet-phy@0 { | ||
| 174 | device_type = "ethernet-phy"; | ||
| 175 | reg = <0>; | ||
| 176 | }; | ||
| 177 | }; | ||
| 178 | |||
| 179 | ð0 { | ||
| 180 | status = "okay"; | ||
| 181 | ethernet0-port@0 { | ||
| 182 | phy-handle = <ðphy0>; | ||
| 183 | }; | ||
| 184 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi index 0cc5f26bbbb6..5696b630b70b 100644 --- a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi +++ b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi | |||
| @@ -91,3 +91,19 @@ | |||
| 91 | }; | 91 | }; |
| 92 | }; | 92 | }; |
| 93 | }; | 93 | }; |
| 94 | |||
| 95 | &mdio { | ||
| 96 | status = "okay"; | ||
| 97 | |||
| 98 | ethphy0: ethernet-phy@0 { | ||
| 99 | device_type = "ethernet-phy"; | ||
| 100 | reg = <0>; | ||
| 101 | }; | ||
| 102 | }; | ||
| 103 | |||
| 104 | ð0 { | ||
| 105 | status = "okay"; | ||
| 106 | ethernet0-port@0 { | ||
| 107 | phy-handle = <ðphy0>; | ||
| 108 | }; | ||
| 109 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts index 974f1e0f09b2..30842b4ff293 100644 --- a/arch/arm/boot/dts/kirkwood-topkick.dts +++ b/arch/arm/boot/dts/kirkwood-topkick.dts | |||
| @@ -203,3 +203,19 @@ | |||
| 203 | }; | 203 | }; |
| 204 | }; | 204 | }; |
| 205 | }; | 205 | }; |
| 206 | |||
| 207 | &mdio { | ||
| 208 | status = "okay"; | ||
| 209 | |||
| 210 | ethphy0: ethernet-phy@0 { | ||
| 211 | device_type = "ethernet-phy"; | ||
| 212 | reg = <0>; | ||
| 213 | }; | ||
| 214 | }; | ||
| 215 | |||
| 216 | ð0 { | ||
| 217 | status = "okay"; | ||
| 218 | ethernet0-port@0 { | ||
| 219 | phy-handle = <ðphy0>; | ||
| 220 | }; | ||
| 221 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6281.dts b/arch/arm/boot/dts/kirkwood-ts219-6281.dts index 3867ae3030be..f755bc1dc604 100644 --- a/arch/arm/boot/dts/kirkwood-ts219-6281.dts +++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts | |||
| @@ -50,4 +50,6 @@ | |||
| 50 | gpios = <&gpio0 16 1>; | 50 | gpios = <&gpio0 16 1>; |
| 51 | }; | 51 | }; |
| 52 | }; | 52 | }; |
| 53 | }; \ No newline at end of file | 53 | }; |
| 54 | |||
| 55 | ðphy0 { reg = <8>; }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6282.dts b/arch/arm/boot/dts/kirkwood-ts219-6282.dts index 04f6fe106bb5..9efcd2dc79d3 100644 --- a/arch/arm/boot/dts/kirkwood-ts219-6282.dts +++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts | |||
| @@ -61,4 +61,6 @@ | |||
| 61 | gpios = <&gpio1 5 1>; | 61 | gpios = <&gpio1 5 1>; |
| 62 | }; | 62 | }; |
| 63 | }; | 63 | }; |
| 64 | }; \ No newline at end of file | 64 | }; |
| 65 | |||
| 66 | ðphy0 { reg = <0>; }; | ||
diff --git a/arch/arm/boot/dts/kirkwood-ts219.dtsi b/arch/arm/boot/dts/kirkwood-ts219.dtsi index 7019cf675df2..39158cf16258 100644 --- a/arch/arm/boot/dts/kirkwood-ts219.dtsi +++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi | |||
| @@ -99,3 +99,19 @@ | |||
| 99 | }; | 99 | }; |
| 100 | }; | 100 | }; |
| 101 | }; | 101 | }; |
| 102 | |||
| 103 | &mdio { | ||
| 104 | status = "okay"; | ||
| 105 | |||
| 106 | ethphy0: ethernet-phy { | ||
| 107 | device_type = "ethernet-phy"; | ||
| 108 | /* overwrite reg property in board file */ | ||
| 109 | }; | ||
| 110 | }; | ||
| 111 | |||
| 112 | ð0 { | ||
| 113 | status = "okay"; | ||
| 114 | ethernet0-port@0 { | ||
| 115 | phy-handle = <ðphy0>; | ||
| 116 | }; | ||
| 117 | }; | ||
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi index 70f414d9bd9a..cf7aeaf89e9c 100644 --- a/arch/arm/boot/dts/kirkwood.dtsi +++ b/arch/arm/boot/dts/kirkwood.dtsi | |||
| @@ -22,13 +22,6 @@ | |||
| 22 | gpio0 = &gpio0; | 22 | gpio0 = &gpio0; |
| 23 | gpio1 = &gpio1; | 23 | gpio1 = &gpio1; |
| 24 | }; | 24 | }; |
| 25 | intc: interrupt-controller { | ||
| 26 | compatible = "marvell,orion-intc", "marvell,intc"; | ||
| 27 | interrupt-controller; | ||
| 28 | #interrupt-cells = <1>; | ||
| 29 | reg = <0xf1020204 0x04>, | ||
| 30 | <0xf1020214 0x04>; | ||
| 31 | }; | ||
| 32 | 25 | ||
| 33 | mbus { | 26 | mbus { |
| 34 | compatible = "marvell,kirkwood-mbus", "simple-bus"; | 27 | compatible = "marvell,kirkwood-mbus", "simple-bus"; |
| @@ -52,6 +45,30 @@ | |||
| 52 | reg = <0x20000 0x80>, <0x1500 0x20>; | 45 | reg = <0x20000 0x80>, <0x1500 0x20>; |
| 53 | }; | 46 | }; |
| 54 | 47 | ||
| 48 | timer: timer@20300 { | ||
| 49 | compatible = "marvell,orion-timer"; | ||
| 50 | reg = <0x20300 0x20>; | ||
| 51 | interrupt-parent = <&bridge_intc>; | ||
| 52 | interrupts = <1>, <2>; | ||
| 53 | clocks = <&core_clk 0>; | ||
| 54 | }; | ||
| 55 | |||
| 56 | intc: main-interrupt-ctrl@20200 { | ||
| 57 | compatible = "marvell,orion-intc"; | ||
| 58 | interrupt-controller; | ||
| 59 | #interrupt-cells = <1>; | ||
| 60 | reg = <0x20200 0x10>, <0x20210 0x10>; | ||
| 61 | }; | ||
| 62 | |||
| 63 | bridge_intc: bridge-interrupt-ctrl@20110 { | ||
| 64 | compatible = "marvell,orion-bridge-intc"; | ||
| 65 | interrupt-controller; | ||
| 66 | #interrupt-cells = <1>; | ||
| 67 | reg = <0x20110 0x8>; | ||
| 68 | interrupts = <1>; | ||
| 69 | marvell,#interrupts = <6>; | ||
| 70 | }; | ||
| 71 | |||
| 55 | core_clk: core-clocks@10030 { | 72 | core_clk: core-clocks@10030 { |
| 56 | compatible = "marvell,kirkwood-core-clock"; | 73 | compatible = "marvell,kirkwood-core-clock"; |
| 57 | reg = <0x10030 0x4>; | 74 | reg = <0x10030 0x4>; |
| @@ -118,9 +135,11 @@ | |||
| 118 | #clock-cells = <1>; | 135 | #clock-cells = <1>; |
| 119 | }; | 136 | }; |
| 120 | 137 | ||
| 121 | wdt@20300 { | 138 | wdt: watchdog-timer@20300 { |
| 122 | compatible = "marvell,orion-wdt"; | 139 | compatible = "marvell,orion-wdt"; |
| 123 | reg = <0x20300 0x28>; | 140 | reg = <0x20300 0x28>; |
| 141 | interrupt-parent = <&bridge_intc>; | ||
| 142 | interrupts = <3>; | ||
| 124 | clocks = <&gate_clk 7>; | 143 | clocks = <&gate_clk 7>; |
| 125 | status = "okay"; | 144 | status = "okay"; |
| 126 | }; | 145 | }; |
| @@ -207,5 +226,57 @@ | |||
| 207 | clocks = <&gate_clk 17>; | 226 | clocks = <&gate_clk 17>; |
| 208 | status = "okay"; | 227 | status = "okay"; |
| 209 | }; | 228 | }; |
| 229 | |||
| 230 | mdio: mdio-bus@72004 { | ||
| 231 | compatible = "marvell,orion-mdio"; | ||
| 232 | #address-cells = <1>; | ||
| 233 | #size-cells = <0>; | ||
| 234 | reg = <0x72004 0x84>; | ||
| 235 | interrupts = <46>; | ||
| 236 | clocks = <&gate_clk 0>; | ||
| 237 | status = "disabled"; | ||
| 238 | |||
| 239 | /* add phy nodes in board file */ | ||
| 240 | }; | ||
| 241 | |||
| 242 | eth0: ethernet-controller@72000 { | ||
| 243 | compatible = "marvell,kirkwood-eth"; | ||
| 244 | #address-cells = <1>; | ||
| 245 | #size-cells = <0>; | ||
| 246 | reg = <0x72000 0x4000>; | ||
| 247 | clocks = <&gate_clk 0>; | ||
| 248 | marvell,tx-checksum-limit = <1600>; | ||
| 249 | status = "disabled"; | ||
| 250 | |||
| 251 | ethernet0-port@0 { | ||
| 252 | device_type = "network"; | ||
| 253 | compatible = "marvell,kirkwood-eth-port"; | ||
| 254 | reg = <0>; | ||
| 255 | interrupts = <11>; | ||
| 256 | /* overwrite MAC address in bootloader */ | ||
| 257 | local-mac-address = [00 00 00 00 00 00]; | ||
| 258 | /* set phy-handle property in board file */ | ||
| 259 | }; | ||
| 260 | }; | ||
| 261 | |||
| 262 | eth1: ethernet-controller@76000 { | ||
| 263 | compatible = "marvell,kirkwood-eth"; | ||
| 264 | #address-cells = <1>; | ||
| 265 | #size-cells = <0>; | ||
| 266 | reg = <0x76000 0x4000>; | ||
| 267 | clocks = <&gate_clk 19>; | ||
| 268 | marvell,tx-checksum-limit = <1600>; | ||
| 269 | status = "disabled"; | ||
| 270 | |||
| 271 | ethernet1-port@0 { | ||
| 272 | device_type = "network"; | ||
| 273 | compatible = "marvell,kirkwood-eth-port"; | ||
| 274 | reg = <0>; | ||
| 275 | interrupts = <15>; | ||
| 276 | /* overwrite MAC address in bootloader */ | ||
| 277 | local-mac-address = [00 00 00 00 00 00]; | ||
| 278 | /* set phy-handle property in board file */ | ||
| 279 | }; | ||
| 280 | }; | ||
| 210 | }; | 281 | }; |
| 211 | }; | 282 | }; |
diff --git a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts index 0077fc8510b7..aed83deaa991 100644 --- a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts +++ b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts | |||
| @@ -53,3 +53,20 @@ | |||
| 53 | }; | 53 | }; |
| 54 | }; | 54 | }; |
| 55 | }; | 55 | }; |
| 56 | |||
| 57 | &mdio { | ||
| 58 | status = "okay"; | ||
| 59 | |||
| 60 | ethphy: ethernet-phy { | ||
| 61 | device-type = "ethernet-phy"; | ||
| 62 | reg = <8>; | ||
| 63 | }; | ||
| 64 | }; | ||
| 65 | |||
| 66 | ð { | ||
| 67 | status = "okay"; | ||
| 68 | |||
| 69 | ethernet-port@0 { | ||
| 70 | phy-handle = <ðphy>; | ||
| 71 | }; | ||
| 72 | }; | ||
diff --git a/arch/arm/boot/dts/orion5x.dtsi b/arch/arm/boot/dts/orion5x.dtsi index 892c64e3f1e1..e06c37e91ac6 100644 --- a/arch/arm/boot/dts/orion5x.dtsi +++ b/arch/arm/boot/dts/orion5x.dtsi | |||
| @@ -16,11 +16,12 @@ | |||
| 16 | aliases { | 16 | aliases { |
| 17 | gpio0 = &gpio0; | 17 | gpio0 = &gpio0; |
| 18 | }; | 18 | }; |
| 19 | |||
| 19 | intc: interrupt-controller { | 20 | intc: interrupt-controller { |
| 20 | compatible = "marvell,orion-intc", "marvell,intc"; | 21 | compatible = "marvell,orion-intc"; |
| 21 | interrupt-controller; | 22 | interrupt-controller; |
| 22 | #interrupt-cells = <1>; | 23 | #interrupt-cells = <1>; |
| 23 | reg = <0xf1020204 0x04>; | 24 | reg = <0xf1020200 0x08>; |
| 24 | }; | 25 | }; |
| 25 | 26 | ||
| 26 | ocp@f1000000 { | 27 | ocp@f1000000 { |
| @@ -132,5 +133,34 @@ | |||
| 132 | interrupts = <28>; | 133 | interrupts = <28>; |
| 133 | status = "okay"; | 134 | status = "okay"; |
| 134 | }; | 135 | }; |
| 136 | |||
| 137 | mdio: mdio-bus@72004 { | ||
| 138 | compatible = "marvell,orion-mdio"; | ||
| 139 | #address-cells = <1>; | ||
| 140 | #size-cells = <0>; | ||
| 141 | reg = <0x72004 0x84>; | ||
| 142 | interrupts = <22>; | ||
| 143 | status = "disabled"; | ||
| 144 | |||
| 145 | /* add phy nodes in board file */ | ||
| 146 | }; | ||
| 147 | |||
| 148 | eth: ethernet-controller@72000 { | ||
| 149 | compatible = "marvell,orion-eth"; | ||
| 150 | #address-cells = <1>; | ||
| 151 | #size-cells = <0>; | ||
| 152 | reg = <0x72000 0x4000>; | ||
| 153 | marvell,tx-checksum-limit = <1600>; | ||
| 154 | status = "disabled"; | ||
| 155 | |||
| 156 | ethernet-port@0 { | ||
| 157 | device_type = "network"; | ||
| 158 | compatible = "marvell,orion-eth-port"; | ||
| 159 | reg = <0>; | ||
| 160 | /* overwrite MAC address in bootloader */ | ||
| 161 | local-mac-address = [00 00 00 00 00 00]; | ||
| 162 | /* set phy-handle property in board file */ | ||
| 163 | }; | ||
| 164 | }; | ||
| 135 | }; | 165 | }; |
| 136 | }; | 166 | }; |
diff --git a/arch/arm/configs/ape6evm_defconfig b/arch/arm/configs/ape6evm_defconfig index dab5a7dfadc6..1ce39940795d 100644 --- a/arch/arm/configs/ape6evm_defconfig +++ b/arch/arm/configs/ape6evm_defconfig | |||
| @@ -54,7 +54,8 @@ CONFIG_NETDEVICES=y | |||
| 54 | CONFIG_SMC91X=y | 54 | CONFIG_SMC91X=y |
| 55 | CONFIG_SMSC911X=y | 55 | CONFIG_SMSC911X=y |
| 56 | # CONFIG_INPUT_MOUSEDEV is not set | 56 | # CONFIG_INPUT_MOUSEDEV is not set |
| 57 | # CONFIG_INPUT_KEYBOARD is not set | 57 | CONFIG_INPUT_EVDEV=y |
| 58 | CONFIG_KEYBOARD_GPIO=y | ||
| 58 | # CONFIG_INPUT_MOUSE is not set | 59 | # CONFIG_INPUT_MOUSE is not set |
| 59 | # CONFIG_SERIO is not set | 60 | # CONFIG_SERIO is not set |
| 60 | CONFIG_SERIAL_NONSTANDARD=y | 61 | CONFIG_SERIAL_NONSTANDARD=y |
| @@ -71,6 +72,9 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y | |||
| 71 | CONFIG_REGULATOR_GPIO=y | 72 | CONFIG_REGULATOR_GPIO=y |
| 72 | # CONFIG_HID is not set | 73 | # CONFIG_HID is not set |
| 73 | # CONFIG_USB_SUPPORT is not set | 74 | # CONFIG_USB_SUPPORT is not set |
| 75 | CONFIG_NEW_LEDS=y | ||
| 76 | CONFIG_LEDS_CLASS=y | ||
| 77 | CONFIG_LEDS_GPIO=y | ||
| 74 | # CONFIG_IOMMU_SUPPORT is not set | 78 | # CONFIG_IOMMU_SUPPORT is not set |
| 75 | # CONFIG_DNOTIFY is not set | 79 | # CONFIG_DNOTIFY is not set |
| 76 | CONFIG_TMPFS=y | 80 | CONFIG_TMPFS=y |
diff --git a/arch/arm/configs/bcm_defconfig b/arch/arm/configs/bcm_defconfig index 65edf6d47215..6e4931097dd4 100644 --- a/arch/arm/configs/bcm_defconfig +++ b/arch/arm/configs/bcm_defconfig | |||
| @@ -42,6 +42,18 @@ CONFIG_VFP=y | |||
| 42 | CONFIG_NEON=y | 42 | CONFIG_NEON=y |
| 43 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | 43 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set |
| 44 | CONFIG_PM_RUNTIME=y | 44 | CONFIG_PM_RUNTIME=y |
| 45 | CONFIG_NET=y | ||
| 46 | CONFIG_PACKET=y | ||
| 47 | CONFIG_PACKET_DIAG=y | ||
| 48 | CONFIG_UNIX=y | ||
| 49 | CONFIG_UNIX_DIAG=y | ||
| 50 | CONFIG_NET_KEY=y | ||
| 51 | CONFIG_INET=y | ||
| 52 | CONFIG_IP_MULTICAST=y | ||
| 53 | CONFIG_ARPD=y | ||
| 54 | CONFIG_SYN_COOKIES=y | ||
| 55 | CONFIG_TCP_MD5SIG=y | ||
| 56 | CONFIG_IPV6=y | ||
| 45 | CONFIG_DEVTMPFS=y | 57 | CONFIG_DEVTMPFS=y |
| 46 | CONFIG_DEVTMPFS_MOUNT=y | 58 | CONFIG_DEVTMPFS_MOUNT=y |
| 47 | CONFIG_PROC_DEVICETREE=y | 59 | CONFIG_PROC_DEVICETREE=y |
| @@ -112,7 +124,6 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=110 | |||
| 112 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y | 124 | CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y |
| 113 | CONFIG_DEBUG_INFO=y | 125 | CONFIG_DEBUG_INFO=y |
| 114 | # CONFIG_FTRACE is not set | 126 | # CONFIG_FTRACE is not set |
| 115 | CONFIG_DEBUG_LL=y | ||
| 116 | CONFIG_CRC_CCITT=y | 127 | CONFIG_CRC_CCITT=y |
| 117 | CONFIG_CRC_T10DIF=y | 128 | CONFIG_CRC_T10DIF=y |
| 118 | CONFIG_CRC_ITU_T=y | 129 | CONFIG_CRC_ITU_T=y |
diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig index 4364eff5b01e..110105476848 100644 --- a/arch/arm/configs/dove_defconfig +++ b/arch/arm/configs/dove_defconfig | |||
| @@ -13,6 +13,9 @@ CONFIG_ARCH_DOVE=y | |||
| 13 | CONFIG_MACH_DOVE_DB=y | 13 | CONFIG_MACH_DOVE_DB=y |
| 14 | CONFIG_MACH_CM_A510=y | 14 | CONFIG_MACH_CM_A510=y |
| 15 | CONFIG_MACH_DOVE_DT=y | 15 | CONFIG_MACH_DOVE_DT=y |
| 16 | CONFIG_PCI=y | ||
| 17 | CONFIG_PCI_MSI=y | ||
| 18 | CONFIG_PCI_MVEBU=y | ||
| 16 | CONFIG_AEABI=y | 19 | CONFIG_AEABI=y |
| 17 | CONFIG_HIGHMEM=y | 20 | CONFIG_HIGHMEM=y |
| 18 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 21 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| @@ -78,6 +81,7 @@ CONFIG_SPI_ORION=y | |||
| 78 | CONFIG_THERMAL=y | 81 | CONFIG_THERMAL=y |
| 79 | CONFIG_DOVE_THERMAL=y | 82 | CONFIG_DOVE_THERMAL=y |
| 80 | CONFIG_USB=y | 83 | CONFIG_USB=y |
| 84 | CONFIG_USB_XHCI_HCD=y | ||
| 81 | CONFIG_USB_EHCI_HCD=y | 85 | CONFIG_USB_EHCI_HCD=y |
| 82 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 86 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
| 83 | CONFIG_USB_STORAGE=y | 87 | CONFIG_USB_STORAGE=y |
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig index 0f2aa61911a3..0ae0eaebf6b2 100644 --- a/arch/arm/configs/kirkwood_defconfig +++ b/arch/arm/configs/kirkwood_defconfig | |||
| @@ -10,49 +10,18 @@ CONFIG_MODULE_UNLOAD=y | |||
| 10 | # CONFIG_BLK_DEV_BSG is not set | 10 | # CONFIG_BLK_DEV_BSG is not set |
| 11 | CONFIG_ARCH_KIRKWOOD=y | 11 | CONFIG_ARCH_KIRKWOOD=y |
| 12 | CONFIG_MACH_D2NET_V2=y | 12 | CONFIG_MACH_D2NET_V2=y |
| 13 | CONFIG_MACH_DB88F6281_BP=y | ||
| 14 | CONFIG_MACH_DOCKSTAR=y | ||
| 15 | CONFIG_MACH_ESATA_SHEEVAPLUG=y | ||
| 16 | CONFIG_MACH_GURUPLUG=y | ||
| 17 | CONFIG_MACH_INETSPACE_V2=y | ||
| 18 | CONFIG_MACH_MV88F6281GTW_GE=y | ||
| 19 | CONFIG_MACH_NET2BIG_V2=y | 13 | CONFIG_MACH_NET2BIG_V2=y |
| 20 | CONFIG_MACH_NET5BIG_V2=y | 14 | CONFIG_MACH_NET5BIG_V2=y |
| 21 | CONFIG_MACH_NETSPACE_MAX_V2=y | ||
| 22 | CONFIG_MACH_NETSPACE_V2=y | ||
| 23 | CONFIG_MACH_OPENRD_BASE=y | 15 | CONFIG_MACH_OPENRD_BASE=y |
| 24 | CONFIG_MACH_OPENRD_CLIENT=y | 16 | CONFIG_MACH_OPENRD_CLIENT=y |
| 25 | CONFIG_MACH_OPENRD_ULTIMATE=y | 17 | CONFIG_MACH_OPENRD_ULTIMATE=y |
| 26 | CONFIG_MACH_RD88F6192_NAS=y | 18 | CONFIG_MACH_RD88F6192_NAS=y |
| 27 | CONFIG_MACH_RD88F6281=y | 19 | CONFIG_MACH_RD88F6281=y |
| 28 | CONFIG_MACH_SHEEVAPLUG=y | ||
| 29 | CONFIG_MACH_T5325=y | 20 | CONFIG_MACH_T5325=y |
| 30 | CONFIG_MACH_TS219=y | 21 | CONFIG_MACH_TS219=y |
| 31 | CONFIG_MACH_TS41X=y | 22 | CONFIG_MACH_TS41X=y |
| 32 | CONFIG_MACH_CLOUDBOX_DT=y | 23 | CONFIG_ARCH_KIRKWOOD_DT=y |
| 33 | CONFIG_MACH_DB88F628X_BP_DT=y | 24 | CONFIG_MACH_MV88F6281GTW_GE_DT=y |
| 34 | CONFIG_MACH_DLINK_KIRKWOOD_DT=y | ||
| 35 | CONFIG_MACH_DOCKSTAR_DT=y | ||
| 36 | CONFIG_MACH_DREAMPLUG_DT=y | ||
| 37 | CONFIG_MACH_GOFLEXNET_DT=y | ||
| 38 | CONFIG_MACH_GURUPLUG_DT=y | ||
| 39 | CONFIG_MACH_IB62X0_DT=y | ||
| 40 | CONFIG_MACH_ICONNECT_DT=y | ||
| 41 | CONFIG_MACH_INETSPACE_V2_DT=y | ||
| 42 | CONFIG_MACH_IOMEGA_IX2_200_DT=y | ||
| 43 | CONFIG_MACH_KM_KIRKWOOD_DT=y | ||
| 44 | CONFIG_MACH_LSXL_DT=y | ||
| 45 | CONFIG_MACH_MPLCEC4_DT=y | ||
| 46 | CONFIG_MACH_NETSPACE_LITE_V2_DT=y | ||
| 47 | CONFIG_MACH_NETSPACE_MAX_V2_DT=y | ||
| 48 | CONFIG_MACH_NETSPACE_MINI_V2_DT=y | ||
| 49 | CONFIG_MACH_NETSPACE_V2_DT=y | ||
| 50 | CONFIG_MACH_NSA310_DT=y | ||
| 51 | CONFIG_MACH_OPENBLOCKS_A6_DT=y | ||
| 52 | CONFIG_MACH_READYNAS_DT=y | ||
| 53 | CONFIG_MACH_SHEEVAPLUG_DT=y | ||
| 54 | CONFIG_MACH_TOPKICK_DT=y | ||
| 55 | CONFIG_MACH_TS219_DT=y | ||
| 56 | # CONFIG_CPU_FEROCEON_OLD_ID is not set | 25 | # CONFIG_CPU_FEROCEON_OLD_ID is not set |
| 57 | CONFIG_PCI_MVEBU=y | 26 | CONFIG_PCI_MVEBU=y |
| 58 | CONFIG_PREEMPT=y | 27 | CONFIG_PREEMPT=y |
| @@ -92,6 +61,7 @@ CONFIG_MTD_M25P80=y | |||
| 92 | CONFIG_MTD_NAND=y | 61 | CONFIG_MTD_NAND=y |
| 93 | CONFIG_MTD_NAND_ORION=y | 62 | CONFIG_MTD_NAND_ORION=y |
| 94 | CONFIG_BLK_DEV_LOOP=y | 63 | CONFIG_BLK_DEV_LOOP=y |
| 64 | CONFIG_EEPROM_AT24=y | ||
| 95 | # CONFIG_SCSI_PROC_FS is not set | 65 | # CONFIG_SCSI_PROC_FS is not set |
| 96 | CONFIG_BLK_DEV_SD=y | 66 | CONFIG_BLK_DEV_SD=y |
| 97 | CONFIG_BLK_DEV_SR=m | 67 | CONFIG_BLK_DEV_SR=m |
| @@ -100,9 +70,9 @@ CONFIG_ATA=y | |||
| 100 | CONFIG_SATA_AHCI=y | 70 | CONFIG_SATA_AHCI=y |
| 101 | CONFIG_SATA_MV=y | 71 | CONFIG_SATA_MV=y |
| 102 | CONFIG_NETDEVICES=y | 72 | CONFIG_NETDEVICES=y |
| 103 | CONFIG_MII=y | ||
| 104 | CONFIG_NET_DSA_MV88E6123_61_65=y | 73 | CONFIG_NET_DSA_MV88E6123_61_65=y |
| 105 | CONFIG_MV643XX_ETH=y | 74 | CONFIG_MV643XX_ETH=y |
| 75 | CONFIG_R8169=y | ||
| 106 | CONFIG_MARVELL_PHY=y | 76 | CONFIG_MARVELL_PHY=y |
| 107 | CONFIG_LIBERTAS=y | 77 | CONFIG_LIBERTAS=y |
| 108 | CONFIG_LIBERTAS_SDIO=y | 78 | CONFIG_LIBERTAS_SDIO=y |
| @@ -123,9 +93,11 @@ CONFIG_I2C_MV64XXX=y | |||
| 123 | CONFIG_SPI=y | 93 | CONFIG_SPI=y |
| 124 | CONFIG_SPI_ORION=y | 94 | CONFIG_SPI_ORION=y |
| 125 | CONFIG_GPIO_SYSFS=y | 95 | CONFIG_GPIO_SYSFS=y |
| 126 | # CONFIG_HWMON is not set | 96 | CONFIG_SENSORS_ADT7475=y |
| 97 | CONFIG_SENSORS_LM63=y | ||
| 98 | CONFIG_SENSORS_LM75=y | ||
| 99 | CONFIG_SENSORS_LM85=y | ||
| 127 | CONFIG_THERMAL=y | 100 | CONFIG_THERMAL=y |
| 128 | CONFIG_KIRKWOOD_THERMAL=y | ||
| 129 | CONFIG_WATCHDOG=y | 101 | CONFIG_WATCHDOG=y |
| 130 | CONFIG_ORION_WATCHDOG=y | 102 | CONFIG_ORION_WATCHDOG=y |
| 131 | CONFIG_HID_DRAGONRISE=y | 103 | CONFIG_HID_DRAGONRISE=y |
| @@ -164,6 +136,8 @@ CONFIG_LEDS_TRIGGER_TIMER=y | |||
| 164 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | 136 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y |
| 165 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | 137 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y |
| 166 | CONFIG_RTC_CLASS=y | 138 | CONFIG_RTC_CLASS=y |
| 139 | CONFIG_RTC_DRV_RS5C372=y | ||
| 140 | CONFIG_RTC_DRV_PCF8563=y | ||
| 167 | CONFIG_RTC_DRV_S35390A=y | 141 | CONFIG_RTC_DRV_S35390A=y |
| 168 | CONFIG_RTC_DRV_MV=y | 142 | CONFIG_RTC_DRV_MV=y |
| 169 | CONFIG_DMADEVICES=y | 143 | CONFIG_DMADEVICES=y |
| @@ -171,6 +145,7 @@ CONFIG_MV_XOR=y | |||
| 171 | CONFIG_EXT2_FS=y | 145 | CONFIG_EXT2_FS=y |
| 172 | CONFIG_EXT3_FS=y | 146 | CONFIG_EXT3_FS=y |
| 173 | # CONFIG_EXT3_FS_XATTR is not set | 147 | # CONFIG_EXT3_FS_XATTR is not set |
| 148 | CONFIG_EXT4_FS=y | ||
| 174 | CONFIG_ISO9660_FS=m | 149 | CONFIG_ISO9660_FS=m |
| 175 | CONFIG_JOLIET=y | 150 | CONFIG_JOLIET=y |
| 176 | CONFIG_UDF_FS=m | 151 | CONFIG_UDF_FS=m |
| @@ -186,12 +161,12 @@ CONFIG_NLS_CODEPAGE_850=y | |||
| 186 | CONFIG_NLS_ISO8859_1=y | 161 | CONFIG_NLS_ISO8859_1=y |
| 187 | CONFIG_NLS_ISO8859_2=y | 162 | CONFIG_NLS_ISO8859_2=y |
| 188 | CONFIG_NLS_UTF8=y | 163 | CONFIG_NLS_UTF8=y |
| 189 | CONFIG_MAGIC_SYSRQ=y | 164 | CONFIG_DEBUG_INFO=y |
| 190 | CONFIG_DEBUG_FS=y | 165 | CONFIG_DEBUG_FS=y |
| 166 | CONFIG_MAGIC_SYSRQ=y | ||
| 191 | CONFIG_DEBUG_KERNEL=y | 167 | CONFIG_DEBUG_KERNEL=y |
| 192 | # CONFIG_SCHED_DEBUG is not set | 168 | # CONFIG_SCHED_DEBUG is not set |
| 193 | # CONFIG_DEBUG_PREEMPT is not set | 169 | # CONFIG_DEBUG_PREEMPT is not set |
| 194 | CONFIG_DEBUG_INFO=y | ||
| 195 | # CONFIG_FTRACE is not set | 170 | # CONFIG_FTRACE is not set |
| 196 | CONFIG_DEBUG_USER=y | 171 | CONFIG_DEBUG_USER=y |
| 197 | CONFIG_DEBUG_LL=y | 172 | CONFIG_DEBUG_LL=y |
diff --git a/arch/arm/configs/lager_defconfig b/arch/arm/configs/lager_defconfig new file mode 100644 index 000000000000..e777ef22b801 --- /dev/null +++ b/arch/arm/configs/lager_defconfig | |||
| @@ -0,0 +1,120 @@ | |||
| 1 | CONFIG_SYSVIPC=y | ||
| 2 | CONFIG_NO_HZ=y | ||
| 3 | CONFIG_IKCONFIG=y | ||
| 4 | CONFIG_IKCONFIG_PROC=y | ||
| 5 | CONFIG_LOG_BUF_SHIFT=16 | ||
| 6 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 7 | CONFIG_SYSCTL_SYSCALL=y | ||
| 8 | CONFIG_EMBEDDED=y | ||
| 9 | CONFIG_PERF_EVENTS=y | ||
| 10 | CONFIG_SLAB=y | ||
| 11 | # CONFIG_LBDAF is not set | ||
| 12 | # CONFIG_BLK_DEV_BSG is not set | ||
| 13 | # CONFIG_IOSCHED_DEADLINE is not set | ||
| 14 | # CONFIG_IOSCHED_CFQ is not set | ||
| 15 | CONFIG_ARCH_SHMOBILE=y | ||
| 16 | CONFIG_ARCH_R8A7790=y | ||
| 17 | CONFIG_MACH_LAGER=y | ||
| 18 | # CONFIG_SH_TIMER_TMU is not set | ||
| 19 | # CONFIG_EM_TIMER_STI is not set | ||
| 20 | CONFIG_ARM_ERRATA_430973=y | ||
| 21 | CONFIG_ARM_ERRATA_458693=y | ||
| 22 | CONFIG_ARM_ERRATA_460075=y | ||
| 23 | CONFIG_ARM_ERRATA_743622=y | ||
| 24 | CONFIG_ARM_ERRATA_754322=y | ||
| 25 | CONFIG_HAVE_ARM_ARCH_TIMER=y | ||
| 26 | CONFIG_AEABI=y | ||
| 27 | # CONFIG_OABI_COMPAT is not set | ||
| 28 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
| 29 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
| 30 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
| 31 | CONFIG_ARM_APPENDED_DTB=y | ||
| 32 | CONFIG_KEXEC=y | ||
| 33 | CONFIG_AUTO_ZRELADDR=y | ||
| 34 | CONFIG_VFP=y | ||
| 35 | CONFIG_NEON=y | ||
| 36 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 37 | CONFIG_PM_RUNTIME=y | ||
| 38 | CONFIG_NET=y | ||
| 39 | CONFIG_PACKET=y | ||
| 40 | CONFIG_UNIX=y | ||
| 41 | CONFIG_INET=y | ||
| 42 | CONFIG_IP_PNP=y | ||
| 43 | CONFIG_IP_PNP_DHCP=y | ||
| 44 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
| 45 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
| 46 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
| 47 | # CONFIG_INET_LRO is not set | ||
| 48 | # CONFIG_INET_DIAG is not set | ||
| 49 | # CONFIG_IPV6 is not set | ||
| 50 | # CONFIG_WIRELESS is not set | ||
| 51 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 52 | CONFIG_NETDEVICES=y | ||
| 53 | # CONFIG_NET_CORE is not set | ||
| 54 | # CONFIG_NET_VENDOR_ARC is not set | ||
| 55 | # CONFIG_NET_CADENCE is not set | ||
| 56 | # CONFIG_NET_VENDOR_BROADCOM is not set | ||
| 57 | # CONFIG_NET_VENDOR_CIRRUS is not set | ||
| 58 | # CONFIG_NET_VENDOR_FARADAY is not set | ||
| 59 | # CONFIG_NET_VENDOR_INTEL is not set | ||
| 60 | # CONFIG_NET_VENDOR_MARVELL is not set | ||
| 61 | # CONFIG_NET_VENDOR_MICREL is not set | ||
| 62 | # CONFIG_NET_VENDOR_NATSEMI is not set | ||
| 63 | CONFIG_SH_ETH=y | ||
| 64 | # CONFIG_NET_VENDOR_SEEQ is not set | ||
| 65 | # CONFIG_NET_VENDOR_SMSC is not set | ||
| 66 | # CONFIG_NET_VENDOR_STMICRO is not set | ||
| 67 | # CONFIG_NET_VENDOR_VIA is not set | ||
| 68 | # CONFIG_NET_VENDOR_WIZNET is not set | ||
| 69 | # CONFIG_WLAN is not set | ||
| 70 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
| 71 | CONFIG_INPUT_EVDEV=y | ||
| 72 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 73 | CONFIG_KEYBOARD_GPIO=y | ||
| 74 | # CONFIG_INPUT_MOUSE is not set | ||
| 75 | # CONFIG_SERIO is not set | ||
| 76 | # CONFIG_LEGACY_PTYS is not set | ||
| 77 | CONFIG_SERIAL_SH_SCI=y | ||
| 78 | CONFIG_SERIAL_SH_SCI_NR_UARTS=10 | ||
| 79 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
| 80 | # CONFIG_HW_RANDOM is not set | ||
| 81 | CONFIG_I2C=y | ||
| 82 | CONFIG_I2C_GPIO=y | ||
| 83 | CONFIG_I2C_SH_MOBILE=y | ||
| 84 | CONFIG_GPIO_SH_PFC=y | ||
| 85 | CONFIG_GPIOLIB=y | ||
| 86 | CONFIG_GPIO_RCAR=y | ||
| 87 | # CONFIG_HWMON is not set | ||
| 88 | CONFIG_THERMAL=y | ||
| 89 | CONFIG_RCAR_THERMAL=y | ||
| 90 | CONFIG_REGULATOR=y | ||
| 91 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | ||
| 92 | # CONFIG_USB_SUPPORT is not set | ||
| 93 | CONFIG_MMC=y | ||
| 94 | CONFIG_MMC_SDHI=y | ||
| 95 | CONFIG_MMC_SH_MMCIF=y | ||
| 96 | CONFIG_NEW_LEDS=y | ||
| 97 | CONFIG_LEDS_CLASS=y | ||
| 98 | CONFIG_LEDS_GPIO=y | ||
| 99 | CONFIG_RTC_CLASS=y | ||
| 100 | CONFIG_DMADEVICES=y | ||
| 101 | CONFIG_SH_DMAE=y | ||
| 102 | # CONFIG_IOMMU_SUPPORT is not set | ||
| 103 | # CONFIG_DNOTIFY is not set | ||
| 104 | CONFIG_MSDOS_FS=y | ||
| 105 | CONFIG_VFAT_FS=y | ||
| 106 | CONFIG_TMPFS=y | ||
| 107 | CONFIG_CONFIGFS_FS=y | ||
| 108 | # CONFIG_MISC_FILESYSTEMS is not set | ||
| 109 | CONFIG_NFS_FS=y | ||
| 110 | CONFIG_NFS_V3_ACL=y | ||
| 111 | CONFIG_NFS_V4=y | ||
| 112 | CONFIG_NFS_V4_1=y | ||
| 113 | CONFIG_ROOT_NFS=y | ||
| 114 | CONFIG_NLS_CODEPAGE_437=y | ||
| 115 | CONFIG_NLS_ISO8859_1=y | ||
| 116 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | ||
| 117 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
| 118 | # CONFIG_ARM_UNWIND is not set | ||
| 119 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 120 | # CONFIG_CRYPTO_HW is not set | ||
diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig index c50e52be4463..000e9205b2b9 100644 --- a/arch/arm/configs/marzen_defconfig +++ b/arch/arm/configs/marzen_defconfig | |||
| @@ -29,6 +29,7 @@ CONFIG_AEABI=y | |||
| 29 | CONFIG_HIGHMEM=y | 29 | CONFIG_HIGHMEM=y |
| 30 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 30 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 31 | CONFIG_ZBOOT_ROM_BSS=0x0 | 31 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 32 | CONFIG_ARM_APPENDED_DTB=y | ||
| 32 | CONFIG_CMDLINE="console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on" | 33 | CONFIG_CMDLINE="console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on" |
| 33 | CONFIG_CMDLINE_FORCE=y | 34 | CONFIG_CMDLINE_FORCE=y |
| 34 | CONFIG_KEXEC=y | 35 | CONFIG_KEXEC=y |
diff --git a/arch/arm/configs/mvebu_defconfig b/arch/arm/configs/mvebu_defconfig index 731814e2c189..594d706b641f 100644 --- a/arch/arm/configs/mvebu_defconfig +++ b/arch/arm/configs/mvebu_defconfig | |||
| @@ -39,6 +39,8 @@ CONFIG_MVNETA=y | |||
| 39 | CONFIG_MARVELL_PHY=y | 39 | CONFIG_MARVELL_PHY=y |
| 40 | CONFIG_MWIFIEX=y | 40 | CONFIG_MWIFIEX=y |
| 41 | CONFIG_MWIFIEX_SDIO=y | 41 | CONFIG_MWIFIEX_SDIO=y |
| 42 | CONFIG_INPUT_EVDEV=y | ||
| 43 | CONFIG_KEYBOARD_GPIO=y | ||
| 42 | CONFIG_SERIAL_8250=y | 44 | CONFIG_SERIAL_8250=y |
| 43 | CONFIG_SERIAL_8250_CONSOLE=y | 45 | CONFIG_SERIAL_8250_CONSOLE=y |
| 44 | CONFIG_I2C=y | 46 | CONFIG_I2C=y |
diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig index 92d0a149aeb5..ea042e80e54d 100644 --- a/arch/arm/configs/tegra_defconfig +++ b/arch/arm/configs/tegra_defconfig | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | CONFIG_SYSVIPC=y | ||
| 1 | CONFIG_NO_HZ=y | 2 | CONFIG_NO_HZ=y |
| 2 | CONFIG_HIGH_RES_TIMERS=y | 3 | CONFIG_HIGH_RES_TIMERS=y |
| 3 | CONFIG_IKCONFIG=y | 4 | CONFIG_IKCONFIG=y |
| @@ -26,8 +27,11 @@ CONFIG_ARCH_TEGRA=y | |||
| 26 | CONFIG_ARCH_TEGRA_2x_SOC=y | 27 | CONFIG_ARCH_TEGRA_2x_SOC=y |
| 27 | CONFIG_ARCH_TEGRA_3x_SOC=y | 28 | CONFIG_ARCH_TEGRA_3x_SOC=y |
| 28 | CONFIG_ARCH_TEGRA_114_SOC=y | 29 | CONFIG_ARCH_TEGRA_114_SOC=y |
| 29 | CONFIG_TEGRA_PCI=y | ||
| 30 | CONFIG_TEGRA_EMC_SCALING_ENABLE=y | 30 | CONFIG_TEGRA_EMC_SCALING_ENABLE=y |
| 31 | CONFIG_PCI=y | ||
| 32 | CONFIG_PCI_MSI=y | ||
| 33 | CONFIG_PCI_TEGRA=y | ||
| 34 | CONFIG_PCIEPORTBUS=y | ||
| 31 | CONFIG_SMP=y | 35 | CONFIG_SMP=y |
| 32 | CONFIG_PREEMPT=y | 36 | CONFIG_PREEMPT=y |
| 33 | CONFIG_AEABI=y | 37 | CONFIG_AEABI=y |
| @@ -92,6 +96,7 @@ CONFIG_ISL29003=y | |||
| 92 | CONFIG_SCSI=y | 96 | CONFIG_SCSI=y |
| 93 | CONFIG_BLK_DEV_SD=y | 97 | CONFIG_BLK_DEV_SD=y |
| 94 | CONFIG_BLK_DEV_SR=y | 98 | CONFIG_BLK_DEV_SR=y |
| 99 | CONFIG_SCSI_MULTI_LUN=y | ||
| 95 | # CONFIG_SCSI_LOWLEVEL is not set | 100 | # CONFIG_SCSI_LOWLEVEL is not set |
| 96 | CONFIG_NETDEVICES=y | 101 | CONFIG_NETDEVICES=y |
| 97 | CONFIG_DUMMY=y | 102 | CONFIG_DUMMY=y |
| @@ -106,6 +111,7 @@ CONFIG_RT2800USB=m | |||
| 106 | CONFIG_INPUT_EVDEV=y | 111 | CONFIG_INPUT_EVDEV=y |
| 107 | CONFIG_KEYBOARD_GPIO=y | 112 | CONFIG_KEYBOARD_GPIO=y |
| 108 | CONFIG_KEYBOARD_TEGRA=y | 113 | CONFIG_KEYBOARD_TEGRA=y |
| 114 | CONFIG_MOUSE_PS2_ELANTECH=y | ||
| 109 | CONFIG_INPUT_MISC=y | 115 | CONFIG_INPUT_MISC=y |
| 110 | CONFIG_INPUT_MPU3050=y | 116 | CONFIG_INPUT_MPU3050=y |
| 111 | # CONFIG_LEGACY_PTYS is not set | 117 | # CONFIG_LEGACY_PTYS is not set |
| @@ -178,6 +184,7 @@ CONFIG_SND_SOC_TEGRA_WM8903=y | |||
| 178 | CONFIG_SND_SOC_TEGRA_TRIMSLICE=y | 184 | CONFIG_SND_SOC_TEGRA_TRIMSLICE=y |
| 179 | CONFIG_SND_SOC_TEGRA_ALC5632=y | 185 | CONFIG_SND_SOC_TEGRA_ALC5632=y |
| 180 | CONFIG_USB=y | 186 | CONFIG_USB=y |
| 187 | CONFIG_USB_XHCI_HCD=y | ||
| 181 | CONFIG_USB_EHCI_HCD=y | 188 | CONFIG_USB_EHCI_HCD=y |
| 182 | CONFIG_USB_EHCI_TEGRA=y | 189 | CONFIG_USB_EHCI_TEGRA=y |
| 183 | CONFIG_USB_ACM=y | 190 | CONFIG_USB_ACM=y |
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig index f11289519c39..69d67f714a2f 100644 --- a/arch/arm/mach-bcm/Kconfig +++ b/arch/arm/mach-bcm/Kconfig | |||
| @@ -12,6 +12,7 @@ config ARCH_BCM | |||
| 12 | select GPIO_BCM | 12 | select GPIO_BCM |
| 13 | select SPARSE_IRQ | 13 | select SPARSE_IRQ |
| 14 | select TICK_ONESHOT | 14 | select TICK_ONESHOT |
| 15 | select CACHE_L2X0 | ||
| 15 | help | 16 | help |
| 16 | This enables support for system based on Broadcom SoCs. | 17 | This enables support for system based on Broadcom SoCs. |
| 17 | It currently supports the 'BCM281XX' family, which includes | 18 | It currently supports the 'BCM281XX' family, which includes |
diff --git a/arch/arm/mach-bcm/Makefile b/arch/arm/mach-bcm/Makefile index 6adb6aecf48f..e3d03033a7e2 100644 --- a/arch/arm/mach-bcm/Makefile +++ b/arch/arm/mach-bcm/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | # | 1 | # |
| 2 | # Copyright (C) 2012 Broadcom Corporation | 2 | # Copyright (C) 2012-2013 Broadcom Corporation |
| 3 | # | 3 | # |
| 4 | # This program is free software; you can redistribute it and/or | 4 | # This program is free software; you can redistribute it and/or |
| 5 | # modify it under the terms of the GNU General Public License as | 5 | # modify it under the terms of the GNU General Public License as |
| @@ -10,6 +10,6 @@ | |||
| 10 | # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | # GNU General Public License for more details. | 11 | # GNU General Public License for more details. |
| 12 | 12 | ||
| 13 | obj-$(CONFIG_ARCH_BCM) := board_bcm.o bcm_kona_smc.o bcm_kona_smc_asm.o | 13 | obj-$(CONFIG_ARCH_BCM) := board_bcm281xx.o bcm_kona_smc.o bcm_kona_smc_asm.o kona.o |
| 14 | plus_sec := $(call as-instr,.arch_extension sec,+sec) | 14 | plus_sec := $(call as-instr,.arch_extension sec,+sec) |
| 15 | AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec) | 15 | AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec) |
diff --git a/arch/arm/mach-bcm/bcm_kona_smc.c b/arch/arm/mach-bcm/bcm_kona_smc.c index 56d9d19b2470..5e31e918f325 100644 --- a/arch/arm/mach-bcm/bcm_kona_smc.c +++ b/arch/arm/mach-bcm/bcm_kona_smc.c | |||
| @@ -36,18 +36,20 @@ struct bcm_kona_smc_data { | |||
| 36 | }; | 36 | }; |
| 37 | 37 | ||
| 38 | static const struct of_device_id bcm_kona_smc_ids[] __initconst = { | 38 | static const struct of_device_id bcm_kona_smc_ids[] __initconst = { |
| 39 | {.compatible = "bcm,kona-smc"}, | 39 | {.compatible = "brcm,kona-smc"}, |
| 40 | {.compatible = "bcm,kona-smc"}, /* deprecated name */ | ||
| 40 | {}, | 41 | {}, |
| 41 | }; | 42 | }; |
| 42 | 43 | ||
| 43 | /* Map in the bounce area */ | 44 | /* Map in the bounce area */ |
| 44 | void __init bcm_kona_smc_init(void) | 45 | int __init bcm_kona_smc_init(void) |
| 45 | { | 46 | { |
| 46 | struct device_node *node; | 47 | struct device_node *node; |
| 47 | 48 | ||
| 48 | /* Read buffer addr and size from the device tree node */ | 49 | /* Read buffer addr and size from the device tree node */ |
| 49 | node = of_find_matching_node(NULL, bcm_kona_smc_ids); | 50 | node = of_find_matching_node(NULL, bcm_kona_smc_ids); |
| 50 | BUG_ON(!node); | 51 | if (!node) |
| 52 | return -ENODEV; | ||
| 51 | 53 | ||
| 52 | /* Don't care about size or flags of the DT node */ | 54 | /* Don't care about size or flags of the DT node */ |
| 53 | bridge_data.buffer_addr = | 55 | bridge_data.buffer_addr = |
| @@ -59,7 +61,9 @@ void __init bcm_kona_smc_init(void) | |||
| 59 | 61 | ||
| 60 | bridge_data.initialized = 1; | 62 | bridge_data.initialized = 1; |
| 61 | 63 | ||
| 62 | pr_info("Secure API initialized!\n"); | 64 | pr_info("Kona Secure API initialized\n"); |
| 65 | |||
| 66 | return 0; | ||
| 63 | } | 67 | } |
| 64 | 68 | ||
| 65 | /* __bcm_kona_smc() should only run on CPU 0, with pre-emption disabled */ | 69 | /* __bcm_kona_smc() should only run on CPU 0, with pre-emption disabled */ |
diff --git a/arch/arm/mach-bcm/bcm_kona_smc.h b/arch/arm/mach-bcm/bcm_kona_smc.h index 3bedbed1c21b..d098a7e76744 100644 --- a/arch/arm/mach-bcm/bcm_kona_smc.h +++ b/arch/arm/mach-bcm/bcm_kona_smc.h | |||
| @@ -64,7 +64,7 @@ | |||
| 64 | #define SSAPI_BRCM_START_VC_CORE 0x0E000008 | 64 | #define SSAPI_BRCM_START_VC_CORE 0x0E000008 |
| 65 | 65 | ||
| 66 | #ifndef __ASSEMBLY__ | 66 | #ifndef __ASSEMBLY__ |
| 67 | extern void bcm_kona_smc_init(void); | 67 | extern int __init bcm_kona_smc_init(void); |
| 68 | 68 | ||
| 69 | extern unsigned bcm_kona_smc(unsigned service_id, | 69 | extern unsigned bcm_kona_smc(unsigned service_id, |
| 70 | unsigned arg0, | 70 | unsigned arg0, |
diff --git a/arch/arm/mach-bcm/board_bcm.c b/arch/arm/mach-bcm/board_bcm281xx.c index 28599326d4ad..8d9f931164bb 100644 --- a/arch/arm/mach-bcm/board_bcm.c +++ b/arch/arm/mach-bcm/board_bcm281xx.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (C) 2012 Broadcom Corporation | 2 | * Copyright (C) 2012-2013 Broadcom Corporation |
| 3 | * | 3 | * |
| 4 | * This program is free software; you can redistribute it and/or | 4 | * This program is free software; you can redistribute it and/or |
| 5 | * modify it under the terms of the GNU General Public License as | 5 | * modify it under the terms of the GNU General Public License as |
| @@ -21,23 +21,39 @@ | |||
| 21 | #include <asm/mach/time.h> | 21 | #include <asm/mach/time.h> |
| 22 | #include <asm/hardware/cache-l2x0.h> | 22 | #include <asm/hardware/cache-l2x0.h> |
| 23 | 23 | ||
| 24 | |||
| 25 | #include "bcm_kona_smc.h" | 24 | #include "bcm_kona_smc.h" |
| 25 | #include "kona.h" | ||
| 26 | 26 | ||
| 27 | static int __init kona_l2_cache_init(void) | 27 | static int __init kona_l2_cache_init(void) |
| 28 | { | 28 | { |
| 29 | if (!IS_ENABLED(CONFIG_CACHE_L2X0)) | 29 | if (!IS_ENABLED(CONFIG_CACHE_L2X0)) |
| 30 | return 0; | 30 | return 0; |
| 31 | 31 | ||
| 32 | if (bcm_kona_smc_init() < 0) { | ||
| 33 | pr_info("Kona secure API not available. Skipping L2 init\n"); | ||
| 34 | return 0; | ||
| 35 | } | ||
| 36 | |||
| 32 | bcm_kona_smc(SSAPI_ENABLE_L2_CACHE, 0, 0, 0, 0); | 37 | bcm_kona_smc(SSAPI_ENABLE_L2_CACHE, 0, 0, 0, 0); |
| 33 | 38 | ||
| 34 | /* | 39 | /* |
| 35 | * The aux_val and aux_mask have no effect since L2 cache is already | 40 | * The aux_val and aux_mask have no effect since L2 cache is already |
| 36 | * enabled. Pass 0s for aux_val and 1s for aux_mask for default value. | 41 | * enabled. Pass 0s for aux_val and 1s for aux_mask for default value. |
| 37 | */ | 42 | */ |
| 38 | l2x0_of_init(0, ~0); | 43 | return l2x0_of_init(0, ~0); |
| 44 | } | ||
| 39 | 45 | ||
| 40 | return 0; | 46 | static void bcm_board_setup_restart(void) |
| 47 | { | ||
| 48 | struct device_node *np; | ||
| 49 | |||
| 50 | np = of_find_compatible_node(NULL, NULL, "brcm,bcm11351"); | ||
| 51 | if (np) { | ||
| 52 | if (of_device_is_available(np)) | ||
| 53 | bcm_kona_setup_restart(); | ||
| 54 | of_node_put(np); | ||
| 55 | } | ||
| 56 | /* Restart setup for other boards goes here */ | ||
| 41 | } | 57 | } |
| 42 | 58 | ||
| 43 | static void __init board_init(void) | 59 | static void __init board_init(void) |
| @@ -45,15 +61,15 @@ static void __init board_init(void) | |||
| 45 | of_platform_populate(NULL, of_default_bus_match_table, NULL, | 61 | of_platform_populate(NULL, of_default_bus_match_table, NULL, |
| 46 | &platform_bus); | 62 | &platform_bus); |
| 47 | 63 | ||
| 48 | bcm_kona_smc_init(); | 64 | bcm_board_setup_restart(); |
| 49 | |||
| 50 | kona_l2_cache_init(); | 65 | kona_l2_cache_init(); |
| 51 | } | 66 | } |
| 52 | 67 | ||
| 53 | static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, }; | 68 | static const char * const bcm11351_dt_compat[] = { "brcm,bcm11351", NULL, }; |
| 54 | 69 | ||
| 55 | DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor") | 70 | DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor") |
| 56 | .init_time = clocksource_of_init, | 71 | .init_time = clocksource_of_init, |
| 57 | .init_machine = board_init, | 72 | .init_machine = board_init, |
| 73 | .restart = bcm_kona_restart, | ||
| 58 | .dt_compat = bcm11351_dt_compat, | 74 | .dt_compat = bcm11351_dt_compat, |
| 59 | MACHINE_END | 75 | MACHINE_END |
diff --git a/arch/arm/mach-bcm/kona.c b/arch/arm/mach-bcm/kona.c new file mode 100644 index 000000000000..6939d9017f63 --- /dev/null +++ b/arch/arm/mach-bcm/kona.c | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2013 Broadcom Corporation | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License as | ||
| 6 | * published by the Free Software Foundation version 2. | ||
| 7 | * | ||
| 8 | * This program is distributed "as is" WITHOUT ANY WARRANTY of any | ||
| 9 | * kind, whether express or implied; without even the implied warranty | ||
| 10 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/of_address.h> | ||
| 15 | #include <asm/io.h> | ||
| 16 | |||
| 17 | #include "kona.h" | ||
| 18 | |||
| 19 | static void __iomem *watchdog_base; | ||
| 20 | |||
| 21 | void bcm_kona_setup_restart(void) | ||
| 22 | { | ||
| 23 | struct device_node *np_wdog; | ||
| 24 | |||
| 25 | /* | ||
| 26 | * The assumption is that whoever calls bcm_kona_setup_restart() | ||
| 27 | * also needs a Kona Watchdog Timer entry in Device Tree, i.e. we | ||
| 28 | * report an error if the DT entry is missing. | ||
| 29 | */ | ||
| 30 | np_wdog = of_find_compatible_node(NULL, NULL, "brcm,kona-wdt"); | ||
| 31 | if (!np_wdog) { | ||
| 32 | pr_err("brcm,kona-wdt not found in DT, reboot disabled\n"); | ||
| 33 | return; | ||
| 34 | } | ||
| 35 | watchdog_base = of_iomap(np_wdog, 0); | ||
| 36 | WARN(!watchdog_base, "failed to map watchdog base"); | ||
| 37 | of_node_put(np_wdog); | ||
| 38 | } | ||
| 39 | |||
| 40 | #define SECWDOG_OFFSET 0x00000000 | ||
| 41 | #define SECWDOG_RESERVED_MASK 0xE2000000 | ||
| 42 | #define SECWDOG_WD_LOAD_FLAG_MASK 0x10000000 | ||
| 43 | #define SECWDOG_EN_MASK 0x08000000 | ||
| 44 | #define SECWDOG_SRSTEN_MASK 0x04000000 | ||
| 45 | #define SECWDOG_CLKS_SHIFT 20 | ||
| 46 | #define SECWDOG_LOCK_SHIFT 0 | ||
| 47 | |||
| 48 | void bcm_kona_restart(enum reboot_mode mode, const char *cmd) | ||
| 49 | { | ||
| 50 | uint32_t val; | ||
| 51 | |||
| 52 | if (!watchdog_base) | ||
| 53 | panic("Watchdog not mapped. Reboot failed.\n"); | ||
| 54 | |||
| 55 | /* Enable watchdog2 with very short timeout. */ | ||
| 56 | val = readl(watchdog_base + SECWDOG_OFFSET); | ||
| 57 | val &= SECWDOG_RESERVED_MASK | SECWDOG_WD_LOAD_FLAG_MASK; | ||
| 58 | val |= SECWDOG_EN_MASK | SECWDOG_SRSTEN_MASK | | ||
| 59 | (0x8 << SECWDOG_CLKS_SHIFT) | | ||
| 60 | (0x8 << SECWDOG_LOCK_SHIFT); | ||
| 61 | writel(val, watchdog_base + SECWDOG_OFFSET); | ||
| 62 | |||
| 63 | while (1) | ||
| 64 | ; | ||
| 65 | } | ||
diff --git a/arch/arm/mach-bcm/kona.h b/arch/arm/mach-bcm/kona.h new file mode 100644 index 000000000000..291eca3e06ff --- /dev/null +++ b/arch/arm/mach-bcm/kona.h | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2013 Broadcom Corporation | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License as | ||
| 6 | * published by the Free Software Foundation version 2. | ||
| 7 | * | ||
| 8 | * This program is distributed "as is" WITHOUT ANY WARRANTY of any | ||
| 9 | * kind, whether express or implied; without even the implied warranty | ||
| 10 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/reboot.h> | ||
| 15 | |||
| 16 | void bcm_kona_setup_restart(void); | ||
| 17 | void bcm_kona_restart(enum reboot_mode mode, const char *cmd); | ||
diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig index dff7b2fd4e20..0bc7cdf8cf46 100644 --- a/arch/arm/mach-dove/Kconfig +++ b/arch/arm/mach-dove/Kconfig | |||
| @@ -23,6 +23,8 @@ config MACH_CM_A510 | |||
| 23 | config MACH_DOVE_DT | 23 | config MACH_DOVE_DT |
| 24 | bool "Marvell Dove Flattened Device Tree" | 24 | bool "Marvell Dove Flattened Device Tree" |
| 25 | select DOVE_CLK | 25 | select DOVE_CLK |
| 26 | select ORION_IRQCHIP | ||
| 27 | select ORION_TIMER | ||
| 26 | select REGULATOR | 28 | select REGULATOR |
| 27 | select REGULATOR_FIXED_VOLTAGE | 29 | select REGULATOR_FIXED_VOLTAGE |
| 28 | select USE_OF | 30 | select USE_OF |
diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile index 4d9d2ffc4535..cbc5c0618788 100644 --- a/arch/arm/mach-dove/Makefile +++ b/arch/arm/mach-dove/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | obj-y += common.o irq.o | 1 | obj-y += common.o |
| 2 | obj-$(CONFIG_DOVE_LEGACY) += mpp.o | 2 | obj-$(CONFIG_DOVE_LEGACY) += irq.o mpp.o |
| 3 | obj-$(CONFIG_PCI) += pcie.o | 3 | obj-$(CONFIG_PCI) += pcie.o |
| 4 | obj-$(CONFIG_MACH_DOVE_DB) += dove-db-setup.o | 4 | obj-$(CONFIG_MACH_DOVE_DB) += dove-db-setup.o |
| 5 | obj-$(CONFIG_MACH_DOVE_DT) += board-dt.o | 5 | obj-$(CONFIG_MACH_DOVE_DT) += board-dt.o |
diff --git a/arch/arm/mach-dove/board-dt.c b/arch/arm/mach-dove/board-dt.c index f3755ac81148..49f72a848423 100644 --- a/arch/arm/mach-dove/board-dt.c +++ b/arch/arm/mach-dove/board-dt.c | |||
| @@ -10,11 +10,14 @@ | |||
| 10 | 10 | ||
| 11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
| 12 | #include <linux/clk-provider.h> | 12 | #include <linux/clk-provider.h> |
| 13 | #include <linux/clocksource.h> | ||
| 14 | #include <linux/irqchip.h> | ||
| 13 | #include <linux/of.h> | 15 | #include <linux/of.h> |
| 14 | #include <linux/of_platform.h> | 16 | #include <linux/of_platform.h> |
| 15 | #include <linux/platform_data/usb-ehci-orion.h> | 17 | #include <linux/platform_data/usb-ehci-orion.h> |
| 16 | #include <asm/hardware/cache-tauros2.h> | 18 | #include <asm/hardware/cache-tauros2.h> |
| 17 | #include <asm/mach/arch.h> | 19 | #include <asm/mach/arch.h> |
| 20 | #include <mach/dove.h> | ||
| 18 | #include <mach/pm.h> | 21 | #include <mach/pm.h> |
| 19 | #include <plat/common.h> | 22 | #include <plat/common.h> |
| 20 | #include <plat/irq.h> | 23 | #include <plat/irq.h> |
| @@ -33,10 +36,6 @@ static void __init dove_legacy_clk_init(void) | |||
| 33 | clkspec.np = np; | 36 | clkspec.np = np; |
| 34 | clkspec.args_count = 1; | 37 | clkspec.args_count = 1; |
| 35 | 38 | ||
| 36 | clkspec.args[0] = CLOCK_GATING_BIT_GBE; | ||
| 37 | orion_clkdev_add(NULL, "mv643xx_eth_port.0", | ||
| 38 | of_clk_get_from_provider(&clkspec)); | ||
| 39 | |||
| 40 | clkspec.args[0] = CLOCK_GATING_BIT_PCIE0; | 39 | clkspec.args[0] = CLOCK_GATING_BIT_PCIE0; |
| 41 | orion_clkdev_add("0", "pcie", | 40 | orion_clkdev_add("0", "pcie", |
| 42 | of_clk_get_from_provider(&clkspec)); | 41 | of_clk_get_from_provider(&clkspec)); |
| @@ -46,15 +45,18 @@ static void __init dove_legacy_clk_init(void) | |||
| 46 | of_clk_get_from_provider(&clkspec)); | 45 | of_clk_get_from_provider(&clkspec)); |
| 47 | } | 46 | } |
| 48 | 47 | ||
| 49 | static void __init dove_of_clk_init(void) | 48 | static void __init dove_dt_time_init(void) |
| 50 | { | 49 | { |
| 51 | of_clk_init(NULL); | 50 | of_clk_init(NULL); |
| 52 | dove_legacy_clk_init(); | 51 | clocksource_of_init(); |
| 53 | } | 52 | } |
| 54 | 53 | ||
| 55 | static struct mv643xx_eth_platform_data dove_dt_ge00_data = { | 54 | static void __init dove_dt_init_early(void) |
| 56 | .phy_addr = MV643XX_ETH_PHY_ADDR_DEFAULT, | 55 | { |
| 57 | }; | 56 | mvebu_mbus_init("marvell,dove-mbus", |
| 57 | BRIDGE_WINS_BASE, BRIDGE_WINS_SZ, | ||
| 58 | DOVE_MC_WINS_BASE, DOVE_MC_WINS_SZ); | ||
| 59 | } | ||
| 58 | 60 | ||
| 59 | static void __init dove_dt_init(void) | 61 | static void __init dove_dt_init(void) |
| 60 | { | 62 | { |
| @@ -65,11 +67,10 @@ static void __init dove_dt_init(void) | |||
| 65 | #endif | 67 | #endif |
| 66 | dove_setup_cpu_wins(); | 68 | dove_setup_cpu_wins(); |
| 67 | 69 | ||
| 68 | /* Setup root of clk tree */ | 70 | /* Setup clocks for legacy devices */ |
| 69 | dove_of_clk_init(); | 71 | dove_legacy_clk_init(); |
| 70 | 72 | ||
| 71 | /* Internal devices not ported to DT yet */ | 73 | /* Internal devices not ported to DT yet */ |
| 72 | dove_ge00_init(&dove_dt_ge00_data); | ||
| 73 | dove_pcie_init(1, 1); | 74 | dove_pcie_init(1, 1); |
| 74 | 75 | ||
| 75 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | 76 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
| @@ -82,9 +83,8 @@ static const char * const dove_dt_board_compat[] = { | |||
| 82 | 83 | ||
| 83 | DT_MACHINE_START(DOVE_DT, "Marvell Dove (Flattened Device Tree)") | 84 | DT_MACHINE_START(DOVE_DT, "Marvell Dove (Flattened Device Tree)") |
| 84 | .map_io = dove_map_io, | 85 | .map_io = dove_map_io, |
| 85 | .init_early = dove_init_early, | 86 | .init_early = dove_dt_init_early, |
| 86 | .init_irq = orion_dt_init_irq, | 87 | .init_time = dove_dt_time_init, |
| 87 | .init_time = dove_timer_init, | ||
| 88 | .init_machine = dove_dt_init, | 88 | .init_machine = dove_dt_init, |
| 89 | .restart = dove_restart, | 89 | .restart = dove_restart, |
| 90 | .dt_compat = dove_dt_board_compat, | 90 | .dt_compat = dove_dt_board_compat, |
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig index b634f9650a7b..fe8319ad3158 100644 --- a/arch/arm/mach-kirkwood/Kconfig +++ b/arch/arm/mach-kirkwood/Kconfig | |||
| @@ -2,67 +2,32 @@ if ARCH_KIRKWOOD | |||
| 2 | 2 | ||
| 3 | menu "Marvell Kirkwood Implementations" | 3 | menu "Marvell Kirkwood Implementations" |
| 4 | 4 | ||
| 5 | config KIRKWOOD_LEGACY | ||
| 6 | bool | ||
| 7 | |||
| 5 | config MACH_D2NET_V2 | 8 | config MACH_D2NET_V2 |
| 6 | bool "LaCie d2 Network v2 NAS Board" | 9 | bool "LaCie d2 Network v2 NAS Board" |
| 10 | select KIRKWOOD_LEGACY | ||
| 7 | help | 11 | help |
| 8 | Say 'Y' here if you want your kernel to support the | 12 | Say 'Y' here if you want your kernel to support the |
| 9 | LaCie d2 Network v2 NAS. | 13 | LaCie d2 Network v2 NAS. |
| 10 | 14 | ||
| 11 | config MACH_DOCKSTAR | ||
| 12 | bool "Seagate FreeAgent DockStar" | ||
| 13 | help | ||
| 14 | Say 'Y' here if you want your kernel to support the | ||
| 15 | Seagate FreeAgent DockStar. | ||
| 16 | |||
| 17 | config MACH_ESATA_SHEEVAPLUG | ||
| 18 | bool "Marvell eSATA SheevaPlug Reference Board" | ||
| 19 | help | ||
| 20 | Say 'Y' here if you want your kernel to support the | ||
| 21 | Marvell eSATA SheevaPlug Reference Board. | ||
| 22 | |||
| 23 | config MACH_GURUPLUG | ||
| 24 | bool "Marvell GuruPlug Reference Board" | ||
| 25 | help | ||
| 26 | Say 'Y' here if you want your kernel to support the | ||
| 27 | Marvell GuruPlug Reference Board. | ||
| 28 | |||
| 29 | config MACH_INETSPACE_V2 | ||
| 30 | bool "LaCie Internet Space v2 NAS Board" | ||
| 31 | help | ||
| 32 | Say 'Y' here if you want your kernel to support the | ||
| 33 | LaCie Internet Space v2 NAS. | ||
| 34 | |||
| 35 | config MACH_MV88F6281GTW_GE | ||
| 36 | bool "Marvell 88F6281 GTW GE Board" | ||
| 37 | help | ||
| 38 | Say 'Y' here if you want your kernel to support the | ||
| 39 | Marvell 88F6281 GTW GE Board. | ||
| 40 | |||
| 41 | config MACH_NET2BIG_V2 | 15 | config MACH_NET2BIG_V2 |
| 42 | bool "LaCie 2Big Network v2 NAS Board" | 16 | bool "LaCie 2Big Network v2 NAS Board" |
| 17 | select KIRKWOOD_LEGACY | ||
| 43 | help | 18 | help |
| 44 | Say 'Y' here if you want your kernel to support the | 19 | Say 'Y' here if you want your kernel to support the |
| 45 | LaCie 2Big Network v2 NAS. | 20 | LaCie 2Big Network v2 NAS. |
| 46 | 21 | ||
| 47 | config MACH_NET5BIG_V2 | 22 | config MACH_NET5BIG_V2 |
| 48 | bool "LaCie 5Big Network v2 NAS Board" | 23 | bool "LaCie 5Big Network v2 NAS Board" |
| 24 | select KIRKWOOD_LEGACY | ||
| 49 | help | 25 | help |
| 50 | Say 'Y' here if you want your kernel to support the | 26 | Say 'Y' here if you want your kernel to support the |
| 51 | LaCie 5Big Network v2 NAS. | 27 | LaCie 5Big Network v2 NAS. |
| 52 | 28 | ||
| 53 | config MACH_NETSPACE_MAX_V2 | ||
| 54 | bool "LaCie Network Space Max v2 NAS Board" | ||
| 55 | help | ||
| 56 | Say 'Y' here if you want your kernel to support the | ||
| 57 | LaCie Network Space Max v2 NAS. | ||
| 58 | |||
| 59 | config MACH_NETSPACE_V2 | ||
| 60 | bool "LaCie Network Space v2 NAS Board" | ||
| 61 | help | ||
| 62 | Say 'Y' here if you want your kernel to support the | ||
| 63 | LaCie Network Space v2 NAS. | ||
| 64 | |||
| 65 | config MACH_OPENRD | 29 | config MACH_OPENRD |
| 30 | select KIRKWOOD_LEGACY | ||
| 66 | bool | 31 | bool |
| 67 | 32 | ||
| 68 | config MACH_OPENRD_BASE | 33 | config MACH_OPENRD_BASE |
| @@ -88,30 +53,28 @@ config MACH_OPENRD_ULTIMATE | |||
| 88 | 53 | ||
| 89 | config MACH_RD88F6192_NAS | 54 | config MACH_RD88F6192_NAS |
| 90 | bool "Marvell RD-88F6192-NAS Reference Board" | 55 | bool "Marvell RD-88F6192-NAS Reference Board" |
| 56 | select KIRKWOOD_LEGACY | ||
| 91 | help | 57 | help |
| 92 | Say 'Y' here if you want your kernel to support the | 58 | Say 'Y' here if you want your kernel to support the |
| 93 | Marvell RD-88F6192-NAS Reference Board. | 59 | Marvell RD-88F6192-NAS Reference Board. |
| 94 | 60 | ||
| 95 | config MACH_RD88F6281 | 61 | config MACH_RD88F6281 |
| 96 | bool "Marvell RD-88F6281 Reference Board" | 62 | bool "Marvell RD-88F6281 Reference Board" |
| 63 | select KIRKWOOD_LEGACY | ||
| 97 | help | 64 | help |
| 98 | Say 'Y' here if you want your kernel to support the | 65 | Say 'Y' here if you want your kernel to support the |
| 99 | Marvell RD-88F6281 Reference Board. | 66 | Marvell RD-88F6281 Reference Board. |
| 100 | 67 | ||
| 101 | config MACH_SHEEVAPLUG | ||
| 102 | bool "Marvell SheevaPlug Reference Board" | ||
| 103 | help | ||
| 104 | Say 'Y' here if you want your kernel to support the | ||
| 105 | Marvell SheevaPlug Reference Board. | ||
| 106 | |||
| 107 | config MACH_T5325 | 68 | config MACH_T5325 |
| 108 | bool "HP t5325 Thin Client" | 69 | bool "HP t5325 Thin Client" |
| 70 | select KIRKWOOD_LEGACY | ||
| 109 | help | 71 | help |
| 110 | Say 'Y' here if you want your kernel to support the | 72 | Say 'Y' here if you want your kernel to support the |
| 111 | HP t5325 Thin Client. | 73 | HP t5325 Thin Client. |
| 112 | 74 | ||
| 113 | config MACH_TS219 | 75 | config MACH_TS219 |
| 114 | bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" | 76 | bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" |
| 77 | select KIRKWOOD_LEGACY | ||
| 115 | help | 78 | help |
| 116 | Say 'Y' here if you want your kernel to support the | 79 | Say 'Y' here if you want your kernel to support the |
| 117 | QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and | 80 | QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and |
| @@ -119,6 +82,7 @@ config MACH_TS219 | |||
| 119 | 82 | ||
| 120 | config MACH_TS41X | 83 | config MACH_TS41X |
| 121 | bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS" | 84 | bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS" |
| 85 | select KIRKWOOD_LEGACY | ||
| 122 | help | 86 | help |
| 123 | Say 'Y' here if you want your kernel to support the | 87 | Say 'Y' here if you want your kernel to support the |
| 124 | QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo | 88 | QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo |
| @@ -129,6 +93,9 @@ comment "Device tree entries" | |||
| 129 | config ARCH_KIRKWOOD_DT | 93 | config ARCH_KIRKWOOD_DT |
| 130 | bool "Marvell Kirkwood Flattened Device Tree" | 94 | bool "Marvell Kirkwood Flattened Device Tree" |
| 131 | select KIRKWOOD_CLK | 95 | select KIRKWOOD_CLK |
| 96 | select OF_IRQ | ||
| 97 | select ORION_IRQCHIP | ||
| 98 | select ORION_TIMER | ||
| 132 | select POWER_SUPPLY | 99 | select POWER_SUPPLY |
| 133 | select POWER_RESET | 100 | select POWER_RESET |
| 134 | select POWER_RESET_GPIO | 101 | select POWER_RESET_GPIO |
| @@ -139,184 +106,12 @@ config ARCH_KIRKWOOD_DT | |||
| 139 | Say 'Y' here if you want your kernel to support the | 106 | Say 'Y' here if you want your kernel to support the |
| 140 | Marvell Kirkwood using flattened device tree. | 107 | Marvell Kirkwood using flattened device tree. |
| 141 | 108 | ||
| 142 | config MACH_CLOUDBOX_DT | 109 | config MACH_MV88F6281GTW_GE_DT |
| 143 | bool "LaCie CloudBox NAS (Flattened Device Tree)" | 110 | bool "Marvell 88F6281 GTW GE Board (Flattened Device Tree)" |
| 144 | select ARCH_KIRKWOOD_DT | 111 | depends on ARCH_KIRKWOOD_DT |
| 145 | help | ||
| 146 | Say 'Y' here if you want your kernel to support the LaCie | ||
| 147 | CloudBox NAS, using Flattened Device Tree. | ||
| 148 | |||
| 149 | config MACH_DB88F628X_BP_DT | ||
| 150 | bool "Marvell DB-88F628x-BP Development Board (Flattened Device Tree)" | ||
| 151 | help | ||
| 152 | Say 'Y' here if you want your kernel to support the Marvell | ||
| 153 | DB-88F6281-BP and DB-88F6282-BP Development Board (Flattened | ||
| 154 | Device Tree). | ||
| 155 | |||
| 156 | config MACH_DLINK_KIRKWOOD_DT | ||
| 157 | bool "D-Link Kirkwood-based NAS (Flattened Device Tree)" | ||
| 158 | select ARCH_KIRKWOOD_DT | ||
| 159 | help | ||
| 160 | Say 'Y' here if you want your kernel to support the | ||
| 161 | Kirkwood-based D-Link NASes such as DNS-320 & DNS-325, | ||
| 162 | using Flattened Device Tree. | ||
| 163 | |||
| 164 | config MACH_DOCKSTAR_DT | ||
| 165 | bool "Seagate FreeAgent Dockstar (Flattened Device Tree)" | ||
| 166 | select ARCH_KIRKWOOD_DT | ||
| 167 | help | 112 | help |
| 168 | Say 'Y' here if you want your kernel to support the | 113 | Say 'Y' here if you want your kernel to support the |
| 169 | Seagate FreeAgent Dockstar (Flattened Device Tree). | 114 | Marvell 88F6281 GTW GE Board (Flattened Device Tree). |
| 170 | |||
| 171 | config MACH_DREAMPLUG_DT | ||
| 172 | bool "Marvell DreamPlug (Flattened Device Tree)" | ||
| 173 | select ARCH_KIRKWOOD_DT | ||
| 174 | help | ||
| 175 | Say 'Y' here if you want your kernel to support the | ||
| 176 | Marvell DreamPlug (Flattened Device Tree). | ||
| 177 | |||
| 178 | config MACH_GOFLEXNET_DT | ||
| 179 | bool "Seagate GoFlex Net (Flattened Device Tree)" | ||
| 180 | select ARCH_KIRKWOOD_DT | ||
| 181 | help | ||
| 182 | Say 'Y' here if you want your kernel to support the | ||
| 183 | Seagate GoFlex Net (Flattened Device Tree). | ||
| 184 | |||
| 185 | config MACH_GURUPLUG_DT | ||
| 186 | bool "Marvell GuruPlug Reference Board (Flattened Device Tree)" | ||
| 187 | select ARCH_KIRKWOOD_DT | ||
| 188 | help | ||
| 189 | Say 'Y' here if you want your kernel to support the | ||
| 190 | Marvell GuruPlug Reference Board (Flattened Device Tree). | ||
| 191 | |||
| 192 | config MACH_IB62X0_DT | ||
| 193 | bool "RaidSonic IB-NAS6210, IB-NAS6220 (Flattened Device Tree)" | ||
| 194 | select ARCH_KIRKWOOD_DT | ||
| 195 | help | ||
| 196 | Say 'Y' here if you want your kernel to support the | ||
| 197 | RaidSonic IB-NAS6210 & IB-NAS6220 devices, using | ||
| 198 | Flattened Device Tree. | ||
| 199 | |||
| 200 | config MACH_ICONNECT_DT | ||
| 201 | bool "Iomega Iconnect (Flattened Device Tree)" | ||
| 202 | select ARCH_KIRKWOOD_DT | ||
| 203 | help | ||
| 204 | Say 'Y' here to enable Iomega Iconnect support. | ||
| 205 | |||
| 206 | config MACH_INETSPACE_V2_DT | ||
| 207 | bool "LaCie Internet Space v2 NAS (Flattened Device Tree)" | ||
| 208 | select ARCH_KIRKWOOD_DT | ||
| 209 | help | ||
| 210 | Say 'Y' here if you want your kernel to support the LaCie | ||
| 211 | Internet Space v2 NAS, using Flattened Device Tree. | ||
| 212 | |||
| 213 | config MACH_IOMEGA_IX2_200_DT | ||
| 214 | bool "Iomega StorCenter ix2-200 (Flattened Device Tree)" | ||
| 215 | select ARCH_KIRKWOOD_DT | ||
| 216 | help | ||
| 217 | Say 'Y' here if you want your kernel to support the | ||
| 218 | Iomega StorCenter ix2-200 (Flattened Device Tree). | ||
| 219 | |||
| 220 | config MACH_KM_KIRKWOOD_DT | ||
| 221 | bool "Keymile Kirkwood Reference Design (Flattened Device Tree)" | ||
| 222 | select ARCH_KIRKWOOD_DT | ||
| 223 | help | ||
| 224 | Say 'Y' here if you want your kernel to support the | ||
| 225 | Keymile Kirkwood Reference Desgin, using Flattened Device Tree. | ||
| 226 | |||
| 227 | config MACH_LSXL_DT | ||
| 228 | bool "Buffalo Linkstation LS-XHL, LS-CHLv2 (Flattened Device Tree)" | ||
| 229 | select ARCH_KIRKWOOD_DT | ||
| 230 | select POWER_RESET_RESTART | ||
| 231 | help | ||
| 232 | Say 'Y' here if you want your kernel to support the | ||
| 233 | Buffalo Linkstation LS-XHL & LS-CHLv2 devices, using | ||
| 234 | Flattened Device Tree. | ||
| 235 | |||
| 236 | config MACH_MPLCEC4_DT | ||
| 237 | bool "MPL CEC4 (Flattened Device Tree)" | ||
| 238 | select ARCH_KIRKWOOD_DT | ||
| 239 | help | ||
| 240 | Say 'Y' here if you want your kernel to support the | ||
| 241 | MPL CEC4 (Flattened Device Tree). | ||
| 242 | |||
| 243 | config MACH_NETSPACE_LITE_V2_DT | ||
| 244 | bool "LaCie Network Space Lite v2 NAS (Flattened Device Tree)" | ||
| 245 | select ARCH_KIRKWOOD_DT | ||
| 246 | help | ||
| 247 | Say 'Y' here if you want your kernel to support the LaCie | ||
| 248 | Network Space Lite v2 NAS, using Flattened Device Tree. | ||
| 249 | |||
| 250 | config MACH_NETSPACE_MAX_V2_DT | ||
| 251 | bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)" | ||
| 252 | select ARCH_KIRKWOOD_DT | ||
| 253 | help | ||
| 254 | Say 'Y' here if you want your kernel to support the LaCie | ||
| 255 | Network Space Max v2 NAS, using Flattened Device Tree. | ||
| 256 | |||
| 257 | config MACH_NETSPACE_MINI_V2_DT | ||
| 258 | bool "LaCie Network Space Mini v2 NAS (Flattened Device Tree)" | ||
| 259 | select ARCH_KIRKWOOD_DT | ||
| 260 | help | ||
| 261 | Say 'Y' here if you want your kernel to support the LaCie | ||
| 262 | Network Space Mini v2 NAS using Flattened Device Tree. | ||
| 263 | |||
| 264 | This board is embedded in a product named CloudBox, which | ||
| 265 | provides automatic backup on a 100GB cloud storage. This | ||
| 266 | should not confused with a more recent LaCie NAS also named | ||
| 267 | CloudBox. For this last, the disk capacity is 1TB or above. | ||
| 268 | |||
| 269 | config MACH_NETSPACE_V2_DT | ||
| 270 | bool "LaCie Network Space v2 NAS (Flattened Device Tree)" | ||
| 271 | select ARCH_KIRKWOOD_DT | ||
| 272 | help | ||
| 273 | Say 'Y' here if you want your kernel to support the LaCie | ||
| 274 | Network Space v2 NAS, using Flattened Device Tree. | ||
| 275 | |||
| 276 | config MACH_OPENBLOCKS_A6_DT | ||
| 277 | bool "Plat'Home OpenBlocks A6 (Flattened Device Tree)" | ||
| 278 | select ARCH_KIRKWOOD_DT | ||
| 279 | help | ||
| 280 | Say 'Y' here if you want your kernel to support the | ||
| 281 | Plat'Home OpenBlocks A6 (Flattened Device Tree). | ||
| 282 | |||
| 283 | config MACH_READYNAS_DT | ||
| 284 | bool "NETGEAR ReadyNAS Duo v2 (Flattened Device Tree)" | ||
| 285 | select ARCH_KIRKWOOD_DT | ||
| 286 | select ARM_APPENDED_DTB | ||
| 287 | select ARM_ATAG_DTB_COMPAT | ||
| 288 | help | ||
| 289 | Say 'Y' here if you want your kernel to support the | ||
| 290 | NETGEAR ReadyNAS Duo v2 using Fattened Device Tree. | ||
| 291 | |||
| 292 | config MACH_SHEEVAPLUG_DT | ||
| 293 | bool "Marvell (eSATA) SheevaPlug (Flattened Device Tree)" | ||
| 294 | select ARCH_KIRKWOOD_DT | ||
| 295 | help | ||
| 296 | Say 'Y' here if you want your kernel to support the | ||
| 297 | Marvell (eSATA) SheevaPlug (Flattened Device Tree). | ||
| 298 | |||
| 299 | config MACH_TOPKICK_DT | ||
| 300 | bool "USI Topkick (Flattened Device Tree)" | ||
| 301 | select ARCH_KIRKWOOD_DT | ||
| 302 | help | ||
| 303 | Say 'Y' here if you want your kernel to support the | ||
| 304 | USI Topkick, using Flattened Device Tree | ||
| 305 | |||
| 306 | config MACH_TS219_DT | ||
| 307 | bool "Device Tree for QNAP TS-11X, TS-21X NAS" | ||
| 308 | select ARCH_KIRKWOOD_DT | ||
| 309 | select ARM_APPENDED_DTB | ||
| 310 | select ARM_ATAG_DTB_COMPAT | ||
| 311 | select POWER_RESET_QNAP | ||
| 312 | help | ||
| 313 | Say 'Y' here if you want your kernel to support the QNAP | ||
| 314 | TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and | ||
| 315 | TS-219P+ Turbo NAS devices using Fattened Device Tree. | ||
| 316 | There are two different Device Tree descriptions, depending | ||
| 317 | on if the device is based on an if the board uses the MV6281 | ||
| 318 | or MV6282. If you have the wrong one, the buttons will not | ||
| 319 | work. | ||
| 320 | 115 | ||
| 321 | endmenu | 116 | endmenu |
| 322 | 117 | ||
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile index ac4cd75dd499..d1f8e3d0793b 100644 --- a/arch/arm/mach-kirkwood/Makefile +++ b/arch/arm/mach-kirkwood/Makefile | |||
| @@ -1,44 +1,14 @@ | |||
| 1 | obj-y += common.o irq.o pcie.o mpp.o | 1 | obj-y += common.o pcie.o |
| 2 | 2 | obj-$(CONFIG_KIRKWOOD_LEGACY) += irq.o mpp.o | |
| 3 | obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o | 3 | obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o |
| 4 | obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o | ||
| 5 | obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o | ||
| 6 | obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o | ||
| 7 | obj-$(CONFIG_MACH_INETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o | ||
| 8 | obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o | ||
| 9 | obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o | 4 | obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o |
| 10 | obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o | 5 | obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o |
| 11 | obj-$(CONFIG_MACH_NETSPACE_MAX_V2) += netspace_v2-setup.o lacie_v2-common.o | ||
| 12 | obj-$(CONFIG_MACH_NETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o | ||
| 13 | obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o | 6 | obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o |
| 14 | obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o | 7 | obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o |
| 15 | obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o | 8 | obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o |
| 16 | obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o | ||
| 17 | obj-$(CONFIG_MACH_T5325) += t5325-setup.o | 9 | obj-$(CONFIG_MACH_T5325) += t5325-setup.o |
| 18 | obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o | 10 | obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o |
| 19 | obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o | 11 | obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o |
| 20 | 12 | ||
| 21 | obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o | 13 | obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o |
| 22 | obj-$(CONFIG_MACH_CLOUDBOX_DT) += board-ns2.o | 14 | obj-$(CONFIG_MACH_MV88F6281GTW_GE_DT) += board-mv88f6281gtw_ge.o |
| 23 | obj-$(CONFIG_MACH_DB88F628X_BP_DT) += board-db88f628x-bp.o | ||
| 24 | obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o | ||
| 25 | obj-$(CONFIG_MACH_DOCKSTAR_DT) += board-dockstar.o | ||
| 26 | obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o | ||
| 27 | obj-$(CONFIG_MACH_GOFLEXNET_DT) += board-goflexnet.o | ||
| 28 | obj-$(CONFIG_MACH_GURUPLUG_DT) += board-guruplug.o | ||
| 29 | obj-$(CONFIG_MACH_IB62X0_DT) += board-ib62x0.o | ||
| 30 | obj-$(CONFIG_MACH_ICONNECT_DT) += board-iconnect.o | ||
| 31 | obj-$(CONFIG_MACH_INETSPACE_V2_DT) += board-ns2.o | ||
| 32 | obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT) += board-iomega_ix2_200.o | ||
| 33 | obj-$(CONFIG_MACH_KM_KIRKWOOD_DT) += board-km_kirkwood.o | ||
| 34 | obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o | ||
| 35 | obj-$(CONFIG_MACH_MPLCEC4_DT) += board-mplcec4.o | ||
| 36 | obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) += board-ns2.o | ||
| 37 | obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT) += board-ns2.o | ||
| 38 | obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT) += board-ns2.o | ||
| 39 | obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o | ||
| 40 | obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o | ||
| 41 | obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o | ||
| 42 | obj-$(CONFIG_MACH_SHEEVAPLUG_DT) += board-sheevaplug.o | ||
| 43 | obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o | ||
| 44 | obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o | ||
diff --git a/arch/arm/mach-kirkwood/board-db88f628x-bp.c b/arch/arm/mach-kirkwood/board-db88f628x-bp.c deleted file mode 100644 index 2f574bc8ed40..000000000000 --- a/arch/arm/mach-kirkwood/board-db88f628x-bp.c +++ /dev/null | |||
| @@ -1,24 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Saeed Bishara <saeed@marvell.com> | ||
| 3 | * | ||
| 4 | * Marvell DB-88F628{1,2}-BP Development Board Setup | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/of.h> | ||
| 14 | #include <linux/mv643xx_eth.h> | ||
| 15 | #include "common.h" | ||
| 16 | |||
| 17 | static struct mv643xx_eth_platform_data db88f628x_ge00_data = { | ||
| 18 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
| 19 | }; | ||
| 20 | |||
| 21 | void __init db88f628x_init(void) | ||
| 22 | { | ||
| 23 | kirkwood_ge00_init(&db88f628x_ge00_data); | ||
| 24 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-dnskw.c b/arch/arm/mach-kirkwood/board-dnskw.c deleted file mode 100644 index a1aa87f09180..000000000000 --- a/arch/arm/mach-kirkwood/board-dnskw.c +++ /dev/null | |||
| @@ -1,43 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 (C), Jamie Lentin <jm@lentin.co.uk> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-dnskw.c | ||
| 5 | * | ||
| 6 | * D-link DNS-320 & DNS-325 NAS Init for drivers not converted to | ||
| 7 | * flattened device tree yet. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/init.h> | ||
| 16 | #include <linux/platform_device.h> | ||
| 17 | #include <linux/mv643xx_eth.h> | ||
| 18 | #include <linux/gpio.h> | ||
| 19 | #include "common.h" | ||
| 20 | |||
| 21 | static struct mv643xx_eth_platform_data dnskw_ge00_data = { | ||
| 22 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
| 23 | }; | ||
| 24 | |||
| 25 | /* Register any GPIO for output and set the value */ | ||
| 26 | static void __init dnskw_gpio_register(unsigned gpio, char *name, int def) | ||
| 27 | { | ||
| 28 | if (gpio_request(gpio, name) == 0 && | ||
| 29 | gpio_direction_output(gpio, 0) == 0) { | ||
| 30 | gpio_set_value(gpio, def); | ||
| 31 | if (gpio_export(gpio, 0) != 0) | ||
| 32 | pr_err("dnskw: Failed to export GPIO %s\n", name); | ||
| 33 | } else | ||
| 34 | pr_err("dnskw: Failed to register %s\n", name); | ||
| 35 | } | ||
| 36 | |||
| 37 | void __init dnskw_init(void) | ||
| 38 | { | ||
| 39 | kirkwood_ge00_init(&dnskw_ge00_data); | ||
| 40 | |||
| 41 | /* Set NAS to turn back on after a power failure */ | ||
| 42 | dnskw_gpio_register(37, "dnskw:power:recover", 1); | ||
| 43 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-dockstar.c b/arch/arm/mach-kirkwood/board-dockstar.c deleted file mode 100644 index d7196db33984..000000000000 --- a/arch/arm/mach-kirkwood/board-dockstar.c +++ /dev/null | |||
| @@ -1,32 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/board-dockstar.c | ||
| 3 | * | ||
| 4 | * Seagate FreeAgent Dockstar Board Init for drivers not converted to | ||
| 5 | * flattened device tree yet. | ||
| 6 | * | ||
| 7 | * This file is licensed under the terms of the GNU General Public | ||
| 8 | * License version 2. This program is licensed "as is" without any | ||
| 9 | * warranty of any kind, whether express or implied. | ||
| 10 | * | ||
| 11 | * Copied and modified for Seagate GoFlex Net support by | ||
| 12 | * Joshua Coombs <josh.coombs@gmail.com> based on ArchLinux ARM's | ||
| 13 | * GoFlex kernel patches. | ||
| 14 | * | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include <linux/kernel.h> | ||
| 18 | #include <linux/init.h> | ||
| 19 | #include <linux/mv643xx_eth.h> | ||
| 20 | #include "common.h" | ||
| 21 | |||
| 22 | static struct mv643xx_eth_platform_data dockstar_ge00_data = { | ||
| 23 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 24 | }; | ||
| 25 | |||
| 26 | void __init dockstar_dt_init(void) | ||
| 27 | { | ||
| 28 | /* | ||
| 29 | * Basic setup. Needs to be called early. | ||
| 30 | */ | ||
| 31 | kirkwood_ge00_init(&dockstar_ge00_data); | ||
| 32 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-dreamplug.c b/arch/arm/mach-kirkwood/board-dreamplug.c deleted file mode 100644 index 0903242c00dc..000000000000 --- a/arch/arm/mach-kirkwood/board-dreamplug.c +++ /dev/null | |||
| @@ -1,35 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-dreamplug.c | ||
| 5 | * | ||
| 6 | * Marvell DreamPlug Reference Board Init for drivers not converted to | ||
| 7 | * flattened device tree yet. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/init.h> | ||
| 16 | #include <linux/mv643xx_eth.h> | ||
| 17 | #include <linux/gpio.h> | ||
| 18 | #include "common.h" | ||
| 19 | |||
| 20 | static struct mv643xx_eth_platform_data dreamplug_ge00_data = { | ||
| 21 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 22 | }; | ||
| 23 | |||
| 24 | static struct mv643xx_eth_platform_data dreamplug_ge01_data = { | ||
| 25 | .phy_addr = MV643XX_ETH_PHY_ADDR(1), | ||
| 26 | }; | ||
| 27 | |||
| 28 | void __init dreamplug_init(void) | ||
| 29 | { | ||
| 30 | /* | ||
| 31 | * Basic setup. Needs to be called early. | ||
| 32 | */ | ||
| 33 | kirkwood_ge00_init(&dreamplug_ge00_data); | ||
| 34 | kirkwood_ge01_init(&dreamplug_ge01_data); | ||
| 35 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c index 682b7ac8deb8..82d3ad8e87cf 100644 --- a/arch/arm/mach-kirkwood/board-dt.c +++ b/arch/arm/mach-kirkwood/board-dt.c | |||
| @@ -15,6 +15,9 @@ | |||
| 15 | #include <linux/of.h> | 15 | #include <linux/of.h> |
| 16 | #include <linux/of_platform.h> | 16 | #include <linux/of_platform.h> |
| 17 | #include <linux/clk-provider.h> | 17 | #include <linux/clk-provider.h> |
| 18 | #include <linux/clocksource.h> | ||
| 19 | #include <linux/dma-mapping.h> | ||
| 20 | #include <linux/irqchip.h> | ||
| 18 | #include <linux/kexec.h> | 21 | #include <linux/kexec.h> |
| 19 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
| 20 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
| @@ -49,10 +52,6 @@ static void __init kirkwood_legacy_clk_init(void) | |||
| 49 | orion_clkdev_add("1", "pcie", | 52 | orion_clkdev_add("1", "pcie", |
| 50 | of_clk_get_from_provider(&clkspec)); | 53 | of_clk_get_from_provider(&clkspec)); |
| 51 | 54 | ||
| 52 | clkspec.args[0] = CGC_BIT_SDIO; | ||
| 53 | orion_clkdev_add(NULL, "mvsdio", | ||
| 54 | of_clk_get_from_provider(&clkspec)); | ||
| 55 | |||
| 56 | /* | 55 | /* |
| 57 | * The ethernet interfaces forget the MAC address assigned by | 56 | * The ethernet interfaces forget the MAC address assigned by |
| 58 | * u-boot if the clocks are turned off. Until proper DT support | 57 | * u-boot if the clocks are turned off. Until proper DT support |
| @@ -60,19 +59,24 @@ static void __init kirkwood_legacy_clk_init(void) | |||
| 60 | */ | 59 | */ |
| 61 | clkspec.args[0] = CGC_BIT_GE0; | 60 | clkspec.args[0] = CGC_BIT_GE0; |
| 62 | clk = of_clk_get_from_provider(&clkspec); | 61 | clk = of_clk_get_from_provider(&clkspec); |
| 63 | orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk); | ||
| 64 | clk_prepare_enable(clk); | 62 | clk_prepare_enable(clk); |
| 65 | 63 | ||
| 66 | clkspec.args[0] = CGC_BIT_GE1; | 64 | clkspec.args[0] = CGC_BIT_GE1; |
| 67 | clk = of_clk_get_from_provider(&clkspec); | 65 | clk = of_clk_get_from_provider(&clkspec); |
| 68 | orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk); | ||
| 69 | clk_prepare_enable(clk); | 66 | clk_prepare_enable(clk); |
| 70 | } | 67 | } |
| 71 | 68 | ||
| 72 | static void __init kirkwood_of_clk_init(void) | 69 | static void __init kirkwood_dt_time_init(void) |
| 73 | { | 70 | { |
| 74 | of_clk_init(NULL); | 71 | of_clk_init(NULL); |
| 75 | kirkwood_legacy_clk_init(); | 72 | clocksource_of_init(); |
| 73 | } | ||
| 74 | |||
| 75 | static void __init kirkwood_dt_init_early(void) | ||
| 76 | { | ||
| 77 | mvebu_mbus_init("marvell,kirkwood-mbus", | ||
| 78 | BRIDGE_WINS_BASE, BRIDGE_WINS_SZ, | ||
| 79 | DDR_WINDOW_CPU_BASE, DDR_WINDOW_CPU_SZ); | ||
| 76 | } | 80 | } |
| 77 | 81 | ||
| 78 | static void __init kirkwood_dt_init(void) | 82 | static void __init kirkwood_dt_init(void) |
| @@ -94,8 +98,8 @@ static void __init kirkwood_dt_init(void) | |||
| 94 | 98 | ||
| 95 | kirkwood_cpufreq_init(); | 99 | kirkwood_cpufreq_init(); |
| 96 | 100 | ||
| 97 | /* Setup root of clk tree */ | 101 | /* Setup clocks for legacy devices */ |
| 98 | kirkwood_of_clk_init(); | 102 | kirkwood_legacy_clk_init(); |
| 99 | 103 | ||
| 100 | kirkwood_cpuidle_init(); | 104 | kirkwood_cpuidle_init(); |
| 101 | 105 | ||
| @@ -103,105 +107,22 @@ static void __init kirkwood_dt_init(void) | |||
| 103 | kexec_reinit = kirkwood_enable_pcie; | 107 | kexec_reinit = kirkwood_enable_pcie; |
| 104 | #endif | 108 | #endif |
| 105 | 109 | ||
| 106 | if (of_machine_is_compatible("globalscale,dreamplug")) | 110 | if (of_machine_is_compatible("marvell,mv88f6281gtw-ge")) |
| 107 | dreamplug_init(); | 111 | mv88f6281gtw_ge_init(); |
| 108 | |||
| 109 | if (of_machine_is_compatible("globalscale,guruplug")) | ||
| 110 | guruplug_dt_init(); | ||
| 111 | |||
| 112 | if (of_machine_is_compatible("globalscale,sheevaplug")) | ||
| 113 | sheevaplug_dt_init(); | ||
| 114 | |||
| 115 | if (of_machine_is_compatible("dlink,dns-kirkwood")) | ||
| 116 | dnskw_init(); | ||
| 117 | |||
| 118 | if (of_machine_is_compatible("iom,iconnect")) | ||
| 119 | iconnect_init(); | ||
| 120 | |||
| 121 | if (of_machine_is_compatible("raidsonic,ib-nas62x0")) | ||
| 122 | ib62x0_init(); | ||
| 123 | |||
| 124 | if (of_machine_is_compatible("qnap,ts219")) | ||
| 125 | qnap_dt_ts219_init(); | ||
| 126 | |||
| 127 | if (of_machine_is_compatible("seagate,dockstar")) | ||
| 128 | dockstar_dt_init(); | ||
| 129 | |||
| 130 | if (of_machine_is_compatible("seagate,goflexnet")) | ||
| 131 | goflexnet_init(); | ||
| 132 | |||
| 133 | if (of_machine_is_compatible("buffalo,lsxl")) | ||
| 134 | lsxl_init(); | ||
| 135 | |||
| 136 | if (of_machine_is_compatible("iom,ix2-200")) | ||
| 137 | iomega_ix2_200_init(); | ||
| 138 | |||
| 139 | if (of_machine_is_compatible("keymile,km_kirkwood")) | ||
| 140 | km_kirkwood_init(); | ||
| 141 | |||
| 142 | if (of_machine_is_compatible("lacie,cloudbox") || | ||
| 143 | of_machine_is_compatible("lacie,inetspace_v2") || | ||
| 144 | of_machine_is_compatible("lacie,netspace_lite_v2") || | ||
| 145 | of_machine_is_compatible("lacie,netspace_max_v2") || | ||
| 146 | of_machine_is_compatible("lacie,netspace_mini_v2") || | ||
| 147 | of_machine_is_compatible("lacie,netspace_v2")) | ||
| 148 | ns2_init(); | ||
| 149 | |||
| 150 | if (of_machine_is_compatible("marvell,db-88f6281-bp") || | ||
| 151 | of_machine_is_compatible("marvell,db-88f6282-bp")) | ||
| 152 | db88f628x_init(); | ||
| 153 | |||
| 154 | if (of_machine_is_compatible("mpl,cec4")) | ||
| 155 | mplcec4_init(); | ||
| 156 | |||
| 157 | if (of_machine_is_compatible("netgear,readynas-duo-v2")) | ||
| 158 | netgear_readynas_init(); | ||
| 159 | |||
| 160 | if (of_machine_is_compatible("plathome,openblocks-a6")) | ||
| 161 | openblocks_a6_init(); | ||
| 162 | |||
| 163 | if (of_machine_is_compatible("usi,topkick")) | ||
| 164 | usi_topkick_init(); | ||
| 165 | 112 | ||
| 166 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | 113 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
| 167 | } | 114 | } |
| 168 | 115 | ||
| 169 | static const char * const kirkwood_dt_board_compat[] = { | 116 | static const char * const kirkwood_dt_board_compat[] = { |
| 170 | "globalscale,dreamplug", | 117 | "marvell,kirkwood", |
| 171 | "globalscale,guruplug", | ||
| 172 | "globalscale,sheevaplug", | ||
| 173 | "dlink,dns-320", | ||
| 174 | "dlink,dns-325", | ||
| 175 | "iom,iconnect", | ||
| 176 | "raidsonic,ib-nas62x0", | ||
| 177 | "qnap,ts219", | ||
| 178 | "seagate,dockstar", | ||
| 179 | "seagate,goflexnet", | ||
| 180 | "buffalo,lsxl", | ||
| 181 | "iom,ix2-200", | ||
| 182 | "keymile,km_kirkwood", | ||
| 183 | "lacie,cloudbox", | ||
| 184 | "lacie,inetspace_v2", | ||
| 185 | "lacie,netspace_lite_v2", | ||
| 186 | "lacie,netspace_max_v2", | ||
| 187 | "lacie,netspace_mini_v2", | ||
| 188 | "lacie,netspace_v2", | ||
| 189 | "marvell,db-88f6281-bp", | ||
| 190 | "marvell,db-88f6282-bp", | ||
| 191 | "mpl,cec4", | ||
| 192 | "netgear,readynas-duo-v2", | ||
| 193 | "plathome,openblocks-a6", | ||
| 194 | "usi,topkick", | ||
| 195 | "zyxel,nsa310", | ||
| 196 | NULL | 118 | NULL |
| 197 | }; | 119 | }; |
| 198 | 120 | ||
| 199 | DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") | 121 | DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") |
| 200 | /* Maintainer: Jason Cooper <jason@lakedaemon.net> */ | 122 | /* Maintainer: Jason Cooper <jason@lakedaemon.net> */ |
| 201 | .map_io = kirkwood_map_io, | 123 | .map_io = kirkwood_map_io, |
| 202 | .init_early = kirkwood_init_early, | 124 | .init_early = kirkwood_dt_init_early, |
| 203 | .init_irq = orion_dt_init_irq, | 125 | .init_time = kirkwood_dt_time_init, |
| 204 | .init_time = kirkwood_timer_init, | ||
| 205 | .init_machine = kirkwood_dt_init, | 126 | .init_machine = kirkwood_dt_init, |
| 206 | .restart = kirkwood_restart, | 127 | .restart = kirkwood_restart, |
| 207 | .dt_compat = kirkwood_dt_board_compat, | 128 | .dt_compat = kirkwood_dt_board_compat, |
diff --git a/arch/arm/mach-kirkwood/board-goflexnet.c b/arch/arm/mach-kirkwood/board-goflexnet.c deleted file mode 100644 index 9db979aec82e..000000000000 --- a/arch/arm/mach-kirkwood/board-goflexnet.c +++ /dev/null | |||
| @@ -1,34 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-goflexnet.c | ||
| 5 | * | ||
| 6 | * Seagate GoFlext Net Board Init for drivers not converted to | ||
| 7 | * flattened device tree yet. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | * | ||
| 13 | * Copied and modified for Seagate GoFlex Net support by | ||
| 14 | * Joshua Coombs <josh.coombs@gmail.com> based on ArchLinux ARM's | ||
| 15 | * GoFlex kernel patches. | ||
| 16 | * | ||
| 17 | */ | ||
| 18 | |||
| 19 | #include <linux/kernel.h> | ||
| 20 | #include <linux/init.h> | ||
| 21 | #include <linux/mv643xx_eth.h> | ||
| 22 | #include "common.h" | ||
| 23 | |||
| 24 | static struct mv643xx_eth_platform_data goflexnet_ge00_data = { | ||
| 25 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 26 | }; | ||
| 27 | |||
| 28 | void __init goflexnet_init(void) | ||
| 29 | { | ||
| 30 | /* | ||
| 31 | * Basic setup. Needs to be called early. | ||
| 32 | */ | ||
| 33 | kirkwood_ge00_init(&goflexnet_ge00_data); | ||
| 34 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-guruplug.c b/arch/arm/mach-kirkwood/board-guruplug.c deleted file mode 100644 index a857163954a5..000000000000 --- a/arch/arm/mach-kirkwood/board-guruplug.c +++ /dev/null | |||
| @@ -1,33 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/board-guruplug.c | ||
| 3 | * | ||
| 4 | * Marvell Guruplug Reference Board Init for drivers not converted to | ||
| 5 | * flattened device tree yet. | ||
| 6 | * | ||
| 7 | * This file is licensed under the terms of the GNU General Public | ||
| 8 | * License version 2. This program is licensed "as is" without any | ||
| 9 | * warranty of any kind, whether express or implied. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/kernel.h> | ||
| 13 | #include <linux/init.h> | ||
| 14 | #include <linux/mv643xx_eth.h> | ||
| 15 | #include <linux/gpio.h> | ||
| 16 | #include "common.h" | ||
| 17 | |||
| 18 | static struct mv643xx_eth_platform_data guruplug_ge00_data = { | ||
| 19 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 20 | }; | ||
| 21 | |||
| 22 | static struct mv643xx_eth_platform_data guruplug_ge01_data = { | ||
| 23 | .phy_addr = MV643XX_ETH_PHY_ADDR(1), | ||
| 24 | }; | ||
| 25 | |||
| 26 | void __init guruplug_dt_init(void) | ||
| 27 | { | ||
| 28 | /* | ||
| 29 | * Basic setup. Needs to be called early. | ||
| 30 | */ | ||
| 31 | kirkwood_ge00_init(&guruplug_ge00_data); | ||
| 32 | kirkwood_ge01_init(&guruplug_ge01_data); | ||
| 33 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-ib62x0.c b/arch/arm/mach-kirkwood/board-ib62x0.c deleted file mode 100644 index 9a857ae83984..000000000000 --- a/arch/arm/mach-kirkwood/board-ib62x0.c +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 (C), Simon Baatz <gmbnomis@gmail.com> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-ib62x0.c | ||
| 5 | * | ||
| 6 | * RaidSonic ICY BOX IB-NAS6210 & IB-NAS6220 init for drivers not | ||
| 7 | * converted to flattened device tree yet. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/init.h> | ||
| 16 | #include <linux/mv643xx_eth.h> | ||
| 17 | #include "common.h" | ||
| 18 | |||
| 19 | static struct mv643xx_eth_platform_data ib62x0_ge00_data = { | ||
| 20 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
| 21 | }; | ||
| 22 | |||
| 23 | void __init ib62x0_init(void) | ||
| 24 | { | ||
| 25 | /* | ||
| 26 | * Basic setup. Needs to be called early. | ||
| 27 | */ | ||
| 28 | kirkwood_ge00_init(&ib62x0_ge00_data); | ||
| 29 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-iconnect.c b/arch/arm/mach-kirkwood/board-iconnect.c deleted file mode 100644 index 98b5ad1bba90..000000000000 --- a/arch/arm/mach-kirkwood/board-iconnect.c +++ /dev/null | |||
| @@ -1,24 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/board-iconnect.c | ||
| 3 | * | ||
| 4 | * Iomega i-connect Board Setup | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/of.h> | ||
| 14 | #include <linux/mv643xx_eth.h> | ||
| 15 | #include "common.h" | ||
| 16 | |||
| 17 | static struct mv643xx_eth_platform_data iconnect_ge00_data = { | ||
| 18 | .phy_addr = MV643XX_ETH_PHY_ADDR(11), | ||
| 19 | }; | ||
| 20 | |||
| 21 | void __init iconnect_init(void) | ||
| 22 | { | ||
| 23 | kirkwood_ge00_init(&iconnect_ge00_data); | ||
| 24 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c b/arch/arm/mach-kirkwood/board-iomega_ix2_200.c deleted file mode 100644 index e5f70415905a..000000000000 --- a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c +++ /dev/null | |||
| @@ -1,34 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/board-iomega_ix2_200.c | ||
| 3 | * | ||
| 4 | * Iomega StorCenter ix2-200 | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/mv643xx_eth.h> | ||
| 14 | #include <linux/ethtool.h> | ||
| 15 | #include "common.h" | ||
| 16 | |||
| 17 | static struct mv643xx_eth_platform_data iomega_ix2_200_ge00_data = { | ||
| 18 | .phy_addr = MV643XX_ETH_PHY_NONE, | ||
| 19 | .speed = SPEED_1000, | ||
| 20 | .duplex = DUPLEX_FULL, | ||
| 21 | }; | ||
| 22 | |||
| 23 | static struct mv643xx_eth_platform_data iomega_ix2_200_ge01_data = { | ||
| 24 | .phy_addr = MV643XX_ETH_PHY_ADDR(11), | ||
| 25 | }; | ||
| 26 | |||
| 27 | void __init iomega_ix2_200_init(void) | ||
| 28 | { | ||
| 29 | /* | ||
| 30 | * Basic setup. Needs to be called early. | ||
| 31 | */ | ||
| 32 | kirkwood_ge00_init(&iomega_ix2_200_ge00_data); | ||
| 33 | kirkwood_ge01_init(&iomega_ix2_200_ge01_data); | ||
| 34 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-km_kirkwood.c b/arch/arm/mach-kirkwood/board-km_kirkwood.c deleted file mode 100644 index 44e4605ba0bf..000000000000 --- a/arch/arm/mach-kirkwood/board-km_kirkwood.c +++ /dev/null | |||
| @@ -1,44 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 2012 KEYMILE AG, CH-3097 Bern | ||
| 3 | * Valentin Longchamp <valentin.longchamp@keymile.com> | ||
| 4 | * | ||
| 5 | * arch/arm/mach-kirkwood/board-km_kirkwood.c | ||
| 6 | * | ||
| 7 | * Keymile km_kirkwood Reference Desing Init for drivers not converted to | ||
| 8 | * flattened device tree yet. | ||
| 9 | * | ||
| 10 | * This file is licensed under the terms of the GNU General Public | ||
| 11 | * License version 2. This program is licensed "as is" without any | ||
| 12 | * warranty of any kind, whether express or implied. | ||
| 13 | */ | ||
| 14 | |||
| 15 | #include <linux/kernel.h> | ||
| 16 | #include <linux/init.h> | ||
| 17 | #include <linux/mv643xx_eth.h> | ||
| 18 | #include <linux/clk.h> | ||
| 19 | #include <linux/clk-private.h> | ||
| 20 | #include "common.h" | ||
| 21 | |||
| 22 | static struct mv643xx_eth_platform_data km_kirkwood_ge00_data = { | ||
| 23 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 24 | }; | ||
| 25 | |||
| 26 | void __init km_kirkwood_init(void) | ||
| 27 | { | ||
| 28 | struct clk *sata_clk; | ||
| 29 | /* | ||
| 30 | * Our variant of kirkwood (integrated in the Bobcat) hangs on accessing | ||
| 31 | * SATA bits (14-15) of the Clock Gating Control Register. Since these | ||
| 32 | * devices are also not present in this variant, their clocks get | ||
| 33 | * disabled because unused when clk_disable_unused() gets called. | ||
| 34 | * That's why we change the flags to these clocks to CLK_IGNORE_UNUSED | ||
| 35 | */ | ||
| 36 | sata_clk = clk_get_sys("sata_mv.0", "0"); | ||
| 37 | if (!IS_ERR(sata_clk)) | ||
| 38 | sata_clk->flags |= CLK_IGNORE_UNUSED; | ||
| 39 | sata_clk = clk_get_sys("sata_mv.0", "1"); | ||
| 40 | if (!IS_ERR(sata_clk)) | ||
| 41 | sata_clk->flags |= CLK_IGNORE_UNUSED; | ||
| 42 | |||
| 43 | kirkwood_ge00_init(&km_kirkwood_ge00_data); | ||
| 44 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-lsxl.c b/arch/arm/mach-kirkwood/board-lsxl.c deleted file mode 100644 index 348395238df6..000000000000 --- a/arch/arm/mach-kirkwood/board-lsxl.c +++ /dev/null | |||
| @@ -1,36 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 (C), Michael Walle <michael@walle.cc> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-lsxl.c | ||
| 5 | * | ||
| 6 | * Buffalo Linkstation LS-XHL and LS-CHLv2 init for drivers not | ||
| 7 | * converted to flattened device tree yet. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/init.h> | ||
| 16 | #include <linux/platform_device.h> | ||
| 17 | #include <linux/mv643xx_eth.h> | ||
| 18 | #include "common.h" | ||
| 19 | |||
| 20 | static struct mv643xx_eth_platform_data lsxl_ge00_data = { | ||
| 21 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 22 | }; | ||
| 23 | |||
| 24 | static struct mv643xx_eth_platform_data lsxl_ge01_data = { | ||
| 25 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
| 26 | }; | ||
| 27 | |||
| 28 | void __init lsxl_init(void) | ||
| 29 | { | ||
| 30 | /* | ||
| 31 | * Basic setup. Needs to be called early. | ||
| 32 | */ | ||
| 33 | |||
| 34 | kirkwood_ge00_init(&lsxl_ge00_data); | ||
| 35 | kirkwood_ge01_init(&lsxl_ge01_data); | ||
| 36 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-mplcec4.c b/arch/arm/mach-kirkwood/board-mplcec4.c deleted file mode 100644 index 938712e248f1..000000000000 --- a/arch/arm/mach-kirkwood/board-mplcec4.c +++ /dev/null | |||
| @@ -1,35 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2012 MPL AG, Switzerland | ||
| 3 | * Stefan Peter <s.peter@mpl.ch> | ||
| 4 | * | ||
| 5 | * arch/arm/mach-kirkwood/board-mplcec4.c | ||
| 6 | * | ||
| 7 | * This file is licensed under the terms of the GNU General Public | ||
| 8 | * License version 2. This program is licensed "as is" without any | ||
| 9 | * warranty of any kind, whether express or implied. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/kernel.h> | ||
| 13 | #include <linux/init.h> | ||
| 14 | #include <linux/mv643xx_eth.h> | ||
| 15 | #include "common.h" | ||
| 16 | |||
| 17 | static struct mv643xx_eth_platform_data mplcec4_ge00_data = { | ||
| 18 | .phy_addr = MV643XX_ETH_PHY_ADDR(1), | ||
| 19 | }; | ||
| 20 | |||
| 21 | static struct mv643xx_eth_platform_data mplcec4_ge01_data = { | ||
| 22 | .phy_addr = MV643XX_ETH_PHY_ADDR(2), | ||
| 23 | }; | ||
| 24 | |||
| 25 | void __init mplcec4_init(void) | ||
| 26 | { | ||
| 27 | /* | ||
| 28 | * Basic setup. Needs to be called early. | ||
| 29 | */ | ||
| 30 | kirkwood_ge00_init(&mplcec4_ge00_data); | ||
| 31 | kirkwood_ge01_init(&mplcec4_ge01_data); | ||
| 32 | } | ||
| 33 | |||
| 34 | |||
| 35 | |||
diff --git a/arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c b/arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c new file mode 100644 index 000000000000..ee5eea678c11 --- /dev/null +++ b/arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c | ||
| 3 | * | ||
| 4 | * Marvell 88F6281 GTW GE Board Setup | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/platform_device.h> | ||
| 14 | #include <linux/irq.h> | ||
| 15 | #include <linux/timer.h> | ||
| 16 | #include <linux/mv643xx_eth.h> | ||
| 17 | #include <linux/ethtool.h> | ||
| 18 | #include <linux/gpio.h> | ||
| 19 | #include <net/dsa.h> | ||
| 20 | #include <asm/mach-types.h> | ||
| 21 | #include <asm/mach/arch.h> | ||
| 22 | #include <asm/mach/pci.h> | ||
| 23 | #include <mach/kirkwood.h> | ||
| 24 | #include "common.h" | ||
| 25 | |||
| 26 | static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = { | ||
| 27 | .phy_addr = MV643XX_ETH_PHY_NONE, | ||
| 28 | .speed = SPEED_1000, | ||
| 29 | .duplex = DUPLEX_FULL, | ||
| 30 | }; | ||
| 31 | |||
| 32 | static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = { | ||
| 33 | .port_names[0] = "lan1", | ||
| 34 | .port_names[1] = "lan2", | ||
| 35 | .port_names[2] = "lan3", | ||
| 36 | .port_names[3] = "lan4", | ||
| 37 | .port_names[4] = "wan", | ||
| 38 | .port_names[5] = "cpu", | ||
| 39 | }; | ||
| 40 | |||
| 41 | static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = { | ||
| 42 | .nr_chips = 1, | ||
| 43 | .chip = &mv88f6281gtw_ge_switch_chip_data, | ||
| 44 | }; | ||
| 45 | |||
| 46 | void __init mv88f6281gtw_ge_init(void) | ||
| 47 | { | ||
| 48 | kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data); | ||
| 49 | kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ); | ||
| 50 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c deleted file mode 100644 index f8f660525ace..000000000000 --- a/arch/arm/mach-kirkwood/board-ns2.c +++ /dev/null | |||
| @@ -1,35 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-ns2.c | ||
| 5 | * | ||
| 6 | * LaCie Network Space v2 board (and parents) initialization for drivers | ||
| 7 | * not converted to flattened device tree yet. | ||
| 8 | * | ||
| 9 | * This file is licensed under the terms of the GNU General Public | ||
| 10 | * License version 2. This program is licensed "as is" without any | ||
| 11 | * warranty of any kind, whether express or implied. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/init.h> | ||
| 16 | #include <linux/platform_device.h> | ||
| 17 | #include <linux/mv643xx_eth.h> | ||
| 18 | #include <linux/of.h> | ||
| 19 | #include "common.h" | ||
| 20 | |||
| 21 | static struct mv643xx_eth_platform_data ns2_ge00_data = { | ||
| 22 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
| 23 | }; | ||
| 24 | |||
| 25 | void __init ns2_init(void) | ||
| 26 | { | ||
| 27 | /* | ||
| 28 | * Basic setup. Needs to be called early. | ||
| 29 | */ | ||
| 30 | if (of_machine_is_compatible("lacie,cloudbox") || | ||
| 31 | of_machine_is_compatible("lacie,netspace_lite_v2") || | ||
| 32 | of_machine_is_compatible("lacie,netspace_mini_v2")) | ||
| 33 | ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); | ||
| 34 | kirkwood_ge00_init(&ns2_ge00_data); | ||
| 35 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-openblocks_a6.c b/arch/arm/mach-kirkwood/board-openblocks_a6.c deleted file mode 100644 index b11d8fdeca93..000000000000 --- a/arch/arm/mach-kirkwood/board-openblocks_a6.c +++ /dev/null | |||
| @@ -1,26 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 Nobuhiro Iwamatsu <iwamatsu@nigauri.org> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-openblocks_a6.c | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/mv643xx_eth.h> | ||
| 14 | #include "common.h" | ||
| 15 | |||
| 16 | static struct mv643xx_eth_platform_data openblocks_ge00_data = { | ||
| 17 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 18 | }; | ||
| 19 | |||
| 20 | void __init openblocks_a6_init(void) | ||
| 21 | { | ||
| 22 | /* | ||
| 23 | * Basic setup. Needs to be called early. | ||
| 24 | */ | ||
| 25 | kirkwood_ge00_init(&openblocks_ge00_data); | ||
| 26 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-readynas.c b/arch/arm/mach-kirkwood/board-readynas.c deleted file mode 100644 index 341b82d9cadb..000000000000 --- a/arch/arm/mach-kirkwood/board-readynas.c +++ /dev/null | |||
| @@ -1,27 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * NETGEAR ReadyNAS Duo v2 Board setup for drivers not already | ||
| 3 | * converted to DT. | ||
| 4 | * | ||
| 5 | * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or | ||
| 8 | * modify it under the terms of the GNU General Public License | ||
| 9 | * as published by the Free Software Foundation; either version | ||
| 10 | * 2 of the License, or (at your option) any later version. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/kernel.h> | ||
| 14 | #include <linux/init.h> | ||
| 15 | #include <linux/platform_device.h> | ||
| 16 | #include <linux/mv643xx_eth.h> | ||
| 17 | #include <mach/kirkwood.h> | ||
| 18 | #include "common.h" | ||
| 19 | |||
| 20 | static struct mv643xx_eth_platform_data netgear_readynas_ge00_data = { | ||
| 21 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 22 | }; | ||
| 23 | |||
| 24 | void __init netgear_readynas_init(void) | ||
| 25 | { | ||
| 26 | kirkwood_ge00_init(&netgear_readynas_ge00_data); | ||
| 27 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-sheevaplug.c b/arch/arm/mach-kirkwood/board-sheevaplug.c deleted file mode 100644 index fa389373ca74..000000000000 --- a/arch/arm/mach-kirkwood/board-sheevaplug.c +++ /dev/null | |||
| @@ -1,27 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/board-sheevaplug.c | ||
| 3 | * | ||
| 4 | * Marvell Sheevaplug Reference Board Init for drivers not converted to | ||
| 5 | * flattened device tree yet. | ||
| 6 | * | ||
| 7 | * This file is licensed under the terms of the GNU General Public | ||
| 8 | * License version 2. This program is licensed "as is" without any | ||
| 9 | * warranty of any kind, whether express or implied. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/kernel.h> | ||
| 13 | #include <linux/init.h> | ||
| 14 | #include <linux/mv643xx_eth.h> | ||
| 15 | #include "common.h" | ||
| 16 | |||
| 17 | static struct mv643xx_eth_platform_data sheevaplug_ge00_data = { | ||
| 18 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 19 | }; | ||
| 20 | |||
| 21 | void __init sheevaplug_dt_init(void) | ||
| 22 | { | ||
| 23 | /* | ||
| 24 | * Basic setup. Needs to be called early. | ||
| 25 | */ | ||
| 26 | kirkwood_ge00_init(&sheevaplug_ge00_data); | ||
| 27 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-ts219.c b/arch/arm/mach-kirkwood/board-ts219.c deleted file mode 100644 index 860f44ab457d..000000000000 --- a/arch/arm/mach-kirkwood/board-ts219.c +++ /dev/null | |||
| @@ -1,40 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * | ||
| 3 | * QNAP TS-11x/TS-21x Turbo NAS Board Setup via DT | ||
| 4 | * | ||
| 5 | * Copyright (C) 2012 Andrew Lunn <andrew@lunn.ch> | ||
| 6 | * | ||
| 7 | * Based on the board file ts219-setup.c: | ||
| 8 | * | ||
| 9 | * Copyright (C) 2009 Martin Michlmayr <tbm@cyrius.com> | ||
| 10 | * Copyright (C) 2008 Byron Bradley <byron.bbradley@gmail.com> | ||
| 11 | * | ||
| 12 | * This program is free software; you can redistribute it and/or | ||
| 13 | * modify it under the terms of the GNU General Public License | ||
| 14 | * as published by the Free Software Foundation; either version | ||
| 15 | * 2 of the License, or (at your option) any later version. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #include <linux/kernel.h> | ||
| 19 | #include <linux/init.h> | ||
| 20 | #include <linux/platform_device.h> | ||
| 21 | #include <linux/mv643xx_eth.h> | ||
| 22 | #include <asm/mach-types.h> | ||
| 23 | #include <asm/mach/arch.h> | ||
| 24 | #include <mach/kirkwood.h> | ||
| 25 | #include "common.h" | ||
| 26 | |||
| 27 | static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { | ||
| 28 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
| 29 | }; | ||
| 30 | |||
| 31 | void __init qnap_dt_ts219_init(void) | ||
| 32 | { | ||
| 33 | u32 dev, rev; | ||
| 34 | |||
| 35 | kirkwood_pcie_id(&dev, &rev); | ||
| 36 | if (dev == MV88F6282_DEV_ID) | ||
| 37 | qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); | ||
| 38 | |||
| 39 | kirkwood_ge00_init(&qnap_ts219_ge00_data); | ||
| 40 | } | ||
diff --git a/arch/arm/mach-kirkwood/board-usi_topkick.c b/arch/arm/mach-kirkwood/board-usi_topkick.c deleted file mode 100644 index 1cc04ec33f0b..000000000000 --- a/arch/arm/mach-kirkwood/board-usi_topkick.c +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net> | ||
| 3 | * | ||
| 4 | * arch/arm/mach-kirkwood/board-usi_topkick.c | ||
| 5 | * | ||
| 6 | * USI Topkick Init for drivers not converted to flattened device tree yet. | ||
| 7 | * | ||
| 8 | * This file is licensed under the terms of the GNU General Public | ||
| 9 | * License version 2. This program is licensed "as is" without any | ||
| 10 | * warranty of any kind, whether express or implied. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/kernel.h> | ||
| 14 | #include <linux/init.h> | ||
| 15 | #include <linux/mv643xx_eth.h> | ||
| 16 | #include <linux/gpio.h> | ||
| 17 | #include "common.h" | ||
| 18 | |||
| 19 | static struct mv643xx_eth_platform_data topkick_ge00_data = { | ||
| 20 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 21 | }; | ||
| 22 | |||
| 23 | void __init usi_topkick_init(void) | ||
| 24 | { | ||
| 25 | /* | ||
| 26 | * Basic setup. Needs to be called early. | ||
| 27 | */ | ||
| 28 | kirkwood_ge00_init(&topkick_ge00_data); | ||
| 29 | } | ||
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h index fcf3ba682e24..1296de94febf 100644 --- a/arch/arm/mach-kirkwood/common.h +++ b/arch/arm/mach-kirkwood/common.h | |||
| @@ -59,119 +59,10 @@ void kirkwood_restart(enum reboot_mode, const char *); | |||
| 59 | void kirkwood_clk_init(void); | 59 | void kirkwood_clk_init(void); |
| 60 | 60 | ||
| 61 | /* board init functions for boards not fully converted to fdt */ | 61 | /* board init functions for boards not fully converted to fdt */ |
| 62 | #ifdef CONFIG_MACH_DREAMPLUG_DT | 62 | #ifdef CONFIG_MACH_MV88F6281GTW_GE_DT |
| 63 | void dreamplug_init(void); | 63 | void mv88f6281gtw_ge_init(void); |
| 64 | #else | 64 | #else |
| 65 | static inline void dreamplug_init(void) {}; | 65 | static inline void mv88f6281gtw_ge_init(void) {}; |
| 66 | #endif | ||
| 67 | #ifdef CONFIG_MACH_GURUPLUG_DT | ||
| 68 | void guruplug_dt_init(void); | ||
| 69 | #else | ||
| 70 | static inline void guruplug_dt_init(void) {}; | ||
| 71 | #endif | ||
| 72 | #ifdef CONFIG_MACH_SHEEVAPLUG_DT | ||
| 73 | void sheevaplug_dt_init(void); | ||
| 74 | #else | ||
| 75 | static inline void sheevaplug_dt_init(void) {}; | ||
| 76 | #endif | ||
| 77 | #ifdef CONFIG_MACH_TS219_DT | ||
| 78 | void qnap_dt_ts219_init(void); | ||
| 79 | #else | ||
| 80 | static inline void qnap_dt_ts219_init(void) {}; | ||
| 81 | #endif | ||
| 82 | |||
| 83 | #ifdef CONFIG_MACH_DLINK_KIRKWOOD_DT | ||
| 84 | void dnskw_init(void); | ||
| 85 | #else | ||
| 86 | static inline void dnskw_init(void) {}; | ||
| 87 | #endif | ||
| 88 | |||
| 89 | #ifdef CONFIG_MACH_ICONNECT_DT | ||
| 90 | void iconnect_init(void); | ||
| 91 | #else | ||
| 92 | static inline void iconnect_init(void) {}; | ||
| 93 | #endif | ||
| 94 | |||
| 95 | #ifdef CONFIG_MACH_IB62X0_DT | ||
| 96 | void ib62x0_init(void); | ||
| 97 | #else | ||
| 98 | static inline void ib62x0_init(void) {}; | ||
| 99 | #endif | ||
| 100 | |||
| 101 | #ifdef CONFIG_MACH_DOCKSTAR_DT | ||
| 102 | void dockstar_dt_init(void); | ||
| 103 | #else | ||
| 104 | static inline void dockstar_dt_init(void) {}; | ||
| 105 | #endif | ||
| 106 | |||
| 107 | #ifdef CONFIG_MACH_GOFLEXNET_DT | ||
| 108 | void goflexnet_init(void); | ||
| 109 | #else | ||
| 110 | static inline void goflexnet_init(void) {}; | ||
| 111 | #endif | ||
| 112 | |||
| 113 | #ifdef CONFIG_MACH_LSXL_DT | ||
| 114 | void lsxl_init(void); | ||
| 115 | #else | ||
| 116 | static inline void lsxl_init(void) {}; | ||
| 117 | #endif | ||
| 118 | |||
| 119 | #ifdef CONFIG_MACH_IOMEGA_IX2_200_DT | ||
| 120 | void iomega_ix2_200_init(void); | ||
| 121 | #else | ||
| 122 | static inline void iomega_ix2_200_init(void) {}; | ||
| 123 | #endif | ||
| 124 | |||
| 125 | #ifdef CONFIG_MACH_KM_KIRKWOOD_DT | ||
| 126 | void km_kirkwood_init(void); | ||
| 127 | #else | ||
| 128 | static inline void km_kirkwood_init(void) {}; | ||
| 129 | #endif | ||
| 130 | |||
| 131 | #ifdef CONFIG_MACH_DB88F628X_BP_DT | ||
| 132 | void db88f628x_init(void); | ||
| 133 | #else | ||
| 134 | static inline void db88f628x_init(void) {}; | ||
| 135 | #endif | ||
| 136 | |||
| 137 | #ifdef CONFIG_MACH_MPLCEC4_DT | ||
| 138 | void mplcec4_init(void); | ||
| 139 | #else | ||
| 140 | static inline void mplcec4_init(void) {}; | ||
| 141 | #endif | ||
| 142 | |||
| 143 | #if defined(CONFIG_MACH_INETSPACE_V2_DT) || \ | ||
| 144 | defined(CONFIG_MACH_NETSPACE_V2_DT) || \ | ||
| 145 | defined(CONFIG_MACH_NETSPACE_MAX_V2_DT) || \ | ||
| 146 | defined(CONFIG_MACH_NETSPACE_LITE_V2_DT) || \ | ||
| 147 | defined(CONFIG_MACH_NETSPACE_MINI_V2_DT) | ||
| 148 | void ns2_init(void); | ||
| 149 | #else | ||
| 150 | static inline void ns2_init(void) {}; | ||
| 151 | #endif | ||
| 152 | |||
| 153 | #ifdef CONFIG_MACH_OPENBLOCKS_A6_DT | ||
| 154 | void openblocks_a6_init(void); | ||
| 155 | #else | ||
| 156 | static inline void openblocks_a6_init(void) {}; | ||
| 157 | #endif | ||
| 158 | |||
| 159 | #ifdef CONFIG_MACH_READYNAS_DT | ||
| 160 | void netgear_readynas_init(void); | ||
| 161 | #else | ||
| 162 | static inline void netgear_readynas_init(void) {}; | ||
| 163 | #endif | ||
| 164 | |||
| 165 | #ifdef CONFIG_MACH_TOPKICK_DT | ||
| 166 | void usi_topkick_init(void); | ||
| 167 | #else | ||
| 168 | static inline void usi_topkick_init(void) {}; | ||
| 169 | #endif | ||
| 170 | |||
| 171 | #ifdef CONFIG_MACH_CLOUDBOX_DT | ||
| 172 | void cloudbox_init(void); | ||
| 173 | #else | ||
| 174 | static inline void cloudbox_init(void) {}; | ||
| 175 | #endif | 66 | #endif |
| 176 | 67 | ||
| 177 | /* early init functions not converted to fdt yet */ | 68 | /* early init functions not converted to fdt yet */ |
diff --git a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/dockstar-setup.c deleted file mode 100644 index 060ccf9cb63f..000000000000 --- a/arch/arm/mach-kirkwood/dockstar-setup.c +++ /dev/null | |||
| @@ -1,111 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/dockstar-setup.c | ||
| 3 | * | ||
| 4 | * Seagate FreeAgent DockStar Setup | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/platform_device.h> | ||
| 14 | #include <linux/ata_platform.h> | ||
| 15 | #include <linux/mtd/partitions.h> | ||
| 16 | #include <linux/mv643xx_eth.h> | ||
| 17 | #include <linux/gpio.h> | ||
| 18 | #include <linux/leds.h> | ||
| 19 | #include <asm/mach-types.h> | ||
| 20 | #include <asm/mach/arch.h> | ||
| 21 | #include <mach/kirkwood.h> | ||
| 22 | #include "common.h" | ||
| 23 | #include "mpp.h" | ||
| 24 | |||
| 25 | static struct mtd_partition dockstar_nand_parts[] = { | ||
| 26 | { | ||
| 27 | .name = "u-boot", | ||
| 28 | .offset = 0, | ||
| 29 | .size = SZ_1M | ||
| 30 | }, { | ||
| 31 | .name = "uImage", | ||
| 32 | .offset = MTDPART_OFS_NXTBLK, | ||
| 33 | .size = SZ_4M | ||
| 34 | }, { | ||
| 35 | .name = "root", | ||
| 36 | .offset = MTDPART_OFS_NXTBLK, | ||
| 37 | .size = MTDPART_SIZ_FULL | ||
| 38 | }, | ||
| 39 | }; | ||
| 40 | |||
| 41 | static struct mv643xx_eth_platform_data dockstar_ge00_data = { | ||
| 42 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 43 | }; | ||
| 44 | |||
| 45 | static struct gpio_led dockstar_led_pins[] = { | ||
| 46 | { | ||
| 47 | .name = "dockstar:green:health", | ||
| 48 | .default_trigger = "default-on", | ||
| 49 | .gpio = 46, | ||
| 50 | .active_low = 1, | ||
| 51 | }, | ||
| 52 | { | ||
| 53 | .name = "dockstar:orange:misc", | ||
| 54 | .default_trigger = "none", | ||
| 55 | .gpio = 47, | ||
| 56 | .active_low = 1, | ||
| 57 | }, | ||
| 58 | }; | ||
| 59 | |||
| 60 | static struct gpio_led_platform_data dockstar_led_data = { | ||
| 61 | .leds = dockstar_led_pins, | ||
| 62 | .num_leds = ARRAY_SIZE(dockstar_led_pins), | ||
| 63 | }; | ||
| 64 | |||
| 65 | static struct platform_device dockstar_leds = { | ||
| 66 | .name = "leds-gpio", | ||
| 67 | .id = -1, | ||
| 68 | .dev = { | ||
| 69 | .platform_data = &dockstar_led_data, | ||
| 70 | } | ||
| 71 | }; | ||
| 72 | |||
| 73 | static unsigned int dockstar_mpp_config[] __initdata = { | ||
| 74 | MPP29_GPIO, /* USB Power Enable */ | ||
| 75 | MPP46_GPIO, /* LED green */ | ||
| 76 | MPP47_GPIO, /* LED orange */ | ||
| 77 | 0 | ||
| 78 | }; | ||
| 79 | |||
| 80 | static void __init dockstar_init(void) | ||
| 81 | { | ||
| 82 | /* | ||
| 83 | * Basic setup. Needs to be called early. | ||
| 84 | */ | ||
| 85 | kirkwood_init(); | ||
| 86 | |||
| 87 | /* setup gpio pin select */ | ||
| 88 | kirkwood_mpp_conf(dockstar_mpp_config); | ||
| 89 | |||
| 90 | kirkwood_uart0_init(); | ||
| 91 | kirkwood_nand_init(ARRAY_AND_SIZE(dockstar_nand_parts), 25); | ||
| 92 | |||
| 93 | if (gpio_request(29, "USB Power Enable") != 0 || | ||
| 94 | gpio_direction_output(29, 1) != 0) | ||
| 95 | pr_err("can't set up GPIO 29 (USB Power Enable)\n"); | ||
| 96 | kirkwood_ehci_init(); | ||
| 97 | |||
| 98 | kirkwood_ge00_init(&dockstar_ge00_data); | ||
| 99 | |||
| 100 | platform_device_register(&dockstar_leds); | ||
| 101 | } | ||
| 102 | |||
| 103 | MACHINE_START(DOCKSTAR, "Seagate FreeAgent DockStar") | ||
| 104 | .atag_offset = 0x100, | ||
| 105 | .init_machine = dockstar_init, | ||
| 106 | .map_io = kirkwood_map_io, | ||
| 107 | .init_early = kirkwood_init_early, | ||
| 108 | .init_irq = kirkwood_init_irq, | ||
| 109 | .init_time = kirkwood_timer_init, | ||
| 110 | .restart = kirkwood_restart, | ||
| 111 | MACHINE_END | ||
diff --git a/arch/arm/mach-kirkwood/guruplug-setup.c b/arch/arm/mach-kirkwood/guruplug-setup.c deleted file mode 100644 index 08dd739aa709..000000000000 --- a/arch/arm/mach-kirkwood/guruplug-setup.c +++ /dev/null | |||
| @@ -1,133 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/guruplug-setup.c | ||
| 3 | * | ||
| 4 | * Marvell GuruPlug Reference Board Setup | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/platform_device.h> | ||
| 14 | #include <linux/mtd/partitions.h> | ||
| 15 | #include <linux/ata_platform.h> | ||
| 16 | #include <linux/mv643xx_eth.h> | ||
| 17 | #include <linux/gpio.h> | ||
| 18 | #include <linux/leds.h> | ||
| 19 | #include <asm/mach-types.h> | ||
| 20 | #include <asm/mach/arch.h> | ||
| 21 | #include <mach/kirkwood.h> | ||
| 22 | #include <linux/platform_data/mmc-mvsdio.h> | ||
| 23 | #include "common.h" | ||
| 24 | #include "mpp.h" | ||
| 25 | |||
| 26 | static struct mtd_partition guruplug_nand_parts[] = { | ||
| 27 | { | ||
| 28 | .name = "u-boot", | ||
| 29 | .offset = 0, | ||
| 30 | .size = SZ_1M | ||
| 31 | }, { | ||
| 32 | .name = "uImage", | ||
| 33 | .offset = MTDPART_OFS_NXTBLK, | ||
| 34 | .size = SZ_4M | ||
| 35 | }, { | ||
| 36 | .name = "root", | ||
| 37 | .offset = MTDPART_OFS_NXTBLK, | ||
| 38 | .size = MTDPART_SIZ_FULL | ||
| 39 | }, | ||
| 40 | }; | ||
| 41 | |||
| 42 | static struct mv643xx_eth_platform_data guruplug_ge00_data = { | ||
| 43 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 44 | }; | ||
| 45 | |||
| 46 | static struct mv643xx_eth_platform_data guruplug_ge01_data = { | ||
| 47 | .phy_addr = MV643XX_ETH_PHY_ADDR(1), | ||
| 48 | }; | ||
| 49 | |||
| 50 | static struct mv_sata_platform_data guruplug_sata_data = { | ||
| 51 | .n_ports = 1, | ||
| 52 | }; | ||
| 53 | |||
| 54 | static struct mvsdio_platform_data guruplug_mvsdio_data = { | ||
| 55 | /* unfortunately the CD signal has not been connected */ | ||
| 56 | .gpio_card_detect = -1, | ||
| 57 | .gpio_write_protect = -1, | ||
| 58 | }; | ||
| 59 | |||
| 60 | static struct gpio_led guruplug_led_pins[] = { | ||
| 61 | { | ||
| 62 | .name = "guruplug:red:health", | ||
| 63 | .gpio = 46, | ||
| 64 | .active_low = 1, | ||
| 65 | }, | ||
| 66 | { | ||
| 67 | .name = "guruplug:green:health", | ||
| 68 | .gpio = 47, | ||
| 69 | .active_low = 1, | ||
| 70 | }, | ||
| 71 | { | ||
| 72 | .name = "guruplug:red:wmode", | ||
| 73 | .gpio = 48, | ||
| 74 | .active_low = 1, | ||
| 75 | }, | ||
| 76 | { | ||
| 77 | .name = "guruplug:green:wmode", | ||
| 78 | .gpio = 49, | ||
| 79 | .active_low = 1, | ||
| 80 | }, | ||
| 81 | }; | ||
| 82 | |||
| 83 | static struct gpio_led_platform_data guruplug_led_data = { | ||
| 84 | .leds = guruplug_led_pins, | ||
| 85 | .num_leds = ARRAY_SIZE(guruplug_led_pins), | ||
| 86 | }; | ||
| 87 | |||
| 88 | static struct platform_device guruplug_leds = { | ||
| 89 | .name = "leds-gpio", | ||
| 90 | .id = -1, | ||
| 91 | .dev = { | ||
| 92 | .platform_data = &guruplug_led_data, | ||
| 93 | } | ||
| 94 | }; | ||
| 95 | |||
| 96 | static unsigned int guruplug_mpp_config[] __initdata = { | ||
| 97 | MPP46_GPIO, /* M_RLED */ | ||
| 98 | MPP47_GPIO, /* M_GLED */ | ||
| 99 | MPP48_GPIO, /* B_RLED */ | ||
| 100 | MPP49_GPIO, /* B_GLED */ | ||
| 101 | 0 | ||
| 102 | }; | ||
| 103 | |||
| 104 | static void __init guruplug_init(void) | ||
| 105 | { | ||
| 106 | /* | ||
| 107 | * Basic setup. Needs to be called early. | ||
| 108 | */ | ||
| 109 | kirkwood_init(); | ||
| 110 | kirkwood_mpp_conf(guruplug_mpp_config); | ||
| 111 | |||
| 112 | kirkwood_uart0_init(); | ||
| 113 | kirkwood_nand_init(ARRAY_AND_SIZE(guruplug_nand_parts), 25); | ||
| 114 | |||
| 115 | kirkwood_ehci_init(); | ||
| 116 | kirkwood_ge00_init(&guruplug_ge00_data); | ||
| 117 | kirkwood_ge01_init(&guruplug_ge01_data); | ||
| 118 | kirkwood_sata_init(&guruplug_sata_data); | ||
| 119 | kirkwood_sdio_init(&guruplug_mvsdio_data); | ||
| 120 | |||
| 121 | platform_device_register(&guruplug_leds); | ||
| 122 | } | ||
| 123 | |||
| 124 | MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board") | ||
| 125 | /* Maintainer: Siddarth Gore <gores@marvell.com> */ | ||
| 126 | .atag_offset = 0x100, | ||
| 127 | .init_machine = guruplug_init, | ||
| 128 | .map_io = kirkwood_map_io, | ||
| 129 | .init_early = kirkwood_init_early, | ||
| 130 | .init_irq = kirkwood_init_irq, | ||
| 131 | .init_time = kirkwood_timer_init, | ||
| 132 | .restart = kirkwood_restart, | ||
| 133 | MACHINE_END | ||
diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c deleted file mode 100644 index ba384b992bef..000000000000 --- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c +++ /dev/null | |||
| @@ -1,172 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c | ||
| 3 | * | ||
| 4 | * Marvell 88F6281 GTW GE Board Setup | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/platform_device.h> | ||
| 14 | #include <linux/pci.h> | ||
| 15 | #include <linux/irq.h> | ||
| 16 | #include <linux/mtd/physmap.h> | ||
| 17 | #include <linux/timer.h> | ||
| 18 | #include <linux/mv643xx_eth.h> | ||
| 19 | #include <linux/ethtool.h> | ||
| 20 | #include <linux/gpio.h> | ||
| 21 | #include <linux/leds.h> | ||
| 22 | #include <linux/input.h> | ||
| 23 | #include <linux/gpio_keys.h> | ||
| 24 | #include <linux/spi/flash.h> | ||
| 25 | #include <linux/spi/spi.h> | ||
| 26 | #include <net/dsa.h> | ||
| 27 | #include <asm/mach-types.h> | ||
| 28 | #include <asm/mach/arch.h> | ||
| 29 | #include <asm/mach/pci.h> | ||
| 30 | #include <mach/kirkwood.h> | ||
| 31 | #include "common.h" | ||
| 32 | #include "mpp.h" | ||
| 33 | |||
| 34 | static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = { | ||
| 35 | .phy_addr = MV643XX_ETH_PHY_NONE, | ||
| 36 | .speed = SPEED_1000, | ||
| 37 | .duplex = DUPLEX_FULL, | ||
| 38 | }; | ||
| 39 | |||
| 40 | static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = { | ||
| 41 | .port_names[0] = "lan1", | ||
| 42 | .port_names[1] = "lan2", | ||
| 43 | .port_names[2] = "lan3", | ||
| 44 | .port_names[3] = "lan4", | ||
| 45 | .port_names[4] = "wan", | ||
| 46 | .port_names[5] = "cpu", | ||
| 47 | }; | ||
| 48 | |||
| 49 | static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = { | ||
| 50 | .nr_chips = 1, | ||
| 51 | .chip = &mv88f6281gtw_ge_switch_chip_data, | ||
| 52 | }; | ||
| 53 | |||
| 54 | static const struct flash_platform_data mv88f6281gtw_ge_spi_slave_data = { | ||
| 55 | .type = "mx25l12805d", | ||
| 56 | }; | ||
| 57 | |||
| 58 | static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info[] = { | ||
| 59 | { | ||
| 60 | .modalias = "m25p80", | ||
| 61 | .platform_data = &mv88f6281gtw_ge_spi_slave_data, | ||
| 62 | .irq = -1, | ||
| 63 | .max_speed_hz = 50000000, | ||
| 64 | .bus_num = 0, | ||
| 65 | .chip_select = 0, | ||
| 66 | }, | ||
| 67 | }; | ||
| 68 | |||
| 69 | static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = { | ||
| 70 | { | ||
| 71 | .code = KEY_RESTART, | ||
| 72 | .gpio = 47, | ||
| 73 | .desc = "SWR Button", | ||
| 74 | .active_low = 1, | ||
| 75 | }, { | ||
| 76 | .code = KEY_WPS_BUTTON, | ||
| 77 | .gpio = 46, | ||
| 78 | .desc = "WPS Button", | ||
| 79 | .active_low = 1, | ||
| 80 | }, | ||
| 81 | }; | ||
| 82 | |||
| 83 | static struct gpio_keys_platform_data mv88f6281gtw_ge_button_data = { | ||
| 84 | .buttons = mv88f6281gtw_ge_button_pins, | ||
| 85 | .nbuttons = ARRAY_SIZE(mv88f6281gtw_ge_button_pins), | ||
| 86 | }; | ||
| 87 | |||
| 88 | static struct platform_device mv88f6281gtw_ge_buttons = { | ||
| 89 | .name = "gpio-keys", | ||
| 90 | .id = -1, | ||
| 91 | .num_resources = 0, | ||
| 92 | .dev = { | ||
| 93 | .platform_data = &mv88f6281gtw_ge_button_data, | ||
| 94 | }, | ||
| 95 | }; | ||
| 96 | |||
| 97 | static struct gpio_led mv88f6281gtw_ge_led_pins[] = { | ||
| 98 | { | ||
| 99 | .name = "gtw:green:Status", | ||
| 100 | .gpio = 20, | ||
| 101 | .active_low = 0, | ||
| 102 | }, { | ||
| 103 | .name = "gtw:red:Status", | ||
| 104 | .gpio = 21, | ||
| 105 | .active_low = 0, | ||
| 106 | }, { | ||
| 107 | .name = "gtw:green:USB", | ||
| 108 | .gpio = 12, | ||
| 109 | .active_low = 0, | ||
| 110 | }, | ||
| 111 | }; | ||
| 112 | |||
| 113 | static struct gpio_led_platform_data mv88f6281gtw_ge_led_data = { | ||
| 114 | .leds = mv88f6281gtw_ge_led_pins, | ||
| 115 | .num_leds = ARRAY_SIZE(mv88f6281gtw_ge_led_pins), | ||
| 116 | }; | ||
| 117 | |||
| 118 | static struct platform_device mv88f6281gtw_ge_leds = { | ||
| 119 | .name = "leds-gpio", | ||
| 120 | .id = -1, | ||
| 121 | .dev = { | ||
| 122 | .platform_data = &mv88f6281gtw_ge_led_data, | ||
| 123 | }, | ||
| 124 | }; | ||
| 125 | |||
| 126 | static unsigned int mv88f6281gtw_ge_mpp_config[] __initdata = { | ||
| 127 | MPP12_GPO, /* Status#_USB pin */ | ||
| 128 | MPP20_GPIO, /* Status#_GLED pin */ | ||
| 129 | MPP21_GPIO, /* Status#_RLED pin */ | ||
| 130 | MPP46_GPIO, /* WPS_Switch pin */ | ||
| 131 | MPP47_GPIO, /* SW_Init pin */ | ||
| 132 | 0 | ||
| 133 | }; | ||
| 134 | |||
| 135 | static void __init mv88f6281gtw_ge_init(void) | ||
| 136 | { | ||
| 137 | /* | ||
| 138 | * Basic setup. Needs to be called early. | ||
| 139 | */ | ||
| 140 | kirkwood_init(); | ||
| 141 | kirkwood_mpp_conf(mv88f6281gtw_ge_mpp_config); | ||
| 142 | |||
| 143 | kirkwood_ehci_init(); | ||
| 144 | kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data); | ||
| 145 | kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ); | ||
| 146 | spi_register_board_info(mv88f6281gtw_ge_spi_slave_info, | ||
| 147 | ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info)); | ||
| 148 | kirkwood_spi_init(); | ||
| 149 | kirkwood_uart0_init(); | ||
| 150 | platform_device_register(&mv88f6281gtw_ge_leds); | ||
| 151 | platform_device_register(&mv88f6281gtw_ge_buttons); | ||
| 152 | } | ||
| 153 | |||
| 154 | static int __init mv88f6281gtw_ge_pci_init(void) | ||
| 155 | { | ||
| 156 | if (machine_is_mv88f6281gtw_ge()) | ||
| 157 | kirkwood_pcie_init(KW_PCIE0); | ||
| 158 | |||
| 159 | return 0; | ||
| 160 | } | ||
| 161 | subsys_initcall(mv88f6281gtw_ge_pci_init); | ||
| 162 | |||
| 163 | MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board") | ||
| 164 | /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */ | ||
| 165 | .atag_offset = 0x100, | ||
| 166 | .init_machine = mv88f6281gtw_ge_init, | ||
| 167 | .map_io = kirkwood_map_io, | ||
| 168 | .init_early = kirkwood_init_early, | ||
| 169 | .init_irq = kirkwood_init_irq, | ||
| 170 | .init_time = kirkwood_timer_init, | ||
| 171 | .restart = kirkwood_restart, | ||
| 172 | MACHINE_END | ||
diff --git a/arch/arm/mach-kirkwood/netspace_v2-setup.c b/arch/arm/mach-kirkwood/netspace_v2-setup.c deleted file mode 100644 index 3b706611da8e..000000000000 --- a/arch/arm/mach-kirkwood/netspace_v2-setup.c +++ /dev/null | |||
| @@ -1,293 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/netspace_v2-setup.c | ||
| 3 | * | ||
| 4 | * LaCie Network Space v2 board setup | ||
| 5 | * | ||
| 6 | * Copyright (C) 2009 Simon Guinot <sguinot@lacie.com> | ||
| 7 | * Copyright (C) 2009 Benoît Canet <benoit.canet@gmail.com> | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License as published by | ||
| 11 | * the Free Software Foundation; either version 2 of the License, or | ||
| 12 | * (at your option) any later version. | ||
| 13 | * | ||
| 14 | * This program is distributed in the hope that it will be useful, | ||
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | * GNU General Public License for more details. | ||
| 18 | * | ||
| 19 | * You should have received a copy of the GNU General Public License | ||
| 20 | * along with this program; if not, write to the Free Software | ||
| 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <linux/kernel.h> | ||
| 25 | #include <linux/init.h> | ||
| 26 | #include <linux/platform_device.h> | ||
| 27 | #include <linux/ata_platform.h> | ||
| 28 | #include <linux/mv643xx_eth.h> | ||
| 29 | #include <linux/input.h> | ||
| 30 | #include <linux/gpio.h> | ||
| 31 | #include <linux/gpio_keys.h> | ||
| 32 | #include <linux/leds.h> | ||
| 33 | #include <linux/gpio-fan.h> | ||
| 34 | #include <asm/mach-types.h> | ||
| 35 | #include <asm/mach/arch.h> | ||
| 36 | #include <mach/kirkwood.h> | ||
| 37 | #include <linux/platform_data/leds-kirkwood-ns2.h> | ||
| 38 | #include "common.h" | ||
| 39 | #include "mpp.h" | ||
| 40 | #include "lacie_v2-common.h" | ||
| 41 | |||
| 42 | /***************************************************************************** | ||
| 43 | * Ethernet | ||
| 44 | ****************************************************************************/ | ||
| 45 | |||
| 46 | static struct mv643xx_eth_platform_data netspace_v2_ge00_data = { | ||
| 47 | .phy_addr = MV643XX_ETH_PHY_ADDR(8), | ||
| 48 | }; | ||
| 49 | |||
| 50 | /***************************************************************************** | ||
| 51 | * SATA | ||
| 52 | ****************************************************************************/ | ||
| 53 | |||
| 54 | static struct mv_sata_platform_data netspace_v2_sata_data = { | ||
| 55 | .n_ports = 2, | ||
| 56 | }; | ||
| 57 | |||
| 58 | /***************************************************************************** | ||
| 59 | * GPIO keys | ||
| 60 | ****************************************************************************/ | ||
| 61 | |||
| 62 | #define NETSPACE_V2_PUSH_BUTTON 32 | ||
| 63 | |||
| 64 | static struct gpio_keys_button netspace_v2_buttons[] = { | ||
| 65 | [0] = { | ||
| 66 | .code = KEY_POWER, | ||
| 67 | .gpio = NETSPACE_V2_PUSH_BUTTON, | ||
| 68 | .desc = "Power push button", | ||
| 69 | .active_low = 0, | ||
| 70 | }, | ||
| 71 | }; | ||
| 72 | |||
| 73 | static struct gpio_keys_platform_data netspace_v2_button_data = { | ||
| 74 | .buttons = netspace_v2_buttons, | ||
| 75 | .nbuttons = ARRAY_SIZE(netspace_v2_buttons), | ||
| 76 | }; | ||
| 77 | |||
| 78 | static struct platform_device netspace_v2_gpio_buttons = { | ||
| 79 | .name = "gpio-keys", | ||
| 80 | .id = -1, | ||
| 81 | .dev = { | ||
| 82 | .platform_data = &netspace_v2_button_data, | ||
| 83 | }, | ||
| 84 | }; | ||
| 85 | |||
| 86 | /***************************************************************************** | ||
| 87 | * GPIO LEDs | ||
| 88 | ****************************************************************************/ | ||
| 89 | |||
| 90 | #define NETSPACE_V2_GPIO_RED_LED 12 | ||
| 91 | |||
| 92 | static struct gpio_led netspace_v2_gpio_led_pins[] = { | ||
| 93 | { | ||
| 94 | .name = "ns_v2:red:fail", | ||
| 95 | .gpio = NETSPACE_V2_GPIO_RED_LED, | ||
| 96 | }, | ||
| 97 | }; | ||
| 98 | |||
| 99 | static struct gpio_led_platform_data netspace_v2_gpio_leds_data = { | ||
| 100 | .num_leds = ARRAY_SIZE(netspace_v2_gpio_led_pins), | ||
| 101 | .leds = netspace_v2_gpio_led_pins, | ||
| 102 | }; | ||
| 103 | |||
| 104 | static struct platform_device netspace_v2_gpio_leds = { | ||
| 105 | .name = "leds-gpio", | ||
| 106 | .id = -1, | ||
| 107 | .dev = { | ||
| 108 | .platform_data = &netspace_v2_gpio_leds_data, | ||
| 109 | }, | ||
| 110 | }; | ||
| 111 | |||
| 112 | /***************************************************************************** | ||
| 113 | * Dual-GPIO CPLD LEDs | ||
| 114 | ****************************************************************************/ | ||
| 115 | |||
| 116 | #define NETSPACE_V2_GPIO_BLUE_LED_SLOW 29 | ||
| 117 | #define NETSPACE_V2_GPIO_BLUE_LED_CMD 30 | ||
| 118 | |||
| 119 | static struct ns2_led netspace_v2_led_pins[] = { | ||
| 120 | { | ||
| 121 | .name = "ns_v2:blue:sata", | ||
| 122 | .cmd = NETSPACE_V2_GPIO_BLUE_LED_CMD, | ||
| 123 | .slow = NETSPACE_V2_GPIO_BLUE_LED_SLOW, | ||
| 124 | }, | ||
| 125 | }; | ||
| 126 | |||
| 127 | static struct ns2_led_platform_data netspace_v2_leds_data = { | ||
| 128 | .num_leds = ARRAY_SIZE(netspace_v2_led_pins), | ||
| 129 | .leds = netspace_v2_led_pins, | ||
| 130 | }; | ||
| 131 | |||
| 132 | static struct platform_device netspace_v2_leds = { | ||
| 133 | .name = "leds-ns2", | ||
| 134 | .id = -1, | ||
| 135 | .dev = { | ||
| 136 | .platform_data = &netspace_v2_leds_data, | ||
| 137 | }, | ||
| 138 | }; | ||
| 139 | |||
| 140 | /***************************************************************************** | ||
| 141 | * GPIO fan | ||
| 142 | ****************************************************************************/ | ||
| 143 | |||
| 144 | /* Designed for fan 40x40x16: ADDA AD0412LB-D50 6000rpm@12v */ | ||
| 145 | static struct gpio_fan_speed netspace_max_v2_fan_speed[] = { | ||
| 146 | { 0, 0 }, | ||
| 147 | { 1500, 15 }, | ||
| 148 | { 1700, 14 }, | ||
| 149 | { 1800, 13 }, | ||
| 150 | { 2100, 12 }, | ||
| 151 | { 3100, 11 }, | ||
| 152 | { 3300, 10 }, | ||
| 153 | { 4300, 9 }, | ||
| 154 | { 5500, 8 }, | ||
| 155 | }; | ||
| 156 | |||
| 157 | static unsigned netspace_max_v2_fan_ctrl[] = { 22, 7, 33, 23 }; | ||
| 158 | |||
| 159 | static struct gpio_fan_alarm netspace_max_v2_fan_alarm = { | ||
| 160 | .gpio = 25, | ||
| 161 | .active_low = 1, | ||
| 162 | }; | ||
| 163 | |||
| 164 | static struct gpio_fan_platform_data netspace_max_v2_fan_data = { | ||
| 165 | .num_ctrl = ARRAY_SIZE(netspace_max_v2_fan_ctrl), | ||
| 166 | .ctrl = netspace_max_v2_fan_ctrl, | ||
| 167 | .alarm = &netspace_max_v2_fan_alarm, | ||
| 168 | .num_speed = ARRAY_SIZE(netspace_max_v2_fan_speed), | ||
| 169 | .speed = netspace_max_v2_fan_speed, | ||
| 170 | }; | ||
| 171 | |||
| 172 | static struct platform_device netspace_max_v2_gpio_fan = { | ||
| 173 | .name = "gpio-fan", | ||
| 174 | .id = -1, | ||
| 175 | .dev = { | ||
| 176 | .platform_data = &netspace_max_v2_fan_data, | ||
| 177 | }, | ||
| 178 | }; | ||
| 179 | |||
| 180 | /***************************************************************************** | ||
| 181 | * General Setup | ||
| 182 | ****************************************************************************/ | ||
| 183 | |||
| 184 | static unsigned int netspace_v2_mpp_config[] __initdata = { | ||
| 185 | MPP0_SPI_SCn, | ||
| 186 | MPP1_SPI_MOSI, | ||
| 187 | MPP2_SPI_SCK, | ||
| 188 | MPP3_SPI_MISO, | ||
| 189 | MPP4_NF_IO6, | ||
| 190 | MPP5_NF_IO7, | ||
| 191 | MPP6_SYSRST_OUTn, | ||
| 192 | MPP7_GPO, /* Fan speed (bit 1) */ | ||
| 193 | MPP8_TW0_SDA, | ||
| 194 | MPP9_TW0_SCK, | ||
| 195 | MPP10_UART0_TXD, | ||
| 196 | MPP11_UART0_RXD, | ||
| 197 | MPP12_GPO, /* Red led */ | ||
| 198 | MPP14_GPIO, /* USB fuse */ | ||
| 199 | MPP16_GPIO, /* SATA 0 power */ | ||
| 200 | MPP17_GPIO, /* SATA 1 power */ | ||
| 201 | MPP18_NF_IO0, | ||
| 202 | MPP19_NF_IO1, | ||
| 203 | MPP20_SATA1_ACTn, | ||
| 204 | MPP21_SATA0_ACTn, | ||
| 205 | MPP22_GPIO, /* Fan speed (bit 0) */ | ||
| 206 | MPP23_GPIO, /* Fan power */ | ||
| 207 | MPP24_GPIO, /* USB mode select */ | ||
| 208 | MPP25_GPIO, /* Fan rotation fail */ | ||
| 209 | MPP26_GPIO, /* USB device vbus */ | ||
| 210 | MPP28_GPIO, /* USB enable host vbus */ | ||
| 211 | MPP29_GPIO, /* Blue led (slow register) */ | ||
| 212 | MPP30_GPIO, /* Blue led (command register) */ | ||
| 213 | MPP31_GPIO, /* Board power off */ | ||
| 214 | MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */ | ||
| 215 | MPP33_GPO, /* Fan speed (bit 2) */ | ||
| 216 | 0 | ||
| 217 | }; | ||
| 218 | |||
| 219 | #define NETSPACE_V2_GPIO_POWER_OFF 31 | ||
| 220 | |||
| 221 | static void netspace_v2_power_off(void) | ||
| 222 | { | ||
| 223 | gpio_set_value(NETSPACE_V2_GPIO_POWER_OFF, 1); | ||
| 224 | } | ||
| 225 | |||
| 226 | static void __init netspace_v2_init(void) | ||
| 227 | { | ||
| 228 | /* | ||
| 229 | * Basic setup. Needs to be called early. | ||
| 230 | */ | ||
| 231 | kirkwood_init(); | ||
| 232 | kirkwood_mpp_conf(netspace_v2_mpp_config); | ||
| 233 | |||
| 234 | if (machine_is_netspace_max_v2()) | ||
| 235 | lacie_v2_hdd_power_init(2); | ||
| 236 | else | ||
| 237 | lacie_v2_hdd_power_init(1); | ||
| 238 | |||
| 239 | kirkwood_ehci_init(); | ||
| 240 | kirkwood_ge00_init(&netspace_v2_ge00_data); | ||
| 241 | kirkwood_sata_init(&netspace_v2_sata_data); | ||
| 242 | kirkwood_uart0_init(); | ||
| 243 | lacie_v2_register_flash(); | ||
| 244 | lacie_v2_register_i2c_devices(); | ||
| 245 | |||
| 246 | platform_device_register(&netspace_v2_leds); | ||
| 247 | platform_device_register(&netspace_v2_gpio_leds); | ||
| 248 | platform_device_register(&netspace_v2_gpio_buttons); | ||
| 249 | if (machine_is_netspace_max_v2()) | ||
| 250 | platform_device_register(&netspace_max_v2_gpio_fan); | ||
| 251 | |||
| 252 | if (gpio_request(NETSPACE_V2_GPIO_POWER_OFF, "power-off") == 0 && | ||
| 253 | gpio_direction_output(NETSPACE_V2_GPIO_POWER_OFF, 0) == 0) | ||
| 254 | pm_power_off = netspace_v2_power_off; | ||
| 255 | else | ||
| 256 | pr_err("netspace_v2: failed to configure power-off GPIO\n"); | ||
| 257 | } | ||
| 258 | |||
| 259 | #ifdef CONFIG_MACH_NETSPACE_V2 | ||
| 260 | MACHINE_START(NETSPACE_V2, "LaCie Network Space v2") | ||
| 261 | .atag_offset = 0x100, | ||
| 262 | .init_machine = netspace_v2_init, | ||
| 263 | .map_io = kirkwood_map_io, | ||
| 264 | .init_early = kirkwood_init_early, | ||
| 265 | .init_irq = kirkwood_init_irq, | ||
| 266 | .init_time = kirkwood_timer_init, | ||
| 267 | .restart = kirkwood_restart, | ||
| 268 | MACHINE_END | ||
| 269 | #endif | ||
| 270 | |||
| 271 | #ifdef CONFIG_MACH_INETSPACE_V2 | ||
| 272 | MACHINE_START(INETSPACE_V2, "LaCie Internet Space v2") | ||
| 273 | .atag_offset = 0x100, | ||
| 274 | .init_machine = netspace_v2_init, | ||
| 275 | .map_io = kirkwood_map_io, | ||
| 276 | .init_early = kirkwood_init_early, | ||
| 277 | .init_irq = kirkwood_init_irq, | ||
| 278 | .init_time = kirkwood_timer_init, | ||
| 279 | .restart = kirkwood_restart, | ||
| 280 | MACHINE_END | ||
| 281 | #endif | ||
| 282 | |||
| 283 | #ifdef CONFIG_MACH_NETSPACE_MAX_V2 | ||
| 284 | MACHINE_START(NETSPACE_MAX_V2, "LaCie Network Space Max v2") | ||
| 285 | .atag_offset = 0x100, | ||
| 286 | .init_machine = netspace_v2_init, | ||
| 287 | .map_io = kirkwood_map_io, | ||
| 288 | .init_early = kirkwood_init_early, | ||
| 289 | .init_irq = kirkwood_init_irq, | ||
| 290 | .init_time = kirkwood_timer_init, | ||
| 291 | .restart = kirkwood_restart, | ||
| 292 | MACHINE_END | ||
| 293 | #endif | ||
diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c index 6a6eb548307d..e5cf84103583 100644 --- a/arch/arm/mach-kirkwood/openrd-setup.c +++ b/arch/arm/mach-kirkwood/openrd-setup.c | |||
| @@ -158,7 +158,8 @@ static void __init openrd_init(void) | |||
| 158 | kirkwood_mpp_conf(openrd_mpp_config); | 158 | kirkwood_mpp_conf(openrd_mpp_config); |
| 159 | 159 | ||
| 160 | kirkwood_uart0_init(); | 160 | kirkwood_uart0_init(); |
| 161 | kirkwood_nand_init(ARRAY_AND_SIZE(openrd_nand_parts), 25); | 161 | kirkwood_nand_init(openrd_nand_parts, ARRAY_SIZE(openrd_nand_parts), |
| 162 | 25); | ||
| 162 | 163 | ||
| 163 | kirkwood_ehci_init(); | 164 | kirkwood_ehci_init(); |
| 164 | 165 | ||
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c index d24223166e06..5154bd2a3ad3 100644 --- a/arch/arm/mach-kirkwood/rd88f6281-setup.c +++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c | |||
| @@ -87,7 +87,9 @@ static void __init rd88f6281_init(void) | |||
| 87 | kirkwood_init(); | 87 | kirkwood_init(); |
| 88 | kirkwood_mpp_conf(rd88f6281_mpp_config); | 88 | kirkwood_mpp_conf(rd88f6281_mpp_config); |
| 89 | 89 | ||
| 90 | kirkwood_nand_init(ARRAY_AND_SIZE(rd88f6281_nand_parts), 25); | 90 | kirkwood_nand_init(rd88f6281_nand_parts, |
| 91 | ARRAY_SIZE(rd88f6281_nand_parts), | ||
| 92 | 25); | ||
| 91 | kirkwood_ehci_init(); | 93 | kirkwood_ehci_init(); |
| 92 | 94 | ||
| 93 | kirkwood_ge00_init(&rd88f6281_ge00_data); | 95 | kirkwood_ge00_init(&rd88f6281_ge00_data); |
diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c deleted file mode 100644 index 55b68fa39f45..000000000000 --- a/arch/arm/mach-kirkwood/sheevaplug-setup.c +++ /dev/null | |||
| @@ -1,161 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/mach-kirkwood/sheevaplug-setup.c | ||
| 3 | * | ||
| 4 | * Marvell SheevaPlug Reference Board Setup | ||
| 5 | * | ||
| 6 | * This file is licensed under the terms of the GNU General Public | ||
| 7 | * License version 2. This program is licensed "as is" without any | ||
| 8 | * warranty of any kind, whether express or implied. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #include <linux/kernel.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/platform_device.h> | ||
| 14 | #include <linux/ata_platform.h> | ||
| 15 | #include <linux/mtd/partitions.h> | ||
| 16 | #include <linux/mv643xx_eth.h> | ||
| 17 | #include <linux/gpio.h> | ||
| 18 | #include <linux/leds.h> | ||
| 19 | #include <asm/mach-types.h> | ||
| 20 | #include <asm/mach/arch.h> | ||
| 21 | #include <mach/kirkwood.h> | ||
| 22 | #include <linux/platform_data/mmc-mvsdio.h> | ||
| 23 | #include "common.h" | ||
| 24 | #include "mpp.h" | ||
| 25 | |||
| 26 | static struct mtd_partition sheevaplug_nand_parts[] = { | ||
| 27 | { | ||
| 28 | .name = "u-boot", | ||
| 29 | .offset = 0, | ||
| 30 | .size = SZ_1M | ||
| 31 | }, { | ||
| 32 | .name = "uImage", | ||
| 33 | .offset = MTDPART_OFS_NXTBLK, | ||
| 34 | .size = SZ_4M | ||
| 35 | }, { | ||
| 36 | .name = "root", | ||
| 37 | .offset = MTDPART_OFS_NXTBLK, | ||
| 38 | .size = MTDPART_SIZ_FULL | ||
| 39 | }, | ||
| 40 | }; | ||
| 41 | |||
| 42 | static struct mv643xx_eth_platform_data sheevaplug_ge00_data = { | ||
| 43 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
| 44 | }; | ||
| 45 | |||
| 46 | static struct mv_sata_platform_data sheeva_esata_sata_data = { | ||
| 47 | .n_ports = 2, | ||
| 48 | }; | ||
| 49 | |||
| 50 | static struct mvsdio_platform_data sheevaplug_mvsdio_data = { | ||
| 51 | /* unfortunately the CD signal has not been connected */ | ||
| 52 | }; | ||
| 53 | |||
| 54 | static struct mvsdio_platform_data sheeva_esata_mvsdio_data = { | ||
| 55 | .gpio_write_protect = 44, /* MPP44 used as SD write protect */ | ||
| 56 | .gpio_card_detect = 47, /* MPP47 used as SD card detect */ | ||
| 57 | }; | ||
| 58 | |||
| 59 | static struct gpio_led sheevaplug_led_pins[] = { | ||
| 60 | { | ||
| 61 | .name = "plug:red:misc", | ||
| 62 | .default_trigger = "none", | ||
| 63 | .gpio = 46, | ||
| 64 | .active_low = 1, | ||
| 65 | }, | ||
| 66 | { | ||
| 67 | .name = "plug:green:health", | ||
| 68 | .default_trigger = "default-on", | ||
| 69 | .gpio = 49, | ||
| 70 | .active_low = 1, | ||
| 71 | }, | ||
| 72 | }; | ||
| 73 | |||
| 74 | static struct gpio_led_platform_data sheevaplug_led_data = { | ||
| 75 | .leds = sheevaplug_led_pins, | ||
| 76 | .num_leds = ARRAY_SIZE(sheevaplug_led_pins), | ||
| 77 | }; | ||
| 78 | |||
| 79 | static struct platform_device sheevaplug_leds = { | ||
| 80 | .name = "leds-gpio", | ||
| 81 | .id = -1, | ||
| 82 | .dev = { | ||
| 83 | .platform_data = &sheevaplug_led_data, | ||
| 84 | } | ||
| 85 | }; | ||
| 86 | |||
| 87 | static unsigned int sheevaplug_mpp_config[] __initdata = { | ||
| 88 | MPP29_GPIO, /* USB Power Enable */ | ||
| 89 | MPP46_GPIO, /* LED Red */ | ||
| 90 | MPP49_GPIO, /* LED */ | ||
| 91 | 0 | ||
| 92 | }; | ||
| 93 | |||
| 94 | static unsigned int sheeva_esata_mpp_config[] __initdata = { | ||
| 95 | MPP29_GPIO, /* USB Power Enable */ | ||
| 96 | MPP44_GPIO, /* SD Write Protect */ | ||
| 97 | MPP47_GPIO, /* SD Card Detect */ | ||
| 98 | MPP49_GPIO, /* LED Green */ | ||
| 99 | 0 | ||
| 100 | }; | ||
| 101 | |||
| 102 | static void __init sheevaplug_init(void) | ||
| 103 | { | ||
| 104 | /* | ||
| 105 | * Basic setup. Needs to be called early. | ||
| 106 | */ | ||
| 107 | kirkwood_init(); | ||
| 108 | |||
| 109 | /* setup gpio pin select */ | ||
| 110 | if (machine_is_esata_sheevaplug()) | ||
| 111 | kirkwood_mpp_conf(sheeva_esata_mpp_config); | ||
| 112 | else | ||
| 113 | kirkwood_mpp_conf(sheevaplug_mpp_config); | ||
| 114 | |||
| 115 | kirkwood_uart0_init(); | ||
| 116 | kirkwood_nand_init(ARRAY_AND_SIZE(sheevaplug_nand_parts), 25); | ||
| 117 | |||
| 118 | if (gpio_request(29, "USB Power Enable") != 0 || | ||
| 119 | gpio_direction_output(29, 1) != 0) | ||
| 120 | pr_err("can't set up GPIO 29 (USB Power Enable)\n"); | ||
| 121 | kirkwood_ehci_init(); | ||
| 122 | |||
| 123 | kirkwood_ge00_init(&sheevaplug_ge00_data); | ||
| 124 | |||
| 125 | /* honor lower power consumption for plugs with out eSATA */ | ||
| 126 | if (machine_is_esata_sheevaplug()) | ||
| 127 | kirkwood_sata_init(&sheeva_esata_sata_data); | ||
| 128 | |||
| 129 | /* enable sd wp and sd cd on plugs with esata */ | ||
| 130 | if (machine_is_esata_sheevaplug()) | ||
| 131 | kirkwood_sdio_init(&sheeva_esata_mvsdio_data); | ||
| 132 | else | ||
| 133 | kirkwood_sdio_init(&sheevaplug_mvsdio_data); | ||
| 134 | |||
| 135 | platform_device_register(&sheevaplug_leds); | ||
| 136 | } | ||
| 137 | |||
| 138 | #ifdef CONFIG_MACH_SHEEVAPLUG | ||
| 139 | MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board") | ||
| 140 | /* Maintainer: shadi Ammouri <shadi@marvell.com> */ | ||
| 141 | .atag_offset = 0x100, | ||
| 142 | .init_machine = sheevaplug_init, | ||
| 143 | .map_io = kirkwood_map_io, | ||
| 144 | .init_early = kirkwood_init_early, | ||
| 145 | .init_irq = kirkwood_init_irq, | ||
| 146 | .init_time = kirkwood_timer_init, | ||
| 147 | .restart = kirkwood_restart, | ||
| 148 | MACHINE_END | ||
| 149 | #endif | ||
| 150 | |||
| 151 | #ifdef CONFIG_MACH_ESATA_SHEEVAPLUG | ||
| 152 | MACHINE_START(ESATA_SHEEVAPLUG, "Marvell eSATA SheevaPlug Reference Board") | ||
| 153 | .atag_offset = 0x100, | ||
| 154 | .init_machine = sheevaplug_init, | ||
| 155 | .map_io = kirkwood_map_io, | ||
| 156 | .init_early = kirkwood_init_early, | ||
| 157 | .init_irq = kirkwood_init_irq, | ||
| 158 | .init_time = kirkwood_timer_init, | ||
| 159 | .restart = kirkwood_restart, | ||
| 160 | MACHINE_END | ||
| 161 | #endif | ||
diff --git a/arch/arm/mach-orion5x/edmini_v2-setup.c b/arch/arm/mach-orion5x/edmini_v2-setup.c index 0fc33c56cbb7..f66c1b2ee8c1 100644 --- a/arch/arm/mach-orion5x/edmini_v2-setup.c +++ b/arch/arm/mach-orion5x/edmini_v2-setup.c | |||
| @@ -23,8 +23,8 @@ | |||
| 23 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
| 24 | #include <linux/pci.h> | 24 | #include <linux/pci.h> |
| 25 | #include <linux/irq.h> | 25 | #include <linux/irq.h> |
| 26 | #include <linux/mbus.h> | ||
| 26 | #include <linux/mtd/physmap.h> | 27 | #include <linux/mtd/physmap.h> |
| 27 | #include <linux/mv643xx_eth.h> | ||
| 28 | #include <linux/leds.h> | 28 | #include <linux/leds.h> |
| 29 | #include <linux/gpio_keys.h> | 29 | #include <linux/gpio_keys.h> |
| 30 | #include <linux/input.h> | 30 | #include <linux/input.h> |
| @@ -96,14 +96,6 @@ static struct platform_device edmini_v2_nor_flash = { | |||
| 96 | }; | 96 | }; |
| 97 | 97 | ||
| 98 | /***************************************************************************** | 98 | /***************************************************************************** |
| 99 | * Ethernet | ||
| 100 | ****************************************************************************/ | ||
| 101 | |||
| 102 | static struct mv643xx_eth_platform_data edmini_v2_eth_data = { | ||
| 103 | .phy_addr = 8, | ||
| 104 | }; | ||
| 105 | |||
| 106 | /***************************************************************************** | ||
| 107 | * RTC 5C372a on I2C bus | 99 | * RTC 5C372a on I2C bus |
| 108 | ****************************************************************************/ | 100 | ****************************************************************************/ |
| 109 | 101 | ||
| @@ -152,7 +144,6 @@ void __init edmini_v2_init(void) | |||
| 152 | * Configure peripherals. | 144 | * Configure peripherals. |
| 153 | */ | 145 | */ |
| 154 | orion5x_ehci0_init(); | 146 | orion5x_ehci0_init(); |
| 155 | orion5x_eth_init(&edmini_v2_eth_data); | ||
| 156 | 147 | ||
| 157 | mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, | 148 | mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, |
| 158 | ORION_MBUS_DEVBUS_BOOT_ATTR, | 149 | ORION_MBUS_DEVBUS_BOOT_ATTR, |
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig index 403c939ddf99..e817fde6729a 100644 --- a/arch/arm/mach-shmobile/Kconfig +++ b/arch/arm/mach-shmobile/Kconfig | |||
| @@ -162,6 +162,7 @@ config MACH_BOCKW | |||
| 162 | depends on ARCH_R8A7778 | 162 | depends on ARCH_R8A7778 |
| 163 | select ARCH_REQUIRE_GPIOLIB | 163 | select ARCH_REQUIRE_GPIOLIB |
| 164 | select RENESAS_INTC_IRQPIN | 164 | select RENESAS_INTC_IRQPIN |
| 165 | select REGULATOR_FIXED_VOLTAGE if REGULATOR | ||
| 165 | select USE_OF | 166 | select USE_OF |
| 166 | 167 | ||
| 167 | config MACH_MARZEN | 168 | config MACH_MARZEN |
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index c7540710906f..f6d64495c405 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
| @@ -41,6 +41,7 @@ | |||
| 41 | #include <linux/mmc/sh_mmcif.h> | 41 | #include <linux/mmc/sh_mmcif.h> |
| 42 | #include <linux/mmc/sh_mobile_sdhi.h> | 42 | #include <linux/mmc/sh_mobile_sdhi.h> |
| 43 | #include <linux/mfd/tmio.h> | 43 | #include <linux/mfd/tmio.h> |
| 44 | #include <linux/platform_data/bd6107.h> | ||
| 44 | #include <linux/sh_clk.h> | 45 | #include <linux/sh_clk.h> |
| 45 | #include <linux/irqchip/arm-gic.h> | 46 | #include <linux/irqchip/arm-gic.h> |
| 46 | #include <video/sh_mobile_lcdc.h> | 47 | #include <video/sh_mobile_lcdc.h> |
| @@ -291,47 +292,7 @@ static struct platform_device mipidsi0_device = { | |||
| 291 | }, | 292 | }, |
| 292 | }; | 293 | }; |
| 293 | 294 | ||
| 294 | static unsigned char lcd_backlight_seq[3][2] = { | 295 | /* LCDC0 and backlight */ |
| 295 | { 0x04, 0x07 }, | ||
| 296 | { 0x23, 0x80 }, | ||
| 297 | { 0x03, 0x01 }, | ||
| 298 | }; | ||
| 299 | |||
| 300 | static int lcd_backlight_set_brightness(int brightness) | ||
| 301 | { | ||
| 302 | struct i2c_adapter *adap; | ||
| 303 | struct i2c_msg msg; | ||
| 304 | unsigned int i; | ||
| 305 | int ret; | ||
| 306 | |||
| 307 | if (brightness == 0) { | ||
| 308 | /* Reset the chip */ | ||
| 309 | gpio_set_value(235, 0); | ||
| 310 | mdelay(24); | ||
| 311 | gpio_set_value(235, 1); | ||
| 312 | return 0; | ||
| 313 | } | ||
| 314 | |||
| 315 | adap = i2c_get_adapter(1); | ||
| 316 | if (adap == NULL) | ||
| 317 | return -ENODEV; | ||
| 318 | |||
| 319 | for (i = 0; i < ARRAY_SIZE(lcd_backlight_seq); i++) { | ||
| 320 | msg.addr = 0x6d; | ||
| 321 | msg.buf = &lcd_backlight_seq[i][0]; | ||
| 322 | msg.len = 2; | ||
| 323 | msg.flags = 0; | ||
| 324 | |||
| 325 | ret = i2c_transfer(adap, &msg, 1); | ||
| 326 | if (ret < 0) | ||
| 327 | break; | ||
| 328 | } | ||
| 329 | |||
| 330 | i2c_put_adapter(adap); | ||
| 331 | return ret < 0 ? ret : 0; | ||
| 332 | } | ||
| 333 | |||
| 334 | /* LCDC0 */ | ||
| 335 | static const struct fb_videomode lcdc0_modes[] = { | 296 | static const struct fb_videomode lcdc0_modes[] = { |
| 336 | { | 297 | { |
| 337 | .name = "R63302(QHD)", | 298 | .name = "R63302(QHD)", |
| @@ -361,11 +322,6 @@ static struct sh_mobile_lcdc_info lcdc0_info = { | |||
| 361 | .width = 44, | 322 | .width = 44, |
| 362 | .height = 79, | 323 | .height = 79, |
| 363 | }, | 324 | }, |
| 364 | .bl_info = { | ||
| 365 | .name = "sh_mobile_lcdc_bl", | ||
| 366 | .max_brightness = 1, | ||
| 367 | .set_brightness = lcd_backlight_set_brightness, | ||
| 368 | }, | ||
| 369 | .tx_dev = &mipidsi0_device, | 325 | .tx_dev = &mipidsi0_device, |
| 370 | } | 326 | } |
| 371 | }; | 327 | }; |
| @@ -394,6 +350,17 @@ static struct platform_device lcdc0_device = { | |||
| 394 | }, | 350 | }, |
| 395 | }; | 351 | }; |
| 396 | 352 | ||
| 353 | static struct bd6107_platform_data backlight_data = { | ||
| 354 | .fbdev = &lcdc0_device.dev, | ||
| 355 | .reset = 235, | ||
| 356 | .def_value = 0, | ||
| 357 | }; | ||
| 358 | |||
| 359 | static struct i2c_board_info backlight_board_info = { | ||
| 360 | I2C_BOARD_INFO("bd6107", 0x6d), | ||
| 361 | .platform_data = &backlight_data, | ||
| 362 | }; | ||
| 363 | |||
| 397 | /* Fixed 2.8V regulators to be used by SDHI0 */ | 364 | /* Fixed 2.8V regulators to be used by SDHI0 */ |
| 398 | static struct regulator_consumer_supply fixed2v8_power_consumers[] = | 365 | static struct regulator_consumer_supply fixed2v8_power_consumers[] = |
| 399 | { | 366 | { |
| @@ -648,15 +615,15 @@ static void __init ag5evm_init(void) | |||
| 648 | gpio_set_value(217, 1); | 615 | gpio_set_value(217, 1); |
| 649 | mdelay(100); | 616 | mdelay(100); |
| 650 | 617 | ||
| 651 | /* LCD backlight controller */ | ||
| 652 | gpio_request_one(235, GPIOF_OUT_INIT_LOW, NULL); /* RESET */ | ||
| 653 | lcd_backlight_set_brightness(0); | ||
| 654 | 618 | ||
| 655 | #ifdef CONFIG_CACHE_L2X0 | 619 | #ifdef CONFIG_CACHE_L2X0 |
| 656 | /* Shared attribute override enable, 64K*8way */ | 620 | /* Shared attribute override enable, 64K*8way */ |
| 657 | l2x0_init(IOMEM(0xf0100000), 0x00460000, 0xc2000fff); | 621 | l2x0_init(IOMEM(0xf0100000), 0x00460000, 0xc2000fff); |
| 658 | #endif | 622 | #endif |
| 659 | sh73a0_add_standard_devices(); | 623 | sh73a0_add_standard_devices(); |
| 624 | |||
| 625 | i2c_register_board_info(1, &backlight_board_info, 1); | ||
| 626 | |||
| 660 | platform_add_devices(ag5evm_devices, ARRAY_SIZE(ag5evm_devices)); | 627 | platform_add_devices(ag5evm_devices, ARRAY_SIZE(ag5evm_devices)); |
| 661 | } | 628 | } |
| 662 | 629 | ||
diff --git a/arch/arm/mach-shmobile/board-ape6evm.c b/arch/arm/mach-shmobile/board-ape6evm.c index af6dd39d3758..38c6c733fabf 100644 --- a/arch/arm/mach-shmobile/board-ape6evm.c +++ b/arch/arm/mach-shmobile/board-ape6evm.c | |||
| @@ -19,8 +19,14 @@ | |||
| 19 | */ | 19 | */ |
| 20 | 20 | ||
| 21 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
| 22 | #include <linux/gpio_keys.h> | ||
| 23 | #include <linux/input.h> | ||
| 22 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
| 23 | #include <linux/kernel.h> | 25 | #include <linux/kernel.h> |
| 26 | #include <linux/mfd/tmio.h> | ||
| 27 | #include <linux/mmc/host.h> | ||
| 28 | #include <linux/mmc/sh_mmcif.h> | ||
| 29 | #include <linux/mmc/sh_mobile_sdhi.h> | ||
| 24 | #include <linux/pinctrl/machine.h> | 30 | #include <linux/pinctrl/machine.h> |
| 25 | #include <linux/platform_device.h> | 31 | #include <linux/platform_device.h> |
| 26 | #include <linux/regulator/fixed.h> | 32 | #include <linux/regulator/fixed.h> |
| @@ -33,6 +39,58 @@ | |||
| 33 | #include <asm/mach-types.h> | 39 | #include <asm/mach-types.h> |
| 34 | #include <asm/mach/arch.h> | 40 | #include <asm/mach/arch.h> |
| 35 | 41 | ||
| 42 | /* LEDS */ | ||
| 43 | static struct gpio_led ape6evm_leds[] = { | ||
| 44 | { | ||
| 45 | .name = "gnss-en", | ||
| 46 | .gpio = 28, | ||
| 47 | .default_state = LEDS_GPIO_DEFSTATE_OFF, | ||
| 48 | }, { | ||
| 49 | .name = "nfc-nrst", | ||
| 50 | .gpio = 126, | ||
| 51 | .default_state = LEDS_GPIO_DEFSTATE_OFF, | ||
| 52 | }, { | ||
| 53 | .name = "gnss-nrst", | ||
| 54 | .gpio = 132, | ||
| 55 | .default_state = LEDS_GPIO_DEFSTATE_OFF, | ||
| 56 | }, { | ||
| 57 | .name = "bt-wakeup", | ||
| 58 | .gpio = 232, | ||
| 59 | .default_state = LEDS_GPIO_DEFSTATE_OFF, | ||
| 60 | }, { | ||
| 61 | .name = "strobe", | ||
| 62 | .gpio = 250, | ||
| 63 | .default_state = LEDS_GPIO_DEFSTATE_OFF, | ||
| 64 | }, { | ||
| 65 | .name = "bbresetout", | ||
| 66 | .gpio = 288, | ||
| 67 | .default_state = LEDS_GPIO_DEFSTATE_OFF, | ||
| 68 | }, | ||
| 69 | }; | ||
| 70 | |||
| 71 | static __initdata struct gpio_led_platform_data ape6evm_leds_pdata = { | ||
| 72 | .leds = ape6evm_leds, | ||
| 73 | .num_leds = ARRAY_SIZE(ape6evm_leds), | ||
| 74 | }; | ||
| 75 | |||
| 76 | /* GPIO KEY */ | ||
| 77 | #define GPIO_KEY(c, g, d, ...) \ | ||
| 78 | { .code = c, .gpio = g, .desc = d, .active_low = 1 } | ||
| 79 | |||
| 80 | static struct gpio_keys_button gpio_buttons[] = { | ||
| 81 | GPIO_KEY(KEY_0, 324, "S16"), | ||
| 82 | GPIO_KEY(KEY_MENU, 325, "S17"), | ||
| 83 | GPIO_KEY(KEY_HOME, 326, "S18"), | ||
| 84 | GPIO_KEY(KEY_BACK, 327, "S19"), | ||
| 85 | GPIO_KEY(KEY_VOLUMEUP, 328, "S20"), | ||
| 86 | GPIO_KEY(KEY_VOLUMEDOWN, 329, "S21"), | ||
| 87 | }; | ||
| 88 | |||
| 89 | static struct __initdata gpio_keys_platform_data ape6evm_keys_pdata = { | ||
| 90 | .buttons = gpio_buttons, | ||
| 91 | .nbuttons = ARRAY_SIZE(gpio_buttons), | ||
| 92 | }; | ||
| 93 | |||
| 36 | /* Dummy supplies, where voltage doesn't matter */ | 94 | /* Dummy supplies, where voltage doesn't matter */ |
| 37 | static struct regulator_consumer_supply dummy_supplies[] = { | 95 | static struct regulator_consumer_supply dummy_supplies[] = { |
| 38 | REGULATOR_SUPPLY("vddvario", "smsc911x"), | 96 | REGULATOR_SUPPLY("vddvario", "smsc911x"), |
| @@ -40,7 +98,7 @@ static struct regulator_consumer_supply dummy_supplies[] = { | |||
| 40 | }; | 98 | }; |
| 41 | 99 | ||
| 42 | /* SMSC LAN9220 */ | 100 | /* SMSC LAN9220 */ |
| 43 | static const struct resource lan9220_res[] = { | 101 | static const struct resource lan9220_res[] __initconst = { |
| 44 | DEFINE_RES_MEM(0x08000000, 0x1000), | 102 | DEFINE_RES_MEM(0x08000000, 0x1000), |
| 45 | { | 103 | { |
| 46 | .start = irq_pin(40), /* IRQ40 */ | 104 | .start = irq_pin(40), /* IRQ40 */ |
| @@ -48,19 +106,83 @@ static const struct resource lan9220_res[] = { | |||
| 48 | }, | 106 | }, |
| 49 | }; | 107 | }; |
| 50 | 108 | ||
| 51 | static const struct smsc911x_platform_config lan9220_data = { | 109 | static const struct smsc911x_platform_config lan9220_data __initconst = { |
| 52 | .flags = SMSC911X_USE_32BIT, | 110 | .flags = SMSC911X_USE_32BIT, |
| 53 | .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, | 111 | .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, |
| 54 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH, | 112 | .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH, |
| 55 | }; | 113 | }; |
| 56 | 114 | ||
| 57 | static const struct pinctrl_map ape6evm_pinctrl_map[] = { | 115 | /* |
| 116 | * On APE6EVM power is supplied to MMCIF by a tps80032 regulator. For now we | ||
| 117 | * model a VDD supply to MMCIF, using a fixed 3.3V regulator. Also use the | ||
| 118 | * static power supply for SDHI0 and SDHI1, whereas SDHI0's VccQ is also | ||
| 119 | * supplied by the same tps80032 regulator and thus can also be adjusted | ||
| 120 | * dynamically. | ||
| 121 | */ | ||
| 122 | static struct regulator_consumer_supply fixed3v3_power_consumers[] = | ||
| 123 | { | ||
| 124 | REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), | ||
| 125 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), | ||
| 126 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"), | ||
| 127 | }; | ||
| 128 | |||
| 129 | /* MMCIF */ | ||
| 130 | static const struct sh_mmcif_plat_data mmcif0_pdata __initconst = { | ||
| 131 | .caps = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE, | ||
| 132 | }; | ||
| 133 | |||
| 134 | static const struct resource mmcif0_resources[] __initconst = { | ||
| 135 | DEFINE_RES_MEM_NAMED(0xee200000, 0x100, "MMCIF0"), | ||
| 136 | DEFINE_RES_IRQ(gic_spi(169)), | ||
| 137 | }; | ||
| 138 | |||
| 139 | /* SDHI0 */ | ||
| 140 | static const struct sh_mobile_sdhi_info sdhi0_pdata __initconst = { | ||
| 141 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_WRPROTECT_DISABLE, | ||
| 142 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, | ||
| 143 | }; | ||
| 144 | |||
| 145 | static const struct resource sdhi0_resources[] __initconst = { | ||
| 146 | DEFINE_RES_MEM_NAMED(0xee100000, 0x100, "SDHI0"), | ||
| 147 | DEFINE_RES_IRQ(gic_spi(165)), | ||
| 148 | }; | ||
| 149 | |||
| 150 | /* SDHI1 */ | ||
| 151 | static const struct sh_mobile_sdhi_info sdhi1_pdata __initconst = { | ||
| 152 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_WRPROTECT_DISABLE, | ||
| 153 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | | ||
| 154 | MMC_CAP_NEEDS_POLL, | ||
| 155 | }; | ||
| 156 | |||
| 157 | static const struct resource sdhi1_resources[] __initconst = { | ||
| 158 | DEFINE_RES_MEM_NAMED(0xee120000, 0x100, "SDHI1"), | ||
| 159 | DEFINE_RES_IRQ(gic_spi(166)), | ||
| 160 | }; | ||
| 161 | |||
| 162 | static const struct pinctrl_map ape6evm_pinctrl_map[] __initconst = { | ||
| 58 | /* SCIFA0 console */ | 163 | /* SCIFA0 console */ |
| 59 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4", | 164 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4", |
| 60 | "scifa0_data", "scifa0"), | 165 | "scifa0_data", "scifa0"), |
| 61 | /* SMSC */ | 166 | /* SMSC */ |
| 62 | PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4", | 167 | PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4", |
| 63 | "irqc_irq40", "irqc"), | 168 | "irqc_irq40", "irqc"), |
| 169 | /* MMCIF0 */ | ||
| 170 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-r8a73a4", | ||
| 171 | "mmc0_data8", "mmc0"), | ||
| 172 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-r8a73a4", | ||
| 173 | "mmc0_ctrl", "mmc0"), | ||
| 174 | /* SDHI0: uSD: no WP */ | ||
| 175 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a73a4", | ||
| 176 | "sdhi0_data4", "sdhi0"), | ||
| 177 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a73a4", | ||
| 178 | "sdhi0_ctrl", "sdhi0"), | ||
| 179 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a73a4", | ||
| 180 | "sdhi0_cd", "sdhi0"), | ||
| 181 | /* SDHI1 */ | ||
| 182 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a73a4", | ||
| 183 | "sdhi1_data4", "sdhi1"), | ||
| 184 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a73a4", | ||
| 185 | "sdhi1_ctrl", "sdhi1"), | ||
| 64 | }; | 186 | }; |
| 65 | 187 | ||
| 66 | static void __init ape6evm_add_standard_devices(void) | 188 | static void __init ape6evm_add_standard_devices(void) |
| @@ -93,6 +215,23 @@ static void __init ape6evm_add_standard_devices(void) | |||
| 93 | platform_device_register_resndata(&platform_bus, "smsc911x", -1, | 215 | platform_device_register_resndata(&platform_bus, "smsc911x", -1, |
| 94 | lan9220_res, ARRAY_SIZE(lan9220_res), | 216 | lan9220_res, ARRAY_SIZE(lan9220_res), |
| 95 | &lan9220_data, sizeof(lan9220_data)); | 217 | &lan9220_data, sizeof(lan9220_data)); |
| 218 | regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers, | ||
| 219 | ARRAY_SIZE(fixed3v3_power_consumers), 3300000); | ||
| 220 | platform_device_register_resndata(&platform_bus, "sh_mmcif", 0, | ||
| 221 | mmcif0_resources, ARRAY_SIZE(mmcif0_resources), | ||
| 222 | &mmcif0_pdata, sizeof(mmcif0_pdata)); | ||
| 223 | platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0, | ||
| 224 | sdhi0_resources, ARRAY_SIZE(sdhi0_resources), | ||
| 225 | &sdhi0_pdata, sizeof(sdhi0_pdata)); | ||
| 226 | platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 1, | ||
| 227 | sdhi1_resources, ARRAY_SIZE(sdhi1_resources), | ||
| 228 | &sdhi1_pdata, sizeof(sdhi1_pdata)); | ||
| 229 | platform_device_register_data(&platform_bus, "gpio-keys", -1, | ||
| 230 | &ape6evm_keys_pdata, | ||
| 231 | sizeof(ape6evm_keys_pdata)); | ||
| 232 | platform_device_register_data(&platform_bus, "leds-gpio", -1, | ||
| 233 | &ape6evm_leds_pdata, | ||
| 234 | sizeof(ape6evm_leds_pdata)); | ||
| 96 | } | 235 | } |
| 97 | 236 | ||
| 98 | static const char *ape6evm_boards_compat_dt[] __initdata = { | 237 | static const char *ape6evm_boards_compat_dt[] __initdata = { |
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index 4e3670a28a7c..6b4b77dd2c29 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c | |||
| @@ -31,6 +31,8 @@ | |||
| 31 | #include <linux/gpio_keys.h> | 31 | #include <linux/gpio_keys.h> |
| 32 | #include <linux/regulator/driver.h> | 32 | #include <linux/regulator/driver.h> |
| 33 | #include <linux/pinctrl/machine.h> | 33 | #include <linux/pinctrl/machine.h> |
| 34 | #include <linux/platform_data/pwm-renesas-tpu.h> | ||
| 35 | #include <linux/pwm_backlight.h> | ||
| 34 | #include <linux/regulator/fixed.h> | 36 | #include <linux/regulator/fixed.h> |
| 35 | #include <linux/regulator/gpio-regulator.h> | 37 | #include <linux/regulator/gpio-regulator.h> |
| 36 | #include <linux/regulator/machine.h> | 38 | #include <linux/regulator/machine.h> |
| @@ -386,7 +388,50 @@ static struct platform_device sh_eth_device = { | |||
| 386 | .num_resources = ARRAY_SIZE(sh_eth_resources), | 388 | .num_resources = ARRAY_SIZE(sh_eth_resources), |
| 387 | }; | 389 | }; |
| 388 | 390 | ||
| 389 | /* LCDC */ | 391 | /* PWM */ |
| 392 | static struct resource pwm_resources[] = { | ||
| 393 | [0] = { | ||
| 394 | .start = 0xe6600000, | ||
| 395 | .end = 0xe66000ff, | ||
| 396 | .flags = IORESOURCE_MEM, | ||
| 397 | }, | ||
| 398 | }; | ||
| 399 | |||
| 400 | static struct tpu_pwm_platform_data pwm_device_data = { | ||
| 401 | .channels[2] = { | ||
| 402 | .polarity = PWM_POLARITY_INVERSED, | ||
| 403 | } | ||
| 404 | }; | ||
| 405 | |||
| 406 | static struct platform_device pwm_device = { | ||
| 407 | .name = "renesas-tpu-pwm", | ||
| 408 | .id = -1, | ||
| 409 | .dev = { | ||
| 410 | .platform_data = &pwm_device_data, | ||
| 411 | }, | ||
| 412 | .num_resources = ARRAY_SIZE(pwm_resources), | ||
| 413 | .resource = pwm_resources, | ||
| 414 | }; | ||
| 415 | |||
| 416 | static struct pwm_lookup pwm_lookup[] = { | ||
| 417 | PWM_LOOKUP("renesas-tpu-pwm", 2, "pwm-backlight.0", NULL), | ||
| 418 | }; | ||
| 419 | |||
| 420 | /* LCDC and backlight */ | ||
| 421 | static struct platform_pwm_backlight_data pwm_backlight_data = { | ||
| 422 | .lth_brightness = 50, | ||
| 423 | .max_brightness = 255, | ||
| 424 | .dft_brightness = 255, | ||
| 425 | .pwm_period_ns = 33333, /* 30kHz */ | ||
| 426 | }; | ||
| 427 | |||
| 428 | static struct platform_device pwm_backlight_device = { | ||
| 429 | .name = "pwm-backlight", | ||
| 430 | .dev = { | ||
| 431 | .platform_data = &pwm_backlight_data, | ||
| 432 | }, | ||
| 433 | }; | ||
| 434 | |||
| 390 | static struct fb_videomode lcdc0_mode = { | 435 | static struct fb_videomode lcdc0_mode = { |
| 391 | .name = "AMPIER/AM-800480", | 436 | .name = "AMPIER/AM-800480", |
| 392 | .xres = 800, | 437 | .xres = 800, |
| @@ -778,6 +823,8 @@ static struct sh_mmcif_plat_data sh_mmcif_plat = { | |||
| 778 | .caps = MMC_CAP_4_BIT_DATA | | 823 | .caps = MMC_CAP_4_BIT_DATA | |
| 779 | MMC_CAP_8_BIT_DATA | | 824 | MMC_CAP_8_BIT_DATA | |
| 780 | MMC_CAP_NONREMOVABLE, | 825 | MMC_CAP_NONREMOVABLE, |
| 826 | .slave_id_tx = SHDMA_SLAVE_MMCIF_TX, | ||
| 827 | .slave_id_rx = SHDMA_SLAVE_MMCIF_RX, | ||
| 781 | }; | 828 | }; |
| 782 | 829 | ||
| 783 | static struct resource sh_mmcif_resources[] = { | 830 | static struct resource sh_mmcif_resources[] = { |
| @@ -1020,6 +1067,8 @@ static struct i2c_board_info i2c2_devices[] = { | |||
| 1020 | */ | 1067 | */ |
| 1021 | static struct platform_device *eva_devices[] __initdata = { | 1068 | static struct platform_device *eva_devices[] __initdata = { |
| 1022 | &lcdc0_device, | 1069 | &lcdc0_device, |
| 1070 | &pwm_device, | ||
| 1071 | &pwm_backlight_device, | ||
| 1023 | &gpio_keys_device, | 1072 | &gpio_keys_device, |
| 1024 | &sh_eth_device, | 1073 | &sh_eth_device, |
| 1025 | &vcc_sdhi0, | 1074 | &vcc_sdhi0, |
| @@ -1091,6 +1140,9 @@ static const struct pinctrl_map eva_pinctrl_map[] = { | |||
| 1091 | /* ST1232 */ | 1140 | /* ST1232 */ |
| 1092 | PIN_MAP_MUX_GROUP_DEFAULT("0-0055", "pfc-r8a7740", | 1141 | PIN_MAP_MUX_GROUP_DEFAULT("0-0055", "pfc-r8a7740", |
| 1093 | "intc_irq10", "intc"), | 1142 | "intc_irq10", "intc"), |
| 1143 | /* TPU0 */ | ||
| 1144 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm", "pfc-r8a7740", | ||
| 1145 | "tpu0_to2_1", "tpu0"), | ||
| 1094 | /* USBHS */ | 1146 | /* USBHS */ |
| 1095 | PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs", "pfc-r8a7740", | 1147 | PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs", "pfc-r8a7740", |
| 1096 | "intc_irq7_1", "intc"), | 1148 | "intc_irq7_1", "intc"), |
| @@ -1144,13 +1196,13 @@ static void __init eva_init(void) | |||
| 1144 | ARRAY_SIZE(fixed3v3_power_consumers), 3300000); | 1196 | ARRAY_SIZE(fixed3v3_power_consumers), 3300000); |
| 1145 | 1197 | ||
| 1146 | pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map)); | 1198 | pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map)); |
| 1199 | pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup)); | ||
| 1147 | 1200 | ||
| 1148 | r8a7740_pinmux_init(); | 1201 | r8a7740_pinmux_init(); |
| 1149 | r8a7740_meram_workaround(); | 1202 | r8a7740_meram_workaround(); |
| 1150 | 1203 | ||
| 1151 | /* LCDC0 */ | 1204 | /* LCDC0 */ |
| 1152 | gpio_request_one(61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ | 1205 | gpio_request_one(61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ |
| 1153 | gpio_request_one(202, GPIOF_OUT_INIT_LOW, NULL); /* LCD0_LED_CONT */ | ||
| 1154 | 1206 | ||
| 1155 | /* GETHER */ | 1207 | /* GETHER */ |
| 1156 | gpio_request_one(18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */ | 1208 | gpio_request_one(18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */ |
diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c index ef5ca0ef0cb5..6af20d909bdb 100644 --- a/arch/arm/mach-shmobile/board-kota2.c +++ b/arch/arm/mach-shmobile/board-kota2.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <linux/irq.h> | 26 | #include <linux/irq.h> |
| 27 | #include <linux/pinctrl/machine.h> | 27 | #include <linux/pinctrl/machine.h> |
| 28 | #include <linux/pinctrl/pinconf-generic.h> | 28 | #include <linux/pinctrl/pinconf-generic.h> |
| 29 | #include <linux/platform_data/pwm-renesas-tpu.h> | ||
| 29 | #include <linux/platform_device.h> | 30 | #include <linux/platform_device.h> |
| 30 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
| 31 | #include <linux/io.h> | 32 | #include <linux/io.h> |
| @@ -37,8 +38,8 @@ | |||
| 37 | #include <linux/input/sh_keysc.h> | 38 | #include <linux/input/sh_keysc.h> |
| 38 | #include <linux/gpio_keys.h> | 39 | #include <linux/gpio_keys.h> |
| 39 | #include <linux/leds.h> | 40 | #include <linux/leds.h> |
| 41 | #include <linux/leds_pwm.h> | ||
| 40 | #include <linux/irqchip/arm-gic.h> | 42 | #include <linux/irqchip/arm-gic.h> |
| 41 | #include <linux/platform_data/leds-renesas-tpu.h> | ||
| 42 | #include <linux/mmc/host.h> | 43 | #include <linux/mmc/host.h> |
| 43 | #include <linux/mmc/sh_mmcif.h> | 44 | #include <linux/mmc/sh_mmcif.h> |
| 44 | #include <linux/mfd/tmio.h> | 45 | #include <linux/mfd/tmio.h> |
| @@ -186,116 +187,100 @@ static struct platform_device gpio_leds_device = { | |||
| 186 | }; | 187 | }; |
| 187 | 188 | ||
| 188 | /* TPU LED */ | 189 | /* TPU LED */ |
| 189 | static struct led_renesas_tpu_config led_renesas_tpu12_pdata = { | 190 | static struct resource tpu1_pwm_resources[] = { |
| 190 | .name = "V2513", | ||
| 191 | .pin_gpio_fn = GPIO_FN_TPU1TO2, | ||
| 192 | .pin_gpio = 153, | ||
| 193 | .channel_offset = 0x90, | ||
| 194 | .timer_bit = 2, | ||
| 195 | .max_brightness = 1000, | ||
| 196 | }; | ||
| 197 | |||
| 198 | static struct resource tpu12_resources[] = { | ||
| 199 | [0] = { | 191 | [0] = { |
| 200 | .name = "TPU12", | 192 | .start = 0xe6610000, |
| 201 | .start = 0xe6610090, | 193 | .end = 0xe66100ff, |
| 202 | .end = 0xe66100b5, | ||
| 203 | .flags = IORESOURCE_MEM, | 194 | .flags = IORESOURCE_MEM, |
| 204 | }, | 195 | }, |
| 205 | }; | 196 | }; |
| 206 | 197 | ||
| 207 | static struct platform_device leds_tpu12_device = { | 198 | static struct platform_device tpu1_pwm_device = { |
| 208 | .name = "leds-renesas-tpu", | 199 | .name = "renesas-tpu-pwm", |
| 209 | .id = 12, | 200 | .id = 1, |
| 210 | .dev = { | 201 | .num_resources = ARRAY_SIZE(tpu1_pwm_resources), |
| 211 | .platform_data = &led_renesas_tpu12_pdata, | 202 | .resource = tpu1_pwm_resources, |
| 212 | }, | ||
| 213 | .num_resources = ARRAY_SIZE(tpu12_resources), | ||
| 214 | .resource = tpu12_resources, | ||
| 215 | }; | 203 | }; |
| 216 | 204 | ||
| 217 | static struct led_renesas_tpu_config led_renesas_tpu41_pdata = { | 205 | static struct resource tpu2_pwm_resources[] = { |
| 218 | .name = "V2514", | ||
| 219 | .pin_gpio_fn = GPIO_FN_TPU4TO1, | ||
| 220 | .pin_gpio = 199, | ||
| 221 | .channel_offset = 0x50, | ||
| 222 | .timer_bit = 1, | ||
| 223 | .max_brightness = 1000, | ||
| 224 | }; | ||
| 225 | |||
| 226 | static struct resource tpu41_resources[] = { | ||
| 227 | [0] = { | 206 | [0] = { |
| 228 | .name = "TPU41", | 207 | .start = 0xe6620000, |
| 229 | .start = 0xe6640050, | 208 | .end = 0xe66200ff, |
| 230 | .end = 0xe6640075, | ||
| 231 | .flags = IORESOURCE_MEM, | 209 | .flags = IORESOURCE_MEM, |
| 232 | }, | 210 | }, |
| 233 | }; | 211 | }; |
| 234 | 212 | ||
| 235 | static struct platform_device leds_tpu41_device = { | 213 | static struct platform_device tpu2_pwm_device = { |
| 236 | .name = "leds-renesas-tpu", | 214 | .name = "renesas-tpu-pwm", |
| 237 | .id = 41, | 215 | .id = 2, |
| 238 | .dev = { | 216 | .num_resources = ARRAY_SIZE(tpu2_pwm_resources), |
| 239 | .platform_data = &led_renesas_tpu41_pdata, | 217 | .resource = tpu2_pwm_resources, |
| 218 | }; | ||
| 219 | |||
| 220 | static struct resource tpu3_pwm_resources[] = { | ||
| 221 | [0] = { | ||
| 222 | .start = 0xe6630000, | ||
| 223 | .end = 0xe66300ff, | ||
| 224 | .flags = IORESOURCE_MEM, | ||
| 240 | }, | 225 | }, |
| 241 | .num_resources = ARRAY_SIZE(tpu41_resources), | ||
| 242 | .resource = tpu41_resources, | ||
| 243 | }; | 226 | }; |
| 244 | 227 | ||
| 245 | static struct led_renesas_tpu_config led_renesas_tpu21_pdata = { | 228 | static struct platform_device tpu3_pwm_device = { |
| 246 | .name = "V2515", | 229 | .name = "renesas-tpu-pwm", |
| 247 | .pin_gpio_fn = GPIO_FN_TPU2TO1, | 230 | .id = 3, |
| 248 | .pin_gpio = 197, | 231 | .num_resources = ARRAY_SIZE(tpu3_pwm_resources), |
| 249 | .channel_offset = 0x50, | 232 | .resource = tpu3_pwm_resources, |
| 250 | .timer_bit = 1, | ||
| 251 | .max_brightness = 1000, | ||
| 252 | }; | 233 | }; |
| 253 | 234 | ||
| 254 | static struct resource tpu21_resources[] = { | 235 | static struct resource tpu4_pwm_resources[] = { |
| 255 | [0] = { | 236 | [0] = { |
| 256 | .name = "TPU21", | 237 | .start = 0xe6640000, |
| 257 | .start = 0xe6620050, | 238 | .end = 0xe66400ff, |
| 258 | .end = 0xe6620075, | ||
| 259 | .flags = IORESOURCE_MEM, | 239 | .flags = IORESOURCE_MEM, |
| 260 | }, | 240 | }, |
| 261 | }; | 241 | }; |
| 262 | 242 | ||
| 263 | static struct platform_device leds_tpu21_device = { | 243 | static struct platform_device tpu4_pwm_device = { |
| 264 | .name = "leds-renesas-tpu", | 244 | .name = "renesas-tpu-pwm", |
| 265 | .id = 21, | 245 | .id = 4, |
| 266 | .dev = { | 246 | .num_resources = ARRAY_SIZE(tpu4_pwm_resources), |
| 267 | .platform_data = &led_renesas_tpu21_pdata, | 247 | .resource = tpu4_pwm_resources, |
| 248 | }; | ||
| 249 | |||
| 250 | static struct pwm_lookup pwm_lookup[] = { | ||
| 251 | PWM_LOOKUP("renesas-tpu-pwm.1", 2, "leds-pwm.0", "V2513"), | ||
| 252 | PWM_LOOKUP("renesas-tpu-pwm.2", 1, "leds-pwm.0", "V2515"), | ||
| 253 | PWM_LOOKUP("renesas-tpu-pwm.3", 0, "leds-pwm.0", "KEYLED"), | ||
| 254 | PWM_LOOKUP("renesas-tpu-pwm.4", 1, "leds-pwm.0", "V2514"), | ||
| 255 | }; | ||
| 256 | |||
| 257 | static struct led_pwm tpu_pwm_leds[] = { | ||
| 258 | { | ||
| 259 | .name = "V2513", | ||
| 260 | .max_brightness = 1000, | ||
| 261 | }, { | ||
| 262 | .name = "V2515", | ||
| 263 | .max_brightness = 1000, | ||
| 264 | }, { | ||
| 265 | .name = "KEYLED", | ||
| 266 | .max_brightness = 1000, | ||
| 267 | }, { | ||
| 268 | .name = "V2514", | ||
| 269 | .max_brightness = 1000, | ||
| 268 | }, | 270 | }, |
| 269 | .num_resources = ARRAY_SIZE(tpu21_resources), | ||
| 270 | .resource = tpu21_resources, | ||
| 271 | }; | 271 | }; |
| 272 | 272 | ||
| 273 | static struct led_renesas_tpu_config led_renesas_tpu30_pdata = { | 273 | static struct led_pwm_platform_data leds_pwm_pdata = { |
| 274 | .name = "KEYLED", | 274 | .num_leds = ARRAY_SIZE(tpu_pwm_leds), |
| 275 | .pin_gpio_fn = GPIO_FN_TPU3TO0, | 275 | .leds = tpu_pwm_leds, |
| 276 | .pin_gpio = 163, | ||
| 277 | .channel_offset = 0x10, | ||
| 278 | .timer_bit = 0, | ||
| 279 | .max_brightness = 1000, | ||
| 280 | }; | 276 | }; |
| 281 | 277 | ||
| 282 | static struct resource tpu30_resources[] = { | 278 | static struct platform_device leds_pwm_device = { |
| 283 | [0] = { | 279 | .name = "leds-pwm", |
| 284 | .name = "TPU30", | 280 | .id = 0, |
| 285 | .start = 0xe6630010, | ||
| 286 | .end = 0xe6630035, | ||
| 287 | .flags = IORESOURCE_MEM, | ||
| 288 | }, | ||
| 289 | }; | ||
| 290 | |||
| 291 | static struct platform_device leds_tpu30_device = { | ||
| 292 | .name = "leds-renesas-tpu", | ||
| 293 | .id = 30, | ||
| 294 | .dev = { | 281 | .dev = { |
| 295 | .platform_data = &led_renesas_tpu30_pdata, | 282 | .platform_data = &leds_pwm_pdata, |
| 296 | }, | 283 | }, |
| 297 | .num_resources = ARRAY_SIZE(tpu30_resources), | ||
| 298 | .resource = tpu30_resources, | ||
| 299 | }; | 284 | }; |
| 300 | 285 | ||
| 301 | /* Fixed 1.8V regulator to be used by MMCIF */ | 286 | /* Fixed 1.8V regulator to be used by MMCIF */ |
| @@ -426,10 +411,11 @@ static struct platform_device *kota2_devices[] __initdata = { | |||
| 426 | &keysc_device, | 411 | &keysc_device, |
| 427 | &gpio_keys_device, | 412 | &gpio_keys_device, |
| 428 | &gpio_leds_device, | 413 | &gpio_leds_device, |
| 429 | &leds_tpu12_device, | 414 | &tpu1_pwm_device, |
| 430 | &leds_tpu41_device, | 415 | &tpu2_pwm_device, |
| 431 | &leds_tpu21_device, | 416 | &tpu3_pwm_device, |
| 432 | &leds_tpu30_device, | 417 | &tpu4_pwm_device, |
| 418 | &leds_pwm_device, | ||
| 433 | &mmcif_device, | 419 | &mmcif_device, |
| 434 | &sdhi0_device, | 420 | &sdhi0_device, |
| 435 | &sdhi1_device, | 421 | &sdhi1_device, |
| @@ -512,6 +498,15 @@ static const struct pinctrl_map kota2_pinctrl_map[] = { | |||
| 512 | "bsc_cs5_a", "bsc"), | 498 | "bsc_cs5_a", "bsc"), |
| 513 | PIN_MAP_MUX_GROUP_DEFAULT("smsc911x.0", "pfc-sh73a0", | 499 | PIN_MAP_MUX_GROUP_DEFAULT("smsc911x.0", "pfc-sh73a0", |
| 514 | "bsc_we0", "bsc"), | 500 | "bsc_we0", "bsc"), |
| 501 | /* TPU */ | ||
| 502 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.1", "pfc-sh73a0", | ||
| 503 | "tpu1_to2", "tpu1"), | ||
| 504 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.2", "pfc-sh73a0", | ||
| 505 | "tpu2_to1", "tpu2"), | ||
| 506 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.3", "pfc-sh73a0", | ||
| 507 | "tpu3_to0", "tpu3"), | ||
| 508 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.4", "pfc-sh73a0", | ||
| 509 | "tpu4_to1", "tpu4"), | ||
| 515 | }; | 510 | }; |
| 516 | 511 | ||
| 517 | static void __init kota2_init(void) | 512 | static void __init kota2_init(void) |
| @@ -524,6 +519,8 @@ static void __init kota2_init(void) | |||
| 524 | 519 | ||
| 525 | pinctrl_register_mappings(kota2_pinctrl_map, | 520 | pinctrl_register_mappings(kota2_pinctrl_map, |
| 526 | ARRAY_SIZE(kota2_pinctrl_map)); | 521 | ARRAY_SIZE(kota2_pinctrl_map)); |
| 522 | pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup)); | ||
| 523 | |||
| 527 | sh73a0_pinmux_init(); | 524 | sh73a0_pinmux_init(); |
| 528 | 525 | ||
| 529 | /* SMSC911X */ | 526 | /* SMSC911X */ |
diff --git a/arch/arm/mach-shmobile/board-lager.c b/arch/arm/mach-shmobile/board-lager.c index f89f16650731..4872939cdba2 100644 --- a/arch/arm/mach-shmobile/board-lager.c +++ b/arch/arm/mach-shmobile/board-lager.c | |||
| @@ -24,10 +24,16 @@ | |||
| 24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
| 25 | #include <linux/kernel.h> | 25 | #include <linux/kernel.h> |
| 26 | #include <linux/leds.h> | 26 | #include <linux/leds.h> |
| 27 | #include <linux/mmc/host.h> | ||
| 28 | #include <linux/mmc/sh_mmcif.h> | ||
| 27 | #include <linux/pinctrl/machine.h> | 29 | #include <linux/pinctrl/machine.h> |
| 28 | #include <linux/platform_data/gpio-rcar.h> | 30 | #include <linux/platform_data/gpio-rcar.h> |
| 29 | #include <linux/platform_device.h> | 31 | #include <linux/platform_device.h> |
| 32 | #include <linux/regulator/fixed.h> | ||
| 33 | #include <linux/regulator/machine.h> | ||
| 34 | #include <linux/sh_eth.h> | ||
| 30 | #include <mach/common.h> | 35 | #include <mach/common.h> |
| 36 | #include <mach/irqs.h> | ||
| 31 | #include <mach/r8a7790.h> | 37 | #include <mach/r8a7790.h> |
| 32 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
| 33 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
| @@ -70,6 +76,36 @@ static __initdata struct gpio_keys_platform_data lager_keys_pdata = { | |||
| 70 | .nbuttons = ARRAY_SIZE(gpio_buttons), | 76 | .nbuttons = ARRAY_SIZE(gpio_buttons), |
| 71 | }; | 77 | }; |
| 72 | 78 | ||
| 79 | /* Fixed 3.3V regulator to be used by MMCIF */ | ||
| 80 | static struct regulator_consumer_supply fixed3v3_power_consumers[] = | ||
| 81 | { | ||
| 82 | REGULATOR_SUPPLY("vmmc", "sh_mmcif.1"), | ||
| 83 | }; | ||
| 84 | |||
| 85 | /* MMCIF */ | ||
| 86 | static struct sh_mmcif_plat_data mmcif1_pdata __initdata = { | ||
| 87 | .caps = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE, | ||
| 88 | }; | ||
| 89 | |||
| 90 | static struct resource mmcif1_resources[] __initdata = { | ||
| 91 | DEFINE_RES_MEM_NAMED(0xee220000, 0x80, "MMCIF1"), | ||
| 92 | DEFINE_RES_IRQ(gic_spi(170)), | ||
| 93 | }; | ||
| 94 | |||
| 95 | /* Ether */ | ||
| 96 | static struct sh_eth_plat_data ether_pdata __initdata = { | ||
| 97 | .phy = 0x1, | ||
| 98 | .edmac_endian = EDMAC_LITTLE_ENDIAN, | ||
| 99 | .register_type = SH_ETH_REG_FAST_RCAR, | ||
| 100 | .phy_interface = PHY_INTERFACE_MODE_RMII, | ||
| 101 | .ether_link_active_low = 1, | ||
| 102 | }; | ||
| 103 | |||
| 104 | static struct resource ether_resources[] __initdata = { | ||
| 105 | DEFINE_RES_MEM(0xee700000, 0x400), | ||
| 106 | DEFINE_RES_IRQ(gic_spi(162)), | ||
| 107 | }; | ||
| 108 | |||
| 73 | static const struct pinctrl_map lager_pinctrl_map[] = { | 109 | static const struct pinctrl_map lager_pinctrl_map[] = { |
| 74 | /* SCIF0 (CN19: DEBUG SERIAL0) */ | 110 | /* SCIF0 (CN19: DEBUG SERIAL0) */ |
| 75 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790", | 111 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790", |
| @@ -77,6 +113,20 @@ static const struct pinctrl_map lager_pinctrl_map[] = { | |||
| 77 | /* SCIF1 (CN20: DEBUG SERIAL1) */ | 113 | /* SCIF1 (CN20: DEBUG SERIAL1) */ |
| 78 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7790", | 114 | PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7790", |
| 79 | "scif1_data", "scif1"), | 115 | "scif1_data", "scif1"), |
| 116 | /* MMCIF1 */ | ||
| 117 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.1", "pfc-r8a7790", | ||
| 118 | "mmc1_data8", "mmc1"), | ||
| 119 | PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.1", "pfc-r8a7790", | ||
| 120 | "mmc1_ctrl", "mmc1"), | ||
| 121 | /* Ether */ | ||
| 122 | PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790", | ||
| 123 | "eth_link", "eth"), | ||
| 124 | PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790", | ||
| 125 | "eth_mdio", "eth"), | ||
| 126 | PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790", | ||
| 127 | "eth_rmii", "eth"), | ||
| 128 | PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790", | ||
| 129 | "intc_irq0", "intc"), | ||
| 80 | }; | 130 | }; |
| 81 | 131 | ||
| 82 | static void __init lager_add_standard_devices(void) | 132 | static void __init lager_add_standard_devices(void) |
| @@ -94,6 +144,16 @@ static void __init lager_add_standard_devices(void) | |||
| 94 | platform_device_register_data(&platform_bus, "gpio-keys", -1, | 144 | platform_device_register_data(&platform_bus, "gpio-keys", -1, |
| 95 | &lager_keys_pdata, | 145 | &lager_keys_pdata, |
| 96 | sizeof(lager_keys_pdata)); | 146 | sizeof(lager_keys_pdata)); |
| 147 | regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers, | ||
| 148 | ARRAY_SIZE(fixed3v3_power_consumers), 3300000); | ||
| 149 | platform_device_register_resndata(&platform_bus, "sh_mmcif", 1, | ||
| 150 | mmcif1_resources, ARRAY_SIZE(mmcif1_resources), | ||
| 151 | &mmcif1_pdata, sizeof(mmcif1_pdata)); | ||
| 152 | |||
| 153 | platform_device_register_resndata(&platform_bus, "r8a7790-ether", -1, | ||
| 154 | ether_resources, | ||
| 155 | ARRAY_SIZE(ether_resources), | ||
| 156 | ðer_pdata, sizeof(ether_pdata)); | ||
| 97 | } | 157 | } |
| 98 | 158 | ||
| 99 | static const char *lager_boards_compat_dt[] __initdata = { | 159 | static const char *lager_boards_compat_dt[] __initdata = { |
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index 85f51a849a50..af06753eb809 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
| @@ -41,6 +41,7 @@ | |||
| 41 | #include <linux/mtd/physmap.h> | 41 | #include <linux/mtd/physmap.h> |
| 42 | #include <linux/mtd/sh_flctl.h> | 42 | #include <linux/mtd/sh_flctl.h> |
| 43 | #include <linux/pinctrl/machine.h> | 43 | #include <linux/pinctrl/machine.h> |
| 44 | #include <linux/platform_data/gpio_backlight.h> | ||
| 44 | #include <linux/pm_clock.h> | 45 | #include <linux/pm_clock.h> |
| 45 | #include <linux/regulator/fixed.h> | 46 | #include <linux/regulator/fixed.h> |
| 46 | #include <linux/regulator/machine.h> | 47 | #include <linux/regulator/machine.h> |
| @@ -49,7 +50,6 @@ | |||
| 49 | #include <linux/tca6416_keypad.h> | 50 | #include <linux/tca6416_keypad.h> |
| 50 | #include <linux/usb/renesas_usbhs.h> | 51 | #include <linux/usb/renesas_usbhs.h> |
| 51 | #include <linux/dma-mapping.h> | 52 | #include <linux/dma-mapping.h> |
| 52 | |||
| 53 | #include <video/sh_mobile_hdmi.h> | 53 | #include <video/sh_mobile_hdmi.h> |
| 54 | #include <video/sh_mobile_lcdc.h> | 54 | #include <video/sh_mobile_lcdc.h> |
| 55 | #include <media/sh_mobile_ceu.h> | 55 | #include <media/sh_mobile_ceu.h> |
| @@ -346,7 +346,7 @@ static struct platform_device meram_device = { | |||
| 346 | }, | 346 | }, |
| 347 | }; | 347 | }; |
| 348 | 348 | ||
| 349 | /* LCDC */ | 349 | /* LCDC and backlight */ |
| 350 | static struct fb_videomode mackerel_lcdc_modes[] = { | 350 | static struct fb_videomode mackerel_lcdc_modes[] = { |
| 351 | { | 351 | { |
| 352 | .name = "WVGA Panel", | 352 | .name = "WVGA Panel", |
| @@ -362,13 +362,6 @@ static struct fb_videomode mackerel_lcdc_modes[] = { | |||
| 362 | }, | 362 | }, |
| 363 | }; | 363 | }; |
| 364 | 364 | ||
| 365 | static int mackerel_set_brightness(int brightness) | ||
| 366 | { | ||
| 367 | gpio_set_value(31, brightness); | ||
| 368 | |||
| 369 | return 0; | ||
| 370 | } | ||
| 371 | |||
| 372 | static const struct sh_mobile_meram_cfg lcd_meram_cfg = { | 365 | static const struct sh_mobile_meram_cfg lcd_meram_cfg = { |
| 373 | .icb[0] = { | 366 | .icb[0] = { |
| 374 | .meram_size = 0x40, | 367 | .meram_size = 0x40, |
| @@ -393,11 +386,6 @@ static struct sh_mobile_lcdc_info lcdc_info = { | |||
| 393 | .width = 152, | 386 | .width = 152, |
| 394 | .height = 91, | 387 | .height = 91, |
| 395 | }, | 388 | }, |
| 396 | .bl_info = { | ||
| 397 | .name = "sh_mobile_lcdc_bl", | ||
| 398 | .max_brightness = 1, | ||
| 399 | .set_brightness = mackerel_set_brightness, | ||
| 400 | }, | ||
| 401 | .meram_cfg = &lcd_meram_cfg, | 389 | .meram_cfg = &lcd_meram_cfg, |
| 402 | } | 390 | } |
| 403 | }; | 391 | }; |
| @@ -425,6 +413,20 @@ static struct platform_device lcdc_device = { | |||
| 425 | }, | 413 | }, |
| 426 | }; | 414 | }; |
| 427 | 415 | ||
| 416 | static struct gpio_backlight_platform_data gpio_backlight_data = { | ||
| 417 | .fbdev = &lcdc_device.dev, | ||
| 418 | .gpio = 31, | ||
| 419 | .def_value = 1, | ||
| 420 | .name = "backlight", | ||
| 421 | }; | ||
| 422 | |||
| 423 | static struct platform_device gpio_backlight_device = { | ||
| 424 | .name = "gpio-backlight", | ||
| 425 | .dev = { | ||
| 426 | .platform_data = &gpio_backlight_data, | ||
| 427 | }, | ||
| 428 | }; | ||
| 429 | |||
| 428 | /* HDMI */ | 430 | /* HDMI */ |
| 429 | static struct sh_mobile_hdmi_info hdmi_info = { | 431 | static struct sh_mobile_hdmi_info hdmi_info = { |
| 430 | .flags = HDMI_SND_SRC_SPDIF, | 432 | .flags = HDMI_SND_SRC_SPDIF, |
| @@ -1231,6 +1233,7 @@ static struct platform_device *mackerel_devices[] __initdata = { | |||
| 1231 | &nor_flash_device, | 1233 | &nor_flash_device, |
| 1232 | &smc911x_device, | 1234 | &smc911x_device, |
| 1233 | &lcdc_device, | 1235 | &lcdc_device, |
| 1236 | &gpio_backlight_device, | ||
| 1234 | &usbhs0_device, | 1237 | &usbhs0_device, |
| 1235 | &usbhs1_device, | 1238 | &usbhs1_device, |
| 1236 | &leds_device, | 1239 | &leds_device, |
| @@ -1441,9 +1444,6 @@ static void __init mackerel_init(void) | |||
| 1441 | ARRAY_SIZE(mackerel_pinctrl_map)); | 1444 | ARRAY_SIZE(mackerel_pinctrl_map)); |
| 1442 | sh7372_pinmux_init(); | 1445 | sh7372_pinmux_init(); |
| 1443 | 1446 | ||
| 1444 | /* backlight, off by default */ | ||
| 1445 | gpio_request_one(31, GPIOF_OUT_INIT_LOW, NULL); | ||
| 1446 | |||
| 1447 | gpio_request_one(151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ | 1447 | gpio_request_one(151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ |
| 1448 | 1448 | ||
| 1449 | /* USBHS0 */ | 1449 | /* USBHS0 */ |
diff --git a/arch/arm/mach-shmobile/clock-sh73a0.c b/arch/arm/mach-shmobile/clock-sh73a0.c index d9fd0336b910..1942eaef5181 100644 --- a/arch/arm/mach-shmobile/clock-sh73a0.c +++ b/arch/arm/mach-shmobile/clock-sh73a0.c | |||
| @@ -555,7 +555,7 @@ enum { MSTP001, | |||
| 555 | MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, | 555 | MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, |
| 556 | MSTP331, MSTP329, MSTP328, MSTP325, MSTP323, MSTP322, | 556 | MSTP331, MSTP329, MSTP328, MSTP325, MSTP323, MSTP322, |
| 557 | MSTP314, MSTP313, MSTP312, MSTP311, | 557 | MSTP314, MSTP313, MSTP312, MSTP311, |
| 558 | MSTP303, MSTP302, MSTP301, MSTP300, | 558 | MSTP304, MSTP303, MSTP302, MSTP301, MSTP300, |
| 559 | MSTP411, MSTP410, MSTP403, | 559 | MSTP411, MSTP410, MSTP403, |
| 560 | MSTP_NR }; | 560 | MSTP_NR }; |
| 561 | 561 | ||
| @@ -593,6 +593,7 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
| 593 | [MSTP313] = MSTP(&div6_clks[DIV6_SDHI1], SMSTPCR3, 13, 0), /* SDHI1 */ | 593 | [MSTP313] = MSTP(&div6_clks[DIV6_SDHI1], SMSTPCR3, 13, 0), /* SDHI1 */ |
| 594 | [MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMCIF0 */ | 594 | [MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMCIF0 */ |
| 595 | [MSTP311] = MSTP(&div6_clks[DIV6_SDHI2], SMSTPCR3, 11, 0), /* SDHI2 */ | 595 | [MSTP311] = MSTP(&div6_clks[DIV6_SDHI2], SMSTPCR3, 11, 0), /* SDHI2 */ |
| 596 | [MSTP304] = MSTP(&main_div2_clk, SMSTPCR3, 4, 0), /* TPU0 */ | ||
| 596 | [MSTP303] = MSTP(&main_div2_clk, SMSTPCR3, 3, 0), /* TPU1 */ | 597 | [MSTP303] = MSTP(&main_div2_clk, SMSTPCR3, 3, 0), /* TPU1 */ |
| 597 | [MSTP302] = MSTP(&main_div2_clk, SMSTPCR3, 2, 0), /* TPU2 */ | 598 | [MSTP302] = MSTP(&main_div2_clk, SMSTPCR3, 2, 0), /* TPU2 */ |
| 598 | [MSTP301] = MSTP(&main_div2_clk, SMSTPCR3, 1, 0), /* TPU3 */ | 599 | [MSTP301] = MSTP(&main_div2_clk, SMSTPCR3, 1, 0), /* TPU3 */ |
| @@ -669,10 +670,11 @@ static struct clk_lookup lookups[] = { | |||
| 669 | CLKDEV_DEV_ID("e6bd0000.mmcif", &mstp_clks[MSTP312]), /* MMCIF0 */ | 670 | CLKDEV_DEV_ID("e6bd0000.mmcif", &mstp_clks[MSTP312]), /* MMCIF0 */ |
| 670 | CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), /* SDHI2 */ | 671 | CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), /* SDHI2 */ |
| 671 | CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP311]), /* SDHI2 */ | 672 | CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP311]), /* SDHI2 */ |
| 672 | CLKDEV_DEV_ID("leds-renesas-tpu.12", &mstp_clks[MSTP303]), /* TPU1 */ | 673 | CLKDEV_DEV_ID("renesas-tpu-pwm.0", &mstp_clks[MSTP304]), /* TPU0 */ |
| 673 | CLKDEV_DEV_ID("leds-renesas-tpu.21", &mstp_clks[MSTP302]), /* TPU2 */ | 674 | CLKDEV_DEV_ID("renesas-tpu-pwm.1", &mstp_clks[MSTP303]), /* TPU1 */ |
| 674 | CLKDEV_DEV_ID("leds-renesas-tpu.30", &mstp_clks[MSTP301]), /* TPU3 */ | 675 | CLKDEV_DEV_ID("renesas-tpu-pwm.2", &mstp_clks[MSTP302]), /* TPU2 */ |
| 675 | CLKDEV_DEV_ID("leds-renesas-tpu.41", &mstp_clks[MSTP300]), /* TPU4 */ | 676 | CLKDEV_DEV_ID("renesas-tpu-pwm.3", &mstp_clks[MSTP301]), /* TPU3 */ |
| 677 | CLKDEV_DEV_ID("renesas-tpu-pwm.4", &mstp_clks[MSTP300]), /* TPU4 */ | ||
| 676 | CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* I2C3 */ | 678 | CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* I2C3 */ |
| 677 | CLKDEV_DEV_ID("e6826000.i2c", &mstp_clks[MSTP411]), /* I2C3 */ | 679 | CLKDEV_DEV_ID("e6826000.i2c", &mstp_clks[MSTP411]), /* I2C3 */ |
| 678 | CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* I2C4 */ | 680 | CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* I2C4 */ |
diff --git a/arch/arm/mach-shmobile/include/mach/sh73a0.h b/arch/arm/mach-shmobile/include/mach/sh73a0.h index eb7a4320d487..680dc5f1655a 100644 --- a/arch/arm/mach-shmobile/include/mach/sh73a0.h +++ b/arch/arm/mach-shmobile/include/mach/sh73a0.h | |||
| @@ -1,378 +1,7 @@ | |||
| 1 | #ifndef __ASM_SH73A0_H__ | 1 | #ifndef __ASM_SH73A0_H__ |
| 2 | #define __ASM_SH73A0_H__ | 2 | #define __ASM_SH73A0_H__ |
| 3 | 3 | ||
| 4 | /* Pin Function Controller: | 4 | #define GPIO_NR 310 |
| 5 | * GPIO_FN_xx - GPIO used to select pin function and MSEL switch | ||
| 6 | * GPIO_PORTxx - GPIO mapped to real I/O pin on CPU | ||
| 7 | */ | ||
| 8 | enum { | ||
| 9 | /* Hardware manual Table 25-1 (GPIO) */ | ||
| 10 | GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4, | ||
| 11 | GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9, | ||
| 12 | |||
| 13 | GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14, | ||
| 14 | GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19, | ||
| 15 | |||
| 16 | GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24, | ||
| 17 | GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29, | ||
| 18 | |||
| 19 | GPIO_PORT30, GPIO_PORT31, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34, | ||
| 20 | GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39, | ||
| 21 | |||
| 22 | GPIO_PORT40, GPIO_PORT41, GPIO_PORT42, GPIO_PORT43, GPIO_PORT44, | ||
| 23 | GPIO_PORT45, GPIO_PORT46, GPIO_PORT47, GPIO_PORT48, GPIO_PORT49, | ||
| 24 | |||
| 25 | GPIO_PORT50, GPIO_PORT51, GPIO_PORT52, GPIO_PORT53, GPIO_PORT54, | ||
| 26 | GPIO_PORT55, GPIO_PORT56, GPIO_PORT57, GPIO_PORT58, GPIO_PORT59, | ||
| 27 | |||
| 28 | GPIO_PORT60, GPIO_PORT61, GPIO_PORT62, GPIO_PORT63, GPIO_PORT64, | ||
| 29 | GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69, | ||
| 30 | |||
| 31 | GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74, | ||
| 32 | GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79, | ||
| 33 | |||
| 34 | GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84, | ||
| 35 | GPIO_PORT85, GPIO_PORT86, GPIO_PORT87, GPIO_PORT88, GPIO_PORT89, | ||
| 36 | |||
| 37 | GPIO_PORT90, GPIO_PORT91, GPIO_PORT92, GPIO_PORT93, GPIO_PORT94, | ||
| 38 | GPIO_PORT95, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99, | ||
| 39 | |||
| 40 | GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104, | ||
| 41 | GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109, | ||
| 42 | |||
| 43 | GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114, | ||
| 44 | GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118, | ||
| 45 | |||
| 46 | GPIO_PORT128, GPIO_PORT129, | ||
| 47 | |||
| 48 | GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134, | ||
| 49 | GPIO_PORT135, GPIO_PORT136, GPIO_PORT137, GPIO_PORT138, GPIO_PORT139, | ||
| 50 | |||
| 51 | GPIO_PORT140, GPIO_PORT141, GPIO_PORT142, GPIO_PORT143, GPIO_PORT144, | ||
| 52 | GPIO_PORT145, GPIO_PORT146, GPIO_PORT147, GPIO_PORT148, GPIO_PORT149, | ||
| 53 | |||
| 54 | GPIO_PORT150, GPIO_PORT151, GPIO_PORT152, GPIO_PORT153, GPIO_PORT154, | ||
| 55 | GPIO_PORT155, GPIO_PORT156, GPIO_PORT157, GPIO_PORT158, GPIO_PORT159, | ||
| 56 | |||
| 57 | GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164, | ||
| 58 | |||
| 59 | GPIO_PORT192, GPIO_PORT193, GPIO_PORT194, | ||
| 60 | GPIO_PORT195, GPIO_PORT196, GPIO_PORT197, GPIO_PORT198, GPIO_PORT199, | ||
| 61 | |||
| 62 | GPIO_PORT200, GPIO_PORT201, GPIO_PORT202, GPIO_PORT203, GPIO_PORT204, | ||
| 63 | GPIO_PORT205, GPIO_PORT206, GPIO_PORT207, GPIO_PORT208, GPIO_PORT209, | ||
| 64 | |||
| 65 | GPIO_PORT210, GPIO_PORT211, GPIO_PORT212, GPIO_PORT213, GPIO_PORT214, | ||
| 66 | GPIO_PORT215, GPIO_PORT216, GPIO_PORT217, GPIO_PORT218, GPIO_PORT219, | ||
| 67 | |||
| 68 | GPIO_PORT220, GPIO_PORT221, GPIO_PORT222, GPIO_PORT223, GPIO_PORT224, | ||
| 69 | GPIO_PORT225, GPIO_PORT226, GPIO_PORT227, GPIO_PORT228, GPIO_PORT229, | ||
| 70 | |||
| 71 | GPIO_PORT230, GPIO_PORT231, GPIO_PORT232, GPIO_PORT233, GPIO_PORT234, | ||
| 72 | GPIO_PORT235, GPIO_PORT236, GPIO_PORT237, GPIO_PORT238, GPIO_PORT239, | ||
| 73 | |||
| 74 | GPIO_PORT240, GPIO_PORT241, GPIO_PORT242, GPIO_PORT243, GPIO_PORT244, | ||
| 75 | GPIO_PORT245, GPIO_PORT246, GPIO_PORT247, GPIO_PORT248, GPIO_PORT249, | ||
| 76 | |||
| 77 | GPIO_PORT250, GPIO_PORT251, GPIO_PORT252, GPIO_PORT253, GPIO_PORT254, | ||
| 78 | GPIO_PORT255, GPIO_PORT256, GPIO_PORT257, GPIO_PORT258, GPIO_PORT259, | ||
| 79 | |||
| 80 | GPIO_PORT260, GPIO_PORT261, GPIO_PORT262, GPIO_PORT263, GPIO_PORT264, | ||
| 81 | GPIO_PORT265, GPIO_PORT266, GPIO_PORT267, GPIO_PORT268, GPIO_PORT269, | ||
| 82 | |||
| 83 | GPIO_PORT270, GPIO_PORT271, GPIO_PORT272, GPIO_PORT273, GPIO_PORT274, | ||
| 84 | GPIO_PORT275, GPIO_PORT276, GPIO_PORT277, GPIO_PORT278, GPIO_PORT279, | ||
| 85 | |||
| 86 | GPIO_PORT280, GPIO_PORT281, GPIO_PORT282, | ||
| 87 | |||
| 88 | GPIO_PORT288, GPIO_PORT289, | ||
| 89 | |||
| 90 | GPIO_PORT290, GPIO_PORT291, GPIO_PORT292, GPIO_PORT293, GPIO_PORT294, | ||
| 91 | GPIO_PORT295, GPIO_PORT296, GPIO_PORT297, GPIO_PORT298, GPIO_PORT299, | ||
| 92 | |||
| 93 | GPIO_PORT300, GPIO_PORT301, GPIO_PORT302, GPIO_PORT303, GPIO_PORT304, | ||
| 94 | GPIO_PORT305, GPIO_PORT306, GPIO_PORT307, GPIO_PORT308, GPIO_PORT309, | ||
| 95 | |||
| 96 | /* Table 25-1 (Function 0-7) */ | ||
| 97 | GPIO_FN_GPI0 = 310, | ||
| 98 | GPIO_FN_GPI1, | ||
| 99 | GPIO_FN_GPI2, | ||
| 100 | GPIO_FN_GPI3, | ||
| 101 | GPIO_FN_GPI4, | ||
| 102 | GPIO_FN_GPI5, | ||
| 103 | GPIO_FN_GPI6, | ||
| 104 | GPIO_FN_GPI7, | ||
| 105 | GPIO_FN_GPO7, GPIO_FN_MFG0_OUT2, | ||
| 106 | GPIO_FN_GPO6, GPIO_FN_MFG1_OUT2, | ||
| 107 | GPIO_FN_GPO5, | ||
| 108 | GPIO_FN_PORT16_VIO_CKOR, | ||
| 109 | GPIO_FN_PORT19_VIO_CKO2, | ||
| 110 | GPIO_FN_GPO0, | ||
| 111 | GPIO_FN_GPO1, | ||
| 112 | GPIO_FN_GPO2, GPIO_FN_STATUS0, | ||
| 113 | GPIO_FN_GPO3, GPIO_FN_STATUS1, | ||
| 114 | GPIO_FN_GPO4, GPIO_FN_STATUS2, | ||
| 115 | GPIO_FN_VINT, | ||
| 116 | GPIO_FN_TCKON, | ||
| 117 | GPIO_FN_XDVFS1, | ||
| 118 | GPIO_FN_MFG0_OUT1, GPIO_FN_PORT27_IROUT, | ||
| 119 | GPIO_FN_XDVFS2, | ||
| 120 | GPIO_FN_PORT28_TPU1TO1, | ||
| 121 | GPIO_FN_SIM_RST, GPIO_FN_PORT29_TPU1TO1, | ||
| 122 | GPIO_FN_SIM_CLK, GPIO_FN_PORT30_VIO_CKOR, | ||
| 123 | GPIO_FN_SIM_D, GPIO_FN_PORT31_IROUT, | ||
| 124 | GPIO_FN_XWUP, | ||
| 125 | GPIO_FN_VACK, | ||
| 126 | GPIO_FN_XTAL1L, | ||
| 127 | GPIO_FN_PORT49_IROUT, | ||
| 128 | GPIO_FN_BBIF2_TSYNC2, GPIO_FN_TPU2TO2, | ||
| 129 | |||
| 130 | GPIO_FN_BBIF2_TSCK2, GPIO_FN_TPU2TO3, | ||
| 131 | GPIO_FN_BBIF2_TXD2, | ||
| 132 | GPIO_FN_TPU3TO3, | ||
| 133 | GPIO_FN_TPU3TO2, | ||
| 134 | GPIO_FN_TPU0TO0, | ||
| 135 | GPIO_FN_A0, GPIO_FN_BS_, | ||
| 136 | GPIO_FN_A12, GPIO_FN_TPU4TO2, | ||
| 137 | GPIO_FN_A13, GPIO_FN_TPU0TO1, | ||
| 138 | GPIO_FN_A14, | ||
| 139 | GPIO_FN_A15, | ||
| 140 | GPIO_FN_A16, GPIO_FN_MSIOF0_SS1, | ||
| 141 | GPIO_FN_A17, GPIO_FN_MSIOF0_TSYNC, | ||
| 142 | GPIO_FN_A18, GPIO_FN_MSIOF0_TSCK, | ||
| 143 | GPIO_FN_A19, GPIO_FN_MSIOF0_TXD, | ||
| 144 | GPIO_FN_A20, GPIO_FN_MSIOF0_RSCK, | ||
| 145 | GPIO_FN_A21, GPIO_FN_MSIOF0_RSYNC, | ||
| 146 | GPIO_FN_A22, GPIO_FN_MSIOF0_MCK0, | ||
| 147 | GPIO_FN_A23, GPIO_FN_MSIOF0_MCK1, | ||
| 148 | GPIO_FN_A24, GPIO_FN_MSIOF0_RXD, | ||
| 149 | GPIO_FN_A25, GPIO_FN_MSIOF0_SS2, | ||
| 150 | GPIO_FN_A26, | ||
| 151 | GPIO_FN_FCE1_, | ||
| 152 | GPIO_FN_DACK0, | ||
| 153 | GPIO_FN_FCE0_, | ||
| 154 | GPIO_FN_WAIT_, GPIO_FN_DREQ0, | ||
| 155 | GPIO_FN_FRB, | ||
| 156 | GPIO_FN_CKO, | ||
| 157 | GPIO_FN_NBRSTOUT_, | ||
| 158 | GPIO_FN_NBRST_, | ||
| 159 | GPIO_FN_BBIF2_TXD, | ||
| 160 | GPIO_FN_BBIF2_RXD, | ||
| 161 | GPIO_FN_BBIF2_SYNC, | ||
| 162 | GPIO_FN_BBIF2_SCK, | ||
| 163 | GPIO_FN_MFG3_IN2, | ||
| 164 | GPIO_FN_MFG3_IN1, | ||
| 165 | GPIO_FN_BBIF1_SS2, GPIO_FN_MFG3_OUT1, | ||
| 166 | GPIO_FN_HSI_RX_DATA, GPIO_FN_BBIF1_RXD, | ||
| 167 | GPIO_FN_HSI_TX_WAKE, GPIO_FN_BBIF1_TSCK, | ||
| 168 | GPIO_FN_HSI_TX_DATA, GPIO_FN_BBIF1_TSYNC, | ||
| 169 | GPIO_FN_HSI_TX_READY, GPIO_FN_BBIF1_TXD, | ||
| 170 | GPIO_FN_HSI_RX_READY, GPIO_FN_BBIF1_RSCK, | ||
| 171 | GPIO_FN_HSI_RX_WAKE, GPIO_FN_BBIF1_RSYNC, | ||
| 172 | GPIO_FN_HSI_RX_FLAG, GPIO_FN_BBIF1_SS1, GPIO_FN_BBIF1_FLOW, | ||
| 173 | GPIO_FN_HSI_TX_FLAG, | ||
| 174 | GPIO_FN_VIO_VD, GPIO_FN_VIO2_VD, | ||
| 175 | |||
| 176 | GPIO_FN_VIO_HD, | ||
| 177 | GPIO_FN_VIO2_HD, | ||
| 178 | GPIO_FN_VIO_D0, GPIO_FN_PORT130_MSIOF2_RXD, | ||
| 179 | GPIO_FN_VIO_D1, GPIO_FN_PORT131_MSIOF2_SS1, | ||
| 180 | GPIO_FN_VIO_D2, GPIO_FN_PORT132_MSIOF2_SS2, | ||
| 181 | GPIO_FN_VIO_D3, GPIO_FN_MSIOF2_TSYNC, | ||
| 182 | GPIO_FN_VIO_D4, GPIO_FN_MSIOF2_TXD, | ||
| 183 | GPIO_FN_VIO_D5, GPIO_FN_MSIOF2_TSCK, | ||
| 184 | GPIO_FN_VIO_D6, | ||
| 185 | GPIO_FN_VIO_D7, | ||
| 186 | GPIO_FN_VIO_D8, GPIO_FN_VIO2_D0, | ||
| 187 | GPIO_FN_VIO_D9, GPIO_FN_VIO2_D1, | ||
| 188 | GPIO_FN_VIO_D10, GPIO_FN_TPU0TO2, GPIO_FN_VIO2_D2, | ||
| 189 | GPIO_FN_VIO_D11, GPIO_FN_TPU0TO3, GPIO_FN_VIO2_D3, | ||
| 190 | GPIO_FN_VIO_D12, GPIO_FN_VIO2_D4, | ||
| 191 | GPIO_FN_VIO_D13, | ||
| 192 | GPIO_FN_VIO2_D5, | ||
| 193 | GPIO_FN_VIO_D14, GPIO_FN_VIO2_D6, | ||
| 194 | GPIO_FN_VIO_D15, GPIO_FN_TPU1TO3, | ||
| 195 | GPIO_FN_VIO2_D7, | ||
| 196 | GPIO_FN_VIO_CLK, | ||
| 197 | GPIO_FN_VIO2_CLK, | ||
| 198 | GPIO_FN_VIO_FIELD, GPIO_FN_VIO2_FIELD, | ||
| 199 | GPIO_FN_VIO_CKO, | ||
| 200 | GPIO_FN_A27, GPIO_FN_MFG0_IN1, | ||
| 201 | GPIO_FN_MFG0_IN2, | ||
| 202 | GPIO_FN_TS_SPSYNC3, GPIO_FN_MSIOF2_RSCK, | ||
| 203 | GPIO_FN_TS_SDAT3, GPIO_FN_MSIOF2_RSYNC, | ||
| 204 | GPIO_FN_TPU1TO2, GPIO_FN_TS_SDEN3, GPIO_FN_PORT153_MSIOF2_SS1, | ||
| 205 | GPIO_FN_MSIOF2_MCK0, | ||
| 206 | GPIO_FN_MSIOF2_MCK1, | ||
| 207 | GPIO_FN_PORT156_MSIOF2_SS2, | ||
| 208 | GPIO_FN_PORT157_MSIOF2_RXD, | ||
| 209 | GPIO_FN_DINT_, GPIO_FN_TS_SCK3, | ||
| 210 | GPIO_FN_NMI, | ||
| 211 | GPIO_FN_TPU3TO0, | ||
| 212 | GPIO_FN_BBIF2_TSYNC1, | ||
| 213 | GPIO_FN_BBIF2_TSCK1, | ||
| 214 | GPIO_FN_BBIF2_TXD1, | ||
| 215 | GPIO_FN_MFG2_OUT2, | ||
| 216 | GPIO_FN_TPU2TO1, | ||
| 217 | GPIO_FN_TPU4TO1, GPIO_FN_MFG4_OUT2, | ||
| 218 | GPIO_FN_D16, | ||
| 219 | GPIO_FN_D17, | ||
| 220 | GPIO_FN_D18, | ||
| 221 | GPIO_FN_D19, | ||
| 222 | GPIO_FN_D20, | ||
| 223 | GPIO_FN_D21, | ||
| 224 | GPIO_FN_D22, | ||
| 225 | GPIO_FN_PORT207_MSIOF0L_SS1, GPIO_FN_D23, | ||
| 226 | GPIO_FN_PORT208_MSIOF0L_SS2, GPIO_FN_D24, | ||
| 227 | GPIO_FN_D25, | ||
| 228 | GPIO_FN_DREQ2, GPIO_FN_PORT210_MSIOF0L_SS1, GPIO_FN_D26, | ||
| 229 | GPIO_FN_PORT211_MSIOF0L_SS2, GPIO_FN_D27, | ||
| 230 | GPIO_FN_TS_SPSYNC1, GPIO_FN_MSIOF0L_MCK0, GPIO_FN_D28, | ||
| 231 | GPIO_FN_TS_SDAT1, GPIO_FN_MSIOF0L_MCK1, GPIO_FN_D29, | ||
| 232 | GPIO_FN_TS_SDEN1, GPIO_FN_MSIOF0L_RSCK, GPIO_FN_D30, | ||
| 233 | GPIO_FN_TS_SCK1, GPIO_FN_MSIOF0L_RSYNC, GPIO_FN_D31, | ||
| 234 | GPIO_FN_DACK2, | ||
| 235 | GPIO_FN_MSIOF0L_TSYNC, GPIO_FN_VIO2_FIELD3, | ||
| 236 | GPIO_FN_DACK3, | ||
| 237 | GPIO_FN_PORT218_VIO_CKOR, | ||
| 238 | GPIO_FN_DREQ3, GPIO_FN_MSIOF0L_TSCK, GPIO_FN_VIO2_CLK3, \ | ||
| 239 | GPIO_FN_DREQ1, | ||
| 240 | GPIO_FN_PWEN, GPIO_FN_MSIOF0L_RXD, GPIO_FN_VIO2_HD3, \ | ||
| 241 | GPIO_FN_DACK1, GPIO_FN_OVCN, | ||
| 242 | GPIO_FN_MSIOF0L_TXD, GPIO_FN_VIO2_VD3, | ||
| 243 | |||
| 244 | GPIO_FN_OVCN2, | ||
| 245 | GPIO_FN_EXTLP, GPIO_FN_PORT226_VIO_CKO2, | ||
| 246 | GPIO_FN_IDIN, | ||
| 247 | GPIO_FN_MFG1_IN1, | ||
| 248 | GPIO_FN_MSIOF1_TXD, | ||
| 249 | GPIO_FN_MSIOF1_TSYNC, | ||
| 250 | GPIO_FN_MSIOF1_TSCK, | ||
| 251 | GPIO_FN_MSIOF1_RXD, | ||
| 252 | GPIO_FN_MSIOF1_RSCK, GPIO_FN_VIO2_CLK2, | ||
| 253 | GPIO_FN_MSIOF1_RSYNC, GPIO_FN_MFG1_IN2, GPIO_FN_VIO2_VD2, \ | ||
| 254 | GPIO_FN_MSIOF1_MCK0, | ||
| 255 | GPIO_FN_MSIOF1_MCK1, | ||
| 256 | GPIO_FN_MSIOF1_SS1, GPIO_FN_VIO2_FIELD2, | ||
| 257 | GPIO_FN_MSIOF1_SS2, GPIO_FN_VIO2_HD2, | ||
| 258 | GPIO_FN_PORT241_IROUT, GPIO_FN_MFG4_OUT1, \ | ||
| 259 | GPIO_FN_TPU4TO0, | ||
| 260 | GPIO_FN_MFG4_IN2, | ||
| 261 | GPIO_FN_PORT243_VIO_CKO2, | ||
| 262 | GPIO_FN_MFG2_IN1, | ||
| 263 | GPIO_FN_MSIOF2R_RXD, | ||
| 264 | GPIO_FN_MFG2_IN2, | ||
| 265 | GPIO_FN_MSIOF2R_TXD, | ||
| 266 | GPIO_FN_MFG1_OUT1, | ||
| 267 | GPIO_FN_TPU1TO0, | ||
| 268 | GPIO_FN_MFG3_OUT2, | ||
| 269 | GPIO_FN_TPU3TO1, | ||
| 270 | GPIO_FN_MFG2_OUT1, | ||
| 271 | GPIO_FN_TPU2TO0, | ||
| 272 | GPIO_FN_MSIOF2R_TSCK, | ||
| 273 | GPIO_FN_PORT249_IROUT, GPIO_FN_MFG4_IN1, \ | ||
| 274 | GPIO_FN_MSIOF2R_TSYNC, | ||
| 275 | GPIO_FN_SDHICLK0, | ||
| 276 | GPIO_FN_SDHICD0, | ||
| 277 | GPIO_FN_SDHID0_0, | ||
| 278 | GPIO_FN_SDHID0_1, | ||
| 279 | GPIO_FN_SDHID0_2, | ||
| 280 | GPIO_FN_SDHID0_3, | ||
| 281 | GPIO_FN_SDHICMD0, | ||
| 282 | GPIO_FN_SDHIWP0, | ||
| 283 | GPIO_FN_SDHICLK1, | ||
| 284 | GPIO_FN_SDHID1_0, GPIO_FN_TS_SPSYNC2, | ||
| 285 | GPIO_FN_SDHID1_1, GPIO_FN_TS_SDAT2, | ||
| 286 | GPIO_FN_SDHID1_2, GPIO_FN_TS_SDEN2, | ||
| 287 | GPIO_FN_SDHID1_3, GPIO_FN_TS_SCK2, | ||
| 288 | GPIO_FN_SDHICMD1, | ||
| 289 | GPIO_FN_SDHICLK2, | ||
| 290 | GPIO_FN_SDHID2_0, GPIO_FN_TS_SPSYNC4, | ||
| 291 | GPIO_FN_SDHID2_1, GPIO_FN_TS_SDAT4, | ||
| 292 | GPIO_FN_SDHID2_2, GPIO_FN_TS_SDEN4, | ||
| 293 | GPIO_FN_SDHID2_3, GPIO_FN_TS_SCK4, | ||
| 294 | GPIO_FN_SDHICMD2, | ||
| 295 | GPIO_FN_MMCCLK0, | ||
| 296 | GPIO_FN_MMCD0_0, | ||
| 297 | GPIO_FN_MMCD0_1, | ||
| 298 | GPIO_FN_MMCD0_2, | ||
| 299 | GPIO_FN_MMCD0_3, | ||
| 300 | GPIO_FN_MMCD0_4, GPIO_FN_TS_SPSYNC5, | ||
| 301 | GPIO_FN_MMCD0_5, GPIO_FN_TS_SDAT5, | ||
| 302 | GPIO_FN_MMCD0_6, GPIO_FN_TS_SDEN5, | ||
| 303 | GPIO_FN_MMCD0_7, GPIO_FN_TS_SCK5, | ||
| 304 | GPIO_FN_MMCCMD0, | ||
| 305 | GPIO_FN_RESETOUTS_, GPIO_FN_EXTAL2OUT, | ||
| 306 | GPIO_FN_MCP_WAIT__MCP_FRB, | ||
| 307 | GPIO_FN_MCP_CKO, GPIO_FN_MMCCLK1, | ||
| 308 | GPIO_FN_MCP_D15_MCP_NAF15, | ||
| 309 | GPIO_FN_MCP_D14_MCP_NAF14, | ||
| 310 | GPIO_FN_MCP_D13_MCP_NAF13, | ||
| 311 | GPIO_FN_MCP_D12_MCP_NAF12, | ||
| 312 | GPIO_FN_MCP_D11_MCP_NAF11, | ||
| 313 | GPIO_FN_MCP_D10_MCP_NAF10, | ||
| 314 | GPIO_FN_MCP_D9_MCP_NAF9, | ||
| 315 | GPIO_FN_MCP_D8_MCP_NAF8, GPIO_FN_MMCCMD1, | ||
| 316 | GPIO_FN_MCP_D7_MCP_NAF7, GPIO_FN_MMCD1_7, | ||
| 317 | |||
| 318 | GPIO_FN_MCP_D6_MCP_NAF6, GPIO_FN_MMCD1_6, | ||
| 319 | GPIO_FN_MCP_D5_MCP_NAF5, GPIO_FN_MMCD1_5, | ||
| 320 | GPIO_FN_MCP_D4_MCP_NAF4, GPIO_FN_MMCD1_4, | ||
| 321 | GPIO_FN_MCP_D3_MCP_NAF3, GPIO_FN_MMCD1_3, | ||
| 322 | GPIO_FN_MCP_D2_MCP_NAF2, GPIO_FN_MMCD1_2, | ||
| 323 | GPIO_FN_MCP_D1_MCP_NAF1, GPIO_FN_MMCD1_1, | ||
| 324 | GPIO_FN_MCP_D0_MCP_NAF0, GPIO_FN_MMCD1_0, | ||
| 325 | GPIO_FN_MCP_NBRSTOUT_, | ||
| 326 | GPIO_FN_MCP_WE0__MCP_FWE, GPIO_FN_MCP_RDWR_MCP_FWE, | ||
| 327 | |||
| 328 | /* MSEL2 special case */ | ||
| 329 | GPIO_FN_TSIF2_TS_XX1, | ||
| 330 | GPIO_FN_TSIF2_TS_XX2, | ||
| 331 | GPIO_FN_TSIF2_TS_XX3, | ||
| 332 | GPIO_FN_TSIF2_TS_XX4, | ||
| 333 | GPIO_FN_TSIF2_TS_XX5, | ||
| 334 | GPIO_FN_TSIF1_TS_XX1, | ||
| 335 | GPIO_FN_TSIF1_TS_XX2, | ||
| 336 | GPIO_FN_TSIF1_TS_XX3, | ||
| 337 | GPIO_FN_TSIF1_TS_XX4, | ||
| 338 | GPIO_FN_TSIF1_TS_XX5, | ||
| 339 | GPIO_FN_TSIF0_TS_XX1, | ||
| 340 | GPIO_FN_TSIF0_TS_XX2, | ||
| 341 | GPIO_FN_TSIF0_TS_XX3, | ||
| 342 | GPIO_FN_TSIF0_TS_XX4, | ||
| 343 | GPIO_FN_TSIF0_TS_XX5, | ||
| 344 | GPIO_FN_MST1_TS_XX1, | ||
| 345 | GPIO_FN_MST1_TS_XX2, | ||
| 346 | GPIO_FN_MST1_TS_XX3, | ||
| 347 | GPIO_FN_MST1_TS_XX4, | ||
| 348 | GPIO_FN_MST1_TS_XX5, | ||
| 349 | GPIO_FN_MST0_TS_XX1, | ||
| 350 | GPIO_FN_MST0_TS_XX2, | ||
| 351 | GPIO_FN_MST0_TS_XX3, | ||
| 352 | GPIO_FN_MST0_TS_XX4, | ||
| 353 | GPIO_FN_MST0_TS_XX5, | ||
| 354 | |||
| 355 | /* MSEL3 special cases */ | ||
| 356 | GPIO_FN_SDHI0_VCCQ_MC0_ON, | ||
| 357 | GPIO_FN_SDHI0_VCCQ_MC0_OFF, | ||
| 358 | GPIO_FN_DEBUG_MON_VIO, | ||
| 359 | GPIO_FN_DEBUG_MON_LCDD, | ||
| 360 | GPIO_FN_LCDC_LCDC0, | ||
| 361 | GPIO_FN_LCDC_LCDC1, | ||
| 362 | |||
| 363 | /* MSEL4 special cases */ | ||
| 364 | GPIO_FN_IRQ9_MEM_INT, | ||
| 365 | GPIO_FN_IRQ9_MCP_INT, | ||
| 366 | GPIO_FN_A11, | ||
| 367 | GPIO_FN_TPU4TO3, | ||
| 368 | GPIO_FN_RESETA_N_PU_ON, | ||
| 369 | GPIO_FN_RESETA_N_PU_OFF, | ||
| 370 | GPIO_FN_EDBGREQ_PD, | ||
| 371 | GPIO_FN_EDBGREQ_PU, | ||
| 372 | |||
| 373 | /* end of GPIO */ | ||
| 374 | GPIO_NR, | ||
| 375 | }; | ||
| 376 | 5 | ||
| 377 | /* DMA slave IDs */ | 6 | /* DMA slave IDs */ |
| 378 | enum { | 7 | enum { |
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c index 8db0b981ca64..c492e1b3dfdb 100644 --- a/arch/arm/plat-orion/irq.c +++ b/arch/arm/plat-orion/irq.c | |||
| @@ -47,7 +47,7 @@ static int __init orion_add_irq_domain(struct device_node *np, | |||
| 47 | do { | 47 | do { |
| 48 | base = of_iomap(np, i); | 48 | base = of_iomap(np, i); |
| 49 | if (base) { | 49 | if (base) { |
| 50 | orion_irq_init(i * 32, base); | 50 | orion_irq_init(i * 32, base + 0x04); |
| 51 | i++; | 51 | i++; |
| 52 | } | 52 | } |
| 53 | } while (base); | 53 | } while (base); |
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index a4f630f04ea3..65dd81baa7f6 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | #include <linux/spi/mmc_spi.h> | 30 | #include <linux/spi/mmc_spi.h> |
| 31 | #include <linux/input.h> | 31 | #include <linux/input.h> |
| 32 | #include <linux/input/sh_keysc.h> | 32 | #include <linux/input/sh_keysc.h> |
| 33 | #include <linux/platform_data/gpio_backlight.h> | ||
| 33 | #include <linux/sh_eth.h> | 34 | #include <linux/sh_eth.h> |
| 34 | #include <linux/sh_intc.h> | 35 | #include <linux/sh_intc.h> |
| 35 | #include <linux/videodev2.h> | 36 | #include <linux/videodev2.h> |
| @@ -302,7 +303,7 @@ static struct platform_device usbhs_device = { | |||
| 302 | .resource = usbhs_resources, | 303 | .resource = usbhs_resources, |
| 303 | }; | 304 | }; |
| 304 | 305 | ||
| 305 | /* LCDC */ | 306 | /* LCDC and backlight */ |
| 306 | static const struct fb_videomode ecovec_lcd_modes[] = { | 307 | static const struct fb_videomode ecovec_lcd_modes[] = { |
| 307 | { | 308 | { |
| 308 | .name = "Panel", | 309 | .name = "Panel", |
| @@ -333,13 +334,6 @@ static const struct fb_videomode ecovec_dvi_modes[] = { | |||
| 333 | }, | 334 | }, |
| 334 | }; | 335 | }; |
| 335 | 336 | ||
| 336 | static int ecovec24_set_brightness(int brightness) | ||
| 337 | { | ||
| 338 | gpio_set_value(GPIO_PTR1, brightness); | ||
| 339 | |||
| 340 | return 0; | ||
| 341 | } | ||
| 342 | |||
| 343 | static struct sh_mobile_lcdc_info lcdc_info = { | 337 | static struct sh_mobile_lcdc_info lcdc_info = { |
| 344 | .ch[0] = { | 338 | .ch[0] = { |
| 345 | .interface_type = RGB18, | 339 | .interface_type = RGB18, |
| @@ -349,11 +343,6 @@ static struct sh_mobile_lcdc_info lcdc_info = { | |||
| 349 | .width = 152, | 343 | .width = 152, |
| 350 | .height = 91, | 344 | .height = 91, |
| 351 | }, | 345 | }, |
| 352 | .bl_info = { | ||
| 353 | .name = "sh_mobile_lcdc_bl", | ||
| 354 | .max_brightness = 1, | ||
| 355 | .set_brightness = ecovec24_set_brightness, | ||
| 356 | }, | ||
| 357 | } | 346 | } |
| 358 | }; | 347 | }; |
| 359 | 348 | ||
| @@ -379,6 +368,20 @@ static struct platform_device lcdc_device = { | |||
| 379 | }, | 368 | }, |
| 380 | }; | 369 | }; |
| 381 | 370 | ||
| 371 | static struct gpio_backlight_platform_data gpio_backlight_data = { | ||
| 372 | .fbdev = &lcdc_device.dev, | ||
| 373 | .gpio = GPIO_PTR1, | ||
| 374 | .def_value = 1, | ||
| 375 | .name = "backlight", | ||
| 376 | }; | ||
| 377 | |||
| 378 | static struct platform_device gpio_backlight_device = { | ||
| 379 | .name = "gpio-backlight", | ||
| 380 | .dev = { | ||
| 381 | .platform_data = &gpio_backlight_data, | ||
| 382 | }, | ||
| 383 | }; | ||
| 384 | |||
| 382 | /* CEU0 */ | 385 | /* CEU0 */ |
| 383 | static struct sh_mobile_ceu_info sh_mobile_ceu0_info = { | 386 | static struct sh_mobile_ceu_info sh_mobile_ceu0_info = { |
| 384 | .flags = SH_CEU_FLAG_USE_8BIT_BUS, | 387 | .flags = SH_CEU_FLAG_USE_8BIT_BUS, |
| @@ -1048,6 +1051,7 @@ static struct platform_device *ecovec_devices[] __initdata = { | |||
| 1048 | &usb1_common_device, | 1051 | &usb1_common_device, |
| 1049 | &usbhs_device, | 1052 | &usbhs_device, |
| 1050 | &lcdc_device, | 1053 | &lcdc_device, |
| 1054 | &gpio_backlight_device, | ||
| 1051 | &ceu0_device, | 1055 | &ceu0_device, |
| 1052 | &ceu1_device, | 1056 | &ceu1_device, |
| 1053 | &keysc_device, | 1057 | &keysc_device, |
| @@ -1238,11 +1242,9 @@ static int __init arch_setup(void) | |||
| 1238 | 1242 | ||
| 1239 | gpio_request(GPIO_PTE6, NULL); | 1243 | gpio_request(GPIO_PTE6, NULL); |
| 1240 | gpio_request(GPIO_PTU1, NULL); | 1244 | gpio_request(GPIO_PTU1, NULL); |
| 1241 | gpio_request(GPIO_PTR1, NULL); | ||
| 1242 | gpio_request(GPIO_PTA2, NULL); | 1245 | gpio_request(GPIO_PTA2, NULL); |
| 1243 | gpio_direction_input(GPIO_PTE6); | 1246 | gpio_direction_input(GPIO_PTE6); |
| 1244 | gpio_direction_output(GPIO_PTU1, 0); | 1247 | gpio_direction_output(GPIO_PTU1, 0); |
| 1245 | gpio_direction_output(GPIO_PTR1, 0); | ||
| 1246 | gpio_direction_output(GPIO_PTA2, 0); | 1248 | gpio_direction_output(GPIO_PTA2, 0); |
| 1247 | 1249 | ||
| 1248 | /* I/O buffer drive ability is high */ | 1250 | /* I/O buffer drive ability is high */ |
| @@ -1255,6 +1257,9 @@ static int __init arch_setup(void) | |||
| 1255 | lcdc_info.ch[0].lcd_modes = ecovec_dvi_modes; | 1257 | lcdc_info.ch[0].lcd_modes = ecovec_dvi_modes; |
| 1256 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_dvi_modes); | 1258 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_dvi_modes); |
| 1257 | 1259 | ||
| 1260 | /* No backlight */ | ||
| 1261 | gpio_backlight_data.fbdev = NULL; | ||
| 1262 | |||
| 1258 | gpio_set_value(GPIO_PTA2, 1); | 1263 | gpio_set_value(GPIO_PTA2, 1); |
| 1259 | gpio_set_value(GPIO_PTU1, 1); | 1264 | gpio_set_value(GPIO_PTU1, 1); |
| 1260 | } else { | 1265 | } else { |
| @@ -1264,8 +1269,6 @@ static int __init arch_setup(void) | |||
| 1264 | lcdc_info.ch[0].lcd_modes = ecovec_lcd_modes; | 1269 | lcdc_info.ch[0].lcd_modes = ecovec_lcd_modes; |
| 1265 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_lcd_modes); | 1270 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_lcd_modes); |
| 1266 | 1271 | ||
| 1267 | gpio_set_value(GPIO_PTR1, 1); | ||
| 1268 | |||
| 1269 | /* FIXME | 1272 | /* FIXME |
| 1270 | * | 1273 | * |
| 1271 | * LCDDON control is needed for Panel, | 1274 | * LCDDON control is needed for Panel, |
diff --git a/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c b/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c index c62050332629..355a78a3b313 100644 --- a/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c +++ b/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c | |||
| @@ -276,51 +276,3 @@ void kfr2r09_lcd_start(void *sohandle, struct sh_mobile_lcdc_sys_bus_ops *so) | |||
| 276 | { | 276 | { |
| 277 | write_memory_start(sohandle, so); | 277 | write_memory_start(sohandle, so); |
| 278 | } | 278 | } |
| 279 | |||
| 280 | #define CTRL_CKSW 0x10 | ||
| 281 | #define CTRL_C10 0x20 | ||
| 282 | #define CTRL_CPSW 0x80 | ||
| 283 | #define MAIN_MLED4 0x40 | ||
| 284 | #define MAIN_MSW 0x80 | ||
| 285 | |||
| 286 | int kfr2r09_lcd_set_brightness(int brightness) | ||
| 287 | { | ||
| 288 | struct i2c_adapter *a; | ||
| 289 | struct i2c_msg msg; | ||
| 290 | unsigned char buf[2]; | ||
| 291 | int ret; | ||
| 292 | |||
| 293 | a = i2c_get_adapter(0); | ||
| 294 | if (!a) | ||
| 295 | return -ENODEV; | ||
| 296 | |||
| 297 | buf[0] = 0x00; | ||
| 298 | if (brightness) | ||
| 299 | buf[1] = CTRL_CPSW | CTRL_C10 | CTRL_CKSW; | ||
| 300 | else | ||
| 301 | buf[1] = 0; | ||
| 302 | |||
| 303 | msg.addr = 0x75; | ||
| 304 | msg.buf = buf; | ||
| 305 | msg.len = 2; | ||
| 306 | msg.flags = 0; | ||
| 307 | ret = i2c_transfer(a, &msg, 1); | ||
| 308 | if (ret != 1) | ||
| 309 | return -ENODEV; | ||
| 310 | |||
| 311 | buf[0] = 0x01; | ||
| 312 | if (brightness) | ||
| 313 | buf[1] = MAIN_MSW | MAIN_MLED4 | 0x0c; | ||
| 314 | else | ||
| 315 | buf[1] = 0; | ||
| 316 | |||
| 317 | msg.addr = 0x75; | ||
| 318 | msg.buf = buf; | ||
| 319 | msg.len = 2; | ||
| 320 | msg.flags = 0; | ||
| 321 | ret = i2c_transfer(a, &msg, 1); | ||
| 322 | if (ret != 1) | ||
| 323 | return -ENODEV; | ||
| 324 | |||
| 325 | return 0; | ||
| 326 | } | ||
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c index ab502f12ef57..1df4398f8375 100644 --- a/arch/sh/boards/mach-kfr2r09/setup.c +++ b/arch/sh/boards/mach-kfr2r09/setup.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/input.h> | 21 | #include <linux/input.h> |
| 22 | #include <linux/input/sh_keysc.h> | 22 | #include <linux/input/sh_keysc.h> |
| 23 | #include <linux/i2c.h> | 23 | #include <linux/i2c.h> |
| 24 | #include <linux/platform_data/lv5207lp.h> | ||
| 24 | #include <linux/regulator/fixed.h> | 25 | #include <linux/regulator/fixed.h> |
| 25 | #include <linux/regulator/machine.h> | 26 | #include <linux/regulator/machine.h> |
| 26 | #include <linux/usb/r8a66597.h> | 27 | #include <linux/usb/r8a66597.h> |
| @@ -159,11 +160,6 @@ static struct sh_mobile_lcdc_info kfr2r09_sh_lcdc_info = { | |||
| 159 | .setup_sys = kfr2r09_lcd_setup, | 160 | .setup_sys = kfr2r09_lcd_setup, |
| 160 | .start_transfer = kfr2r09_lcd_start, | 161 | .start_transfer = kfr2r09_lcd_start, |
| 161 | }, | 162 | }, |
| 162 | .bl_info = { | ||
| 163 | .name = "sh_mobile_lcdc_bl", | ||
| 164 | .max_brightness = 1, | ||
| 165 | .set_brightness = kfr2r09_lcd_set_brightness, | ||
| 166 | }, | ||
| 167 | .sys_bus_cfg = { | 163 | .sys_bus_cfg = { |
| 168 | .ldmt2r = 0x07010904, | 164 | .ldmt2r = 0x07010904, |
| 169 | .ldmt3r = 0x14012914, | 165 | .ldmt3r = 0x14012914, |
| @@ -195,6 +191,17 @@ static struct platform_device kfr2r09_sh_lcdc_device = { | |||
| 195 | }, | 191 | }, |
| 196 | }; | 192 | }; |
| 197 | 193 | ||
| 194 | static struct lv5207lp_platform_data kfr2r09_backlight_data = { | ||
| 195 | .fbdev = &kfr2r09_sh_lcdc_device.dev, | ||
| 196 | .def_value = 13, | ||
| 197 | .max_value = 13, | ||
| 198 | }; | ||
| 199 | |||
| 200 | static struct i2c_board_info kfr2r09_backlight_board_info = { | ||
| 201 | I2C_BOARD_INFO("lv5207lp", 0x75), | ||
| 202 | .platform_data = &kfr2r09_backlight_data, | ||
| 203 | }; | ||
| 204 | |||
| 198 | static struct r8a66597_platdata kfr2r09_usb0_gadget_data = { | 205 | static struct r8a66597_platdata kfr2r09_usb0_gadget_data = { |
| 199 | .on_chip = 1, | 206 | .on_chip = 1, |
| 200 | }; | 207 | }; |
| @@ -627,6 +634,8 @@ static int __init kfr2r09_devices_setup(void) | |||
| 627 | gpio_request(GPIO_FN_SDHI0CMD, NULL); | 634 | gpio_request(GPIO_FN_SDHI0CMD, NULL); |
| 628 | gpio_request(GPIO_FN_SDHI0CLK, NULL); | 635 | gpio_request(GPIO_FN_SDHI0CLK, NULL); |
| 629 | 636 | ||
| 637 | i2c_register_board_info(0, &kfr2r09_backlight_board_info, 1); | ||
| 638 | |||
| 630 | return platform_add_devices(kfr2r09_devices, | 639 | return platform_add_devices(kfr2r09_devices, |
| 631 | ARRAY_SIZE(kfr2r09_devices)); | 640 | ARRAY_SIZE(kfr2r09_devices)); |
| 632 | } | 641 | } |
diff --git a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h index c20c9e5f5eab..79f154e5cb9c 100644 --- a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h +++ b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h | |||
| @@ -4,13 +4,11 @@ | |||
| 4 | #include <video/sh_mobile_lcdc.h> | 4 | #include <video/sh_mobile_lcdc.h> |
| 5 | 5 | ||
| 6 | #if defined(CONFIG_FB_SH_MOBILE_LCDC) || defined(CONFIG_FB_SH_MOBILE_LCDC_MODULE) | 6 | #if defined(CONFIG_FB_SH_MOBILE_LCDC) || defined(CONFIG_FB_SH_MOBILE_LCDC_MODULE) |
| 7 | int kfr2r09_lcd_set_brightness(int brightness); | ||
| 8 | int kfr2r09_lcd_setup(void *sys_ops_handle, | 7 | int kfr2r09_lcd_setup(void *sys_ops_handle, |
| 9 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); | 8 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); |
| 10 | void kfr2r09_lcd_start(void *sys_ops_handle, | 9 | void kfr2r09_lcd_start(void *sys_ops_handle, |
| 11 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); | 10 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); |
| 12 | #else | 11 | #else |
| 13 | static int kfr2r09_lcd_set_brightness(int brightness) {} | ||
| 14 | static int kfr2r09_lcd_setup(void *sys_ops_handle, | 12 | static int kfr2r09_lcd_setup(void *sys_ops_handle, |
| 15 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops) | 13 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops) |
| 16 | { | 14 | { |
diff --git a/drivers/clocksource/bcm_kona_timer.c b/drivers/clocksource/bcm_kona_timer.c index ba3d85904c9a..0d7d8c3ed6b2 100644 --- a/drivers/clocksource/bcm_kona_timer.c +++ b/drivers/clocksource/bcm_kona_timer.c | |||
| @@ -99,7 +99,8 @@ kona_timer_get_counter(void *timer_base, uint32_t *msw, uint32_t *lsw) | |||
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | static const struct of_device_id bcm_timer_ids[] __initconst = { | 101 | static const struct of_device_id bcm_timer_ids[] __initconst = { |
| 102 | {.compatible = "bcm,kona-timer"}, | 102 | {.compatible = "brcm,kona-timer"}, |
| 103 | {.compatible = "bcm,kona-timer"}, /* deprecated name */ | ||
| 103 | {}, | 104 | {}, |
| 104 | }; | 105 | }; |
| 105 | 106 | ||
| @@ -201,4 +202,9 @@ static void __init kona_timer_init(struct device_node *node) | |||
| 201 | kona_timer_set_next_event((arch_timer_rate / HZ), NULL); | 202 | kona_timer_set_next_event((arch_timer_rate / HZ), NULL); |
| 202 | } | 203 | } |
| 203 | 204 | ||
| 205 | CLOCKSOURCE_OF_DECLARE(brcm_kona, "brcm,kona-timer", kona_timer_init); | ||
| 206 | /* | ||
| 207 | * bcm,kona-timer is deprecated by brcm,kona-timer | ||
| 208 | * being kept here for driver compatibility | ||
| 209 | */ | ||
| 204 | CLOCKSOURCE_OF_DECLARE(bcm_kona, "bcm,kona-timer", kona_timer_init); | 210 | CLOCKSOURCE_OF_DECLARE(bcm_kona, "bcm,kona-timer", kona_timer_init); |
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index e43402dd1dea..074bcb3892b5 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig | |||
| @@ -429,18 +429,6 @@ config LEDS_ASIC3 | |||
| 429 | cannot be used. This driver supports hardware blinking with an on+off | 429 | cannot be used. This driver supports hardware blinking with an on+off |
| 430 | period from 62ms to 125s. Say Y to enable LEDs on the HP iPAQ hx4700. | 430 | period from 62ms to 125s. Say Y to enable LEDs on the HP iPAQ hx4700. |
| 431 | 431 | ||
| 432 | config LEDS_RENESAS_TPU | ||
| 433 | bool "LED support for Renesas TPU" | ||
| 434 | depends on LEDS_CLASS=y && HAVE_CLK && GPIOLIB | ||
| 435 | help | ||
| 436 | This option enables build of the LED TPU platform driver, | ||
| 437 | suitable to drive any TPU channel on newer Renesas SoCs. | ||
| 438 | The driver controls the GPIO pin connected to the LED via | ||
| 439 | the GPIO framework and expects the LED to be connected to | ||
| 440 | a pin that can be driven in both GPIO mode and using TPU | ||
| 441 | pin function. The latter to support brightness control. | ||
| 442 | Brightness control is supported but hardware blinking is not. | ||
| 443 | |||
| 444 | config LEDS_TCA6507 | 432 | config LEDS_TCA6507 |
| 445 | tristate "LED Support for TCA6507 I2C chip" | 433 | tristate "LED Support for TCA6507 I2C chip" |
| 446 | depends on LEDS_CLASS && I2C | 434 | depends on LEDS_CLASS && I2C |
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile index ac2897732b02..ae4b6135f665 100644 --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile | |||
| @@ -49,7 +49,6 @@ obj-$(CONFIG_LEDS_MC13783) += leds-mc13783.o | |||
| 49 | obj-$(CONFIG_LEDS_NS2) += leds-ns2.o | 49 | obj-$(CONFIG_LEDS_NS2) += leds-ns2.o |
| 50 | obj-$(CONFIG_LEDS_NETXBIG) += leds-netxbig.o | 50 | obj-$(CONFIG_LEDS_NETXBIG) += leds-netxbig.o |
| 51 | obj-$(CONFIG_LEDS_ASIC3) += leds-asic3.o | 51 | obj-$(CONFIG_LEDS_ASIC3) += leds-asic3.o |
| 52 | obj-$(CONFIG_LEDS_RENESAS_TPU) += leds-renesas-tpu.o | ||
| 53 | obj-$(CONFIG_LEDS_MAX8997) += leds-max8997.o | 52 | obj-$(CONFIG_LEDS_MAX8997) += leds-max8997.o |
| 54 | obj-$(CONFIG_LEDS_LM355x) += leds-lm355x.o | 53 | obj-$(CONFIG_LEDS_LM355x) += leds-lm355x.o |
| 55 | obj-$(CONFIG_LEDS_BLINKM) += leds-blinkm.o | 54 | obj-$(CONFIG_LEDS_BLINKM) += leds-blinkm.o |
diff --git a/drivers/leds/leds-renesas-tpu.c b/drivers/leds/leds-renesas-tpu.c deleted file mode 100644 index adebf4931e1e..000000000000 --- a/drivers/leds/leds-renesas-tpu.c +++ /dev/null | |||
| @@ -1,337 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * LED control using Renesas TPU | ||
| 3 | * | ||
| 4 | * Copyright (C) 2011 Magnus Damm | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13 | * GNU General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU General Public License | ||
| 16 | * along with this program; if not, write to the Free Software | ||
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 18 | */ | ||
| 19 | |||
| 20 | #include <linux/module.h> | ||
| 21 | #include <linux/init.h> | ||
| 22 | #include <linux/platform_device.h> | ||
| 23 | #include <linux/spinlock.h> | ||
| 24 | #include <linux/printk.h> | ||
| 25 | #include <linux/ioport.h> | ||
| 26 | #include <linux/io.h> | ||
| 27 | #include <linux/clk.h> | ||
| 28 | #include <linux/leds.h> | ||
| 29 | #include <linux/platform_data/leds-renesas-tpu.h> | ||
| 30 | #include <linux/gpio.h> | ||
| 31 | #include <linux/err.h> | ||
| 32 | #include <linux/slab.h> | ||
| 33 | #include <linux/pm_runtime.h> | ||
| 34 | #include <linux/workqueue.h> | ||
| 35 | |||
| 36 | enum r_tpu_pin { R_TPU_PIN_UNUSED, R_TPU_PIN_GPIO, R_TPU_PIN_GPIO_FN }; | ||
| 37 | enum r_tpu_timer { R_TPU_TIMER_UNUSED, R_TPU_TIMER_ON }; | ||
| 38 | |||
| 39 | struct r_tpu_priv { | ||
| 40 | struct led_classdev ldev; | ||
| 41 | void __iomem *mapbase; | ||
| 42 | struct clk *clk; | ||
| 43 | struct platform_device *pdev; | ||
| 44 | enum r_tpu_pin pin_state; | ||
| 45 | enum r_tpu_timer timer_state; | ||
| 46 | unsigned long min_rate; | ||
| 47 | unsigned int refresh_rate; | ||
| 48 | struct work_struct work; | ||
| 49 | enum led_brightness new_brightness; | ||
| 50 | }; | ||
| 51 | |||
| 52 | static DEFINE_SPINLOCK(r_tpu_lock); | ||
| 53 | |||
| 54 | #define TSTR -1 /* Timer start register (shared register) */ | ||
| 55 | #define TCR 0 /* Timer control register (+0x00) */ | ||
| 56 | #define TMDR 1 /* Timer mode register (+0x04) */ | ||
| 57 | #define TIOR 2 /* Timer I/O control register (+0x08) */ | ||
| 58 | #define TIER 3 /* Timer interrupt enable register (+0x0c) */ | ||
| 59 | #define TSR 4 /* Timer status register (+0x10) */ | ||
| 60 | #define TCNT 5 /* Timer counter (+0x14) */ | ||
| 61 | #define TGRA 6 /* Timer general register A (+0x18) */ | ||
| 62 | #define TGRB 7 /* Timer general register B (+0x1c) */ | ||
| 63 | #define TGRC 8 /* Timer general register C (+0x20) */ | ||
| 64 | #define TGRD 9 /* Timer general register D (+0x24) */ | ||
| 65 | |||
| 66 | static inline u16 r_tpu_read(struct r_tpu_priv *p, int reg_nr) | ||
| 67 | { | ||
| 68 | struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data; | ||
| 69 | void __iomem *base = p->mapbase; | ||
| 70 | unsigned long offs = reg_nr << 2; | ||
| 71 | |||
| 72 | if (reg_nr == TSTR) | ||
| 73 | return ioread16(base - cfg->channel_offset); | ||
| 74 | |||
| 75 | return ioread16(base + offs); | ||
| 76 | } | ||
| 77 | |||
| 78 | static inline void r_tpu_write(struct r_tpu_priv *p, int reg_nr, u16 value) | ||
| 79 | { | ||
| 80 | struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data; | ||
| 81 | void __iomem *base = p->mapbase; | ||
| 82 | unsigned long offs = reg_nr << 2; | ||
| 83 | |||
| 84 | if (reg_nr == TSTR) { | ||
| 85 | iowrite16(value, base - cfg->channel_offset); | ||
| 86 | return; | ||
| 87 | } | ||
| 88 | |||
| 89 | iowrite16(value, base + offs); | ||
| 90 | } | ||
| 91 | |||
| 92 | static void r_tpu_start_stop_ch(struct r_tpu_priv *p, int start) | ||
| 93 | { | ||
| 94 | struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data; | ||
| 95 | unsigned long flags; | ||
| 96 | u16 value; | ||
| 97 | |||
| 98 | /* start stop register shared by multiple timer channels */ | ||
| 99 | spin_lock_irqsave(&r_tpu_lock, flags); | ||
| 100 | value = r_tpu_read(p, TSTR); | ||
| 101 | |||
| 102 | if (start) | ||
| 103 | value |= 1 << cfg->timer_bit; | ||
| 104 | else | ||
| 105 | value &= ~(1 << cfg->timer_bit); | ||
| 106 | |||
| 107 | r_tpu_write(p, TSTR, value); | ||
| 108 | spin_unlock_irqrestore(&r_tpu_lock, flags); | ||
| 109 | } | ||
| 110 | |||
| 111 | static int r_tpu_enable(struct r_tpu_priv *p, enum led_brightness brightness) | ||
| 112 | { | ||
| 113 | struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data; | ||
| 114 | int prescaler[] = { 1, 4, 16, 64 }; | ||
| 115 | int k, ret; | ||
| 116 | unsigned long rate, tmp; | ||
| 117 | |||
| 118 | if (p->timer_state == R_TPU_TIMER_ON) | ||
| 119 | return 0; | ||
| 120 | |||
| 121 | /* wake up device and enable clock */ | ||
| 122 | pm_runtime_get_sync(&p->pdev->dev); | ||
| 123 | ret = clk_enable(p->clk); | ||
| 124 | if (ret) { | ||
| 125 | dev_err(&p->pdev->dev, "cannot enable clock\n"); | ||
| 126 | return ret; | ||
| 127 | } | ||
| 128 | |||
| 129 | /* make sure channel is disabled */ | ||
| 130 | r_tpu_start_stop_ch(p, 0); | ||
| 131 | |||
| 132 | /* get clock rate after enabling it */ | ||
| 133 | rate = clk_get_rate(p->clk); | ||
| 134 | |||
| 135 | /* pick the lowest acceptable rate */ | ||
| 136 | for (k = ARRAY_SIZE(prescaler) - 1; k >= 0; k--) | ||
| 137 | if ((rate / prescaler[k]) >= p->min_rate) | ||
| 138 | break; | ||
| 139 | |||
| 140 | if (k < 0) { | ||
| 141 | dev_err(&p->pdev->dev, "clock rate mismatch\n"); | ||
| 142 | goto err0; | ||
| 143 | } | ||
| 144 | dev_dbg(&p->pdev->dev, "rate = %lu, prescaler %u\n", | ||
| 145 | rate, prescaler[k]); | ||
| 146 | |||
| 147 | /* clear TCNT on TGRB match, count on rising edge, set prescaler */ | ||
| 148 | r_tpu_write(p, TCR, 0x0040 | k); | ||
| 149 | |||
| 150 | /* output 0 until TGRA, output 1 until TGRB */ | ||
| 151 | r_tpu_write(p, TIOR, 0x0002); | ||
| 152 | |||
| 153 | rate /= prescaler[k] * p->refresh_rate; | ||
| 154 | r_tpu_write(p, TGRB, rate); | ||
| 155 | dev_dbg(&p->pdev->dev, "TRGB = 0x%04lx\n", rate); | ||
| 156 | |||
| 157 | tmp = (cfg->max_brightness - brightness) * rate; | ||
| 158 | r_tpu_write(p, TGRA, tmp / cfg->max_brightness); | ||
| 159 | dev_dbg(&p->pdev->dev, "TRGA = 0x%04lx\n", tmp / cfg->max_brightness); | ||
| 160 | |||
| 161 | /* PWM mode */ | ||
| 162 | r_tpu_write(p, TMDR, 0x0002); | ||
| 163 | |||
| 164 | /* enable channel */ | ||
| 165 | r_tpu_start_stop_ch(p, 1); | ||
| 166 | |||
| 167 | p->timer_state = R_TPU_TIMER_ON; | ||
| 168 | return 0; | ||
| 169 | err0: | ||
| 170 | clk_disable(p->clk); | ||
| 171 | pm_runtime_put_sync(&p->pdev->dev); | ||
| 172 | return -ENOTSUPP; | ||
| 173 | } | ||
| 174 | |||
| 175 | static void r_tpu_disable(struct r_tpu_priv *p) | ||
| 176 | { | ||
| 177 | if (p->timer_state == R_TPU_TIMER_UNUSED) | ||
| 178 | return; | ||
| 179 | |||
| 180 | /* disable channel */ | ||
| 181 | r_tpu_start_stop_ch(p, 0); | ||
| 182 | |||
| 183 | /* stop clock and mark device as idle */ | ||
| 184 | clk_disable(p->clk); | ||
| 185 | pm_runtime_put_sync(&p->pdev->dev); | ||
| 186 | |||
| 187 | p->timer_state = R_TPU_TIMER_UNUSED; | ||
| 188 | } | ||
| 189 | |||
| 190 | static void r_tpu_set_pin(struct r_tpu_priv *p, enum r_tpu_pin new_state, | ||
| 191 | enum led_brightness brightness) | ||
| 192 | { | ||
| 193 | struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data; | ||
| 194 | |||
| 195 | if (p->pin_state == new_state) { | ||
| 196 | if (p->pin_state == R_TPU_PIN_GPIO) | ||
| 197 | gpio_set_value(cfg->pin_gpio, brightness); | ||
| 198 | return; | ||
| 199 | } | ||
| 200 | |||
| 201 | if (p->pin_state == R_TPU_PIN_GPIO) | ||
| 202 | gpio_free(cfg->pin_gpio); | ||
| 203 | |||
| 204 | if (p->pin_state == R_TPU_PIN_GPIO_FN) | ||
| 205 | gpio_free(cfg->pin_gpio_fn); | ||
| 206 | |||
| 207 | if (new_state == R_TPU_PIN_GPIO) | ||
| 208 | gpio_request_one(cfg->pin_gpio, !!brightness ? | ||
| 209 | GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW, | ||
| 210 | cfg->name); | ||
| 211 | |||
| 212 | if (new_state == R_TPU_PIN_GPIO_FN) | ||
| 213 | gpio_request(cfg->pin_gpio_fn, cfg->name); | ||
| 214 | |||
| 215 | p->pin_state = new_state; | ||
| 216 | } | ||
| 217 | |||
| 218 | static void r_tpu_work(struct work_struct *work) | ||
| 219 | { | ||
| 220 | struct r_tpu_priv *p = container_of(work, struct r_tpu_priv, work); | ||
| 221 | enum led_brightness brightness = p->new_brightness; | ||
| 222 | |||
| 223 | r_tpu_disable(p); | ||
| 224 | |||
| 225 | /* off and maximum are handled as GPIO pins, in between PWM */ | ||
| 226 | if ((brightness == 0) || (brightness == p->ldev.max_brightness)) | ||
| 227 | r_tpu_set_pin(p, R_TPU_PIN_GPIO, brightness); | ||
| 228 | else { | ||
| 229 | r_tpu_set_pin(p, R_TPU_PIN_GPIO_FN, 0); | ||
| 230 | r_tpu_enable(p, brightness); | ||
| 231 | } | ||
| 232 | } | ||
| 233 | |||
| 234 | static void r_tpu_set_brightness(struct led_classdev *ldev, | ||
| 235 | enum led_brightness brightness) | ||
| 236 | { | ||
| 237 | struct r_tpu_priv *p = container_of(ldev, struct r_tpu_priv, ldev); | ||
| 238 | p->new_brightness = brightness; | ||
| 239 | schedule_work(&p->work); | ||
| 240 | } | ||
| 241 | |||
| 242 | static int r_tpu_probe(struct platform_device *pdev) | ||
| 243 | { | ||
| 244 | struct led_renesas_tpu_config *cfg = pdev->dev.platform_data; | ||
| 245 | struct r_tpu_priv *p; | ||
| 246 | struct resource *res; | ||
| 247 | int ret; | ||
| 248 | |||
| 249 | if (!cfg) { | ||
| 250 | dev_err(&pdev->dev, "missing platform data\n"); | ||
| 251 | return -ENODEV; | ||
| 252 | } | ||
| 253 | |||
| 254 | p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL); | ||
| 255 | if (p == NULL) { | ||
| 256 | dev_err(&pdev->dev, "failed to allocate driver data\n"); | ||
| 257 | return -ENOMEM; | ||
| 258 | } | ||
| 259 | |||
| 260 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
| 261 | if (!res) { | ||
| 262 | dev_err(&pdev->dev, "failed to get I/O memory\n"); | ||
| 263 | return -ENXIO; | ||
| 264 | } | ||
| 265 | |||
| 266 | /* map memory, let mapbase point to our channel */ | ||
| 267 | p->mapbase = devm_ioremap_nocache(&pdev->dev, res->start, | ||
| 268 | resource_size(res)); | ||
| 269 | if (p->mapbase == NULL) { | ||
| 270 | dev_err(&pdev->dev, "failed to remap I/O memory\n"); | ||
| 271 | return -ENXIO; | ||
| 272 | } | ||
| 273 | |||
| 274 | /* get hold of clock */ | ||
| 275 | p->clk = devm_clk_get(&pdev->dev, NULL); | ||
| 276 | if (IS_ERR(p->clk)) { | ||
| 277 | dev_err(&pdev->dev, "cannot get clock\n"); | ||
| 278 | return PTR_ERR(p->clk); | ||
| 279 | } | ||
| 280 | |||
| 281 | p->pdev = pdev; | ||
| 282 | p->pin_state = R_TPU_PIN_UNUSED; | ||
| 283 | p->timer_state = R_TPU_TIMER_UNUSED; | ||
| 284 | p->refresh_rate = cfg->refresh_rate ? cfg->refresh_rate : 100; | ||
| 285 | r_tpu_set_pin(p, R_TPU_PIN_GPIO, LED_OFF); | ||
| 286 | platform_set_drvdata(pdev, p); | ||
| 287 | |||
| 288 | INIT_WORK(&p->work, r_tpu_work); | ||
| 289 | |||
| 290 | p->ldev.name = cfg->name; | ||
| 291 | p->ldev.brightness = LED_OFF; | ||
| 292 | p->ldev.max_brightness = cfg->max_brightness; | ||
| 293 | p->ldev.brightness_set = r_tpu_set_brightness; | ||
| 294 | p->ldev.flags |= LED_CORE_SUSPENDRESUME; | ||
| 295 | ret = led_classdev_register(&pdev->dev, &p->ldev); | ||
| 296 | if (ret < 0) | ||
| 297 | goto err0; | ||
| 298 | |||
| 299 | /* max_brightness may be updated by the LED core code */ | ||
| 300 | p->min_rate = p->ldev.max_brightness * p->refresh_rate; | ||
| 301 | |||
| 302 | pm_runtime_enable(&pdev->dev); | ||
| 303 | return 0; | ||
| 304 | |||
| 305 | err0: | ||
| 306 | r_tpu_set_pin(p, R_TPU_PIN_UNUSED, LED_OFF); | ||
| 307 | return ret; | ||
| 308 | } | ||
| 309 | |||
| 310 | static int r_tpu_remove(struct platform_device *pdev) | ||
| 311 | { | ||
| 312 | struct r_tpu_priv *p = platform_get_drvdata(pdev); | ||
| 313 | |||
| 314 | r_tpu_set_brightness(&p->ldev, LED_OFF); | ||
| 315 | led_classdev_unregister(&p->ldev); | ||
| 316 | cancel_work_sync(&p->work); | ||
| 317 | r_tpu_disable(p); | ||
| 318 | r_tpu_set_pin(p, R_TPU_PIN_UNUSED, LED_OFF); | ||
| 319 | |||
| 320 | pm_runtime_disable(&pdev->dev); | ||
| 321 | |||
| 322 | return 0; | ||
| 323 | } | ||
| 324 | |||
| 325 | static struct platform_driver r_tpu_device_driver = { | ||
| 326 | .probe = r_tpu_probe, | ||
| 327 | .remove = r_tpu_remove, | ||
| 328 | .driver = { | ||
| 329 | .name = "leds-renesas-tpu", | ||
| 330 | } | ||
| 331 | }; | ||
| 332 | |||
| 333 | module_platform_driver(r_tpu_device_driver); | ||
| 334 | |||
| 335 | MODULE_AUTHOR("Magnus Damm"); | ||
| 336 | MODULE_DESCRIPTION("Renesas TPU LED Driver"); | ||
| 337 | MODULE_LICENSE("GPL v2"); | ||
diff --git a/drivers/mmc/host/sdhci-bcm-kona.c b/drivers/mmc/host/sdhci-bcm-kona.c index 87175f9817c2..85472d3fd37f 100644 --- a/drivers/mmc/host/sdhci-bcm-kona.c +++ b/drivers/mmc/host/sdhci-bcm-kona.c | |||
| @@ -24,7 +24,6 @@ | |||
| 24 | #include <linux/of.h> | 24 | #include <linux/of.h> |
| 25 | #include <linux/of_device.h> | 25 | #include <linux/of_device.h> |
| 26 | #include <linux/of_gpio.h> | 26 | #include <linux/of_gpio.h> |
| 27 | #include <linux/version.h> | ||
| 28 | #include <linux/mmc/slot-gpio.h> | 27 | #include <linux/mmc/slot-gpio.h> |
| 29 | 28 | ||
| 30 | #include "sdhci-pltfm.h" | 29 | #include "sdhci-pltfm.h" |
| @@ -162,7 +161,7 @@ static int sdhci_bcm_kona_sd_card_emulate(struct sdhci_host *host, int insert) | |||
| 162 | /* | 161 | /* |
| 163 | * SD card interrupt event callback | 162 | * SD card interrupt event callback |
| 164 | */ | 163 | */ |
| 165 | void sdhci_bcm_kona_card_event(struct sdhci_host *host) | 164 | static void sdhci_bcm_kona_card_event(struct sdhci_host *host) |
| 166 | { | 165 | { |
| 167 | if (mmc_gpio_get_cd(host->mmc) > 0) { | 166 | if (mmc_gpio_get_cd(host->mmc) > 0) { |
| 168 | dev_dbg(mmc_dev(host->mmc), | 167 | dev_dbg(mmc_dev(host->mmc), |
| @@ -221,13 +220,14 @@ static struct sdhci_pltfm_data sdhci_pltfm_data_kona = { | |||
| 221 | SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN, | 220 | SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN, |
| 222 | }; | 221 | }; |
| 223 | 222 | ||
| 224 | static const struct of_device_id sdhci_bcm_kona_of_match[] __initdata = { | 223 | static struct __initconst of_device_id sdhci_bcm_kona_of_match[] = { |
| 225 | { .compatible = "bcm,kona-sdhci"}, | 224 | { .compatible = "brcm,kona-sdhci"}, |
| 225 | { .compatible = "bcm,kona-sdhci"}, /* deprecated name */ | ||
| 226 | {} | 226 | {} |
| 227 | }; | 227 | }; |
| 228 | MODULE_DEVICE_TABLE(of, sdhci_bcm_kona_of_match); | 228 | MODULE_DEVICE_TABLE(of, sdhci_bcm_kona_of_match); |
| 229 | 229 | ||
| 230 | static int __init sdhci_bcm_kona_probe(struct platform_device *pdev) | 230 | static int sdhci_bcm_kona_probe(struct platform_device *pdev) |
| 231 | { | 231 | { |
| 232 | struct sdhci_bcm_kona_dev *kona_dev = NULL; | 232 | struct sdhci_bcm_kona_dev *kona_dev = NULL; |
| 233 | struct sdhci_pltfm_host *pltfm_priv; | 233 | struct sdhci_pltfm_host *pltfm_priv; |
| @@ -263,7 +263,7 @@ static int __init sdhci_bcm_kona_probe(struct platform_device *pdev) | |||
| 263 | (mmc_gpio_get_cd(host->mmc) != -ENOSYS) ? 'Y' : 'N', | 263 | (mmc_gpio_get_cd(host->mmc) != -ENOSYS) ? 'Y' : 'N', |
| 264 | (mmc_gpio_get_ro(host->mmc) != -ENOSYS) ? 'Y' : 'N'); | 264 | (mmc_gpio_get_ro(host->mmc) != -ENOSYS) ? 'Y' : 'N'); |
| 265 | 265 | ||
| 266 | if (host->mmc->caps | MMC_CAP_NONREMOVABLE) | 266 | if (host->mmc->caps & MMC_CAP_NONREMOVABLE) |
| 267 | host->quirks |= SDHCI_QUIRK_BROKEN_CARD_DETECTION; | 267 | host->quirks |= SDHCI_QUIRK_BROKEN_CARD_DETECTION; |
| 268 | 268 | ||
| 269 | dev_dbg(dev, "is_8bit=%c\n", | 269 | dev_dbg(dev, "is_8bit=%c\n", |
| @@ -282,7 +282,7 @@ static int __init sdhci_bcm_kona_probe(struct platform_device *pdev) | |||
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | /* if device is eMMC, emulate card insert right here */ | 284 | /* if device is eMMC, emulate card insert right here */ |
| 285 | if (host->mmc->caps | MMC_CAP_NONREMOVABLE) { | 285 | if (host->mmc->caps & MMC_CAP_NONREMOVABLE) { |
| 286 | ret = sdhci_bcm_kona_sd_card_emulate(host, 1); | 286 | ret = sdhci_bcm_kona_sd_card_emulate(host, 1); |
| 287 | if (ret) { | 287 | if (ret) { |
| 288 | dev_err(dev, | 288 | dev_err(dev, |
| @@ -336,10 +336,10 @@ static struct platform_driver sdhci_bcm_kona_driver = { | |||
| 336 | .name = "sdhci-kona", | 336 | .name = "sdhci-kona", |
| 337 | .owner = THIS_MODULE, | 337 | .owner = THIS_MODULE, |
| 338 | .pm = SDHCI_PLTFM_PMOPS, | 338 | .pm = SDHCI_PLTFM_PMOPS, |
| 339 | .of_match_table = of_match_ptr(sdhci_bcm_kona_of_match), | 339 | .of_match_table = sdhci_bcm_kona_of_match, |
| 340 | }, | 340 | }, |
| 341 | .probe = sdhci_bcm_kona_probe, | 341 | .probe = sdhci_bcm_kona_probe, |
| 342 | .remove = __exit_p(sdhci_bcm_kona_remove), | 342 | .remove = sdhci_bcm_kona_remove, |
| 343 | }; | 343 | }; |
| 344 | module_platform_driver(sdhci_bcm_kona_driver); | 344 | module_platform_driver(sdhci_bcm_kona_driver); |
| 345 | 345 | ||
diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig index d5ab6583f440..d4a7a351d67c 100644 --- a/drivers/video/backlight/Kconfig +++ b/drivers/video/backlight/Kconfig | |||
| @@ -425,6 +425,25 @@ config BACKLIGHT_AS3711 | |||
| 425 | If you have an Austrian Microsystems AS3711 say Y to enable the | 425 | If you have an Austrian Microsystems AS3711 say Y to enable the |
| 426 | backlight driver. | 426 | backlight driver. |
| 427 | 427 | ||
| 428 | config BACKLIGHT_GPIO | ||
| 429 | tristate "Generic GPIO based Backlight Driver" | ||
| 430 | depends on GPIOLIB | ||
| 431 | help | ||
| 432 | If you have a LCD backlight adjustable by GPIO, say Y to enable | ||
| 433 | this driver. | ||
| 434 | |||
| 435 | config BACKLIGHT_LV5207LP | ||
| 436 | tristate "Sanyo LV5207LP Backlight" | ||
| 437 | depends on I2C | ||
| 438 | help | ||
| 439 | If you have a Sanyo LV5207LP say Y to enable the backlight driver. | ||
| 440 | |||
| 441 | config BACKLIGHT_BD6107 | ||
| 442 | tristate "Rohm BD6107 Backlight" | ||
| 443 | depends on I2C | ||
| 444 | help | ||
| 445 | If you have a Rohm BD6107 say Y to enable the backlight driver. | ||
| 446 | |||
| 428 | endif # BACKLIGHT_CLASS_DEVICE | 447 | endif # BACKLIGHT_CLASS_DEVICE |
| 429 | 448 | ||
| 430 | endif # BACKLIGHT_LCD_SUPPORT | 449 | endif # BACKLIGHT_LCD_SUPPORT |
diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile index 92711fe60464..38e1babb1946 100644 --- a/drivers/video/backlight/Makefile +++ b/drivers/video/backlight/Makefile | |||
| @@ -26,12 +26,14 @@ obj-$(CONFIG_BACKLIGHT_ADP8870) += adp8870_bl.o | |||
| 26 | obj-$(CONFIG_BACKLIGHT_APPLE) += apple_bl.o | 26 | obj-$(CONFIG_BACKLIGHT_APPLE) += apple_bl.o |
| 27 | obj-$(CONFIG_BACKLIGHT_AS3711) += as3711_bl.o | 27 | obj-$(CONFIG_BACKLIGHT_AS3711) += as3711_bl.o |
| 28 | obj-$(CONFIG_BACKLIGHT_ATMEL_PWM) += atmel-pwm-bl.o | 28 | obj-$(CONFIG_BACKLIGHT_ATMEL_PWM) += atmel-pwm-bl.o |
| 29 | obj-$(CONFIG_BACKLIGHT_BD6107) += bd6107.o | ||
| 29 | obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o | 30 | obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o |
| 30 | obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o | 31 | obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE) += backlight.o |
| 31 | obj-$(CONFIG_BACKLIGHT_DA903X) += da903x_bl.o | 32 | obj-$(CONFIG_BACKLIGHT_DA903X) += da903x_bl.o |
| 32 | obj-$(CONFIG_BACKLIGHT_DA9052) += da9052_bl.o | 33 | obj-$(CONFIG_BACKLIGHT_DA9052) += da9052_bl.o |
| 33 | obj-$(CONFIG_BACKLIGHT_EP93XX) += ep93xx_bl.o | 34 | obj-$(CONFIG_BACKLIGHT_EP93XX) += ep93xx_bl.o |
| 34 | obj-$(CONFIG_BACKLIGHT_GENERIC) += generic_bl.o | 35 | obj-$(CONFIG_BACKLIGHT_GENERIC) += generic_bl.o |
| 36 | obj-$(CONFIG_BACKLIGHT_GPIO) += gpio_backlight.o | ||
| 35 | obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o | 37 | obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o |
| 36 | obj-$(CONFIG_BACKLIGHT_HP700) += jornada720_bl.o | 38 | obj-$(CONFIG_BACKLIGHT_HP700) += jornada720_bl.o |
| 37 | obj-$(CONFIG_BACKLIGHT_LM3533) += lm3533_bl.o | 39 | obj-$(CONFIG_BACKLIGHT_LM3533) += lm3533_bl.o |
| @@ -40,6 +42,7 @@ obj-$(CONFIG_BACKLIGHT_LM3639) += lm3639_bl.o | |||
| 40 | obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o | 42 | obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o |
| 41 | obj-$(CONFIG_BACKLIGHT_LP855X) += lp855x_bl.o | 43 | obj-$(CONFIG_BACKLIGHT_LP855X) += lp855x_bl.o |
| 42 | obj-$(CONFIG_BACKLIGHT_LP8788) += lp8788_bl.o | 44 | obj-$(CONFIG_BACKLIGHT_LP8788) += lp8788_bl.o |
| 45 | obj-$(CONFIG_BACKLIGHT_LV5207LP) += lv5207lp.o | ||
| 43 | obj-$(CONFIG_BACKLIGHT_MAX8925) += max8925_bl.o | 46 | obj-$(CONFIG_BACKLIGHT_MAX8925) += max8925_bl.o |
| 44 | obj-$(CONFIG_BACKLIGHT_OMAP1) += omap1_bl.o | 47 | obj-$(CONFIG_BACKLIGHT_OMAP1) += omap1_bl.o |
| 45 | obj-$(CONFIG_BACKLIGHT_OT200) += ot200_bl.o | 48 | obj-$(CONFIG_BACKLIGHT_OT200) += ot200_bl.o |
diff --git a/drivers/video/backlight/bd6107.c b/drivers/video/backlight/bd6107.c new file mode 100644 index 000000000000..15e3294b29fe --- /dev/null +++ b/drivers/video/backlight/bd6107.c | |||
| @@ -0,0 +1,213 @@ | |||
| 1 | /* | ||
| 2 | * ROHM Semiconductor BD6107 LED Driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2013 Ideas on board SPRL | ||
| 5 | * | ||
| 6 | * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/backlight.h> | ||
| 14 | #include <linux/delay.h> | ||
| 15 | #include <linux/err.h> | ||
| 16 | #include <linux/fb.h> | ||
| 17 | #include <linux/gpio.h> | ||
| 18 | #include <linux/i2c.h> | ||
| 19 | #include <linux/module.h> | ||
| 20 | #include <linux/platform_data/bd6107.h> | ||
| 21 | #include <linux/slab.h> | ||
| 22 | |||
| 23 | #define BD6107_PSCNT1 0x00 | ||
| 24 | #define BD6107_PSCNT1_PSCNTREG2 (1 << 2) | ||
| 25 | #define BD6107_PSCNT1_PSCNTREG1 (1 << 0) | ||
| 26 | #define BD6107_REGVSET 0x02 | ||
| 27 | #define BD6107_REGVSET_REG1VSET_2_85V (1 << 2) | ||
| 28 | #define BD6107_REGVSET_REG1VSET_2_80V (0 << 2) | ||
| 29 | #define BD6107_LEDCNT1 0x03 | ||
| 30 | #define BD6107_LEDCNT1_LEDONOFF2 (1 << 1) | ||
| 31 | #define BD6107_LEDCNT1_LEDONOFF1 (1 << 0) | ||
| 32 | #define BD6107_PORTSEL 0x04 | ||
| 33 | #define BD6107_PORTSEL_LEDM(n) (1 << (n)) | ||
| 34 | #define BD6107_RGB1CNT1 0x05 | ||
| 35 | #define BD6107_RGB1CNT2 0x06 | ||
| 36 | #define BD6107_RGB1CNT3 0x07 | ||
| 37 | #define BD6107_RGB1CNT4 0x08 | ||
| 38 | #define BD6107_RGB1CNT5 0x09 | ||
| 39 | #define BD6107_RGB1FLM 0x0a | ||
| 40 | #define BD6107_RGB2CNT1 0x0b | ||
| 41 | #define BD6107_RGB2CNT2 0x0c | ||
| 42 | #define BD6107_RGB2CNT3 0x0d | ||
| 43 | #define BD6107_RGB2CNT4 0x0e | ||
| 44 | #define BD6107_RGB2CNT5 0x0f | ||
| 45 | #define BD6107_RGB2FLM 0x10 | ||
| 46 | #define BD6107_PSCONT3 0x11 | ||
| 47 | #define BD6107_SMMONCNT 0x12 | ||
| 48 | #define BD6107_DCDCCNT 0x13 | ||
| 49 | #define BD6107_IOSEL 0x14 | ||
| 50 | #define BD6107_OUT1 0x15 | ||
| 51 | #define BD6107_OUT2 0x16 | ||
| 52 | #define BD6107_MASK1 0x17 | ||
| 53 | #define BD6107_MASK2 0x18 | ||
| 54 | #define BD6107_FACTOR1 0x19 | ||
| 55 | #define BD6107_FACTOR2 0x1a | ||
| 56 | #define BD6107_CLRFACT1 0x1b | ||
| 57 | #define BD6107_CLRFACT2 0x1c | ||
| 58 | #define BD6107_STATE1 0x1d | ||
| 59 | #define BD6107_LSIVER 0x1e | ||
| 60 | #define BD6107_GRPSEL 0x1f | ||
| 61 | #define BD6107_LEDCNT2 0x20 | ||
| 62 | #define BD6107_LEDCNT3 0x21 | ||
| 63 | #define BD6107_MCURRENT 0x22 | ||
| 64 | #define BD6107_MAINCNT1 0x23 | ||
| 65 | #define BD6107_MAINCNT2 0x24 | ||
| 66 | #define BD6107_SLOPECNT 0x25 | ||
| 67 | #define BD6107_MSLOPE 0x26 | ||
| 68 | #define BD6107_RGBSLOPE 0x27 | ||
| 69 | #define BD6107_TEST 0x29 | ||
| 70 | #define BD6107_SFTRST 0x2a | ||
| 71 | #define BD6107_SFTRSTGD 0x2b | ||
| 72 | |||
| 73 | struct bd6107 { | ||
| 74 | struct i2c_client *client; | ||
| 75 | struct backlight_device *backlight; | ||
| 76 | struct bd6107_platform_data *pdata; | ||
| 77 | }; | ||
| 78 | |||
| 79 | static int bd6107_write(struct bd6107 *bd, u8 reg, u8 data) | ||
| 80 | { | ||
| 81 | return i2c_smbus_write_byte_data(bd->client, reg, data); | ||
| 82 | } | ||
| 83 | |||
| 84 | static int bd6107_backlight_update_status(struct backlight_device *backlight) | ||
| 85 | { | ||
| 86 | struct bd6107 *bd = bl_get_data(backlight); | ||
| 87 | int brightness = backlight->props.brightness; | ||
| 88 | |||
| 89 | if (backlight->props.power != FB_BLANK_UNBLANK || | ||
| 90 | backlight->props.fb_blank != FB_BLANK_UNBLANK || | ||
| 91 | backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) | ||
| 92 | brightness = 0; | ||
| 93 | |||
| 94 | if (brightness) { | ||
| 95 | bd6107_write(bd, BD6107_PORTSEL, BD6107_PORTSEL_LEDM(2) | | ||
| 96 | BD6107_PORTSEL_LEDM(1) | BD6107_PORTSEL_LEDM(0)); | ||
| 97 | bd6107_write(bd, BD6107_MAINCNT1, brightness); | ||
| 98 | bd6107_write(bd, BD6107_LEDCNT1, BD6107_LEDCNT1_LEDONOFF1); | ||
| 99 | } else { | ||
| 100 | gpio_set_value(bd->pdata->reset, 0); | ||
| 101 | msleep(24); | ||
| 102 | gpio_set_value(bd->pdata->reset, 1); | ||
| 103 | } | ||
| 104 | |||
| 105 | return 0; | ||
| 106 | } | ||
| 107 | |||
| 108 | static int bd6107_backlight_get_brightness(struct backlight_device *backlight) | ||
| 109 | { | ||
| 110 | return backlight->props.brightness; | ||
| 111 | } | ||
| 112 | |||
| 113 | static int bd6107_backlight_check_fb(struct backlight_device *backlight, | ||
| 114 | struct fb_info *info) | ||
| 115 | { | ||
| 116 | struct bd6107 *bd = bl_get_data(backlight); | ||
| 117 | |||
| 118 | return bd->pdata->fbdev == NULL || bd->pdata->fbdev == info->dev; | ||
| 119 | } | ||
| 120 | |||
| 121 | static const struct backlight_ops bd6107_backlight_ops = { | ||
| 122 | .options = BL_CORE_SUSPENDRESUME, | ||
| 123 | .update_status = bd6107_backlight_update_status, | ||
| 124 | .get_brightness = bd6107_backlight_get_brightness, | ||
| 125 | .check_fb = bd6107_backlight_check_fb, | ||
| 126 | }; | ||
| 127 | |||
| 128 | static int bd6107_probe(struct i2c_client *client, | ||
| 129 | const struct i2c_device_id *id) | ||
| 130 | { | ||
| 131 | struct bd6107_platform_data *pdata = client->dev.platform_data; | ||
| 132 | struct backlight_device *backlight; | ||
| 133 | struct backlight_properties props; | ||
| 134 | struct bd6107 *bd; | ||
| 135 | int ret; | ||
| 136 | |||
| 137 | if (pdata == NULL || !pdata->reset) { | ||
| 138 | dev_err(&client->dev, "No reset GPIO in platform data\n"); | ||
| 139 | return -EINVAL; | ||
| 140 | } | ||
| 141 | |||
| 142 | if (!i2c_check_functionality(client->adapter, | ||
| 143 | I2C_FUNC_SMBUS_BYTE_DATA)) { | ||
| 144 | dev_warn(&client->dev, | ||
| 145 | "I2C adapter doesn't support I2C_FUNC_SMBUS_BYTE\n"); | ||
| 146 | return -EIO; | ||
| 147 | } | ||
| 148 | |||
| 149 | bd = devm_kzalloc(&client->dev, sizeof(*bd), GFP_KERNEL); | ||
| 150 | if (!bd) | ||
| 151 | return -ENOMEM; | ||
| 152 | |||
| 153 | bd->client = client; | ||
| 154 | bd->pdata = pdata; | ||
| 155 | |||
| 156 | ret = devm_gpio_request_one(&client->dev, pdata->reset, | ||
| 157 | GPIOF_DIR_OUT | GPIOF_INIT_LOW, "reset"); | ||
| 158 | if (ret < 0) { | ||
| 159 | dev_err(&client->dev, "unable to request reset GPIO\n"); | ||
| 160 | return ret; | ||
| 161 | } | ||
| 162 | |||
| 163 | memset(&props, 0, sizeof(props)); | ||
| 164 | props.type = BACKLIGHT_RAW; | ||
| 165 | props.max_brightness = 128; | ||
| 166 | props.brightness = clamp_t(unsigned int, pdata->def_value, 0, | ||
| 167 | props.max_brightness); | ||
| 168 | |||
| 169 | backlight = backlight_device_register(dev_name(&client->dev), | ||
| 170 | &bd->client->dev, bd, | ||
| 171 | &bd6107_backlight_ops, &props); | ||
| 172 | if (IS_ERR(backlight)) { | ||
| 173 | dev_err(&client->dev, "failed to register backlight\n"); | ||
| 174 | return PTR_ERR(backlight); | ||
| 175 | } | ||
| 176 | |||
| 177 | backlight_update_status(backlight); | ||
| 178 | i2c_set_clientdata(client, backlight); | ||
| 179 | |||
| 180 | return 0; | ||
| 181 | } | ||
| 182 | |||
| 183 | static int bd6107_remove(struct i2c_client *client) | ||
| 184 | { | ||
| 185 | struct backlight_device *backlight = i2c_get_clientdata(client); | ||
| 186 | |||
| 187 | backlight->props.brightness = 0; | ||
| 188 | backlight_update_status(backlight); | ||
| 189 | backlight_device_unregister(backlight); | ||
| 190 | |||
| 191 | return 0; | ||
| 192 | } | ||
| 193 | |||
| 194 | static const struct i2c_device_id bd6107_ids[] = { | ||
| 195 | { "bd6107", 0 }, | ||
| 196 | { } | ||
| 197 | }; | ||
| 198 | MODULE_DEVICE_TABLE(i2c, bd6107_ids); | ||
| 199 | |||
| 200 | static struct i2c_driver bd6107_driver = { | ||
| 201 | .driver = { | ||
| 202 | .name = "bd6107", | ||
| 203 | }, | ||
| 204 | .probe = bd6107_probe, | ||
| 205 | .remove = bd6107_remove, | ||
| 206 | .id_table = bd6107_ids, | ||
| 207 | }; | ||
| 208 | |||
| 209 | module_i2c_driver(bd6107_driver); | ||
| 210 | |||
| 211 | MODULE_DESCRIPTION("Rohm BD6107 Backlight Driver"); | ||
| 212 | MODULE_AUTHOR("Laurent Pinchart <laurent.pinchart@ideasonboard.com>"); | ||
| 213 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backlight/gpio_backlight.c new file mode 100644 index 000000000000..5fa217f9f445 --- /dev/null +++ b/drivers/video/backlight/gpio_backlight.c | |||
| @@ -0,0 +1,133 @@ | |||
| 1 | /* | ||
| 2 | * gpio_backlight.c - Simple GPIO-controlled backlight | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #include <linux/backlight.h> | ||
| 10 | #include <linux/err.h> | ||
| 11 | #include <linux/fb.h> | ||
| 12 | #include <linux/gpio.h> | ||
| 13 | #include <linux/init.h> | ||
| 14 | #include <linux/kernel.h> | ||
| 15 | #include <linux/module.h> | ||
| 16 | #include <linux/platform_data/gpio_backlight.h> | ||
| 17 | #include <linux/platform_device.h> | ||
| 18 | #include <linux/slab.h> | ||
| 19 | |||
| 20 | struct gpio_backlight { | ||
| 21 | struct device *dev; | ||
| 22 | struct device *fbdev; | ||
| 23 | |||
| 24 | int gpio; | ||
| 25 | int active; | ||
| 26 | }; | ||
| 27 | |||
| 28 | static int gpio_backlight_update_status(struct backlight_device *bl) | ||
| 29 | { | ||
| 30 | struct gpio_backlight *gbl = bl_get_data(bl); | ||
| 31 | int brightness = bl->props.brightness; | ||
| 32 | |||
| 33 | if (bl->props.power != FB_BLANK_UNBLANK || | ||
| 34 | bl->props.fb_blank != FB_BLANK_UNBLANK || | ||
| 35 | bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) | ||
| 36 | brightness = 0; | ||
| 37 | |||
| 38 | gpio_set_value(gbl->gpio, brightness ? gbl->active : !gbl->active); | ||
| 39 | |||
| 40 | return 0; | ||
| 41 | } | ||
| 42 | |||
| 43 | static int gpio_backlight_get_brightness(struct backlight_device *bl) | ||
| 44 | { | ||
| 45 | return bl->props.brightness; | ||
| 46 | } | ||
| 47 | |||
| 48 | static int gpio_backlight_check_fb(struct backlight_device *bl, | ||
| 49 | struct fb_info *info) | ||
| 50 | { | ||
| 51 | struct gpio_backlight *gbl = bl_get_data(bl); | ||
| 52 | |||
| 53 | return gbl->fbdev == NULL || gbl->fbdev == info->dev; | ||
| 54 | } | ||
| 55 | |||
| 56 | static const struct backlight_ops gpio_backlight_ops = { | ||
| 57 | .options = BL_CORE_SUSPENDRESUME, | ||
| 58 | .update_status = gpio_backlight_update_status, | ||
| 59 | .get_brightness = gpio_backlight_get_brightness, | ||
| 60 | .check_fb = gpio_backlight_check_fb, | ||
| 61 | }; | ||
| 62 | |||
| 63 | static int gpio_backlight_probe(struct platform_device *pdev) | ||
| 64 | { | ||
| 65 | struct gpio_backlight_platform_data *pdata = pdev->dev.platform_data; | ||
| 66 | struct backlight_properties props; | ||
| 67 | struct backlight_device *bl; | ||
| 68 | struct gpio_backlight *gbl; | ||
| 69 | int ret; | ||
| 70 | |||
| 71 | if (!pdata) { | ||
| 72 | dev_err(&pdev->dev, "failed to find platform data\n"); | ||
| 73 | return -ENODEV; | ||
| 74 | } | ||
| 75 | |||
| 76 | gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL); | ||
| 77 | if (gbl == NULL) | ||
| 78 | return -ENOMEM; | ||
| 79 | |||
| 80 | gbl->dev = &pdev->dev; | ||
| 81 | gbl->fbdev = pdata->fbdev; | ||
| 82 | gbl->gpio = pdata->gpio; | ||
| 83 | gbl->active = pdata->active_low ? 0 : 1; | ||
| 84 | |||
| 85 | ret = devm_gpio_request_one(gbl->dev, gbl->gpio, GPIOF_DIR_OUT | | ||
| 86 | (gbl->active ? GPIOF_INIT_LOW | ||
| 87 | : GPIOF_INIT_HIGH), | ||
| 88 | pdata->name); | ||
| 89 | if (ret < 0) { | ||
| 90 | dev_err(&pdev->dev, "unable to request GPIO\n"); | ||
| 91 | return ret; | ||
| 92 | } | ||
| 93 | |||
| 94 | memset(&props, 0, sizeof(props)); | ||
| 95 | props.type = BACKLIGHT_RAW; | ||
| 96 | props.max_brightness = 1; | ||
| 97 | bl = backlight_device_register(dev_name(&pdev->dev), &pdev->dev, gbl, | ||
| 98 | &gpio_backlight_ops, &props); | ||
| 99 | if (IS_ERR(bl)) { | ||
| 100 | dev_err(&pdev->dev, "failed to register backlight\n"); | ||
| 101 | return PTR_ERR(bl); | ||
| 102 | } | ||
| 103 | |||
| 104 | bl->props.brightness = pdata->def_value; | ||
| 105 | backlight_update_status(bl); | ||
| 106 | |||
| 107 | platform_set_drvdata(pdev, bl); | ||
| 108 | return 0; | ||
| 109 | } | ||
| 110 | |||
| 111 | static int gpio_backlight_remove(struct platform_device *pdev) | ||
| 112 | { | ||
| 113 | struct backlight_device *bl = platform_get_drvdata(pdev); | ||
| 114 | |||
| 115 | backlight_device_unregister(bl); | ||
| 116 | return 0; | ||
| 117 | } | ||
| 118 | |||
| 119 | static struct platform_driver gpio_backlight_driver = { | ||
| 120 | .driver = { | ||
| 121 | .name = "gpio-backlight", | ||
| 122 | .owner = THIS_MODULE, | ||
| 123 | }, | ||
| 124 | .probe = gpio_backlight_probe, | ||
| 125 | .remove = gpio_backlight_remove, | ||
| 126 | }; | ||
| 127 | |||
| 128 | module_platform_driver(gpio_backlight_driver); | ||
| 129 | |||
| 130 | MODULE_AUTHOR("Laurent Pinchart <laurent.pinchart@ideasonboard.com>"); | ||
| 131 | MODULE_DESCRIPTION("GPIO-based Backlight Driver"); | ||
| 132 | MODULE_LICENSE("GPL"); | ||
| 133 | MODULE_ALIAS("platform:gpio-backlight"); | ||
diff --git a/drivers/video/backlight/lv5207lp.c b/drivers/video/backlight/lv5207lp.c new file mode 100644 index 000000000000..498fd73d59b9 --- /dev/null +++ b/drivers/video/backlight/lv5207lp.c | |||
| @@ -0,0 +1,171 @@ | |||
| 1 | /* | ||
| 2 | * Sanyo LV5207LP LED Driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2013 Ideas on board SPRL | ||
| 5 | * | ||
| 6 | * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/backlight.h> | ||
| 14 | #include <linux/err.h> | ||
| 15 | #include <linux/fb.h> | ||
| 16 | #include <linux/i2c.h> | ||
| 17 | #include <linux/module.h> | ||
| 18 | #include <linux/platform_data/lv5207lp.h> | ||
| 19 | #include <linux/slab.h> | ||
| 20 | |||
| 21 | #define LV5207LP_CTRL1 0x00 | ||
| 22 | #define LV5207LP_CPSW (1 << 7) | ||
| 23 | #define LV5207LP_SCTEN (1 << 6) | ||
| 24 | #define LV5207LP_C10 (1 << 5) | ||
| 25 | #define LV5207LP_CKSW (1 << 4) | ||
| 26 | #define LV5207LP_RSW (1 << 3) | ||
| 27 | #define LV5207LP_GSW (1 << 2) | ||
| 28 | #define LV5207LP_BSW (1 << 1) | ||
| 29 | #define LV5207LP_CTRL2 0x01 | ||
| 30 | #define LV5207LP_MSW (1 << 7) | ||
| 31 | #define LV5207LP_MLED4 (1 << 6) | ||
| 32 | #define LV5207LP_RED 0x02 | ||
| 33 | #define LV5207LP_GREEN 0x03 | ||
| 34 | #define LV5207LP_BLUE 0x04 | ||
| 35 | |||
| 36 | #define LV5207LP_MAX_BRIGHTNESS 32 | ||
| 37 | |||
| 38 | struct lv5207lp { | ||
| 39 | struct i2c_client *client; | ||
| 40 | struct backlight_device *backlight; | ||
| 41 | struct lv5207lp_platform_data *pdata; | ||
| 42 | }; | ||
| 43 | |||
| 44 | static int lv5207lp_write(struct lv5207lp *lv, u8 reg, u8 data) | ||
| 45 | { | ||
| 46 | return i2c_smbus_write_byte_data(lv->client, reg, data); | ||
| 47 | } | ||
| 48 | |||
| 49 | static int lv5207lp_backlight_update_status(struct backlight_device *backlight) | ||
| 50 | { | ||
| 51 | struct lv5207lp *lv = bl_get_data(backlight); | ||
| 52 | int brightness = backlight->props.brightness; | ||
| 53 | |||
| 54 | if (backlight->props.power != FB_BLANK_UNBLANK || | ||
| 55 | backlight->props.fb_blank != FB_BLANK_UNBLANK || | ||
| 56 | backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) | ||
| 57 | brightness = 0; | ||
| 58 | |||
| 59 | if (brightness) { | ||
| 60 | lv5207lp_write(lv, LV5207LP_CTRL1, | ||
| 61 | LV5207LP_CPSW | LV5207LP_C10 | LV5207LP_CKSW); | ||
| 62 | lv5207lp_write(lv, LV5207LP_CTRL2, | ||
| 63 | LV5207LP_MSW | LV5207LP_MLED4 | | ||
| 64 | (brightness - 1)); | ||
| 65 | } else { | ||
| 66 | lv5207lp_write(lv, LV5207LP_CTRL1, 0); | ||
| 67 | lv5207lp_write(lv, LV5207LP_CTRL2, 0); | ||
| 68 | } | ||
| 69 | |||
| 70 | return 0; | ||
| 71 | } | ||
| 72 | |||
| 73 | static int lv5207lp_backlight_get_brightness(struct backlight_device *backlight) | ||
| 74 | { | ||
| 75 | return backlight->props.brightness; | ||
| 76 | } | ||
| 77 | |||
| 78 | static int lv5207lp_backlight_check_fb(struct backlight_device *backlight, | ||
| 79 | struct fb_info *info) | ||
| 80 | { | ||
| 81 | struct lv5207lp *lv = bl_get_data(backlight); | ||
| 82 | |||
| 83 | return lv->pdata->fbdev == NULL || lv->pdata->fbdev == info->dev; | ||
| 84 | } | ||
| 85 | |||
| 86 | static const struct backlight_ops lv5207lp_backlight_ops = { | ||
| 87 | .options = BL_CORE_SUSPENDRESUME, | ||
| 88 | .update_status = lv5207lp_backlight_update_status, | ||
| 89 | .get_brightness = lv5207lp_backlight_get_brightness, | ||
| 90 | .check_fb = lv5207lp_backlight_check_fb, | ||
| 91 | }; | ||
| 92 | |||
| 93 | static int lv5207lp_probe(struct i2c_client *client, | ||
| 94 | const struct i2c_device_id *id) | ||
| 95 | { | ||
| 96 | struct lv5207lp_platform_data *pdata = client->dev.platform_data; | ||
| 97 | struct backlight_device *backlight; | ||
| 98 | struct backlight_properties props; | ||
| 99 | struct lv5207lp *lv; | ||
| 100 | |||
| 101 | if (pdata == NULL) { | ||
| 102 | dev_err(&client->dev, "No platform data supplied\n"); | ||
| 103 | return -EINVAL; | ||
| 104 | } | ||
| 105 | |||
| 106 | if (!i2c_check_functionality(client->adapter, | ||
| 107 | I2C_FUNC_SMBUS_BYTE_DATA)) { | ||
| 108 | dev_warn(&client->dev, | ||
| 109 | "I2C adapter doesn't support I2C_FUNC_SMBUS_BYTE\n"); | ||
| 110 | return -EIO; | ||
| 111 | } | ||
| 112 | |||
| 113 | lv = devm_kzalloc(&client->dev, sizeof(*lv), GFP_KERNEL); | ||
| 114 | if (!lv) | ||
| 115 | return -ENOMEM; | ||
| 116 | |||
| 117 | lv->client = client; | ||
| 118 | lv->pdata = pdata; | ||
| 119 | |||
| 120 | memset(&props, 0, sizeof(props)); | ||
| 121 | props.type = BACKLIGHT_RAW; | ||
| 122 | props.max_brightness = min_t(unsigned int, pdata->max_value, | ||
| 123 | LV5207LP_MAX_BRIGHTNESS); | ||
| 124 | props.brightness = clamp_t(unsigned int, pdata->def_value, 0, | ||
| 125 | props.max_brightness); | ||
| 126 | |||
| 127 | backlight = backlight_device_register(dev_name(&client->dev), | ||
| 128 | &lv->client->dev, lv, | ||
| 129 | &lv5207lp_backlight_ops, &props); | ||
| 130 | if (IS_ERR(backlight)) { | ||
| 131 | dev_err(&client->dev, "failed to register backlight\n"); | ||
| 132 | return PTR_ERR(backlight); | ||
| 133 | } | ||
| 134 | |||
| 135 | backlight_update_status(backlight); | ||
| 136 | i2c_set_clientdata(client, backlight); | ||
| 137 | |||
| 138 | return 0; | ||
| 139 | } | ||
| 140 | |||
| 141 | static int lv5207lp_remove(struct i2c_client *client) | ||
| 142 | { | ||
| 143 | struct backlight_device *backlight = i2c_get_clientdata(client); | ||
| 144 | |||
| 145 | backlight->props.brightness = 0; | ||
| 146 | backlight_update_status(backlight); | ||
| 147 | backlight_device_unregister(backlight); | ||
| 148 | |||
| 149 | return 0; | ||
| 150 | } | ||
| 151 | |||
| 152 | static const struct i2c_device_id lv5207lp_ids[] = { | ||
| 153 | { "lv5207lp", 0 }, | ||
| 154 | { } | ||
| 155 | }; | ||
| 156 | MODULE_DEVICE_TABLE(i2c, lv5207lp_ids); | ||
| 157 | |||
| 158 | static struct i2c_driver lv5207lp_driver = { | ||
| 159 | .driver = { | ||
| 160 | .name = "lv5207lp", | ||
| 161 | }, | ||
| 162 | .probe = lv5207lp_probe, | ||
| 163 | .remove = lv5207lp_remove, | ||
| 164 | .id_table = lv5207lp_ids, | ||
| 165 | }; | ||
| 166 | |||
| 167 | module_i2c_driver(lv5207lp_driver); | ||
| 168 | |||
| 169 | MODULE_DESCRIPTION("Sanyo LV5207LP Backlight Driver"); | ||
| 170 | MODULE_AUTHOR("Laurent Pinchart <laurent.pinchart@ideasonboard.com>"); | ||
| 171 | MODULE_LICENSE("GPL"); | ||
diff --git a/include/linux/platform_data/bd6107.h b/include/linux/platform_data/bd6107.h new file mode 100644 index 000000000000..671d6502d241 --- /dev/null +++ b/include/linux/platform_data/bd6107.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * bd6107.h - Rohm BD6107 LEDs Driver | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | #ifndef __BD6107_H__ | ||
| 9 | #define __BD6107_H__ | ||
| 10 | |||
| 11 | struct device; | ||
| 12 | |||
| 13 | struct bd6107_platform_data { | ||
| 14 | struct device *fbdev; | ||
| 15 | int reset; /* Reset GPIO */ | ||
| 16 | unsigned int def_value; | ||
| 17 | }; | ||
| 18 | |||
| 19 | #endif | ||
diff --git a/include/linux/platform_data/gpio_backlight.h b/include/linux/platform_data/gpio_backlight.h new file mode 100644 index 000000000000..5ae0d9c80d4d --- /dev/null +++ b/include/linux/platform_data/gpio_backlight.h | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | /* | ||
| 2 | * gpio_backlight.h - Simple GPIO-controlled backlight | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | #ifndef __GPIO_BACKLIGHT_H__ | ||
| 9 | #define __GPIO_BACKLIGHT_H__ | ||
| 10 | |||
| 11 | struct device; | ||
| 12 | |||
| 13 | struct gpio_backlight_platform_data { | ||
| 14 | struct device *fbdev; | ||
| 15 | int gpio; | ||
| 16 | int def_value; | ||
| 17 | bool active_low; | ||
| 18 | const char *name; | ||
| 19 | }; | ||
| 20 | |||
| 21 | #endif | ||
diff --git a/include/linux/platform_data/leds-renesas-tpu.h b/include/linux/platform_data/leds-renesas-tpu.h deleted file mode 100644 index 055387086fc1..000000000000 --- a/include/linux/platform_data/leds-renesas-tpu.h +++ /dev/null | |||
| @@ -1,14 +0,0 @@ | |||
| 1 | #ifndef __LEDS_RENESAS_TPU_H__ | ||
| 2 | #define __LEDS_RENESAS_TPU_H__ | ||
| 3 | |||
| 4 | struct led_renesas_tpu_config { | ||
| 5 | char *name; | ||
| 6 | unsigned pin_gpio_fn; | ||
| 7 | unsigned pin_gpio; | ||
| 8 | unsigned int channel_offset; | ||
| 9 | unsigned int timer_bit; | ||
| 10 | unsigned int max_brightness; | ||
| 11 | unsigned int refresh_rate; | ||
| 12 | }; | ||
| 13 | |||
| 14 | #endif /* __LEDS_RENESAS_TPU_H__ */ | ||
diff --git a/include/linux/platform_data/lv5207lp.h b/include/linux/platform_data/lv5207lp.h new file mode 100644 index 000000000000..7dc4d9a219a6 --- /dev/null +++ b/include/linux/platform_data/lv5207lp.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * lv5207lp.h - Sanyo LV5207LP LEDs Driver | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | #ifndef __LV5207LP_H__ | ||
| 9 | #define __LV5207LP_H__ | ||
| 10 | |||
| 11 | struct device; | ||
| 12 | |||
| 13 | struct lv5207lp_platform_data { | ||
| 14 | struct device *fbdev; | ||
| 15 | unsigned int max_value; | ||
| 16 | unsigned int def_value; | ||
| 17 | }; | ||
| 18 | |||
| 19 | #endif | ||
