]> www.infradead.org Git - linux.git/commitdiff
ARM: dts: bcm-mobile: Split out nodes used by both BCM21664 and BCM23550
authorArtur Weber <aweber.kernel@gmail.com>
Mon, 29 Jul 2024 12:34:21 +0000 (14:34 +0200)
committerFlorian Fainelli <florian.fainelli@broadcom.com>
Tue, 20 Aug 2024 18:49:16 +0000 (11:49 -0700)
The BCM21664 is nearly identical in terms of register layout to the
BCM23550. Move the shared nodes into a new file, bcm2166x-common.dtsi,
and make both bcm21664.dtsi and bcm23550.dtsi include it. This new
common file is based on the former bcm23550.dtsi file, and inherits
its licensing.

Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
Link: https://lore.kernel.org/r/20240729-bcm21664-common-v2-2-ebc21a89bf63@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
arch/arm/boot/dts/broadcom/bcm21664.dtsi
arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/broadcom/bcm23550.dtsi

index c1ad5123bad474e5a855a6a35c97d19695057607..f0d0300079b60dde0c173fc1a82428109cda4791 100644 (file)
@@ -1,15 +1,9 @@
 // SPDX-License-Identifier: GPL-2.0-only
 // Copyright (C) 2014 Broadcom Corporation
 
-#include <dt-bindings/clock/bcm21664.h>
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/interrupt-controller/irq.h>
+#include "bcm2166x-common.dtsi"
 
 / {
-       #address-cells = <1>;
-       #size-cells = <1>;
-       model = "BCM21664 SoC";
-       compatible = "brcm,bcm21664";
        interrupt-parent = <&gic>;
 
        cpus {
                        reg = <1>;
                };
        };
+};
 
