162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2020 Marvell International Ltd. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include "cn9130.dtsi" /* include SoC device tree */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h> 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci/ { 1162306a36Sopenharmony_ci chosen { 1262306a36Sopenharmony_ci stdout-path = "serial0:115200n8"; 1362306a36Sopenharmony_ci }; 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci aliases { 1662306a36Sopenharmony_ci i2c0 = &cp0_i2c0; 1762306a36Sopenharmony_ci ethernet0 = &cp0_eth0; 1862306a36Sopenharmony_ci ethernet1 = &cp0_eth1; 1962306a36Sopenharmony_ci ethernet2 = &cp0_eth2; 2062306a36Sopenharmony_ci gpio1 = &cp0_gpio1; 2162306a36Sopenharmony_ci gpio2 = &cp0_gpio2; 2262306a36Sopenharmony_ci }; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci memory@0 { 2562306a36Sopenharmony_ci device_type = "memory"; 2662306a36Sopenharmony_ci reg = <0x0 0x0 0x0 0x80000000>; 2762306a36Sopenharmony_ci }; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci ap0_reg_mmc_vccq: ap0_mmc_vccq@0 { 3062306a36Sopenharmony_ci compatible = "regulator-gpio"; 3162306a36Sopenharmony_ci regulator-name = "ap0_mmc_vccq"; 3262306a36Sopenharmony_ci regulator-min-microvolt = <1800000>; 3362306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 3462306a36Sopenharmony_ci gpios = <&expander0 5 GPIO_ACTIVE_HIGH>; 3562306a36Sopenharmony_ci states = <1800000 0x1 3662306a36Sopenharmony_ci 3300000 0x0>; 3762306a36Sopenharmony_ci }; 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci cp0_reg_usb3_vbus1: cp0_usb3_vbus@1 { 4062306a36Sopenharmony_ci compatible = "regulator-fixed"; 4162306a36Sopenharmony_ci regulator-name = "cp0-xhci1-vbus"; 4262306a36Sopenharmony_ci regulator-min-microvolt = <5000000>; 4362306a36Sopenharmony_ci regulator-max-microvolt = <5000000>; 4462306a36Sopenharmony_ci enable-active-high; 4562306a36Sopenharmony_ci gpio = <&expander0 8 GPIO_ACTIVE_HIGH>; 4662306a36Sopenharmony_ci }; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci cp0_usb3_0_phy0: cp0_usb3_phy0 { 4962306a36Sopenharmony_ci compatible = "usb-nop-xceiv"; 5062306a36Sopenharmony_ci }; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci cp0_usb3_0_phy1: cp0_usb3_phy1 { 5362306a36Sopenharmony_ci compatible = "usb-nop-xceiv"; 5462306a36Sopenharmony_ci vcc-supply = <&cp0_reg_usb3_vbus1>; 5562306a36Sopenharmony_ci }; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci cp0_reg_sd_vccq: cp0_sd_vccq@0 { 5862306a36Sopenharmony_ci compatible = "regulator-gpio"; 5962306a36Sopenharmony_ci regulator-name = "cp0_sd_vccq"; 6062306a36Sopenharmony_ci regulator-min-microvolt = <1800000>; 6162306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 6262306a36Sopenharmony_ci gpios = <&cp0_gpio2 18 GPIO_ACTIVE_HIGH>; 6362306a36Sopenharmony_ci states = <1800000 0x1 6462306a36Sopenharmony_ci 3300000 0x0>; 6562306a36Sopenharmony_ci }; 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci cp0_reg_sd_vcc: cp0_sd_vcc@0 { 6862306a36Sopenharmony_ci compatible = "regulator-fixed"; 6962306a36Sopenharmony_ci regulator-name = "cp0_sd_vcc"; 7062306a36Sopenharmony_ci regulator-min-microvolt = <3300000>; 7162306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 7262306a36Sopenharmony_ci gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>; 7362306a36Sopenharmony_ci enable-active-high; 7462306a36Sopenharmony_ci regulator-always-on; 7562306a36Sopenharmony_ci }; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci sfp: sfp { 7862306a36Sopenharmony_ci compatible = "sff,sfp"; 7962306a36Sopenharmony_ci i2c-bus = <&cp0_i2c1>; 8062306a36Sopenharmony_ci mod-def0-gpios = <&expander0 3 GPIO_ACTIVE_LOW>; 8162306a36Sopenharmony_ci los-gpios = <&expander0 15 GPIO_ACTIVE_HIGH>; 8262306a36Sopenharmony_ci tx-disable-gpios = <&expander0 2 GPIO_ACTIVE_HIGH>; 8362306a36Sopenharmony_ci tx-fault-gpios = <&cp0_gpio1 24 GPIO_ACTIVE_HIGH>; 8462306a36Sopenharmony_ci maximum-power-milliwatt = <3000>; 8562306a36Sopenharmony_ci status = "okay"; 8662306a36Sopenharmony_ci }; 8762306a36Sopenharmony_ci}; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci&uart0 { 9062306a36Sopenharmony_ci status = "okay"; 9162306a36Sopenharmony_ci}; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci/* on-board eMMC U6 */ 9462306a36Sopenharmony_ci&ap_sdhci0 { 9562306a36Sopenharmony_ci pinctrl-names = "default"; 9662306a36Sopenharmony_ci bus-width = <8>; 9762306a36Sopenharmony_ci status = "okay"; 9862306a36Sopenharmony_ci mmc-ddr-1_8v; 9962306a36Sopenharmony_ci vqmmc-supply = <&ap0_reg_mmc_vccq>; 10062306a36Sopenharmony_ci}; 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci&cp0_syscon0 { 10362306a36Sopenharmony_ci cp0_pinctrl: pinctrl { 10462306a36Sopenharmony_ci compatible = "marvell,cp115-standalone-pinctrl"; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci cp0_i2c0_pins: cp0-i2c-pins-0 { 10762306a36Sopenharmony_ci marvell,pins = "mpp37", "mpp38"; 10862306a36Sopenharmony_ci marvell,function = "i2c0"; 10962306a36Sopenharmony_ci }; 11062306a36Sopenharmony_ci cp0_i2c1_pins: cp0-i2c-pins-1 { 11162306a36Sopenharmony_ci marvell,pins = "mpp35", "mpp36"; 11262306a36Sopenharmony_ci marvell,function = "i2c1"; 11362306a36Sopenharmony_ci }; 11462306a36Sopenharmony_ci cp0_sdhci_cd_pins_crb: cp0-sdhci-cd-pins-crb { 11562306a36Sopenharmony_ci marvell,pins = "mpp55"; 11662306a36Sopenharmony_ci marvell,function = "gpio"; 11762306a36Sopenharmony_ci }; 11862306a36Sopenharmony_ci cp0_sdhci_pins: cp0-sdhi-pins-0 { 11962306a36Sopenharmony_ci marvell,pins = "mpp56", "mpp57", "mpp58", 12062306a36Sopenharmony_ci "mpp59", "mpp60", "mpp61"; 12162306a36Sopenharmony_ci marvell,function = "sdio"; 12262306a36Sopenharmony_ci }; 12362306a36Sopenharmony_ci cp0_spi1_pins: cp0-spi-pins-1 { 12462306a36Sopenharmony_ci marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16"; 12562306a36Sopenharmony_ci marvell,function = "spi1"; 12662306a36Sopenharmony_ci }; 12762306a36Sopenharmony_ci }; 12862306a36Sopenharmony_ci}; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci&cp0_gpio1 { 13162306a36Sopenharmony_ci status = "okay"; 13262306a36Sopenharmony_ci}; 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci&cp0_gpio2 { 13562306a36Sopenharmony_ci status = "okay"; 13662306a36Sopenharmony_ci}; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci&cp0_i2c0 { 13962306a36Sopenharmony_ci pinctrl-names = "default"; 14062306a36Sopenharmony_ci pinctrl-0 = <&cp0_i2c0_pins>; 14162306a36Sopenharmony_ci status = "okay"; 14262306a36Sopenharmony_ci clock-frequency = <100000>; 14362306a36Sopenharmony_ci expander0: mcp23x17@20 { 14462306a36Sopenharmony_ci compatible = "microchip,mcp23017"; 14562306a36Sopenharmony_ci gpio-controller; 14662306a36Sopenharmony_ci #gpio-cells = <2>; 14762306a36Sopenharmony_ci reg = <0x20>; 14862306a36Sopenharmony_ci status = "okay"; 14962306a36Sopenharmony_ci }; 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci&cp0_i2c1 { 15362306a36Sopenharmony_ci pinctrl-names = "default"; 15462306a36Sopenharmony_ci pinctrl-0 = <&cp0_i2c1_pins>; 15562306a36Sopenharmony_ci clock-frequency = <100000>; 15662306a36Sopenharmony_ci status = "okay"; 15762306a36Sopenharmony_ci}; 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci&cp0_sdhci0 { 16162306a36Sopenharmony_ci pinctrl-names = "default"; 16262306a36Sopenharmony_ci pinctrl-0 = <&cp0_sdhci_pins 16362306a36Sopenharmony_ci &cp0_sdhci_cd_pins_crb>; 16462306a36Sopenharmony_ci bus-width = <4>; 16562306a36Sopenharmony_ci cd-gpios = <&cp0_gpio2 23 GPIO_ACTIVE_HIGH>; 16662306a36Sopenharmony_ci vqmmc-supply = <&cp0_reg_sd_vccq>; 16762306a36Sopenharmony_ci vmmc-supply = <&cp0_reg_sd_vcc>; 16862306a36Sopenharmony_ci status = "okay"; 16962306a36Sopenharmony_ci}; 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci&cp0_spi1 { 17262306a36Sopenharmony_ci pinctrl-names = "default"; 17362306a36Sopenharmony_ci pinctrl-0 = <&cp0_spi1_pins>; 17462306a36Sopenharmony_ci reg = <0x700680 0x50>, /* control */ 17562306a36Sopenharmony_ci <0x2000000 0x1000000>; /* CS0 */ 17662306a36Sopenharmony_ci status = "okay"; 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci flash@0 { 17962306a36Sopenharmony_ci #address-cells = <0x1>; 18062306a36Sopenharmony_ci #size-cells = <0x1>; 18162306a36Sopenharmony_ci compatible = "jedec,spi-nor"; 18262306a36Sopenharmony_ci reg = <0x0>; 18362306a36Sopenharmony_ci /* On-board MUX does not allow higher frequencies */ 18462306a36Sopenharmony_ci spi-max-frequency = <40000000>; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci partitions { 18762306a36Sopenharmony_ci compatible = "fixed-partitions"; 18862306a36Sopenharmony_ci #address-cells = <1>; 18962306a36Sopenharmony_ci #size-cells = <1>; 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci partition@0 { 19262306a36Sopenharmony_ci label = "U-Boot"; 19362306a36Sopenharmony_ci reg = <0x0 0x200000>; 19462306a36Sopenharmony_ci }; 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci partition@400000 { 19762306a36Sopenharmony_ci label = "Filesystem"; 19862306a36Sopenharmony_ci reg = <0x200000 0xe00000>; 19962306a36Sopenharmony_ci }; 20062306a36Sopenharmony_ci }; 20162306a36Sopenharmony_ci }; 20262306a36Sopenharmony_ci}; 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci&cp0_mdio { 20562306a36Sopenharmony_ci status = "okay"; 20662306a36Sopenharmony_ci phy0: ethernet-phy@0 { 20762306a36Sopenharmony_ci reg = <0>; 20862306a36Sopenharmony_ci }; 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci switch6: switch0@6 { 21162306a36Sopenharmony_ci /* Actual device is MV88E6393X */ 21262306a36Sopenharmony_ci compatible = "marvell,mv88e6190"; 21362306a36Sopenharmony_ci #address-cells = <1>; 21462306a36Sopenharmony_ci #size-cells = <0>; 21562306a36Sopenharmony_ci reg = <6>; 21662306a36Sopenharmony_ci interrupt-parent = <&cp0_gpio1>; 21762306a36Sopenharmony_ci interrupts = <28 IRQ_TYPE_LEVEL_LOW>; 21862306a36Sopenharmony_ci interrupt-controller; 21962306a36Sopenharmony_ci #interrupt-cells = <2>; 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci dsa,member = <0 0>; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci ports { 22462306a36Sopenharmony_ci #address-cells = <1>; 22562306a36Sopenharmony_ci #size-cells = <0>; 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci port@1 { 22862306a36Sopenharmony_ci reg = <1>; 22962306a36Sopenharmony_ci label = "p1"; 23062306a36Sopenharmony_ci phy-handle = <&switch0phy1>; 23162306a36Sopenharmony_ci }; 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci port@2 { 23462306a36Sopenharmony_ci reg = <2>; 23562306a36Sopenharmony_ci label = "p2"; 23662306a36Sopenharmony_ci phy-handle = <&switch0phy2>; 23762306a36Sopenharmony_ci }; 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci port@3 { 24062306a36Sopenharmony_ci reg = <3>; 24162306a36Sopenharmony_ci label = "p3"; 24262306a36Sopenharmony_ci phy-handle = <&switch0phy3>; 24362306a36Sopenharmony_ci }; 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ci port@4 { 24662306a36Sopenharmony_ci reg = <4>; 24762306a36Sopenharmony_ci label = "p4"; 24862306a36Sopenharmony_ci phy-handle = <&switch0phy4>; 24962306a36Sopenharmony_ci }; 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci port@5 { 25262306a36Sopenharmony_ci reg = <5>; 25362306a36Sopenharmony_ci label = "p5"; 25462306a36Sopenharmony_ci phy-handle = <&switch0phy5>; 25562306a36Sopenharmony_ci }; 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci port@6 { 25862306a36Sopenharmony_ci reg = <6>; 25962306a36Sopenharmony_ci label = "p6"; 26062306a36Sopenharmony_ci phy-handle = <&switch0phy6>; 26162306a36Sopenharmony_ci }; 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ci port@7 { 26462306a36Sopenharmony_ci reg = <7>; 26562306a36Sopenharmony_ci label = "p7"; 26662306a36Sopenharmony_ci phy-handle = <&switch0phy7>; 26762306a36Sopenharmony_ci }; 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci port@8 { 27062306a36Sopenharmony_ci reg = <8>; 27162306a36Sopenharmony_ci label = "p8"; 27262306a36Sopenharmony_ci phy-handle = <&switch0phy8>; 27362306a36Sopenharmony_ci }; 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci port@9 { 27662306a36Sopenharmony_ci reg = <9>; 27762306a36Sopenharmony_ci label = "p9"; 27862306a36Sopenharmony_ci phy-mode = "10gbase-r"; 27962306a36Sopenharmony_ci sfp = <&sfp>; 28062306a36Sopenharmony_ci managed = "in-band-status"; 28162306a36Sopenharmony_ci }; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ci port@a { 28462306a36Sopenharmony_ci reg = <10>; 28562306a36Sopenharmony_ci ethernet = <&cp0_eth0>; 28662306a36Sopenharmony_ci phy-mode = "10gbase-r"; 28762306a36Sopenharmony_ci managed = "in-band-status"; 28862306a36Sopenharmony_ci }; 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci }; 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci mdio { 29362306a36Sopenharmony_ci #address-cells = <1>; 29462306a36Sopenharmony_ci #size-cells = <0>; 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci switch0phy1: switch0phy1@1 { 29762306a36Sopenharmony_ci reg = <0x1>; 29862306a36Sopenharmony_ci }; 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci switch0phy2: switch0phy2@2 { 30162306a36Sopenharmony_ci reg = <0x2>; 30262306a36Sopenharmony_ci }; 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ci switch0phy3: switch0phy3@3 { 30562306a36Sopenharmony_ci reg = <0x3>; 30662306a36Sopenharmony_ci }; 30762306a36Sopenharmony_ci 30862306a36Sopenharmony_ci switch0phy4: switch0phy4@4 { 30962306a36Sopenharmony_ci reg = <0x4>; 31062306a36Sopenharmony_ci }; 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci switch0phy5: switch0phy5@5 { 31362306a36Sopenharmony_ci reg = <0x5>; 31462306a36Sopenharmony_ci }; 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci switch0phy6: switch0phy6@6 { 31762306a36Sopenharmony_ci reg = <0x6>; 31862306a36Sopenharmony_ci }; 31962306a36Sopenharmony_ci 32062306a36Sopenharmony_ci switch0phy7: switch0phy7@7 { 32162306a36Sopenharmony_ci reg = <0x7>; 32262306a36Sopenharmony_ci }; 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ci switch0phy8: switch0phy8@8 { 32562306a36Sopenharmony_ci reg = <0x8>; 32662306a36Sopenharmony_ci }; 32762306a36Sopenharmony_ci }; 32862306a36Sopenharmony_ci }; 32962306a36Sopenharmony_ci}; 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ci&cp0_xmdio { 33262306a36Sopenharmony_ci status = "okay"; 33362306a36Sopenharmony_ci nbaset_phy0: ethernet-phy@0 { 33462306a36Sopenharmony_ci compatible = "ethernet-phy-ieee802.3-c45"; 33562306a36Sopenharmony_ci reg = <0>; 33662306a36Sopenharmony_ci }; 33762306a36Sopenharmony_ci}; 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ci&cp0_ethernet { 34062306a36Sopenharmony_ci status = "okay"; 34162306a36Sopenharmony_ci}; 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_ci&cp0_eth0 { 34462306a36Sopenharmony_ci /* This port is connected to 88E6393X switch */ 34562306a36Sopenharmony_ci status = "okay"; 34662306a36Sopenharmony_ci phy-mode = "10gbase-r"; 34762306a36Sopenharmony_ci managed = "in-band-status"; 34862306a36Sopenharmony_ci phys = <&cp0_comphy4 0>; 34962306a36Sopenharmony_ci}; 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci&cp0_eth1 { 35262306a36Sopenharmony_ci status = "okay"; 35362306a36Sopenharmony_ci phy = <&phy0>; 35462306a36Sopenharmony_ci phy-mode = "rgmii-id"; 35562306a36Sopenharmony_ci}; 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ci&cp0_eth2 { 35862306a36Sopenharmony_ci /* This port uses "2500base-t" phy-mode */ 35962306a36Sopenharmony_ci status = "disabled"; 36062306a36Sopenharmony_ci phy = <&nbaset_phy0>; 36162306a36Sopenharmony_ci phys = <&cp0_comphy5 2>; 36262306a36Sopenharmony_ci}; 36362306a36Sopenharmony_ci 364