// SPDX-License-Identifier: GPL-2.0-only /* * Device Tree Source for Meraki MX60/MX60W (Buckminster) * * Copyright (C) 2016 Chris Blake * * Based on Cisco Meraki DTS extracted from release wired-12-217818 */ /dts-v1/; #include #include "apm82181.dtsi" / { model = "Meraki MX60/MX60W Security Appliance"; compatible = "meraki,mx60", "meraki,buckminster", "apm,bluestone"; aliases { /* U-Boot env has a bad ethaddr MAC address that is sent to * the kernel. The real MAC is in UBI */ /delete-property/ ethernet0; serial0 = &UART1; }; chosen { stdout-path = "/plb/opb/serial@ef600400"; }; }; &CRYPTO { status = "okay"; }; &PKA { status = "okay"; }; &TRNG { status = "okay"; }; &USBOTG0 { status = "okay"; dr_mode = "host"; }; &ndfc { /* Buckminster has 1GiB of NAND */ status = "okay"; nand { partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "u-boot"; reg = <0x00000000 0x00100000>; read-only; }; partition@100000 { label = "u-boot-env"; reg = <0x00100000 0x00100000>; compatible = "u-boot,env"; read-only; }; partition@200000 { label = "oops"; reg = <0x00200000 0x00040000>; }; partition@240000 { compatible = "linux,ubi"; label = "ubi"; reg = <0x00240000 0x3fdc0000>; volumes { ubi-volume-board-config { volname = "board-config"; nvmem-layout { compatible = "fixed-layout"; #address-cells = <1>; #size-cells = <1>; macaddr_board_66: macaddr@66 { compatible = "mac-base"; reg = <0x66 0x6>; #nvmem-cell-cells = <1>; }; }; }; }; }; }; }; }; &UART1 { status = "okay"; }; &GPIO0 { status = "okay"; }; &IIC0 { status = "okay"; }; &EMAC0 { status = "okay"; nvmem-cells = <&macaddr_board_66 0>; nvmem-cell-names = "mac-address"; fixed-link { speed = <1000>; full-duplex; }; mdio { #address-cells = <1>; #size-cells = <0>; phy_port1: phy@0 { compatible = "ethernet-phy-id004d.d034"; reg = <0>; }; phy_port2: phy@1 { compatible = "ethernet-phy-id004d.d034"; reg = <1>; }; phy_port3: phy@2 { compatible = "ethernet-phy-id004d.d034"; reg = <2>; }; phy_port4: phy@3 { compatible = "ethernet-phy-id004d.d034"; reg = <3>; }; phy_port5: phy@4 { compatible = "ethernet-phy-id004d.d034"; reg = <4>; }; switch0@10 { compatible = "qca,qca8327"; reg = <0x10>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ethernet = <&EMAC0>; phy-mode = "rgmii-id"; tx-internal-delay-ps = <2000>; fixed-link { speed = <1000>; full-duplex; }; }; port@1 { reg = <1>; label = "lan4"; phy-mode = "internal"; phy-handle = <&phy_port1>; leds { #address-cells = <1>; #size-cells = <0>; led@0 { reg = <0>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <0>; default-state = "keep"; }; led@1 { reg = <1>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <1>; default-state = "keep"; }; led@2 { reg = <2>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <2>; default-state = "keep"; }; }; }; port@2 { reg = <2>; label = "lan3"; phy-mode = "internal"; phy-handle = <&phy_port2>; leds { #address-cells = <1>; #size-cells = <0>; led@0 { reg = <0>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <0>; default-state = "keep"; }; led@1 { reg = <1>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <1>; default-state = "keep"; }; led@2 { reg = <2>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <2>; default-state = "keep"; }; }; }; port@3 { reg = <3>; label = "lan2"; phy-mode = "internal"; phy-handle = <&phy_port3>; leds { #address-cells = <1>; #size-cells = <0>; led@0 { reg = <0>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <0>; default-state = "keep"; }; led@1 { reg = <1>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <1>; default-state = "keep"; }; led@2 { reg = <2>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <2>; default-state = "keep"; }; }; }; port@4 { reg = <4>; label = "lan1"; phy-mode = "internal"; phy-handle = <&phy_port4>; leds { #address-cells = <1>; #size-cells = <0>; led@0 { reg = <0>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <0>; default-state = "keep"; }; led@1 { reg = <1>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <1>; default-state = "keep"; }; led@2 { reg = <2>; color = ; function = LED_FUNCTION_LAN; function-enumerator = <2>; default-state = "keep"; }; }; }; port@5 { reg = <5>; label = "wan"; phy-mode = "internal"; phy-handle = <&phy_port5>; nvmem-cells = <&macaddr_board_66 1>; nvmem-cell-names = "mac-address"; leds { #address-cells = <1>; #size-cells = <0>; led@0 { reg = <0>; color = ; function = LED_FUNCTION_WAN; function-enumerator = <0>; default-state = "keep"; }; led@1 { reg = <1>; color = ; function = LED_FUNCTION_WAN; function-enumerator = <1>; default-state = "keep"; }; led@2 { reg = <2>; color = ; function = LED_FUNCTION_WAN; function-enumerator = <2>; default-state = "keep"; }; }; }; }; }; }; }; &POB0 { leds { compatible = "gpio-leds"; led-0 { color = ; function = LED_FUNCTION_POWER; gpios = <&GPIO0 18 GPIO_ACTIVE_LOW>; }; led-1 { color = ; function = LED_FUNCTION_FAULT; gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>; panic-indicator; }; led-2 { color = ; function = LED_FUNCTION_WAN; gpios = <&GPIO0 17 GPIO_ACTIVE_LOW>; }; led-3 { color = ; function = LED_FUNCTION_WAN; gpios = <&GPIO0 15 GPIO_ACTIVE_LOW>; }; led-4 { color = ; function = LED_FUNCTION_LAN; function-enumerator = <0>; gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>; }; led-5 { color = ; function = LED_FUNCTION_LAN; function-enumerator = <1>; gpios = <&GPIO0 21 GPIO_ACTIVE_LOW>; }; led-6 { color = ; function = LED_FUNCTION_LAN; function-enumerator = <2>; gpios = <&GPIO0 22 GPIO_ACTIVE_LOW>; }; led-7 { color = ; function = LED_FUNCTION_LAN; function-enumerator = <3>; gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>; }; }; keys { compatible = "gpio-keys"; button-restart { label = "Reset button"; linux,code = ; gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>; interrupt-parent = <&UIC1>; interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>; debounce-interval = <60>; }; }; }; &PCIE0 { /* Leave this enabled as u-boot on the MX60 will disable it for us */ status = "okay"; /* * relevant lspci topology: * * -+-[0000:40]---00.0-[41-7f]----00.0 */ bridge@64,0 { reg = <0x00400000 0 0 0 0>; #address-cells = <3>; #size-cells = <2>; ranges; wifi0: wifi@65,0 { /* Atheros AR9380 2.4/5GHz */ compatible = "pci168c,0030"; reg = <0x00410000 0 0 0 0>; interrupts = <1>; /* INTA */ }; }; };