-       gic: interrupt-controller@3ff00100 {
-               compatible = "arm,cortex-a9-gic";
-               #interrupt-cells = <3>;
-               #address-cells = <0>;
-               interrupt-controller;
-               reg = <0x3ff01000 0x1000>,
-                     <0x3ff00100 0x100>;
-       };
-
-       smc@3404e000 {
-               compatible = "brcm,bcm21664-smc", "brcm,kona-smc";
-               reg = <0x3404e000 0x400>; /* 1 KiB in SRAM */
-       };
-
-       uartb: serial@3e000000 {
-               compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
-               reg = <0x3e000000 0x118>;
-               clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>;
-               interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
-               reg-shift = <2>;
-               reg-io-width = <4>;
-               status = "disabled";
-       };
-
-       uartb2: serial@3e001000 {
-               compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
-               reg = <0x3e001000 0x118>;
-               clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>;
-               interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
-               reg-shift = <2>;
-               reg-io-width = <4>;
-               status = "disabled";
-       };
-
-       uartb3: serial@3e002000 {
-               compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart";
-               reg = <0x3e002000 0x118>;
-               clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>;
-               interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
-               reg-shift = <2>;
-               reg-io-width = <4>;
-               status = "disabled";
-       };
-
-       L2: cache-controller@3ff20000 {
-               compatible = "arm,pl310-cache";
-               reg = <0x3ff20000 0x1000>;
-               cache-unified;
-               cache-level = <2>;
-       };
-
-       brcm,resetmgr@35001f00 {
-               compatible = "brcm,bcm21664-resetmgr";
-               reg = <0x35001f00 0x24>;
-       };
-
-       timer@35006000 {
-               compatible = "brcm,kona-timer";
-               reg = <0x35006000 0x1c>;
-               interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>;
-       };
-
-       gpio: gpio@35003000 {
-               compatible = "brcm,bcm21664-gpio", "brcm,kona-gpio";
-               reg = <0x35003000 0x524>;
-               interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
-               #gpio-cells = <2>;
-               #interrupt-cells = <2>;
-               gpio-controller;
-               interrupt-controller;
-       };
-
-       sdio1: mmc@3f180000 {
-               compatible = "brcm,kona-sdhci";
-               reg = <0x3f180000 0x801c>;
-               interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>;
-               status = "disabled";
-       };
-
-       sdio2: mmc@3f190000 {
-               compatible = "brcm,kona-sdhci";
-               reg = <0x3f190000 0x801c>;
-               interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>;
-               status = "disabled";
-       };
-
-       sdio3: mmc@3f1a0000 {
-               compatible = "brcm,kona-sdhci";
-               reg = <0x3f1a0000 0x801c>;
-               interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>;
-               status = "disabled";
-       };
-
-       sdio4: mmc@3f1b0000 {
-               compatible = "brcm,kona-sdhci";
-               reg = <0x3f1b0000 0x801c>;
-               interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>;
-               status = "disabled";
-       };
-
-       bsc1: i2c@3e016000 {
-               compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
-               reg = <0x3e016000 0x70>;
-               interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>;
-               status = "disabled";
-       };
-
-       bsc2: i2c@3e017000 {
-               compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
-               reg = <0x3e017000 0x70>;
-               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>;
-               status = "disabled";
-       };
-
-       bsc3: i2c@3e018000 {
-               compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
-               reg = <0x3e018000 0x70>;
-               interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>;
-               status = "disabled";
-       };
-
-       bsc4: i2c@3e01c000 {
-               compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
-               reg = <0x3e01c000 0x70>;
-               interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>;
-               status = "disabled";
-       };
-
-       clocks {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges;
-
-               /*
-                * Fixed clocks are defined before CCUs whose
-                * clocks may depend on them.
-                */
-
-               ref_32k_clk: ref_32k {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <32768>;
-               };
-
-               bbl_32k_clk: bbl_32k {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <32768>;
-               };
-
-               ref_13m_clk: ref_13m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <13000000>;
-               };
-
-               var_13m_clk: var_13m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <13000000>;
-               };
-
-               dft_19_5m_clk: dft_19_5m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <19500000>;
-               };
-
-               ref_crystal_clk: ref_crystal {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <26000000>;
-               };
-
-               ref_52m_clk: ref_52m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <52000000>;
-               };
-
-               var_52m_clk: var_52m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <52000000>;
-               };
-
-               usb_otg_ahb_clk: usb_otg_ahb {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <52000000>;
-               };
-
-               ref_96m_clk: ref_96m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <96000000>;
-               };
-
-               var_96m_clk: var_96m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <96000000>;
-               };
-
-               ref_104m_clk: ref_104m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <104000000>;
-               };
-
-               var_104m_clk: var_104m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <104000000>;
-               };
-
-               ref_156m_clk: ref_156m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <156000000>;
+&apps {
+               gic: interrupt-controller@1c01000 {
+                       compatible = "arm,cortex-a9-gic";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x01c01000 0x1000>,
+                                 <0x01c00100 0x100>;
                };
 
-               var_156m_clk: var_156m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <156000000>;
+               L2: cache-controller@1c20000 {
+                       compatible = "arm,pl310-cache";
+                       reg = <0x01c20000 0x1000>;
+                       cache-unified;
+                       cache-level = <2>;
                };
+};
 
-               root_ccu: root_ccu@35001000 {
-                       compatible = "brcm,bcm21664-root-ccu";
-                       reg = <0x35001000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "frac_1m";
-               };
+&bsc1 {
+       compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
+};
 
-               aon_ccu: aon_ccu@35002000 {
-                       compatible = "brcm,bcm21664-aon-ccu";
-                       reg = <0x35002000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "hub_timer";
-               };
+&bsc2 {
+       compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
+};
 
-               master_ccu: master_ccu@3f001000 {
-                       compatible = "brcm,bcm21664-master-ccu";
-                       reg = <0x3f001000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "sdio1",
-                                            "sdio2",
-                                            "sdio3",
-                                            "sdio4",
-                                            "sdio1_sleep",
-                                            "sdio2_sleep",
-                                            "sdio3_sleep",
-                                            "sdio4_sleep";
-               };
+&bsc3 {
+       compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
+};
 
