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

Merge tag 'ox810se-arm-dt-v4.6-rc3' of https://github.com/superna9999/linux into next/dt

Merge "ARM: dts: Add OXNAS Platform Bindings" from Neil Armstrong:

* tag 'ox810se-arm-dt-v4.6-rc3' of https://github.com/superna9999/linux:
ARM: boot: dts: Add Western Digital My Book World Edition device tree
dt-bindings: Add Western Digital to vendor prefixes
dt-bindings: Add OXNAS bindings
ARM: boot: dts: Add Oxford Semiconductor OX810SE dtsi
dt-bindings: Add Oxford Semiconductor to vendor prefixes
dt-bindings: irq: arm,versatile-fpga: add compatible string for OX810SE SoC

+462 -1
+9
Documentation/devicetree/bindings/arm/oxnas.txt
··· 1 + Oxford Semiconductor OXNAS SoCs Family device tree bindings 2 + ------------------------------------------- 3 + 4 + Boards with the OX810SE SoC shall have the following properties: 5 + Required root node property: 6 + compatible: "oxsemi,ox810se" 7 + 8 + Board compatible values: 9 + - "wd,mbwe" (OX810SE)
+1 -1
Documentation/devicetree/bindings/interrupt-controller/arm,versatile-fpga-irq.txt
··· 6 6 instance can handle up to 32 interrupts. 7 7 8 8 Required properties: 9 - - compatible: "arm,versatile-fpga-irq" 9 + - compatible: "arm,versatile-fpga-irq" or "oxsemi,ox810se-rps-irq" 10 10 - interrupt-controller: Identifies the node as an interrupt controller 11 11 - #interrupt-cells: The number of cells to define the interrupts. Must be 1 12 12 as the FPGA IRQ controller has no configuration options for interrupt
+2
Documentation/devicetree/bindings/vendor-prefixes.txt
··· 178 178 ortustech Ortus Technology Co., Ltd. 179 179 ovti OmniVision Technologies 180 180 ORCL Oracle Corporation 181 + oxsemi Oxford Semiconductor, Ltd. 181 182 panasonic Panasonic Corporation 182 183 parade Parade Technologies Inc. 183 184 pericom Pericom Technology Inc. ··· 261 260 virtio Virtual I/O Device Specification, developed by the OASIS consortium 262 261 vivante Vivante Corporation 263 262 voipac Voipac Technologies s.r.o. 263 + wd Western Digital Corp. 264 264 wexler Wexler 265 265 winbond Winbond Electronics corp. 266 266 wlf Wolfson Microelectronics
+2
arch/arm/boot/dts/Makefile
··· 563 563 orion5x-rd88f5182-nas.dtb 564 564 dtb-$(CONFIG_ARCH_PRIMA2) += \ 565 565 prima2-evb.dtb 566 + dtb-$(CONFIG_ARCH_OXNAS) += \ 567 + wd-mbwe.dtb 566 568 dtb-$(CONFIG_ARCH_QCOM) += \ 567 569 qcom-apq8064-arrow-db600c.dtb \ 568 570 qcom-apq8064-cm-qs600.dtb \
+336
arch/arm/boot/dts/ox810se.dtsi
··· 1 + /* 2 + * ox810se.dtsi - Device tree file for Oxford Semiconductor OX810SE SoC 3 + * 4 + * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com> 5 + * 6 + * Licensed under GPLv2 or later 7 + */ 8 + 9 + /include/ "skeleton.dtsi" 10 + 11 + / { 12 + compatible = "oxsemi,ox810se"; 13 + 14 + cpus { 15 + #address-cells = <0>; 16 + #size-cells = <0>; 17 + 18 + cpu { 19 + device_type = "cpu"; 20 + compatible = "arm,arm926ej-s"; 21 + clocks = <&armclk>; 22 + }; 23 + }; 24 + 25 + memory { 26 + /* Max 256MB @ 0x48000000 */ 27 + reg = <0x48000000 0x10000000>; 28 + }; 29 + 30 + clocks { 31 + osc: oscillator { 32 + compatible = "fixed-clock"; 33 + #clock-cells = <0>; 34 + clock-frequency = <25000000>; 35 + }; 36 + 37 + gmacclk: gmacclk { 38 + compatible = "fixed-clock"; 39 + #clock-cells = <0>; 40 + clock-frequency = <125000000>; 41 + }; 42 + 43 + rpsclk: rpsclk { 44 + compatible = "fixed-factor-clock"; 45 + #clock-cells = <0>; 46 + clock-div = <1>; 47 + clock-mult = <1>; 48 + clocks = <&osc>; 49 + }; 50 + 51 + pll400: pll400 { 52 + compatible = "fixed-clock"; 53 + #clock-cells = <0>; 54 + clock-frequency = <733333333>; 55 + }; 56 + 57 + sysclk: sysclk { 58 + compatible = "fixed-factor-clock"; 59 + #clock-cells = <0>; 60 + clock-div = <4>; 61 + clock-mult = <1>; 62 + clocks = <&pll400>; 63 + }; 64 + 65 + armclk: armclk { 66 + compatible = "fixed-factor-clock"; 67 + #clock-cells = <0>; 68 + clock-div = <2>; 69 + clock-mult = <1>; 70 + clocks = <&pll400>; 71 + }; 72 + }; 73 + 74 + soc { 75 + #address-cells = <1>; 76 + #size-cells = <1>; 77 + compatible = "simple-bus"; 78 + ranges; 79 + interrupt-parent = <&intc>; 80 + 81 + apb-bridge@44000000 { 82 + #address-cells = <1>; 83 + #size-cells = <1>; 84 + compatible = "simple-bus"; 85 + ranges = <0 0x44000000 0x1000000>; 86 + 87 + pinctrl: pinctrl { 88 + compatible = "oxsemi,ox810se-pinctrl"; 89 + 90 + /* Regmap for sys registers */ 91 + oxsemi,sys-ctrl = <&sys>; 92 + 93 + pinctrl_uart0: uart0 { 94 + uart0a { 95 + pins = "gpio31"; 96 + function = "fct3"; 97 + }; 98 + uart0b { 99 + pins = "gpio32"; 100 + function = "fct3"; 101 + }; 102 + }; 103 + 104 + pinctrl_uart0_modem: uart0_modem { 105 + uart0c { 106 + pins = "gpio27"; 107 + function = "fct3"; 108 + }; 109 + uart0d { 110 + pins = "gpio28"; 111 + function = "fct3"; 112 + }; 113 + uart0e { 114 + pins = "gpio29"; 115 + function = "fct3"; 116 + }; 117 + uart0f { 118 + pins = "gpio30"; 119 + function = "fct3"; 120 + }; 121 + uart0g { 122 + pins = "gpio33"; 123 + function = "fct3"; 124 + }; 125 + uart0h { 126 + pins = "gpio34"; 127 + function = "fct3"; 128 + }; 129 + }; 130 + 131 + pinctrl_uart1: uart1 { 132 + uart1a { 133 + pins = "gpio20"; 134 + function = "fct3"; 135 + }; 136 + uart1b { 137 + pins = "gpio22"; 138 + function = "fct3"; 139 + }; 140 + }; 141 + 142 + pinctrl_uart1_modem: uart1_modem { 143 + uart1c { 144 + pins = "gpio8"; 145 + function = "fct3"; 146 + }; 147 + uart1d { 148 + pins = "gpio9"; 149 + function = "fct3"; 150 + }; 151 + uart1e { 152 + pins = "gpio23"; 153 + function = "fct3"; 154 + }; 155 + uart1f { 156 + pins = "gpio24"; 157 + function = "fct3"; 158 + }; 159 + uart1g { 160 + pins = "gpio25"; 161 + function = "fct3"; 162 + }; 163 + uart1h { 164 + pins = "gpio26"; 165 + function = "fct3"; 166 + }; 167 + }; 168 + 169 + pinctrl_uart2: uart2 { 170 + uart2a { 171 + pins = "gpio6"; 172 + function = "fct3"; 173 + }; 174 + uart2b { 175 + pins = "gpio7"; 176 + function = "fct3"; 177 + }; 178 + }; 179 + 180 + pinctrl_uart2_modem: uart2_modem { 181 + uart2c { 182 + pins = "gpio0"; 183 + function = "fct3"; 184 + }; 185 + uart2d { 186 + pins = "gpio1"; 187 + function = "fct3"; 188 + }; 189 + uart2e { 190 + pins = "gpio2"; 191 + function = "fct3"; 192 + }; 193 + uart2f { 194 + pins = "gpio3"; 195 + function = "fct3"; 196 + }; 197 + uart2g { 198 + pins = "gpio4"; 199 + function = "fct3"; 200 + }; 201 + uart2h { 202 + pins = "gpio5"; 203 + function = "fct3"; 204 + }; 205 + }; 206 + }; 207 + 208 + gpio0: gpio@000000 { 209 + compatible = "oxsemi,ox810se-gpio"; 210 + reg = <0x000000 0x100000>; 211 + interrupts = <21>; 212 + #gpio-cells = <2>; 213 + gpio-controller; 214 + interrupt-controller; 215 + #interrupt-cells = <2>; 216 + ngpios = <32>; 217 + oxsemi,gpio-bank = <0>; 218 + gpio-ranges = <&pinctrl 0 0 32>; 219 + }; 220 + 221 + gpio1: gpio@100000 { 222 + compatible = "oxsemi,ox810se-gpio"; 223 + reg = <0x100000 0x100000>; 224 + interrupts = <22>; 225 + #gpio-cells = <2>; 226 + gpio-controller; 227 + interrupt-controller; 228 + #interrupt-cells = <2>; 229 + ngpios = <3>; 230 + oxsemi,gpio-bank = <1>; 231 + gpio-ranges = <&pinctrl 0 32 3>; 232 + }; 233 + 234 + uart0: serial@200000 { 235 + compatible = "ns16550a"; 236 + reg = <0x200000 0x100000>; 237 + clocks = <&sysclk>; 238 + interrupts = <23>; 239 + reg-shift = <0>; 240 + fifo-size = <16>; 241 + reg-io-width = <1>; 242 + current-speed = <115200>; 243 + no-loopback-test; 244 + status = "disabled"; 245 + resets = <&reset 17>; 246 + }; 247 + 248 + uart1: serial@300000 { 249 + compatible = "ns16550a"; 250 + reg = <0x300000 0x100000>; 251 + clocks = <&sysclk>; 252 + interrupts = <24>; 253 + reg-shift = <0>; 254 + fifo-size = <16>; 255 + reg-io-width = <1>; 256 + current-speed = <115200>; 257 + no-loopback-test; 258 + status = "disabled"; 259 + resets = <&reset 18>; 260 + }; 261 + 262 + uart2: serial@900000 { 263 + compatible = "ns16550a"; 264 + reg = <0x900000 0x100000>; 265 + clocks = <&sysclk>; 266 + interrupts = <29>; 267 + reg-shift = <0>; 268 + fifo-size = <16>; 269 + reg-io-width = <1>; 270 + current-speed = <115200>; 271 + no-loopback-test; 272 + status = "disabled"; 273 + resets = <&reset 22>; 274 + }; 275 + 276 + uart3: serial@a00000 { 277 + compatible = "ns16550a"; 278 + reg = <0xa00000 0x100000>; 279 + clocks = <&sysclk>; 280 + interrupts = <30>; 281 + reg-shift = <0>; 282 + fifo-size = <16>; 283 + reg-io-width = <1>; 284 + current-speed = <115200>; 285 + no-loopback-test; 286 + status = "disabled"; 287 + resets = <&reset 23>; 288 + }; 289 + }; 290 + 291 + apb-bridge@45000000 { 292 + #address-cells = <1>; 293 + #size-cells = <1>; 294 + compatible = "simple-bus"; 295 + ranges = <0 0x45000000 0x1000000>; 296 + 297 + sys: sys-ctrl@000000 { 298 + compatible = "oxsemi,ox810se-sys-ctrl", "syscon", "simple-mfd"; 299 + reg = <0x000000 0x100000>; 300 + 301 + reset: reset-controller { 302 + compatible = "oxsemi,ox810se-reset"; 303 + #reset-cells = <1>; 304 + }; 305 + 306 + stdclk: stdclk { 307 + compatible = "oxsemi,ox810se-stdclk"; 308 + #clock-cells = <1>; 309 + }; 310 + }; 311 + 312 + rps@300000 { 313 + #address-cells = <1>; 314 + #size-cells = <1>; 315 + compatible = "simple-bus"; 316 + ranges = <0 0x300000 0x100000>; 317 + 318 + intc: interrupt-controller@0 { 319 + compatible = "oxsemi,ox810se-rps-irq"; 320 + interrupt-controller; 321 + reg = <0 0x200>; 322 + #interrupt-cells = <1>; 323 + valid-mask = <0xFFFFFFFF>; 324 + clear-mask = <0>; 325 + }; 326 + 327 + timer0: timer@200 { 328 + compatible = "oxsemi,ox810se-rps-timer"; 329 + reg = <0x200 0x40>; 330 + clocks = <&rpsclk>; 331 + interrupts = <4 5>; 332 + }; 333 + }; 334 + }; 335 + }; 336 + };
+112
arch/arm/boot/dts/wd-mbwe.dts
··· 1 + /* 2 + * wd-mbwe.dtsi - Device tree file for Western Digital My Book World Edition 3 + * 4 + * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com> 5 + * 6 + * Licensed under GPLv2 or later 7 + */ 8 + 9 + /dts-v1/; 10 + #include "ox810se.dtsi" 11 + 12 + / { 13 + model = "Western Digital My Book World Edition"; 14 + 15 + compatible = "wd,mbwe", "oxsemi,ox810se"; 16 + 17 + chosen { 18 + bootargs = "console=ttyS1,115200n8 earlyprintk=serial"; 19 + }; 20 + 21 + memory { 22 + /* 128Mbytes DDR */ 23 + reg = <0x48000000 0x8000000>; 24 + }; 25 + 26 + aliases { 27 + serial1 = &uart1; 28 + gpio0 = &gpio0; 29 + gpio1 = &gpio1; 30 + }; 31 + 32 + gpio-keys-polled { 33 + compatible = "gpio-keys-polled"; 34 + #address-cells = <1>; 35 + #size-cells = <0>; 36 + poll-interval = <100>; 37 + 38 + power { 39 + label = "power"; 40 + gpios = <&gpio0 0 1>; 41 + linux,code = <0x198>; 42 + }; 43 + 44 + recovery { 45 + label = "recovery"; 46 + gpios = <&gpio0 4 1>; 47 + linux,code = <0xab>; 48 + }; 49 + }; 50 + 51 + leds { 52 + compatible = "gpio-leds"; 53 + 54 + a0 { 55 + label = "activity0"; 56 + gpios = <&gpio0 25 0>; 57 + default-state = "keep"; 58 + }; 59 + 60 + a1 { 61 + label = "activity1"; 62 + gpios = <&gpio0 26 0>; 63 + default-state = "keep"; 64 + }; 65 + 66 + a2 { 67 + label = "activity2"; 68 + gpios = <&gpio0 5 0>; 69 + default-state = "keep"; 70 + }; 71 + 72 + a3 { 73 + label = "activity3"; 74 + gpios = <&gpio0 6 0>; 75 + default-state = "keep"; 76 + }; 77 + 78 + a4 { 79 + label = "activity4"; 80 + gpios = <&gpio0 7 0>; 81 + default-state = "keep"; 82 + }; 83 + 84 + a5 { 85 + label = "activity5"; 86 + gpios = <&gpio1 2 0>; 87 + default-state = "keep"; 88 + }; 89 + }; 90 + 91 + i2c-gpio { 92 + compatible = "i2c-gpio"; 93 + gpios = <&gpio0 3 0 /* sda */ 94 + &gpio0 2 0 /* scl */ 95 + >; 96 + i2c-gpio,delay-us = <2>; /* ~100 kHz */ 97 + #address-cells = <1>; 98 + #size-cells = <0>; 99 + 100 + rtc0: rtc@48 { 101 + compatible = "st,m41t00"; 102 + reg = <0x68>; 103 + }; 104 + }; 105 + }; 106 + 107 + &uart1 { 108 + status = "okay"; 109 + 110 + pinctrl-names = "default"; 111 + pinctrl-0 = <&pinctrl_uart1>; 112 + };