Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * Broadcom BCM63138 DSL SoCs Device Tree
0004  */
0005 
0006 #include <dt-bindings/interrupt-controller/arm-gic.h>
0007 #include <dt-bindings/interrupt-controller/irq.h>
0008 
0009 / {
0010         #address-cells = <1>;
0011         #size-cells = <1>;
0012         compatible = "brcm,bcm63138", "brcm,bcmbca";
0013         model = "Broadcom BCM963138 Reference Board";
0014         interrupt-parent = <&gic>;
0015 
0016         aliases {
0017                 uart0 = &serial0;
0018                 uart1 = &serial1;
0019         };
0020 
0021         cpus {
0022                 #address-cells = <1>;
0023                 #size-cells = <0>;
0024 
0025                 cpu@0 {
0026                         device_type = "cpu";
0027                         compatible = "arm,cortex-a9";
0028                         next-level-cache = <&L2>;
0029                         reg = <0>;
0030                         enable-method = "brcm,bcm63138";
0031                 };
0032 
0033                 cpu@1 {
0034                         device_type = "cpu";
0035                         compatible = "arm,cortex-a9";
0036                         next-level-cache = <&L2>;
0037                         reg = <1>;
0038                         enable-method = "brcm,bcm63138";
0039                         resets = <&pmb0 4 1>;
0040                 };
0041         };
0042 
0043         clocks {
0044                 /* UBUS peripheral clock */
0045                 periph_clk: periph_clk {
0046                         #clock-cells = <0>;
0047                         compatible = "fixed-clock";
0048                         clock-frequency = <50000000>;
0049                         clock-output-names = "periph";
0050                 };
0051 
0052                 /* peripheral clock for system timer */
0053                 axi_clk: axi_clk {
0054                         #clock-cells = <0>;
0055                         compatible = "fixed-factor-clock";
0056                         clocks = <&armpll>;
0057                         clock-div = <2>;
0058                         clock-mult = <1>;
0059                 };
0060 
0061                 /* APB bus clock */
0062                 apb_clk: apb_clk {
0063                         #clock-cells = <0>;
0064                         compatible = "fixed-factor-clock";
0065                         clocks = <&armpll>;
0066                         clock-div = <4>;
0067                         clock-mult = <1>;
0068                 };
0069         };
0070 
0071         /* ARM bus */
0072         axi@80000000 {
0073                 compatible = "simple-bus";
0074                 ranges = <0 0x80000000 0x784000>;
0075                 #address-cells = <1>;
0076                 #size-cells = <1>;
0077 
0078                 L2: cache-controller@1d000 {
0079                         compatible = "arm,pl310-cache";
0080                         reg = <0x1d000 0x1000>;
0081                         cache-unified;
0082                         cache-level = <2>;
0083                         cache-size = <524288>;
0084                         cache-sets = <1024>;
0085                         cache-line-size = <32>;
0086                         interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>;
0087                 };
0088 
0089                 scu: scu@1e000 {
0090                         compatible = "arm,cortex-a9-scu";
0091                         reg = <0x1e000 0x100>;
0092                 };
0093 
0094                 gic: interrupt-controller@1f000 {
0095                         compatible = "arm,cortex-a9-gic";
0096                         reg = <0x1f000 0x1000
0097                                 0x1e100 0x100>;
0098                         #interrupt-cells = <3>;
0099                         #address-cells = <0>;
0100                         interrupt-controller;
0101                 };
0102 
0103                 global_timer: timer@1e200 {
0104                         compatible = "arm,cortex-a9-global-timer";
0105                         reg = <0x1e200 0x20>;
0106                         interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
0107                         clocks = <&axi_clk>;
0108                 };
0109 
0110                 local_timer: local-timer@1e600 {
0111                         compatible = "arm,cortex-a9-twd-timer";
0112                         reg = <0x1e600 0x20>;
0113                         interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
0114                                                   IRQ_TYPE_EDGE_RISING)>;
0115                         clocks = <&axi_clk>;
0116                 };
0117 
0118                 twd_watchdog: watchdog@1e620 {
0119                         compatible = "arm,cortex-a9-twd-wdt";
0120                         reg = <0x1e620 0x20>;
0121                         interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
0122                                                   IRQ_TYPE_LEVEL_HIGH)>;
0123                 };
0124 
0125                 armpll: armpll@20000 {
0126                         #clock-cells = <0>;
0127                         compatible = "brcm,bcm63138-armpll";
0128                         clocks = <&periph_clk>;
0129                         reg = <0x20000 0xf00>;
0130                 };
0131 
0132                 pmb0: reset-controller@4800c0 {
0133                         compatible = "brcm,bcm63138-pmb";
0134                         reg = <0x4800c0 0x10>;
0135                         #reset-cells = <2>;
0136                 };
0137 
0138                 pmb1: reset-controller@4800e0 {
0139                         compatible = "brcm,bcm63138-pmb";
0140                         reg = <0x4800e0 0x10>;
0141                         #reset-cells = <2>;
0142                 };
0143 
0144                 ahci: sata@a000 {
0145                         compatible = "brcm,bcm63138-ahci", "brcm,sata3-ahci";
0146                         reg-names = "ahci", "top-ctrl";
0147                         reg = <0xa000 0x9ac>, <0x8040 0x24>;
0148                         interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
0149                         #address-cells = <1>;
0150                         #size-cells = <0>;
0151                         resets = <&pmb0 3 1>;
0152                         reset-names = "ahci";
0153                         status = "disabled";
0154 
0155                         sata0: sata-port@0 {
0156                                 reg = <0>;
0157                                 phys = <&sata_phy0>;
0158                         };
0159                 };
0160 
0161                 sata_phy: sata-phy@8100 {
0162                         compatible = "brcm,bcm63138-sata-phy", "brcm,phy-sata3";
0163                         reg = <0x8100 0x1e00>;
0164                         reg-names = "phy";
0165                         #address-cells = <1>;
0166                         #size-cells = <0>;
0167                         status = "disabled";
0168 
0169                         sata_phy0: sata-phy@0 {
0170                                 reg = <0>;
0171                                 #phy-cells = <0>;
0172                         };
0173                 };
0174         };
0175 
0176         /* Legacy UBUS base */
0177         ubus@fffe8000 {
0178                 compatible = "simple-bus";
0179                 #address-cells = <1>;
0180                 #size-cells = <1>;
0181                 ranges = <0 0xfffe8000 0x8100>;
0182 
0183                 timer: timer@80 {
0184                         compatible = "brcm,bcm6328-timer", "syscon";
0185                         reg = <0x80 0x3c>;
0186                 };
0187 
0188                 serial0: serial@600 {
0189                         compatible = "brcm,bcm6345-uart";
0190                         reg = <0x600 0x1b>;
0191                         interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
0192                         clocks = <&periph_clk>;
0193                         clock-names = "periph";
0194                         status = "disabled";
0195                 };
0196 
0197                 serial1: serial@620 {
0198                         compatible = "brcm,bcm6345-uart";
0199                         reg = <0x620 0x1b>;
0200                         interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
0201                         clocks = <&periph_clk>;
0202                         clock-names = "periph";
0203                         status = "disabled";
0204                 };
0205 
0206                 nand_controller: nand-controller@2000 {
0207                         #address-cells = <1>;
0208                         #size-cells = <0>;
0209                         compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand";
0210                         reg = <0x2000 0x600>, <0xf0 0x10>;
0211                         reg-names = "nand", "nand-int-base";
0212                         status = "disabled";
0213                         interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
0214                         interrupt-names = "nand";
0215                 };
0216 
0217                 bootlut: bootlut@8000 {
0218                         compatible = "brcm,bcm63138-bootlut";
0219                         reg = <0x8000 0x50>;
0220                 };
0221 
0222                 reboot {
0223                         compatible = "syscon-reboot";
0224                         regmap = <&timer>;
0225                         offset = <0x34>;
0226                         mask = <1>;
0227                 };
0228         };
0229 };