-               slave_ccu: slave_ccu@3e011000 {
-                       compatible = "brcm,bcm21664-slave-ccu";
-                       reg = <0x3e011000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "uartb",
-                                            "uartb2",
-                                            "uartb3",
-                                            "bsc1",
-                                            "bsc2",
-                                            "bsc3",
-                                            "bsc4";
-               };
-       };
+&bsc4 {
+       compatible = "brcm,bcm21664-i2c", "brcm,kona-i2c";
+};
 
-       usbotg: usb@3f120000 {
-               compatible = "snps,dwc2";
-               reg = <0x3f120000 0x10000>;
-               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&usb_otg_ahb_clk>;
-               clock-names = "otg";
-               phys = <&usbphy>;
-               phy-names = "usb2-phy";
-               status = "disabled";
-       };
+&gpio {
+       compatible = "brcm,bcm21664-gpio", "brcm,kona-gpio";
+};
 
-       usbphy: usb-phy@3f130000 {
-               compatible = "brcm,kona-usb2-phy";
-               reg = <0x3f130000 0x28>;
-               #phy-cells = <0>;
-               status = "disabled";
-       };
+&smc {
+       compatible = "brcm,bcm21664-smc", "brcm,kona-smc";
 };
diff --git a/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi b/arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi
new file mode 100644 (file)
index 0000000..87180b7
--- /dev/null
@@ -0,0 +1,334 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Common device tree for components shared between the BCM21664 and BCM23550
+ * SoCs.
+ *
+ * Copyright (C) 2016 Broadcom
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/clock/bcm21664.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       /* Hub bus */
+       hub: hub-bus@34000000 {
+               compatible = "simple-bus";
+               ranges = <0 0x34000000 0x102f83ac>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               smc: smc@4e000 {
+                       /* Compatible filled by SoC DTSI */
+                       reg = <0x0004e000 0x400>; /* 1 KiB in SRAM */
+               };
+
+               resetmgr: reset-controller@1001f00 {
+                       compatible = "brcm,bcm21664-resetmgr";
+                       reg = <0x01001f00 0x24>;
+               };
+
+               gpio: gpio@1003000 {
+                       /* Compatible filled by SoC DTSI */
+                       reg = <0x01003000 0x524>;
+                       interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+                       gpio-controller;
+                       interrupt-controller;
+               };
+
+               timer@1006000 {
+                       compatible = "brcm,kona-timer";
+                       reg = <0x01006000 0x1c>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>;
+               };
+       };
+
+       /* Slaves bus */
+       slaves: slaves-bus@3e000000 {
+               compatible = "simple-bus";
+               ranges = <0 0x3e000000 0x0001c070>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               uartb: serial@0 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x00000000 0x118>;
+                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>;
+                       interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uartb2: serial@1000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x00001000 0x118>;
+                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>;
+                       interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uartb3: serial@2000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x00002000 0x118>;
+                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               bsc1: i2c@16000 {
+                       /* Compatible filled by SoC DTSI */
+                       reg = <0x00016000 0x70>;
+                       interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>;
+                       status = "disabled";
+               };
+
+               bsc2: i2c@17000 {
+                       /* Compatible filled by SoC DTSI */
+                       reg = <0x00017000 0x70>;
+                       interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>;
+                       status = "disabled";
+               };
+
+               bsc3: i2c@18000 {
+                       /* Compatible filled by SoC DTSI */
+                       reg = <0x00018000 0x70>;
+                       interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>;
+                       status = "disabled";
+               };
+
+               bsc4: i2c@1c000 {
+                       /* Compatible filled by SoC DTSI */
+                       reg = <0x0001c000 0x70>;
+                       interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>;
+                       status = "disabled";
+               };
+       };
+
+       /* Apps bus */
+       apps: apps-bus@3e300000 {
+               compatible = "simple-bus";
+               ranges = <0 0x3e300000 0x01c02000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               usbotg: usb@e20000 {
+                       compatible = "snps,dwc2";
+                       reg = <0x00e20000 0x10000>;
+                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&usb_otg_ahb_clk>;
+                       clock-names = "otg";
+                       phys = <&usbphy>;
+                       phy-names = "usb2-phy";
+                       status = "disabled";
+               };
+
+               usbphy: usb-phy@e30000 {
+                       compatible = "brcm,kona-usb2-phy";
+                       reg = <0x00e30000 0x28>;
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               sdio1: mmc@e80000 {
+                       compatible = "brcm,kona-sdhci";
+                       reg = <0x00e80000 0x801c>;
+                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>;
+                       status = "disabled";
+               };
+
+               sdio2: mmc@e90000 {
+                       compatible = "brcm,kona-sdhci";
+                       reg = <0x00e90000 0x801c>;
+                       interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>;
+                       status = "disabled";
+               };
+
+               sdio3: mmc@ea0000 {
+                       compatible = "brcm,kona-sdhci";
+                       reg = <0x00ea0000 0x801c>;
+                       interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>;
+                       status = "disabled";
+               };
+
+               sdio4: mmc@eb0000 {
+                       compatible = "brcm,kona-sdhci";
+                       reg = <0x00eb0000 0x801c>;
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>;
+                       status = "disabled";
+               };
+       };
+
+       clocks {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               /*
+                * Fixed clocks are defined before CCUs whose
+                * clocks may depend on them.
+                */
+
+               ref_32k_clk: ref_32k {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <32768>;
+               };
+
+               bbl_32k_clk: bbl_32k {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <32768>;
+               };
+
+               ref_13m_clk: ref_13m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <13000000>;
+               };
+
+               var_13m_clk: var_13m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <13000000>;
+               };
+
+               dft_19_5m_clk: dft_19_5m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <19500000>;
+               };
+
+               ref_crystal_clk: ref_crystal {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <26000000>;
+               };
+
+               ref_52m_clk: ref_52m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <52000000>;
+               };
+
+               var_52m_clk: var_52m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <52000000>;
+               };
+
+               usb_otg_ahb_clk: usb_otg_ahb {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <52000000>;
+               };
+
+               ref_96m_clk: ref_96m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <96000000>;
+               };
+
+               var_96m_clk: var_96m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <96000000>;
+               };
+
+               ref_104m_clk: ref_104m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <104000000>;
+               };
+
+               var_104m_clk: var_104m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <104000000>;
+               };
+
+               ref_156m_clk: ref_156m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <156000000>;
+               };
+
+               var_156m_clk: var_156m {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <156000000>;
+               };
+
+               root_ccu: root_ccu@35001000 {
+                       compatible = "brcm,bcm21664-root-ccu";
+                       reg = <0x35001000 0x0f00>;
+                       #clock-cells = <1>;
+                       clock-output-names = "frac_1m";
+               };
+
+               aon_ccu: aon_ccu@35002000 {
+                       compatible = "brcm,bcm21664-aon-ccu";
+                       reg = <0x35002000 0x0f00>;
+                       #clock-cells = <1>;
+                       clock-output-names = "hub_timer";
+               };
+
+               slave_ccu: slave_ccu@3e011000 {
+                       compatible = "brcm,bcm21664-slave-ccu";
+                       reg = <0x3e011000 0x0f00>;
+                       #clock-cells = <1>;
+                       clock-output-names = "uartb",
+                                            "uartb2",
+                                            "uartb3",
+                                            "bsc1",
+                                            "bsc2",
+                                            "bsc3",
+                                            "bsc4";
+               };
+
+               master_ccu: master_ccu@3f001000 {
+                       compatible = "brcm,bcm21664-master-ccu";
+                       reg = <0x3f001000 0x0f00>;
+                       #clock-cells = <1>;
+                       clock-output-names = "sdio1",
+                                            "sdio2",
+                                            "sdio3",
+                                            "sdio4",
+                                            "sdio1_sleep",
+                                            "sdio2_sleep",
+                                            "sdio3_sleep",
+                                            "sdio4_sleep";
+               };
+       };
+};
index 50ebe93d6bd067bc0e89ce240613b8bdff94b6b7..c1c69381286ba2455358ced8d016559976e4255e 100644 (file)
@@ -1,45 +1,13 @@
+// SPDX-License-Identifier: BSD-3-Clause
 /*
- *  BSD LICENSE
+ * Device tree for the BCM23550 SoC.
  *
- *  Copyright(c) 2016 Broadcom.  All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions
- *  are met:
- *
- *    * Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *    * Redistributions in binary form must reproduce the above copyright
- *      notice, this list of conditions and the following disclaimer in
- *      the documentation and/or other materials provided with the
- *      distribution.
- *    * Neither the name of Broadcom Corporation nor the names of its
- *      contributors may be used to endorse or promote products derived
- *      from this software without specific prior written permission.
- *
- *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 2016 Broadcom
  */
 
