Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'arm-soc/for-4.6/devicetree' of http://github.com/Broadcom/stblinux into next/dt

Merge "Broadcom devicetree changes for 4.6" from Florian Fainelli:

This pull request contains Broadcom ARM-based SoCs Device Tree changes:

- Rafal adds a Device Tree for the D-Link DIR-885L router which is based on the
BCM47094 SoC similar to the BCM4709

- Simran adds proper audio clock Device Tree nodes to the Cygnus platforms

- Martin adds the auxiliary SPI controllers, makes the UART naming convention
more standard, and finally adds the auxiliary UART found in the BCM2835 to the
BCM2835 Device Tree

- Remi adds PWM clock support to the BCM2835 Device Tree

- Lubomir adds a Device Tree for the Raspberry Pi Model A

- Alexander adds Device Tree information for the Raspberry Pi USB power domain

- Dhananjay enables the GPIO-A controller for the Northstar Plus SoCs

- Jon fixes the PCIE Device Tree nodes by pulling them out of the bus-level node,
removes duplicate CPU definitions, adds PMU nodes, SP804 timers, and SP805 watchdog
to the Northstar Plus SoCs

* tag 'arm-soc/for-4.6/devicetree' of http://github.com/Broadcom/stblinux:
ARM: bcm2835: add bcm2835-aux-uart support to DT
ARM: dts: NSP: Add SP805 Support to DT
ARM: dts: NSP: Add SP804 Support to DT
ARM: dts: NSP: Add PMU Support to DT
ARM: dts: NSP: Fix CPU DT issue
ARM: dts: NSP: Fix PCIE DT issue
ARM: dts: enable GPIO-a for Broadcom NSP
ARM: bcm2835: Add the Raspberry Pi power domain driver to the DT.
ARM: bcm2835: dt: Add Raspberry Pi Model A
ARM: bcm2835: follow dt uart node-naming convention
ARM: bcm2835: Add PWM clock support to the device tree
ARM: bcm2835: add the auxiliary spi1 and spi2 to the device tree
ARM: dts: Add audio clock to the existing Broadcom Cygnus clock DT
ARM: BCM5301X: Add DT for D-Link DIR-885L

