162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0 OR MIT) 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Device Tree file for the Turris Omnia 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2016 Uwe Kleine-König <uwe@kleine-koenig.org> 662306a36Sopenharmony_ci * Copyright (C) 2016 Tomas Hlavacek <tmshlvkc@gmail.com> 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Schematic available at https://www.turris.cz/doc/_media/rtrom01-schema.pdf 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci/dts-v1/; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h> 1462306a36Sopenharmony_ci#include <dt-bindings/input/input.h> 1562306a36Sopenharmony_ci#include <dt-bindings/leds/common.h> 1662306a36Sopenharmony_ci#include "armada-385.dtsi" 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci/ { 1962306a36Sopenharmony_ci model = "Turris Omnia"; 2062306a36Sopenharmony_ci compatible = "cznic,turris-omnia", "marvell,armada385", "marvell,armada380"; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci chosen { 2362306a36Sopenharmony_ci stdout-path = &uart0; 2462306a36Sopenharmony_ci }; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci aliases { 2762306a36Sopenharmony_ci ethernet0 = ð0; 2862306a36Sopenharmony_ci ethernet1 = ð1; 2962306a36Sopenharmony_ci ethernet2 = ð2; 3062306a36Sopenharmony_ci }; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci memory { 3362306a36Sopenharmony_ci device_type = "memory"; 3462306a36Sopenharmony_ci reg = <0x00000000 0x40000000>; /* 1024 MB */ 3562306a36Sopenharmony_ci }; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci soc { 3862306a36Sopenharmony_ci ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 3962306a36Sopenharmony_ci MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000 4062306a36Sopenharmony_ci MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000 4162306a36Sopenharmony_ci MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000 4262306a36Sopenharmony_ci MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci internal-regs { 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci /* USB part of the PCIe2/USB 2.0 port */ 4762306a36Sopenharmony_ci usb@58000 { 4862306a36Sopenharmony_ci status = "okay"; 4962306a36Sopenharmony_ci }; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci sata@a8000 { 5262306a36Sopenharmony_ci status = "okay"; 5362306a36Sopenharmony_ci }; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci sdhci@d8000 { 5662306a36Sopenharmony_ci pinctrl-names = "default"; 5762306a36Sopenharmony_ci pinctrl-0 = <&sdhci_pins>; 5862306a36Sopenharmony_ci status = "okay"; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci bus-width = <8>; 6162306a36Sopenharmony_ci no-1-8-v; 6262306a36Sopenharmony_ci non-removable; 6362306a36Sopenharmony_ci }; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci usb3@f0000 { 6662306a36Sopenharmony_ci status = "okay"; 6762306a36Sopenharmony_ci }; 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci usb3@f8000 { 7062306a36Sopenharmony_ci status = "okay"; 7162306a36Sopenharmony_ci }; 7262306a36Sopenharmony_ci }; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci pcie { 7562306a36Sopenharmony_ci status = "okay"; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci pcie@1,0 { 7862306a36Sopenharmony_ci /* Port 0, Lane 0 */ 7962306a36Sopenharmony_ci status = "okay"; 8062306a36Sopenharmony_ci slot-power-limit-milliwatt = <10000>; 8162306a36Sopenharmony_ci }; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci pcie@2,0 { 8462306a36Sopenharmony_ci /* Port 1, Lane 0 */ 8562306a36Sopenharmony_ci status = "okay"; 8662306a36Sopenharmony_ci slot-power-limit-milliwatt = <10000>; 8762306a36Sopenharmony_ci }; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci pcie@3,0 { 9062306a36Sopenharmony_ci /* Port 2, Lane 0 */ 9162306a36Sopenharmony_ci status = "okay"; 9262306a36Sopenharmony_ci slot-power-limit-milliwatt = <10000>; 9362306a36Sopenharmony_ci }; 9462306a36Sopenharmony_ci }; 9562306a36Sopenharmony_ci }; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci sfp: sfp { 9862306a36Sopenharmony_ci compatible = "sff,sfp"; 9962306a36Sopenharmony_ci i2c-bus = <&sfp_i2c>; 10062306a36Sopenharmony_ci tx-fault-gpios = <&pcawan 0 GPIO_ACTIVE_HIGH>; 10162306a36Sopenharmony_ci tx-disable-gpios = <&pcawan 1 GPIO_ACTIVE_HIGH>; 10262306a36Sopenharmony_ci rate-select0-gpios = <&pcawan 2 GPIO_ACTIVE_HIGH>; 10362306a36Sopenharmony_ci los-gpios = <&pcawan 3 GPIO_ACTIVE_HIGH>; 10462306a36Sopenharmony_ci mod-def0-gpios = <&pcawan 4 GPIO_ACTIVE_LOW>; 10562306a36Sopenharmony_ci maximum-power-milliwatt = <3000>; 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci /* 10862306a36Sopenharmony_ci * For now this has to be enabled at boot time by U-Boot when 10962306a36Sopenharmony_ci * a SFP module is present. Read more in the comment in the 11062306a36Sopenharmony_ci * eth2 node below. 11162306a36Sopenharmony_ci */ 11262306a36Sopenharmony_ci status = "disabled"; 11362306a36Sopenharmony_ci }; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci sound { 11662306a36Sopenharmony_ci compatible = "simple-audio-card"; 11762306a36Sopenharmony_ci simple-audio-card,name = "SPDIF"; 11862306a36Sopenharmony_ci simple-audio-card,format = "i2s"; 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci simple-audio-card,cpu { 12162306a36Sopenharmony_ci sound-dai = <&audio_controller 1>; 12262306a36Sopenharmony_ci }; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci simple-audio-card,codec { 12562306a36Sopenharmony_ci sound-dai = <&spdif_out>; 12662306a36Sopenharmony_ci }; 12762306a36Sopenharmony_ci }; 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci spdif_out: spdif-out { 13062306a36Sopenharmony_ci #sound-dai-cells = <0>; 13162306a36Sopenharmony_ci compatible = "linux,spdif-dit"; 13262306a36Sopenharmony_ci }; 13362306a36Sopenharmony_ci}; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci&audio_controller { 13662306a36Sopenharmony_ci /* Pin header U16, GPIO51 in SPDIFO mode */ 13762306a36Sopenharmony_ci pinctrl-0 = <&spdif_pins>; 13862306a36Sopenharmony_ci pinctrl-names = "default"; 13962306a36Sopenharmony_ci spdif-mode; 14062306a36Sopenharmony_ci status = "okay"; 14162306a36Sopenharmony_ci}; 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci&bm { 14462306a36Sopenharmony_ci status = "okay"; 14562306a36Sopenharmony_ci}; 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci&bm_bppi { 14862306a36Sopenharmony_ci status = "okay"; 14962306a36Sopenharmony_ci}; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci/* Connected to 88E6176 switch, port 6 */ 15262306a36Sopenharmony_cið0 { 15362306a36Sopenharmony_ci pinctrl-names = "default"; 15462306a36Sopenharmony_ci pinctrl-0 = <&ge0_rgmii_pins>; 15562306a36Sopenharmony_ci status = "okay"; 15662306a36Sopenharmony_ci phy-mode = "rgmii"; 15762306a36Sopenharmony_ci buffer-manager = <&bm>; 15862306a36Sopenharmony_ci bm,pool-long = <0>; 15962306a36Sopenharmony_ci bm,pool-short = <3>; 16062306a36Sopenharmony_ci 16162306a36Sopenharmony_ci fixed-link { 16262306a36Sopenharmony_ci speed = <1000>; 16362306a36Sopenharmony_ci full-duplex; 16462306a36Sopenharmony_ci }; 16562306a36Sopenharmony_ci}; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci/* Connected to 88E6176 switch, port 5 */ 16862306a36Sopenharmony_cið1 { 16962306a36Sopenharmony_ci pinctrl-names = "default"; 17062306a36Sopenharmony_ci pinctrl-0 = <&ge1_rgmii_pins>; 17162306a36Sopenharmony_ci status = "okay"; 17262306a36Sopenharmony_ci phy-mode = "rgmii"; 17362306a36Sopenharmony_ci buffer-manager = <&bm>; 17462306a36Sopenharmony_ci bm,pool-long = <1>; 17562306a36Sopenharmony_ci bm,pool-short = <3>; 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci fixed-link { 17862306a36Sopenharmony_ci speed = <1000>; 17962306a36Sopenharmony_ci full-duplex; 18062306a36Sopenharmony_ci }; 18162306a36Sopenharmony_ci}; 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci/* WAN port */ 18462306a36Sopenharmony_cið2 { 18562306a36Sopenharmony_ci /* 18662306a36Sopenharmony_ci * eth2 is connected via a multiplexor to both the SFP cage and to 18762306a36Sopenharmony_ci * ethernet-phy@1. The multiplexor switches the signal to SFP cage when 18862306a36Sopenharmony_ci * a SFP module is present, as determined by the mode-def0 GPIO. 18962306a36Sopenharmony_ci * 19062306a36Sopenharmony_ci * Until kernel supports this configuration properly, in case SFP module 19162306a36Sopenharmony_ci * is present, U-Boot has to enable the sfp node above, remove phy 19262306a36Sopenharmony_ci * handle and add managed = "in-band-status" property. 19362306a36Sopenharmony_ci */ 19462306a36Sopenharmony_ci status = "okay"; 19562306a36Sopenharmony_ci phy-mode = "sgmii"; 19662306a36Sopenharmony_ci phy-handle = <&phy1>; 19762306a36Sopenharmony_ci phys = <&comphy5 2>; 19862306a36Sopenharmony_ci sfp = <&sfp>; 19962306a36Sopenharmony_ci buffer-manager = <&bm>; 20062306a36Sopenharmony_ci bm,pool-long = <2>; 20162306a36Sopenharmony_ci bm,pool-short = <3>; 20262306a36Sopenharmony_ci label = "wan"; 20362306a36Sopenharmony_ci}; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci&i2c0 { 20662306a36Sopenharmony_ci pinctrl-names = "default"; 20762306a36Sopenharmony_ci pinctrl-0 = <&i2c0_pins>; 20862306a36Sopenharmony_ci status = "okay"; 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci i2cmux@70 { 21162306a36Sopenharmony_ci compatible = "nxp,pca9547"; 21262306a36Sopenharmony_ci #address-cells = <1>; 21362306a36Sopenharmony_ci #size-cells = <0>; 21462306a36Sopenharmony_ci reg = <0x70>; 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci i2c@0 { 21762306a36Sopenharmony_ci #address-cells = <1>; 21862306a36Sopenharmony_ci #size-cells = <0>; 21962306a36Sopenharmony_ci reg = <0>; 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci /* STM32F0 command interface at address 0x2a */ 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci led-controller@2b { 22462306a36Sopenharmony_ci compatible = "cznic,turris-omnia-leds"; 22562306a36Sopenharmony_ci reg = <0x2b>; 22662306a36Sopenharmony_ci #address-cells = <1>; 22762306a36Sopenharmony_ci #size-cells = <0>; 22862306a36Sopenharmony_ci status = "okay"; 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_ci /* 23162306a36Sopenharmony_ci * LEDs are controlled by MCU (STM32F0) at 23262306a36Sopenharmony_ci * address 0x2b. 23362306a36Sopenharmony_ci * 23462306a36Sopenharmony_ci * LED functions are not stable yet: 23562306a36Sopenharmony_ci * - there are 3 LEDs connected via MCU to PCIe 23662306a36Sopenharmony_ci * ports. One of these ports supports mSATA. 23762306a36Sopenharmony_ci * There is no mSATA nor PCIe function. 23862306a36Sopenharmony_ci * For now we use LED_FUNCTION_WLAN, since 23962306a36Sopenharmony_ci * in most cases users have wifi cards in 24062306a36Sopenharmony_ci * these slots 24162306a36Sopenharmony_ci * - there are 2 LEDs dedicated for user: A and 24262306a36Sopenharmony_ci * B. Again there is no such function defined. 24362306a36Sopenharmony_ci * For now we use LED_FUNCTION_INDICATOR 24462306a36Sopenharmony_ci */ 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_ci multi-led@0 { 24762306a36Sopenharmony_ci reg = <0x0>; 24862306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 24962306a36Sopenharmony_ci function = LED_FUNCTION_INDICATOR; 25062306a36Sopenharmony_ci function-enumerator = <2>; 25162306a36Sopenharmony_ci }; 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci multi-led@1 { 25462306a36Sopenharmony_ci reg = <0x1>; 25562306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 25662306a36Sopenharmony_ci function = LED_FUNCTION_INDICATOR; 25762306a36Sopenharmony_ci function-enumerator = <1>; 25862306a36Sopenharmony_ci }; 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci multi-led@2 { 26162306a36Sopenharmony_ci reg = <0x2>; 26262306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 26362306a36Sopenharmony_ci function = LED_FUNCTION_WLAN; 26462306a36Sopenharmony_ci function-enumerator = <3>; 26562306a36Sopenharmony_ci }; 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci multi-led@3 { 26862306a36Sopenharmony_ci reg = <0x3>; 26962306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 27062306a36Sopenharmony_ci function = LED_FUNCTION_WLAN; 27162306a36Sopenharmony_ci function-enumerator = <2>; 27262306a36Sopenharmony_ci }; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci multi-led@4 { 27562306a36Sopenharmony_ci reg = <0x4>; 27662306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 27762306a36Sopenharmony_ci function = LED_FUNCTION_WLAN; 27862306a36Sopenharmony_ci function-enumerator = <1>; 27962306a36Sopenharmony_ci }; 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ci multi-led@5 { 28262306a36Sopenharmony_ci reg = <0x5>; 28362306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 28462306a36Sopenharmony_ci function = LED_FUNCTION_WAN; 28562306a36Sopenharmony_ci }; 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci multi-led@6 { 28862306a36Sopenharmony_ci reg = <0x6>; 28962306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 29062306a36Sopenharmony_ci function = LED_FUNCTION_LAN; 29162306a36Sopenharmony_ci function-enumerator = <4>; 29262306a36Sopenharmony_ci }; 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci multi-led@7 { 29562306a36Sopenharmony_ci reg = <0x7>; 29662306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 29762306a36Sopenharmony_ci function = LED_FUNCTION_LAN; 29862306a36Sopenharmony_ci function-enumerator = <3>; 29962306a36Sopenharmony_ci }; 30062306a36Sopenharmony_ci 30162306a36Sopenharmony_ci multi-led@8 { 30262306a36Sopenharmony_ci reg = <0x8>; 30362306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 30462306a36Sopenharmony_ci function = LED_FUNCTION_LAN; 30562306a36Sopenharmony_ci function-enumerator = <2>; 30662306a36Sopenharmony_ci }; 30762306a36Sopenharmony_ci 30862306a36Sopenharmony_ci multi-led@9 { 30962306a36Sopenharmony_ci reg = <0x9>; 31062306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 31162306a36Sopenharmony_ci function = LED_FUNCTION_LAN; 31262306a36Sopenharmony_ci function-enumerator = <1>; 31362306a36Sopenharmony_ci }; 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci multi-led@a { 31662306a36Sopenharmony_ci reg = <0xa>; 31762306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 31862306a36Sopenharmony_ci function = LED_FUNCTION_LAN; 31962306a36Sopenharmony_ci function-enumerator = <0>; 32062306a36Sopenharmony_ci }; 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ci multi-led@b { 32362306a36Sopenharmony_ci reg = <0xb>; 32462306a36Sopenharmony_ci color = <LED_COLOR_ID_RGB>; 32562306a36Sopenharmony_ci function = LED_FUNCTION_POWER; 32662306a36Sopenharmony_ci }; 32762306a36Sopenharmony_ci }; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci eeprom@54 { 33062306a36Sopenharmony_ci compatible = "atmel,24c64"; 33162306a36Sopenharmony_ci reg = <0x54>; 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ci /* The EEPROM contains data for bootloader. 33462306a36Sopenharmony_ci * Contents: 33562306a36Sopenharmony_ci * struct omnia_eeprom { 33662306a36Sopenharmony_ci * u32 magic; (=0x0341a034 in LE) 33762306a36Sopenharmony_ci * u32 ramsize; (in GiB) 33862306a36Sopenharmony_ci * char regdomain[4]; 33962306a36Sopenharmony_ci * u32 crc32; 34062306a36Sopenharmony_ci * }; 34162306a36Sopenharmony_ci */ 34262306a36Sopenharmony_ci }; 34362306a36Sopenharmony_ci }; 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci i2c@1 { 34662306a36Sopenharmony_ci #address-cells = <1>; 34762306a36Sopenharmony_ci #size-cells = <0>; 34862306a36Sopenharmony_ci reg = <1>; 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci /* routed to PCIe0/mSATA connector (CN7A) */ 35162306a36Sopenharmony_ci }; 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_ci i2c@2 { 35462306a36Sopenharmony_ci #address-cells = <1>; 35562306a36Sopenharmony_ci #size-cells = <0>; 35662306a36Sopenharmony_ci reg = <2>; 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ci /* routed to PCIe1/USB2 connector (CN61A) */ 35962306a36Sopenharmony_ci }; 36062306a36Sopenharmony_ci 36162306a36Sopenharmony_ci i2c@3 { 36262306a36Sopenharmony_ci #address-cells = <1>; 36362306a36Sopenharmony_ci #size-cells = <0>; 36462306a36Sopenharmony_ci reg = <3>; 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci /* routed to PCIe2 connector (CN62A) */ 36762306a36Sopenharmony_ci }; 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_ci sfp_i2c: i2c@4 { 37062306a36Sopenharmony_ci #address-cells = <1>; 37162306a36Sopenharmony_ci #size-cells = <0>; 37262306a36Sopenharmony_ci reg = <4>; 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci /* routed to SFP+ */ 37562306a36Sopenharmony_ci }; 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_ci i2c@5 { 37862306a36Sopenharmony_ci #address-cells = <1>; 37962306a36Sopenharmony_ci #size-cells = <0>; 38062306a36Sopenharmony_ci reg = <5>; 38162306a36Sopenharmony_ci 38262306a36Sopenharmony_ci /* ATSHA204A-MAHDA-T crypto module */ 38362306a36Sopenharmony_ci crypto@64 { 38462306a36Sopenharmony_ci compatible = "atmel,atsha204a"; 38562306a36Sopenharmony_ci reg = <0x64>; 38662306a36Sopenharmony_ci }; 38762306a36Sopenharmony_ci }; 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_ci i2c@6 { 39062306a36Sopenharmony_ci #address-cells = <1>; 39162306a36Sopenharmony_ci #size-cells = <0>; 39262306a36Sopenharmony_ci reg = <6>; 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_ci /* exposed on pin header */ 39562306a36Sopenharmony_ci }; 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ci i2c@7 { 39862306a36Sopenharmony_ci #address-cells = <1>; 39962306a36Sopenharmony_ci #size-cells = <0>; 40062306a36Sopenharmony_ci reg = <7>; 40162306a36Sopenharmony_ci 40262306a36Sopenharmony_ci pcawan: gpio@71 { 40362306a36Sopenharmony_ci /* 40462306a36Sopenharmony_ci * GPIO expander for SFP+ signals and 40562306a36Sopenharmony_ci * and phy irq 40662306a36Sopenharmony_ci */ 40762306a36Sopenharmony_ci compatible = "nxp,pca9538"; 40862306a36Sopenharmony_ci reg = <0x71>; 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ci pinctrl-names = "default"; 41162306a36Sopenharmony_ci pinctrl-0 = <&pcawan_pins>; 41262306a36Sopenharmony_ci 41362306a36Sopenharmony_ci interrupt-parent = <&gpio1>; 41462306a36Sopenharmony_ci interrupts = <14 IRQ_TYPE_LEVEL_LOW>; 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_ci gpio-controller; 41762306a36Sopenharmony_ci #gpio-cells = <2>; 41862306a36Sopenharmony_ci }; 41962306a36Sopenharmony_ci }; 42062306a36Sopenharmony_ci }; 42162306a36Sopenharmony_ci}; 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ci&mdio { 42462306a36Sopenharmony_ci pinctrl-names = "default"; 42562306a36Sopenharmony_ci pinctrl-0 = <&mdio_pins>; 42662306a36Sopenharmony_ci status = "okay"; 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci phy1: ethernet-phy@1 { 42962306a36Sopenharmony_ci compatible = "ethernet-phy-ieee802.3-c22"; 43062306a36Sopenharmony_ci reg = <1>; 43162306a36Sopenharmony_ci marvell,reg-init = <3 18 0 0x4985>, 43262306a36Sopenharmony_ci <3 16 0xfff0 0x0001>; 43362306a36Sopenharmony_ci 43462306a36Sopenharmony_ci /* irq is connected to &pcawan pin 7 */ 43562306a36Sopenharmony_ci }; 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_ci /* Switch MV88E6176 at address 0x10 */ 43862306a36Sopenharmony_ci switch@10 { 43962306a36Sopenharmony_ci pinctrl-names = "default"; 44062306a36Sopenharmony_ci pinctrl-0 = <&swint_pins>; 44162306a36Sopenharmony_ci compatible = "marvell,mv88e6085"; 44262306a36Sopenharmony_ci #address-cells = <1>; 44362306a36Sopenharmony_ci #size-cells = <0>; 44462306a36Sopenharmony_ci 44562306a36Sopenharmony_ci dsa,member = <0 0>; 44662306a36Sopenharmony_ci reg = <0x10>; 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ci interrupt-parent = <&gpio1>; 44962306a36Sopenharmony_ci interrupts = <13 IRQ_TYPE_LEVEL_LOW>; 45062306a36Sopenharmony_ci 45162306a36Sopenharmony_ci ports { 45262306a36Sopenharmony_ci #address-cells = <1>; 45362306a36Sopenharmony_ci #size-cells = <0>; 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_ci ports@0 { 45662306a36Sopenharmony_ci reg = <0>; 45762306a36Sopenharmony_ci label = "lan0"; 45862306a36Sopenharmony_ci }; 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_ci ports@1 { 46162306a36Sopenharmony_ci reg = <1>; 46262306a36Sopenharmony_ci label = "lan1"; 46362306a36Sopenharmony_ci }; 46462306a36Sopenharmony_ci 46562306a36Sopenharmony_ci ports@2 { 46662306a36Sopenharmony_ci reg = <2>; 46762306a36Sopenharmony_ci label = "lan2"; 46862306a36Sopenharmony_ci }; 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_ci ports@3 { 47162306a36Sopenharmony_ci reg = <3>; 47262306a36Sopenharmony_ci label = "lan3"; 47362306a36Sopenharmony_ci }; 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_ci ports@4 { 47662306a36Sopenharmony_ci reg = <4>; 47762306a36Sopenharmony_ci label = "lan4"; 47862306a36Sopenharmony_ci }; 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci ports@5 { 48162306a36Sopenharmony_ci reg = <5>; 48262306a36Sopenharmony_ci ethernet = <ð1>; 48362306a36Sopenharmony_ci phy-mode = "rgmii-id"; 48462306a36Sopenharmony_ci 48562306a36Sopenharmony_ci fixed-link { 48662306a36Sopenharmony_ci speed = <1000>; 48762306a36Sopenharmony_ci full-duplex; 48862306a36Sopenharmony_ci }; 48962306a36Sopenharmony_ci }; 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_ci ports@6 { 49262306a36Sopenharmony_ci reg = <6>; 49362306a36Sopenharmony_ci ethernet = <ð0>; 49462306a36Sopenharmony_ci phy-mode = "rgmii-id"; 49562306a36Sopenharmony_ci 49662306a36Sopenharmony_ci fixed-link { 49762306a36Sopenharmony_ci speed = <1000>; 49862306a36Sopenharmony_ci full-duplex; 49962306a36Sopenharmony_ci }; 50062306a36Sopenharmony_ci }; 50162306a36Sopenharmony_ci }; 50262306a36Sopenharmony_ci }; 50362306a36Sopenharmony_ci}; 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_ci&pinctrl { 50662306a36Sopenharmony_ci pcawan_pins: pcawan-pins { 50762306a36Sopenharmony_ci marvell,pins = "mpp46"; 50862306a36Sopenharmony_ci marvell,function = "gpio"; 50962306a36Sopenharmony_ci }; 51062306a36Sopenharmony_ci 51162306a36Sopenharmony_ci swint_pins: swint-pins { 51262306a36Sopenharmony_ci marvell,pins = "mpp45"; 51362306a36Sopenharmony_ci marvell,function = "gpio"; 51462306a36Sopenharmony_ci }; 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_ci spi0cs0_pins: spi0cs0-pins { 51762306a36Sopenharmony_ci marvell,pins = "mpp25"; 51862306a36Sopenharmony_ci marvell,function = "spi0"; 51962306a36Sopenharmony_ci }; 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_ci spi0cs2_pins: spi0cs2-pins { 52262306a36Sopenharmony_ci marvell,pins = "mpp26"; 52362306a36Sopenharmony_ci marvell,function = "spi0"; 52462306a36Sopenharmony_ci }; 52562306a36Sopenharmony_ci}; 52662306a36Sopenharmony_ci 52762306a36Sopenharmony_ci&spi0 { 52862306a36Sopenharmony_ci pinctrl-names = "default"; 52962306a36Sopenharmony_ci pinctrl-0 = <&spi0_pins &spi0cs0_pins>; 53062306a36Sopenharmony_ci status = "okay"; 53162306a36Sopenharmony_ci 53262306a36Sopenharmony_ci flash@0 { 53362306a36Sopenharmony_ci compatible = "spansion,s25fl164k", "jedec,spi-nor"; 53462306a36Sopenharmony_ci #address-cells = <1>; 53562306a36Sopenharmony_ci #size-cells = <1>; 53662306a36Sopenharmony_ci reg = <0>; 53762306a36Sopenharmony_ci spi-max-frequency = <40000000>; 53862306a36Sopenharmony_ci 53962306a36Sopenharmony_ci partitions { 54062306a36Sopenharmony_ci compatible = "fixed-partitions"; 54162306a36Sopenharmony_ci #address-cells = <1>; 54262306a36Sopenharmony_ci #size-cells = <1>; 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci partition@0 { 54562306a36Sopenharmony_ci reg = <0x0 0x00100000>; 54662306a36Sopenharmony_ci label = "U-Boot"; 54762306a36Sopenharmony_ci }; 54862306a36Sopenharmony_ci 54962306a36Sopenharmony_ci partition@100000 { 55062306a36Sopenharmony_ci reg = <0x00100000 0x00700000>; 55162306a36Sopenharmony_ci label = "Rescue system"; 55262306a36Sopenharmony_ci }; 55362306a36Sopenharmony_ci }; 55462306a36Sopenharmony_ci }; 55562306a36Sopenharmony_ci 55662306a36Sopenharmony_ci /* MISO, MOSI, SCLK and CS2 are routed to pin header CN11 */ 55762306a36Sopenharmony_ci}; 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ci&uart0 { 56062306a36Sopenharmony_ci /* Pin header CN10 */ 56162306a36Sopenharmony_ci pinctrl-names = "default"; 56262306a36Sopenharmony_ci pinctrl-0 = <&uart0_pins>; 56362306a36Sopenharmony_ci status = "okay"; 56462306a36Sopenharmony_ci}; 56562306a36Sopenharmony_ci 56662306a36Sopenharmony_ci&uart1 { 56762306a36Sopenharmony_ci /* Pin header CN11 */ 56862306a36Sopenharmony_ci pinctrl-names = "default"; 56962306a36Sopenharmony_ci pinctrl-0 = <&uart1_pins>; 57062306a36Sopenharmony_ci status = "okay"; 57162306a36Sopenharmony_ci}; 572