-/* BCM23550 and BCM21664 have almost identical clocks */
-#include <dt-bindings/clock/bcm21664.h>
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/interrupt-controller/irq.h>
+#include "bcm2166x-common.dtsi"
 
 / {
-       #address-cells = <1>;
-       #size-cells = <1>;
-       model = "BCM23550 SoC";
-       compatible = "brcm,bcm23550";
        interrupt-parent = <&gic>;
 
        cpus {
                        clock-frequency = <1000000000>;
                };
        };
+};
 
-       /* Hub bus */
-       hub@34000000 {
-               compatible = "simple-bus";
-               ranges = <0 0x34000000 0x102f83ac>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               smc@4e000 {
-                       compatible = "brcm,bcm23550-smc", "brcm,kona-smc";
-                       reg = <0x0004e000 0x400>; /* 1 KiB in SRAM */
-               };
-
-               resetmgr: reset-controller@1001f00 {
-                       compatible = "brcm,bcm21664-resetmgr";
-                       reg = <0x01001f00 0x24>;
-               };
-
-               gpio: gpio@1003000 {
-                       compatible = "brcm,bcm23550-gpio", "brcm,kona-gpio";
-                       reg = <0x01003000 0x524>;
-                       interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
-                       #gpio-cells = <2>;
-                       #interrupt-cells = <2>;
-                       gpio-controller;
-                       interrupt-controller;
-               };
-
-               timer@1006000 {
-                       compatible = "brcm,kona-timer";
-                       reg = <0x01006000 0x1c>;
-                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>;
-               };
-       };
-
-       /* Slaves bus */
-       slaves@3e000000 {
-               compatible = "simple-bus";
-               ranges = <0 0x3e000000 0x0001c070>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               uartb: serial@0 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x00000000 0x118>;
-                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>;
-                       interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
-                       status = "disabled";
-               };
-
-               uartb2: serial@1000 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x00001000 0x118>;
-                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>;
-                       interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
-                       status = "disabled";
-               };
-
-               uartb3: serial@2000 {
-                       compatible = "snps,dw-apb-uart";
-                       reg = <0x00002000 0x118>;
-                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>;
-                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
-                       reg-shift = <2>;
-                       reg-io-width = <4>;
-                       status = "disabled";
-               };
-
-               bsc1: i2c@16000 {
-                       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
-                       reg = <0x00016000 0x70>;
-                       interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>;
-                       status = "disabled";
-               };
-
-               bsc2: i2c@17000 {
-                       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
-                       reg = <0x00017000 0x70>;
-                       interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>;
-                       status = "disabled";
-               };
-
-               bsc3: i2c@18000 {
-                       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
-                       reg = <0x00018000 0x70>;
-                       interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>;
-                       status = "disabled";
-               };
-
-               bsc4: i2c@1c000 {
-                       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
-                       reg = <0x0001c000 0x70>;
-                       interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>;
-                       status = "disabled";
-               };
-       };
-
-       /* Apps bus */
-       apps@3e300000 {
-               compatible = "simple-bus";
-               ranges = <0 0x3e300000 0x01b77000>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               usbotg: usb@e20000 {
-                       compatible = "snps,dwc2";
-                       reg = <0x00e20000 0x10000>;
-                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&usb_otg_ahb_clk>;
-                       clock-names = "otg";
-                       phys = <&usbphy>;
-                       phy-names = "usb2-phy";
-                       status = "disabled";
-               };
-
-               usbphy: usb-phy@e30000 {
-                       compatible = "brcm,kona-usb2-phy";
-                       reg = <0x00e30000 0x28>;
-                       #phy-cells = <0>;
-                       status = "disabled";
-               };
-
-               sdio1: mmc@e80000 {
-                       compatible = "brcm,kona-sdhci";
-                       reg = <0x00e80000 0x801c>;
-                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>;
-                       status = "disabled";
-               };
-
-               sdio2: mmc@e90000 {
-                       compatible = "brcm,kona-sdhci";
-                       reg = <0x00e90000 0x801c>;
-                       interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>;
-                       status = "disabled";
-               };
-
-               sdio3: mmc@ea0000 {
-                       compatible = "brcm,kona-sdhci";
-                       reg = <0x00ea0000 0x801c>;
-                       interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>;
-                       status = "disabled";
-               };
-
-               sdio4: mmc@eb0000 {
-                       compatible = "brcm,kona-sdhci";
-                       reg = <0x00eb0000 0x801c>;
-                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>;
-                       status = "disabled";
-               };
-
+&apps {
                cdc: cdc@1b0e000 {
                        compatible = "brcm,bcm23550-cdc";
                        reg = <0x01b0e000 0x78>;
                        reg = <0x01b21000 0x1000>,
                              <0x01b22000 0x1000>;
                };
-       };
-
-       clocks {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges;
-
-               /*
-                * Fixed clocks are defined before CCUs whose
-                * clocks may depend on them.
-                */
-
-               ref_32k_clk: ref_32k {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <32768>;
-               };
-
-               bbl_32k_clk: bbl_32k {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <32768>;
-               };
-
-               ref_13m_clk: ref_13m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <13000000>;
-               };
-
-               var_13m_clk: var_13m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <13000000>;
-               };
-
-               dft_19_5m_clk: dft_19_5m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <19500000>;
-               };
-
-               ref_crystal_clk: ref_crystal {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <26000000>;
-               };
-
-               ref_52m_clk: ref_52m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <52000000>;
-               };
-
-               var_52m_clk: var_52m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <52000000>;
-               };
-
-               usb_otg_ahb_clk: usb_otg_ahb {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <52000000>;
-               };
-
-               ref_96m_clk: ref_96m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <96000000>;
-               };
-
-               var_96m_clk: var_96m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <96000000>;
-               };
-
-               ref_104m_clk: ref_104m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <104000000>;
-               };
-
-               var_104m_clk: var_104m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <104000000>;
-               };
+};
 
