/* * ox810se.dtsi - Device tree file for Oxford Semiconductor OX810SE SoC * * Copyright (C) 2016 Neil Armstrong * * Licensed under GPLv2 or later */ /include/ "skeleton.dtsi" #include #include / { compatible = "oxsemi,ox810se"; cpus { #address-cells = <0>; #size-cells = <0>; cpu { device_type = "cpu"; compatible = "arm,arm926ej-s"; clocks = <&armclk>; }; }; memory { /* Max 256MB @ 0x48000000 */ reg = <0x48000000 0x10000000>; }; clocks { osc: oscillator { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <25000000>; }; gmacclk: gmacclk { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <125000000>; }; rpsclk: rpsclk { compatible = "fixed-factor-clock"; #clock-cells = <0>; clock-div = <1>; clock-mult = <1>; clocks = <&osc>; }; pll400: pll400 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <733333333>; }; sysclk: sysclk { compatible = "fixed-factor-clock"; #clock-cells = <0>; clock-div = <4>; clock-mult = <1>; clocks = <&pll400>; }; armclk: armclk { compatible = "fixed-factor-clock"; #clock-cells = <0>; clock-div = <2>; clock-mult = <1>; clocks = <&pll400>; }; }; soc { #address-cells = <1>; #size-cells = <1>; compatible = "simple-bus"; ranges; interrupt-parent = <&intc>; apb-bridge@44000000 { #address-cells = <1>; #size-cells = <1>; compatible = "simple-bus"; ranges = <0 0x44000000 0x1000000>; pinctrl: pinctrl { compatible = "oxsemi,ox810se-pinctrl"; /* Regmap for sys registers */ oxsemi,sys-ctrl = <&sys>; pinctrl_uart0: uart0 { uart0a { pins = "gpio31"; function = "fct3"; }; uart0b { pins = "gpio32"; function = "fct3"; }; }; pinctrl_uart0_modem: uart0_modem { uart0c { pins = "gpio27"; function = "fct3"; }; uart0d { pins = "gpio28"; function = "fct3"; }; uart0e { pins = "gpio29"; function = "fct3"; }; uart0f { pins = "gpio30"; function = "fct3"; }; uart0g { pins = "gpio33"; function = "fct3"; }; uart0h { pins = "gpio34"; function = "fct3"; }; }; pinctrl_uart1: uart1 { uart1a { pins = "gpio20"; function = "fct3"; }; uart1b { pins = "gpio22"; function = "fct3"; }; }; pinctrl_uart1_modem: uart1_modem { uart1c { pins = "gpio8"; function = "fct3"; }; uart1d { pins = "gpio9"; function = "fct3"; }; uart1e { pins = "gpio23"; function = "fct3"; }; uart1f { pins = "gpio24"; function = "fct3"; }; uart1g { pins = "gpio25"; function = "fct3"; }; uart1h { pins = "gpio26"; function = "fct3"; }; }; pinctrl_uart2: uart2 { uart2a { pins = "gpio6"; function = "fct3"; }; uart2b { pins = "gpio7"; function = "fct3"; }; }; pinctrl_uart2_modem: uart2_modem { uart2c { pins = "gpio0"; function = "fct3"; }; uart2d { pins = "gpio1"; function = "fct3"; }; uart2e { pins = "gpio2"; function = "fct3"; }; uart2f { pins = "gpio3"; function = "fct3"; }; uart2g { pins = "gpio4"; function = "fct3"; }; uart2h { pins = "gpio5"; function = "fct3"; }; }; }; gpio0: gpio@000000 { compatible = "oxsemi,ox810se-gpio"; reg = <0x000000 0x100000>; interrupts = <21>; #gpio-cells = <2>; gpio-controller; interrupt-controller; #interrupt-cells = <2>; ngpios = <32>; oxsemi,gpio-bank = <0>; gpio-ranges = <&pinctrl 0 0 32>; }; gpio1: gpio@100000 { compatible = "oxsemi,ox810se-gpio"; reg = <0x100000 0x100000>; interrupts = <22>; #gpio-cells = <2>; gpio-controller; interrupt-controller; #interrupt-cells = <2>; ngpios = <3>; oxsemi,gpio-bank = <1>; gpio-ranges = <&pinctrl 0 32 3>; }; uart0: serial@200000 { compatible = "ns16550a"; reg = <0x200000 0x100000>; clocks = <&sysclk>; interrupts = <23>; reg-shift = <0>; fifo-size = <16>; reg-io-width = <1>; current-speed = <115200>; no-loopback-test; status = "disabled"; resets = <&reset RESET_UART1>; }; uart1: serial@300000 { compatible = "ns16550a"; reg = <0x300000 0x100000>; clocks = <&sysclk>; interrupts = <24>; reg-shift = <0>; fifo-size = <16>; reg-io-width = <1>; current-speed = <115200>; no-loopback-test; status = "disabled"; resets = <&reset RESET_UART2>; }; uart2: serial@900000 { compatible = "ns16550a"; reg = <0x900000 0x100000>; clocks = <&sysclk>; interrupts = <29>; reg-shift = <0>; fifo-size = <16>; reg-io-width = <1>; current-speed = <115200>; no-loopback-test; status = "disabled"; resets = <&reset RESET_UART3>; }; uart3: serial@a00000 { compatible = "ns16550a"; reg = <0xa00000 0x100000>; clocks = <&sysclk>; interrupts = <30>; reg-shift = <0>; fifo-size = <16>; reg-io-width = <1>; current-speed = <115200>; no-loopback-test; status = "disabled"; resets = <&reset RESET_UART4>; }; }; apb-bridge@45000000 { #address-cells = <1>; #size-cells = <1>; compatible = "simple-bus"; ranges = <0 0x45000000 0x1000000>; sys: sys-ctrl@000000 { compatible = "oxsemi,ox810se-sys-ctrl", "syscon", "simple-mfd"; reg = <0x000000 0x100000>; reset: reset-controller { compatible = "oxsemi,ox810se-reset"; #reset-cells = <1>; }; stdclk: stdclk { compatible = "oxsemi,ox810se-stdclk"; #clock-cells = <1>; }; }; rps@300000 { #address-cells = <1>; #size-cells = <1>; compatible = "simple-bus"; ranges = <0 0x300000 0x100000>; intc: interrupt-controller@0 { compatible = "oxsemi,ox810se-rps-irq"; interrupt-controller; reg = <0 0x200>; #interrupt-cells = <1>; valid-mask = <0xFFFFFFFF>; clear-mask = <0>; }; timer0: timer@200 { compatible = "oxsemi,ox810se-rps-timer"; reg = <0x200 0x40>; clocks = <&rpsclk>; interrupts = <4 5>; }; }; }; }; };