Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
0002 /*
0003  * Device Tree For AC5.
0004  *
0005  * Copyright (C) 2021 Marvell
0006  * Copyright (C) 2022 Allied Telesis Labs
0007  */
0008 
0009 #include <dt-bindings/gpio/gpio.h>
0010 #include <dt-bindings/interrupt-controller/arm-gic.h>
0011 
0012 / {
0013         model = "Marvell AC5 SoC";
0014         compatible = "marvell,ac5";
0015         interrupt-parent = <&gic>;
0016         #address-cells = <2>;
0017         #size-cells = <2>;
0018 
0019         cpus {
0020                 #address-cells = <2>;
0021                 #size-cells = <0>;
0022 
0023                 cpu-map {
0024                         cluster0 {
0025                                 core0 {
0026                                         cpu = <&cpu0>;
0027                                 };
0028                                 core1 {
0029                                         cpu = <&cpu1>;
0030                                 };
0031                         };
0032                 };
0033 
0034                 cpu0: cpu@0 {
0035                         device_type = "cpu";
0036                         compatible = "arm,cortex-a55";
0037                         reg = <0x0 0x0>;
0038                         enable-method = "psci";
0039                         next-level-cache = <&l2>;
0040                 };
0041 
0042                 cpu1: cpu@1 {
0043                         device_type = "cpu";
0044                         compatible = "arm,cortex-a55";
0045                         reg = <0x0 0x100>;
0046                         enable-method = "psci";
0047                         next-level-cache = <&l2>;
0048                 };
0049 
0050                 l2: l2-cache {
0051                         compatible = "cache";
0052                 };
0053         };
0054 
0055         psci {
0056                 compatible = "arm,psci-0.2";
0057                 method = "smc";
0058         };
0059 
0060         timer {
0061                 compatible = "arm,armv8-timer";
0062                 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>,
0063                              <GIC_PPI 8 IRQ_TYPE_LEVEL_HIGH>,
0064                              <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>,
0065                              <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
0066         };
0067 
0068         pmu {
0069                 compatible = "arm,armv8-pmuv3";
0070                 interrupts = <GIC_PPI 12 IRQ_TYPE_LEVEL_HIGH>;
0071         };
0072 
0073         soc {
0074                 compatible = "simple-bus";
0075                 #address-cells = <2>;
0076                 #size-cells = <2>;
0077                 ranges;
0078                 dma-ranges;
0079 
0080                 internal-regs@7f000000 {
0081                         #address-cells = <1>;
0082                         #size-cells = <1>;
0083                         compatible = "simple-bus";
0084                         /* 16M internal register @ 0x7f00_0000 */
0085                         ranges = <0x0 0x0 0x7f000000 0x1000000>;
0086                         dma-coherent;
0087 
0088                         uart0: serial@12000 {
0089                                 compatible = "snps,dw-apb-uart";
0090                                 reg = <0x12000 0x100>;
0091                                 reg-shift = <2>;
0092                                 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
0093                                 reg-io-width = <1>;
0094                                 clocks = <&cnm_clock>;
0095                                 status = "okay";
0096                         };
0097 
0098                         mdio: mdio@22004 {
0099                                 #address-cells = <1>;
0100                                 #size-cells = <0>;
0101                                 compatible = "marvell,orion-mdio";
0102                                 reg = <0x22004 0x4>;
0103                                 clocks = <&cnm_clock>;
0104                         };
0105 
0106                         i2c0: i2c@11000{
0107                                 compatible = "marvell,mv78230-i2c";
0108                                 reg = <0x11000 0x20>;
0109                                 #address-cells = <1>;
0110                                 #size-cells = <0>;
0111 
0112                                 clocks = <&cnm_clock>;
0113                                 clock-names = "core";
0114                                 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
0115                                 clock-frequency=<100000>;
0116 
0117                                 pinctrl-names = "default", "gpio";
0118                                 pinctrl-0 = <&i2c0_pins>;
0119                                 pinctrl-1 = <&i2c0_gpio>;
0120                                 scl_gpio = <&gpio0 26 GPIO_ACTIVE_HIGH>;
0121                                 sda_gpio = <&gpio0 27 GPIO_ACTIVE_HIGH>;
0122                                 status = "disabled";
0123                         };
0124 
0125                         i2c1: i2c@11100{
0126                                 compatible = "marvell,mv78230-i2c";
0127                                 reg = <0x11100 0x20>;
0128                                 #address-cells = <1>;
0129                                 #size-cells = <0>;
0130 
0131                                 clocks = <&cnm_clock>;
0132                                 clock-names = "core";
0133                                 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
0134                                 clock-frequency=<100000>;
0135 
0136                                 pinctrl-names = "default", "gpio";
0137                                 pinctrl-0 = <&i2c1_pins>;
0138                                 pinctrl-1 = <&i2c1_gpio>;
0139                                 scl_gpio = <&gpio0 20 GPIO_ACTIVE_HIGH>;
0140                                 sda_gpio = <&gpio0 21 GPIO_ACTIVE_HIGH>;
0141                                 status = "disabled";
0142                         };
0143 
0144                         gpio0: gpio@18100 {
0145                                 compatible = "marvell,orion-gpio";
0146                                 reg = <0x18100 0x40>;
0147                                 ngpios = <32>;
0148                                 gpio-controller;
0149                                 #gpio-cells = <2>;
0150                                 gpio-ranges = <&pinctrl0 0 0 32>;
0151                                 marvell,pwm-offset = <0x1f0>;
0152                                 interrupt-controller;
0153                                 #interrupt-cells = <2>;
0154                                 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
0155                                              <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
0156                                              <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
0157                                              <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
0158                         };
0159 
0160                         gpio1: gpio@18140 {
0161                                 reg = <0x18140 0x40>;
0162                                 compatible = "marvell,orion-gpio";
0163                                 ngpios = <14>;
0164                                 gpio-controller;
0165                                 #gpio-cells = <2>;
0166                                 gpio-ranges = <&pinctrl0 0 32 14>;
0167                                 marvell,pwm-offset = <0x1f0>;
0168                                 interrupt-controller;
0169                                 #interrupt-cells = <2>;
0170                                 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
0171                                              <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
0172                         };
0173                 };
0174 
0175                 /*
0176                  * Dedicated section for devices behind 32bit controllers so we
0177                  * can configure specific DMA mapping for them
0178                  */
0179                 behind-32bit-controller@7f000000 {
0180                         compatible = "simple-bus";
0181                         #address-cells = <0x2>;
0182                         #size-cells = <0x2>;
0183                         ranges = <0x0 0x0 0x0 0x7f000000 0x0 0x1000000>;
0184                         /* Host phy ram starts at 0x200M */
0185                         dma-ranges = <0x0 0x0 0x2 0x0 0x1 0x0>;
0186                         dma-coherent;
0187 
0188                         eth0: ethernet@20000 {
0189                                 compatible = "marvell,armada-ac5-neta";
0190                                 reg = <0x0 0x20000 0x0 0x4000>;
0191                                 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
0192                                 clocks = <&cnm_clock>;
0193                                 phy-mode = "sgmii";
0194                                 status = "disabled";
0195                         };
0196 
0197                         eth1: ethernet@24000 {
0198                                 compatible = "marvell,armada-ac5-neta";
0199                                 reg = <0x0 0x24000 0x0 0x4000>;
0200                                 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
0201                                 clocks = <&cnm_clock>;
0202                                 phy-mode = "sgmii";
0203                                 status = "disabled";
0204                         };
0205 
0206                         usb0: usb@80000 {
0207                                 compatible = "marvell,orion-ehci";
0208                                 reg = <0x0 0x80000 0x0 0x500>;
0209                                 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
0210                                 status = "disabled";
0211                         };
0212 
0213                         usb1: usb@a0000 {
0214                                 compatible = "marvell,orion-ehci";
0215                                 reg = <0x0 0xa0000 0x0 0x500>;
0216                                 interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
0217                                 status = "disabled";
0218                         };
0219                 };
0220 
0221                 pinctrl0: pinctrl@80020100 {
0222                         compatible = "marvell,ac5-pinctrl";
0223                         reg = <0 0x80020100 0 0x20>;
0224 
0225                         i2c0_pins: i2c0-pins {
0226                                 marvell,pins = "mpp26", "mpp27";
0227                                 marvell,function = "i2c0";
0228                         };
0229 
0230                         i2c0_gpio: i2c0-gpio-pins {
0231                                 marvell,pins = "mpp26", "mpp27";
0232                                 marvell,function = "gpio";
0233                         };
0234 
0235                         i2c1_pins: i2c1-pins {
0236                                 marvell,pins = "mpp20", "mpp21";
0237                                 marvell,function = "i2c1";
0238                         };
0239 
0240                         i2c1_gpio: i2c1-gpio-pins {
0241                                 marvell,pins = "mpp20", "mpp21";
0242                                 marvell,function = "i2c1";
0243                         };
0244                 };
0245 
0246                 spi0: spi@805a0000 {
0247                         compatible = "marvell,armada-3700-spi";
0248                         reg = <0x0 0x805a0000 0x0 0x50>;
0249                         #address-cells = <0x1>;
0250                         #size-cells = <0x0>;
0251                         clocks = <&spi_clock>;
0252                         interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
0253                         num-cs = <1>;
0254                         status = "disabled";
0255                 };
0256 
0257                 spi1: spi@805a8000 {
0258                         compatible = "marvell,armada-3700-spi";
0259                         reg = <0x0 0x805a8000 0x0 0x50>;
0260                         #address-cells = <0x1>;
0261                         #size-cells = <0x0>;
0262                         clocks = <&spi_clock>;
0263                         interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
0264                         num-cs = <1>;
0265                         status = "disabled";
0266                 };
0267 
0268                 gic: interrupt-controller@80600000 {
0269                         compatible = "arm,gic-v3";
0270                         #interrupt-cells = <3>;
0271                         interrupt-controller;
0272                         reg = <0x0 0x80600000 0x0 0x10000>, /* GICD */
0273                               <0x0 0x80660000 0x0 0x40000>; /* GICR */
0274                         interrupts = <GIC_PPI 6 IRQ_TYPE_LEVEL_HIGH>;
0275                 };
0276         };
0277 
0278         clocks {
0279                 cnm_clock: cnm-clock {
0280                         compatible = "fixed-clock";
0281                         #clock-cells = <0>;
0282                         clock-frequency = <328000000>;
0283                 };
0284 
0285                 spi_clock: spi-clock {
0286                         compatible = "fixed-clock";
0287                         #clock-cells = <0>;
0288                         clock-frequency = <200000000>;
0289                 };
0290         };
0291 };