-               ref_156m_clk: ref_156m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <156000000>;
-               };
+&bsc1 {
+       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
+};
 
-               var_156m_clk: var_156m {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <156000000>;
-               };
+&bsc2 {
+       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
+};
 
-               root_ccu: root_ccu@35001000 {
-                       compatible = "brcm,bcm21664-root-ccu";
-                       reg = <0x35001000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "frac_1m";
-               };
+&bsc3 {
+       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
+};
 
-               aon_ccu: aon_ccu@35002000 {
-                       compatible = "brcm,bcm21664-aon-ccu";
-                       reg = <0x35002000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "hub_timer";
-               };
+&bsc4 {
+       compatible = "brcm,bcm23550-i2c", "brcm,kona-i2c";
+};
 
-               slave_ccu: slave_ccu@3e011000 {
-                       compatible = "brcm,bcm21664-slave-ccu";
-                       reg = <0x3e011000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "uartb",
-                                            "uartb2",
-                                            "uartb3",
-                                            "bsc1",
-                                            "bsc2",
-                                            "bsc3",
-                                            "bsc4";
-               };
+&gpio {
+       compatible = "brcm,bcm23550-gpio", "brcm,kona-gpio";
+};
 
-               master_ccu: master_ccu@3f001000 {
-                       compatible = "brcm,bcm21664-master-ccu";
-                       reg = <0x3f001000 0x0f00>;
-                       #clock-cells = <1>;
-                       clock-output-names = "sdio1",
-                                            "sdio2",
-                                            "sdio3",
-                                            "sdio4",
-                                            "sdio1_sleep",
-                                            "sdio2_sleep",
-                                            "sdio3_sleep",
-                                            "sdio4_sleep";
-               };
-       };
+&smc {
+       compatible = "brcm,bcm23550-smc", "brcm,kona-smc";
 };