+322 -88
+2
arch/arm/boot/dts/Makefile
··· 62 62 axm5516-amarillo.dtb 63 63 dtb-$(CONFIG_ARCH_BCM2835) += \ 64 64 bcm2835-rpi-b.dtb \ 65 + bcm2835-rpi-a.dtb \ 65 66 bcm2835-rpi-b-rev2.dtb \ 66 67 bcm2835-rpi-b-plus.dtb \ 67 68 bcm2835-rpi-a-plus.dtb \ ··· 82 81 bcm4709-buffalo-wxr-1900dhp.dtb \ 83 82 bcm4709-netgear-r7000.dtb \ 84 83 bcm4709-netgear-r8000.dtb \ 84 + bcm47094-dlink-dir-885l.dtb \ 85 85 bcm94708.dtb \ 86 86 bcm94709.dtb \ 87 87 bcm953012k.dtb
+9
arch/arm/boot/dts/bcm-cygnus-clock.dtsi
··· 121 121 clocks = <&osc>; 122 122 clock-output-names = "keypad", "adc/touch", "pwm"; 123 123 }; 124 + 125 + audiopll: audiopll { 126 + #clock-cells = <1>; 127 + compatible = "brcm,cygnus-audiopll"; 128 + reg = <0x180aeb00 0x68>; 129 + clocks = <&osc>; 130 + clock-output-names = "audiopll", "ch0_audio", 131 + "ch1_audio", "ch2_audio"; 132 + }; 124 133 };
+119 -86
arch/arm/boot/dts/bcm-nsp.dtsi
··· 45 45 #address-cells = <1>; 46 46 #size-cells = <0>; 47 47 48 - cpu@0 { 48 + cpu0: cpu@0 { 49 49 device_type = "cpu"; 50 50 compatible = "arm,cortex-a9"; 51 51 next-level-cache = <&L2>; 52 52 reg = <0x0>; 53 53 }; 54 54 55 - cpu@1 { 55 + cpu1: cpu@1 { 56 56 device_type = "cpu"; 57 57 compatible = "arm,cortex-a9"; 58 58 next-level-cache = <&L2>; ··· 62 62 }; 63 63 }; 64 64 65 + pmu { 66 + compatible = "arm,cortex-a9-pmu"; 67 + interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH 68 + GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 69 + interrupt-affinity = <&cpu0>, <&cpu1>; 70 + }; 71 + 65 72 mpcore { 66 73 compatible = "simple-bus"; 67 74 ranges = <0x00000000 0x19000000 0x00023000>; 68 75 #address-cells = <1>; 69 76 #size-cells = <1>; 70 - 71 - cpus { 72 - #address-cells = <1>; 73 - #size-cells = <0>; 74 - 75 - cpu@0 { 76 - device_type = "cpu"; 77 - compatible = "arm,cortex-a9"; 78 - next-level-cache = <&L2>; 79 - reg = <0x0>; 80 - }; 81 - }; 82 77 83 78 a9pll: arm_clk@00000 { 84 79 #clock-cells = <0>; ··· 164 169 #address-cells = <1>; 165 170 #size-cells = <1>; 166 171 172 + gpioa: gpio@0020 { 173 + compatible = "brcm,nsp-gpio-a"; 174 + reg = <0x0020 0x70>, 175 + <0x3f1c4 0x1c>; 176 + #gpio-cells = <2>; 177 + gpio-controller; 178 + ngpios = <32>; 179 + interrupt-controller; 180 + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 181 + gpio-ranges = <&pinctrl 0 0 32>; 182 + }; 183 + 167 184 uart0: serial@0300 { 168 185 compatible = "ns16550a"; 169 186 reg = <0x0300 0x100>; ··· 189 182 reg = <0x0400 0x100>; 190 183 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 191 184 clocks = <&osc>; 192 - status = "disabled"; 193 - }; 194 - 195 - pcie0: pcie@12000 { 196 - compatible = "brcm,iproc-pcie"; 197 - reg = <0x12000 0x1000>; 198 - 199 - #interrupt-cells = <1>; 200 - interrupt-map-mask = <0 0 0 0>; 201 - interrupt-map = <0 0 0 0 &gic GIC_SPI 131 IRQ_TYPE_NONE>; 202 - 203 - linux,pci-domain = <0>; 204 - 205 - bus-range = <0x00 0xff>; 206 - 207 - #address-cells = <3>; 208 - #size-cells = <2>; 209 - device_type = "pci"; 210 - 211 - /* Note: The HW does not support I/O resources. So, 212 - * only the memory resource range is being specified. 213 - */ 214 - ranges = <0x82000000 0 0x08000000 0x08000000 0 0x8000000>; 215 - 216 - status = "disabled"; 217 - }; 218 - 219 - pcie1: pcie@13000 { 220 - compatible = "brcm,iproc-pcie"; 221 - reg = <0x13000 0x1000>; 222 - 223 - #interrupt-cells = <1>; 224 - interrupt-map-mask = <0 0 0 0>; 225 - interrupt-map = <0 0 0 0 &gic GIC_SPI 137 IRQ_TYPE_NONE>; 226 - 227 - linux,pci-domain = <1>; 228 - 229 - bus-range = <0x00 0xff>; 230 - 231 - #address-cells = <3>; 232 - #size-cells = <2>; 233 - device_type = "pci"; 234 - 235 - /* Note: The HW does not support I/O resources. So, 236 - * only the memory resource range is being specified. 237 - */ 238 - ranges = <0x82000000 0 0x40000000 0x40000000 0 0x8000000>; 239 - 240 - status = "disabled"; 241 - }; 242 - 243 - pcie2: pcie@14000 { 244 - compatible = "brcm,iproc-pcie"; 245 - reg = <0x14000 0x1000>; 246 - 247 - #interrupt-cells = <1>; 248 - interrupt-map-mask = <0 0 0 0>; 249 - interrupt-map = <0 0 0 0 &gic GIC_SPI 143 IRQ_TYPE_NONE>; 250 - 251 - linux,pci-domain = <2>; 252 - 253 - bus-range = <0x00 0xff>; 254 - 255 - #address-cells = <3>; 256 - #size-cells = <2>; 257 - device_type = "pci"; 258 - 259 - /* Note: The HW does not support I/O resources. So, 260 - * only the memory resource range is being specified. 261 - */ 262 - ranges = <0x82000000 0 0x48000000 0x48000000 0 0x8000000>; 263 - 264 185 status = "disabled"; 265 186 }; 266 187 ··· 206 271 brcm,nand-has-wp; 207 272 }; 208 273 274 + ccbtimer0: timer@34000 { 275 + compatible = "arm,sp804"; 276 + reg = <0x34000 0x1000>; 277 + interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, 278 + <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; 279 + clocks = <&iprocslow>; 280 + clock-names = "apb_pclk"; 281 + }; 282 + 283 + ccbtimer1: timer@35000 { 284 + compatible = "arm,sp804"; 285 + reg = <0x35000 0x1000>; 286 + interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>, 287 + <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; 288 + clocks = <&iprocslow>; 289 + clock-names = "apb_pclk"; 290 + }; 291 + 209 292 i2c0: i2c@38000 { 210 293 compatible = "brcm,iproc-i2c"; 211 294 reg = <0x38000 0x50>; ··· 231 278 #size-cells = <0>; 232 279 interrupts = <GIC_SPI 89 IRQ_TYPE_NONE>; 233 280 clock-frequency = <100000>; 281 + }; 282 + 283 + watchdog@39000 { 284 + compatible = "arm,sp805", "arm,primecell"; 285 + reg = <0x39000 0x1000>; 286 + interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>; 287 + clocks = <&iprocslow>, <&iprocslow>; 288 + clock-names = "wdogclk", "apb_pclk"; 234 289 }; 235 290 236 291 lcpll0: lcpll0@3f100 { ··· 266 305 <0x30028 0x04>, 267 306 <0x3f408 0x04>; 268 307 }; 308 + }; 309 + 310 + pcie0: pcie@18012000 { 311 + compatible = "brcm,iproc-pcie"; 312 + reg = <0x18012000 0x1000>; 313 + 314 + #interrupt-cells = <1>; 315 + interrupt-map-mask = <0 0 0 0>; 316 + interrupt-map = <0 0 0 0 &gic GIC_SPI 131 IRQ_TYPE_NONE>; 317 + 318 + linux,pci-domain = <0>; 319 + 320 + bus-range = <0x00 0xff>; 321 + 322 + #address-cells = <3>; 323 + #size-cells = <2>; 324 + device_type = "pci"; 325 + 326 + /* Note: The HW does not support I/O resources. So, 327 + * only the memory resource range is being specified. 328 + */ 329 + ranges = <0x82000000 0 0x08000000 0x08000000 0 0x8000000>; 330 + 331 + status = "disabled"; 332 + }; 333 + 334 + pcie1: pcie@18013000 { 335 + compatible = "brcm,iproc-pcie"; 336 + reg = <0x18013000 0x1000>; 337 + 338 + #interrupt-cells = <1>; 339 + interrupt-map-mask = <0 0 0 0>; 340 + interrupt-map = <0 0 0 0 &gic GIC_SPI 137 IRQ_TYPE_NONE>; 341 + 342 + linux,pci-domain = <1>; 343 + 344 + bus-range = <0x00 0xff>; 345 + 346 + #address-cells = <3>; 347 + #size-cells = <2>; 348 + device_type = "pci"; 349 + 350 + /* Note: The HW does not support I/O resources. So, 351 + * only the memory resource range is being specified. 352 + */ 353 + ranges = <0x82000000 0 0x40000000 0x40000000 0 0x8000000>; 354 + 355 + status = "disabled"; 356 + }; 357 + 358 + pcie2: pcie@18014000 { 359 + compatible = "brcm,iproc-pcie"; 360 + reg = <0x18014000 0x1000>; 361 + 362 + #interrupt-cells = <1>; 363 + interrupt-map-mask = <0 0 0 0>; 364 + interrupt-map = <0 0 0 0 &gic GIC_SPI 143 IRQ_TYPE_NONE>; 365 + 366 + linux,pci-domain = <2>; 367 + 368 + bus-range = <0x00 0xff>; 369 + 370 + #address-cells = <3>; 371 + #size-cells = <2>; 372 + device_type = "pci"; 373 + 374 + /* Note: The HW does not support I/O resources. So, 375 + * only the memory resource range is being specified. 376 + */ 377 + ranges = <0x82000000 0 0x48000000 0x48000000 0 0x8000000>; 378 + 379 + status = "disabled"; 269 380 }; 270 381 };
+24
arch/arm/boot/dts/bcm2835-rpi-a.dts
··· 1 + /dts-v1/; 2 + #include "bcm2835.dtsi" 3 + #include "bcm2835-rpi.dtsi" 4 + 5 + / { 6 + compatible = "raspberrypi,model-a", "brcm,bcm2835"; 7 + model = "Raspberry Pi Model A"; 8 + 9 + leds { 10 + act { 11 + gpios = <&gpio 16 1>; 12 + }; 13 + }; 14 + }; 15 + 16 + &gpio { 17 + pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; 18 + 19 + /* I2S interface */ 20 + i2s_alt2: i2s_alt2 { 21 + brcm,pins = <28 29 30 31>; 22 + brcm,function = <BCM2835_FSEL_ALT2>; 23 + }; 24 + };
+16
arch/arm/boot/dts/bcm2835-rpi.dtsi
··· 1 + #include <dt-bindings/power/raspberrypi-power.h> 2 + 1 3 / { 2 4 memory { 3 5 reg = <0 0x10000000>; ··· 19 17 firmware: firmware { 20 18 compatible = "raspberrypi,bcm2835-firmware"; 21 19 mboxes = <&mailbox>; 20 + }; 21 + 22 + power: power { 23 + compatible = "raspberrypi,bcm2835-power"; 24 + firmware = <&firmware>; 25 + #power-domain-cells = <1>; 22 26 }; 23 27 }; 24 28 }; ··· 65 57 &sdhci { 66 58 status = "okay"; 67 59 bus-width = <4>; 60 + }; 61 + 62 + &pwm { 63 + status = "okay"; 64 + }; 65 + 66 + &usb { 67 + power-domains = <&power RPI_POWER_DOMAIN_USB>; 68 68 };
+41 -2
arch/arm/boot/dts/bcm283x.dtsi
··· 1 1 #include <dt-bindings/pinctrl/bcm2835.h> 2 2 #include <dt-bindings/clock/bcm2835.h> 3 + #include <dt-bindings/clock/bcm2835-aux.h> 3 4 #include "skeleton.dtsi" 4 5 5 6 /* This include file covers the common peripherals and configuration between ··· 112 111 #interrupt-cells = <2>; 113 112 }; 114 113 115 - uart0: uart@7e201000 { 114 + uart0: serial@7e201000 { 116 115 compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; 117 116 reg = <0x7e201000 0x1000>; 118 117 interrupts = <2 25>; ··· 160 159 clocks = <&clocks BCM2835_CLOCK_VPU>; 161 160 }; 162 161 162 + uart1: serial@7e215040 { 163 + compatible = "brcm,bcm2835-aux-uart"; 164 + reg = <0x7e215040 0x40>; 165 + interrupts = <1 29>; 166 + clocks = <&aux BCM2835_AUX_CLOCK_UART>; 167 + status = "disabled"; 168 + }; 169 + 170 + spi1: spi@7e215080 { 171 + compatible = "brcm,bcm2835-aux-spi"; 172 + reg = <0x7e215080 0x40>; 173 + interrupts = <1 29>; 174 + clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; 175 + #address-cells = <1>; 176 + #size-cells = <0>; 177 + status = "disabled"; 178 + }; 179 + 180 + spi2: spi@7e2150c0 { 181 + compatible = "brcm,bcm2835-aux-spi"; 182 + reg = <0x7e2150c0 0x40>; 183 + interrupts = <1 29>; 184 + clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; 185 + #address-cells = <1>; 186 + #size-cells = <0>; 187 + status = "disabled"; 188 + }; 189 + 190 + pwm: pwm@7e20c000 { 191 + compatible = "brcm,bcm2835-pwm"; 192 + reg = <0x7e20c000 0x28>; 193 + clocks = <&clocks BCM2835_CLOCK_PWM>; 194 + assigned-clocks = <&clocks BCM2835_CLOCK_PWM>; 195 + assigned-clock-rates = <10000000>; 196 + #pwm-cells = <2>; 197 + status = "disabled"; 198 + }; 199 + 163 200 sdhci: sdhci@7e300000 { 164 201 compatible = "brcm,bcm2835-sdhci"; 165 202 reg = <0x7e300000 0x100>; ··· 226 187 status = "disabled"; 227 188 }; 228 189 229 - usb@7e980000 { 190 + usb: usb@7e980000 { 230 191 compatible = "brcm,bcm2835-usb"; 231 192 reg = <0x7e980000 0x10000>; 232 193 interrupts = <1 9>;