162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0 OR MIT) 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Device Tree file for the Linksys WRT1900AC (Mamba). 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Note: this board is shipped with a new generation boot loader that 662306a36Sopenharmony_ci * remaps internal registers at 0xf1000000. Therefore, if earlyprintk 762306a36Sopenharmony_ci * is used, the CONFIG_DEBUG_MVEBU_UART0_ALTERNATE option should be 862306a36Sopenharmony_ci * used. 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Copyright (C) 2014 Imre Kaloz <kaloz@openwrt.org> 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * Based on armada-xp-axpwifiap.dts: 1362306a36Sopenharmony_ci * 1462306a36Sopenharmony_ci * Copyright (C) 2013 Marvell 1562306a36Sopenharmony_ci * 1662306a36Sopenharmony_ci * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 1762306a36Sopenharmony_ci */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci/dts-v1/; 2062306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h> 2162306a36Sopenharmony_ci#include <dt-bindings/input/input.h> 2262306a36Sopenharmony_ci#include "armada-xp-mv78230.dtsi" 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/ { 2562306a36Sopenharmony_ci model = "Linksys WRT1900AC"; 2662306a36Sopenharmony_ci compatible = "linksys,mamba", "marvell,armadaxp-mv78230", 2762306a36Sopenharmony_ci "marvell,armadaxp", "marvell,armada-370-xp"; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci chosen { 3062306a36Sopenharmony_ci bootargs = "console=ttyS0,115200"; 3162306a36Sopenharmony_ci stdout-path = &uart0; 3262306a36Sopenharmony_ci }; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci memory@0 { 3562306a36Sopenharmony_ci device_type = "memory"; 3662306a36Sopenharmony_ci reg = <0x00000000 0x00000000 0x00000000 0x10000000>; /* 256MB */ 3762306a36Sopenharmony_ci }; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci soc { 4062306a36Sopenharmony_ci ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 4162306a36Sopenharmony_ci MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 4262306a36Sopenharmony_ci MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000 4362306a36Sopenharmony_ci MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000 4462306a36Sopenharmony_ci MBUS_ID(0x0c, 0x04) 0 0 0xf1200000 0x100000>; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci internal-regs { 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci rtc@10300 { 4962306a36Sopenharmony_ci /* No crystal connected to the internal RTC */ 5062306a36Sopenharmony_ci status = "disabled"; 5162306a36Sopenharmony_ci }; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci /* J10: VCC, NC, RX, NC, TX, GND */ 5462306a36Sopenharmony_ci serial@12000 { 5562306a36Sopenharmony_ci status = "okay"; 5662306a36Sopenharmony_ci }; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci sata@a0000 { 5962306a36Sopenharmony_ci nr-ports = <1>; 6062306a36Sopenharmony_ci status = "okay"; 6162306a36Sopenharmony_ci }; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci ethernet@70000 { 6462306a36Sopenharmony_ci pinctrl-0 = <&ge0_rgmii_pins>; 6562306a36Sopenharmony_ci pinctrl-names = "default"; 6662306a36Sopenharmony_ci status = "okay"; 6762306a36Sopenharmony_ci phy-mode = "rgmii-id"; 6862306a36Sopenharmony_ci buffer-manager = <&bm>; 6962306a36Sopenharmony_ci bm,pool-long = <0>; 7062306a36Sopenharmony_ci bm,pool-short = <1>; 7162306a36Sopenharmony_ci fixed-link { 7262306a36Sopenharmony_ci speed = <1000>; 7362306a36Sopenharmony_ci full-duplex; 7462306a36Sopenharmony_ci }; 7562306a36Sopenharmony_ci }; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci ethernet@74000 { 7862306a36Sopenharmony_ci pinctrl-0 = <&ge1_rgmii_pins>; 7962306a36Sopenharmony_ci pinctrl-names = "default"; 8062306a36Sopenharmony_ci status = "okay"; 8162306a36Sopenharmony_ci phy-mode = "rgmii-id"; 8262306a36Sopenharmony_ci buffer-manager = <&bm>; 8362306a36Sopenharmony_ci bm,pool-long = <2>; 8462306a36Sopenharmony_ci bm,pool-short = <3>; 8562306a36Sopenharmony_ci fixed-link { 8662306a36Sopenharmony_ci speed = <1000>; 8762306a36Sopenharmony_ci full-duplex; 8862306a36Sopenharmony_ci }; 8962306a36Sopenharmony_ci }; 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci /* USB part of the eSATA/USB 2.0 port */ 9262306a36Sopenharmony_ci usb@50000 { 9362306a36Sopenharmony_ci status = "okay"; 9462306a36Sopenharmony_ci }; 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci i2c@11000 { 9762306a36Sopenharmony_ci status = "okay"; 9862306a36Sopenharmony_ci clock-frequency = <100000>; 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci tmp421@4c { 10162306a36Sopenharmony_ci compatible = "ti,tmp421"; 10262306a36Sopenharmony_ci reg = <0x4c>; 10362306a36Sopenharmony_ci }; 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci tlc59116@68 { 10662306a36Sopenharmony_ci #address-cells = <1>; 10762306a36Sopenharmony_ci #size-cells = <0>; 10862306a36Sopenharmony_ci #gpio-cells = <2>; 10962306a36Sopenharmony_ci compatible = "ti,tlc59116"; 11062306a36Sopenharmony_ci reg = <0x68>; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci wan_amber@0 { 11362306a36Sopenharmony_ci label = "mamba:amber:wan"; 11462306a36Sopenharmony_ci reg = <0x0>; 11562306a36Sopenharmony_ci }; 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci wan_white@1 { 11862306a36Sopenharmony_ci label = "mamba:white:wan"; 11962306a36Sopenharmony_ci reg = <0x1>; 12062306a36Sopenharmony_ci }; 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ci wlan_2g@2 { 12362306a36Sopenharmony_ci label = "mamba:white:wlan_2g"; 12462306a36Sopenharmony_ci reg = <0x2>; 12562306a36Sopenharmony_ci }; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci wlan_5g@3 { 12862306a36Sopenharmony_ci label = "mamba:white:wlan_5g"; 12962306a36Sopenharmony_ci reg = <0x3>; 13062306a36Sopenharmony_ci }; 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci esata@4 { 13362306a36Sopenharmony_ci label = "mamba:white:esata"; 13462306a36Sopenharmony_ci reg = <0x4>; 13562306a36Sopenharmony_ci linux,default-trigger = "disk-activity"; 13662306a36Sopenharmony_ci }; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci usb2@5 { 13962306a36Sopenharmony_ci label = "mamba:white:usb2"; 14062306a36Sopenharmony_ci reg = <0x5>; 14162306a36Sopenharmony_ci }; 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci usb3_1@6 { 14462306a36Sopenharmony_ci label = "mamba:white:usb3_1"; 14562306a36Sopenharmony_ci reg = <0x6>; 14662306a36Sopenharmony_ci }; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci usb3_2@7 { 14962306a36Sopenharmony_ci label = "mamba:white:usb3_2"; 15062306a36Sopenharmony_ci reg = <0x7>; 15162306a36Sopenharmony_ci }; 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci wps_white@8 { 15462306a36Sopenharmony_ci label = "mamba:white:wps"; 15562306a36Sopenharmony_ci reg = <0x8>; 15662306a36Sopenharmony_ci }; 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci wps_amber@9 { 15962306a36Sopenharmony_ci label = "mamba:amber:wps"; 16062306a36Sopenharmony_ci reg = <0x9>; 16162306a36Sopenharmony_ci }; 16262306a36Sopenharmony_ci }; 16362306a36Sopenharmony_ci }; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci bm@c8000 { 16662306a36Sopenharmony_ci status = "okay"; 16762306a36Sopenharmony_ci }; 16862306a36Sopenharmony_ci }; 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci bm-bppi { 17162306a36Sopenharmony_ci status = "okay"; 17262306a36Sopenharmony_ci }; 17362306a36Sopenharmony_ci }; 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci gpio-keys { 17662306a36Sopenharmony_ci compatible = "gpio-keys"; 17762306a36Sopenharmony_ci pinctrl-0 = <&keys_pin>; 17862306a36Sopenharmony_ci pinctrl-names = "default"; 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci button-wps { 18162306a36Sopenharmony_ci label = "WPS"; 18262306a36Sopenharmony_ci linux,code = <KEY_WPS_BUTTON>; 18362306a36Sopenharmony_ci gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; 18462306a36Sopenharmony_ci }; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci button-reset { 18762306a36Sopenharmony_ci label = "Factory Reset Button"; 18862306a36Sopenharmony_ci linux,code = <KEY_RESTART>; 18962306a36Sopenharmony_ci gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; 19062306a36Sopenharmony_ci }; 19162306a36Sopenharmony_ci }; 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci gpio-leds { 19462306a36Sopenharmony_ci compatible = "gpio-leds"; 19562306a36Sopenharmony_ci pinctrl-0 = <&power_led_pin>; 19662306a36Sopenharmony_ci pinctrl-names = "default"; 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ci led-power { 19962306a36Sopenharmony_ci label = "mamba:white:power"; 20062306a36Sopenharmony_ci gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>; 20162306a36Sopenharmony_ci default-state = "on"; 20262306a36Sopenharmony_ci }; 20362306a36Sopenharmony_ci }; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci pwm_fan { 20662306a36Sopenharmony_ci /* SUNON HA4010V4-0000-C99 */ 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci compatible = "pwm-fan"; 20962306a36Sopenharmony_ci pwms = <&gpio0 24 4000>; 21062306a36Sopenharmony_ci }; 21162306a36Sopenharmony_ci}; 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci&pciec { 21462306a36Sopenharmony_ci status = "okay"; 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci /* Etron EJ168 USB 3.0 controller */ 21762306a36Sopenharmony_ci pcie@1,0 { 21862306a36Sopenharmony_ci /* Port 0, Lane 0 */ 21962306a36Sopenharmony_ci status = "okay"; 22062306a36Sopenharmony_ci }; 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci /* First mini-PCIe port */ 22362306a36Sopenharmony_ci pcie@2,0 { 22462306a36Sopenharmony_ci /* Port 0, Lane 1 */ 22562306a36Sopenharmony_ci status = "okay"; 22662306a36Sopenharmony_ci }; 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci /* Second mini-PCIe port */ 22962306a36Sopenharmony_ci pcie@3,0 { 23062306a36Sopenharmony_ci /* Port 0, Lane 3 */ 23162306a36Sopenharmony_ci status = "okay"; 23262306a36Sopenharmony_ci }; 23362306a36Sopenharmony_ci}; 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci&pinctrl { 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci keys_pin: keys-pin { 23862306a36Sopenharmony_ci marvell,pins = "mpp32", "mpp33"; 23962306a36Sopenharmony_ci marvell,function = "gpio"; 24062306a36Sopenharmony_ci }; 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci power_led_pin: power-led-pin { 24362306a36Sopenharmony_ci marvell,pins = "mpp40"; 24462306a36Sopenharmony_ci marvell,function = "gpio"; 24562306a36Sopenharmony_ci }; 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ci gpio_fan_pin: gpio-fan-pin { 24862306a36Sopenharmony_ci marvell,pins = "mpp24"; 24962306a36Sopenharmony_ci marvell,function = "gpio"; 25062306a36Sopenharmony_ci }; 25162306a36Sopenharmony_ci}; 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci&spi0 { 25462306a36Sopenharmony_ci status = "okay"; 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci flash@0 { 25762306a36Sopenharmony_ci #address-cells = <1>; 25862306a36Sopenharmony_ci #size-cells = <1>; 25962306a36Sopenharmony_ci compatible = "everspin,mr25h256"; 26062306a36Sopenharmony_ci reg = <0>; /* Chip select 0 */ 26162306a36Sopenharmony_ci spi-max-frequency = <40000000>; 26262306a36Sopenharmony_ci }; 26362306a36Sopenharmony_ci}; 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci&mdio { 26662306a36Sopenharmony_ci status = "okay"; 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci switch@0 { 26962306a36Sopenharmony_ci compatible = "marvell,mv88e6085"; 27062306a36Sopenharmony_ci #address-cells = <1>; 27162306a36Sopenharmony_ci #size-cells = <0>; 27262306a36Sopenharmony_ci reg = <0>; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci ports { 27562306a36Sopenharmony_ci #address-cells = <1>; 27662306a36Sopenharmony_ci #size-cells = <0>; 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci port@0 { 27962306a36Sopenharmony_ci reg = <0>; 28062306a36Sopenharmony_ci label = "lan4"; 28162306a36Sopenharmony_ci }; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ci port@1 { 28462306a36Sopenharmony_ci reg = <1>; 28562306a36Sopenharmony_ci label = "lan3"; 28662306a36Sopenharmony_ci }; 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci port@2 { 28962306a36Sopenharmony_ci reg = <2>; 29062306a36Sopenharmony_ci label = "lan2"; 29162306a36Sopenharmony_ci }; 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci port@3 { 29462306a36Sopenharmony_ci reg = <3>; 29562306a36Sopenharmony_ci label = "lan1"; 29662306a36Sopenharmony_ci }; 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci port@4 { 29962306a36Sopenharmony_ci reg = <4>; 30062306a36Sopenharmony_ci label = "internet"; 30162306a36Sopenharmony_ci }; 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci port@5 { 30462306a36Sopenharmony_ci reg = <5>; 30562306a36Sopenharmony_ci phy-mode = "rgmii-id"; 30662306a36Sopenharmony_ci ethernet = <ð0>; 30762306a36Sopenharmony_ci fixed-link { 30862306a36Sopenharmony_ci speed = <1000>; 30962306a36Sopenharmony_ci full-duplex; 31062306a36Sopenharmony_ci }; 31162306a36Sopenharmony_ci }; 31262306a36Sopenharmony_ci }; 31362306a36Sopenharmony_ci }; 31462306a36Sopenharmony_ci}; 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci&nand_controller { 31762306a36Sopenharmony_ci status = "okay"; 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci nand@0 { 32062306a36Sopenharmony_ci reg = <0>; 32162306a36Sopenharmony_ci label = "pxa3xx_nand-0"; 32262306a36Sopenharmony_ci nand-rb = <0>; 32362306a36Sopenharmony_ci marvell,nand-keep-config; 32462306a36Sopenharmony_ci nand-on-flash-bbt; 32562306a36Sopenharmony_ci nand-ecc-strength = <4>; 32662306a36Sopenharmony_ci nand-ecc-step-size = <512>; 32762306a36Sopenharmony_ci 32862306a36Sopenharmony_ci partitions { 32962306a36Sopenharmony_ci compatible = "fixed-partitions"; 33062306a36Sopenharmony_ci #address-cells = <1>; 33162306a36Sopenharmony_ci #size-cells = <1>; 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ci partition@0 { 33462306a36Sopenharmony_ci label = "u-boot"; 33562306a36Sopenharmony_ci reg = <0x0000000 0x100000>; /* 1MB */ 33662306a36Sopenharmony_ci read-only; 33762306a36Sopenharmony_ci }; 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ci partition@100000 { 34062306a36Sopenharmony_ci label = "u_env"; 34162306a36Sopenharmony_ci reg = <0x100000 0x40000>; /* 256KB */ 34262306a36Sopenharmony_ci }; 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_ci partition@140000 { 34562306a36Sopenharmony_ci label = "s_env"; 34662306a36Sopenharmony_ci reg = <0x140000 0x40000>; /* 256KB */ 34762306a36Sopenharmony_ci }; 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci partition@900000 { 35062306a36Sopenharmony_ci label = "devinfo"; 35162306a36Sopenharmony_ci reg = <0x900000 0x100000>; /* 1MB */ 35262306a36Sopenharmony_ci read-only; 35362306a36Sopenharmony_ci }; 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_ci /* kernel1 overlaps with rootfs1 by design */ 35662306a36Sopenharmony_ci partition@a00000 { 35762306a36Sopenharmony_ci label = "kernel1"; 35862306a36Sopenharmony_ci reg = <0xa00000 0x2800000>; /* 40MB */ 35962306a36Sopenharmony_ci }; 36062306a36Sopenharmony_ci 36162306a36Sopenharmony_ci partition@d00000 { 36262306a36Sopenharmony_ci label = "rootfs1"; 36362306a36Sopenharmony_ci reg = <0xd00000 0x2500000>; /* 37MB */ 36462306a36Sopenharmony_ci }; 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci /* kernel2 overlaps with rootfs2 by design */ 36762306a36Sopenharmony_ci partition@3200000 { 36862306a36Sopenharmony_ci label = "kernel2"; 36962306a36Sopenharmony_ci reg = <0x3200000 0x2800000>; /* 40MB */ 37062306a36Sopenharmony_ci }; 37162306a36Sopenharmony_ci 37262306a36Sopenharmony_ci partition@3500000 { 37362306a36Sopenharmony_ci label = "rootfs2"; 37462306a36Sopenharmony_ci reg = <0x3500000 0x2500000>; /* 37MB */ 37562306a36Sopenharmony_ci }; 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_ci /* 37862306a36Sopenharmony_ci * 38MB, last MB is for the BBT, not writable 37962306a36Sopenharmony_ci */ 38062306a36Sopenharmony_ci partition@5a00000 { 38162306a36Sopenharmony_ci label = "syscfg"; 38262306a36Sopenharmony_ci reg = <0x5a00000 0x2600000>; 38362306a36Sopenharmony_ci }; 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci /* 38662306a36Sopenharmony_ci * Unused area between "s_env" and "devinfo". 38762306a36Sopenharmony_ci * Moved here because otherwise the renumbered 38862306a36Sopenharmony_ci * partitions would break the bootloader 38962306a36Sopenharmony_ci * supplied bootargs 39062306a36Sopenharmony_ci */ 39162306a36Sopenharmony_ci partition@180000 { 39262306a36Sopenharmony_ci label = "unused_area"; 39362306a36Sopenharmony_ci reg = <0x180000 0x780000>; /* 7.5MB */ 39462306a36Sopenharmony_ci }; 39562306a36Sopenharmony_ci }; 39662306a36Sopenharmony_ci }; 39762306a36Sopenharmony_ci}; 398