// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2019 Marvell International Ltd. */ #include "cn9130.dtsi" /* include SoC device tree */ / { model = "CN9130-CRB"; compatible = "marvell,cn9130-crb", "marvell,cn9130", "marvell,armada-ap806-quad", "marvell,armada-ap806"; chosen { stdout-path = "serial0:115200n8"; }; aliases { i2c0 = &cp0_i2c0; spi0 = &cp0_spi1; gpio0 = &ap_gpio0; gpio1 = &cp0_gpio0; gpio2 = &cp0_gpio1; }; memory@00000000 { device_type = "memory"; reg = <0x0 0x0 0x0 0x80000000>; }; cp0 { config-space { sdhci@780000 { vqmmc-supply = <&cp0_reg_sd_vccq>; vmmc-supply = <&cp0_reg_sd_vcc>; }; cp0_reg_sd_vccq: cp0_sd_vccq@0 { compatible = "regulator-gpio"; regulator-name = "cp0_sd_vccq"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; gpios = <&cp0_gpio1 18 GPIO_ACTIVE_HIGH>; states = <1800000 0x1 3300000 0x0>; }; cp0_reg_sd_vcc: cp0_sd_vcc@0 { compatible = "regulator-fixed"; regulator-name = "cp0_sd_vcc"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&cp0_gpio1 22 GPIO_ACTIVE_HIGH>; enable-active-high; regulator-always-on; }; }; }; }; &uart0 { status = "okay"; }; /* * AP related configuration */ &ap_pinctl { /* MPP Bus: * SDIO [0-10, 12] * UART0 [11,19] */ /* 0 1 2 3 4 5 6 7 8 9 */ pin-func = < 1 1 1 1 1 1 1 1 1 1 1 3 1 0 0 0 0 0 0 3 >; }; /* on-board eMMC - U6 */ &ap_sdhci0 { pinctrl-names = "default"; pinctrl-0 = <&ap_emmc_pins>; bus-width = <8>; status = "okay"; }; /* * CP related configuration */ &cp0_pinctl { /* MPP Bus: * [0-11] RGMII1 * [12] GPIO * [13-16] SPI1 * [17-32] GPIO * [33] SD_PWR_OFF * [34] CP_PCIE0_CLKREQn * [35-38] I2C1 I2C0 * [39] GPIO * [40-43] SMI/XSMI * [44-46] GPIO * [47] UART1_TX * [48] GPIO * [49] SD_HST_18_EN * [50] GPIO * [51] SD_PWR_0 * [52] PCIE_RSTn * [53] UART1_RX * [54] GPIO * [55] SD_DT * [56-61] SDIO * * Note that CRB board revisions have different MPP configurations. * r1p2 has SPI flash on MPP[30:27] and r1p3.1, which is the latest * board revision, has it mapped to MPP[16:13]. */ /* 0 1 2 3 4 5 6 7 8 9 */ pin-func = < 3 3 3 3 3 3 3 3 3 3 3 3 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 9 2 2 2 2 0 8 8 8 8 0 0 0 7 0 0xa 0 0xa 9 7 0 0xb 0xe 0xe 0xe 0xe 0xe 0xe 0xe>; cp0_sdhci_cd_pins_crb: cp0-sdhci-cd-pins-crb { marvell,pins = < 55 >; marvell,function = <0>; }; cp0_spi1_pins_crb: cp0-spi-pins-crb { marvell,pins = < 13 14 15 16 >; marvell,function = <3>; }; cp0_smi_pins_crb: cp0-smi-pins-crb { marvell,pins = < 40 41 >; marvell,function = <8>; }; cp0_xsmi_pins_crb: cp0-xsmi-pins-crb { marvell,pins = < 42 43 >; marvell,function = <8>; }; }; /* * CP0 */ &cp0_i2c0 { pinctrl-names = "default"; pinctrl-0 = <&cp0_i2c0_pins>; status = "okay"; clock-frequency = <100000>; }; &cp0_i2c1 { pinctrl-names = "default"; pinctrl-0 = <&cp0_i2c1_pins>; status = "okay"; }; &cp0_sdhci0 { pinctrl-names = "default"; pinctrl-0 = <&cp0_sdhci_pins &cp0_sdhci_cd_pins_crb>; bus-width = <4>; vqmmc-supply = <&cp0_reg_sd_vccq>; vmmc-supply = <&cp0_reg_sd_vcc>; status = "okay"; }; &cp0_spi1 { pinctrl-names = "default"; pinctrl-0 = <&cp0_spi1_pins_crb>; reg = <0x700680 0x50>, /* control */ <0x2000000 0x1000000>, /* CS0 */ <0 0xffffffff>, /* CS1 */ <0 0xffffffff>, /* CS2 */ <0 0xffffffff>; /* CS3 */ status = "okay"; spi-flash@0 { #address-cells = <0x1>; #size-cells = <0x1>; compatible = "jedec,spi-nor", "spi-flash"; reg = <0x0>; /* On-board MUX does not allow higher frequencies */ spi-max-frequency = <40000000>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "U-Boot"; reg = <0x0 0x200000>; }; partition@400000 { label = "Filesystem"; reg = <0x200000 0xe00000>; }; }; }; }; &cp0_utmi0 { status = "okay"; }; &cp0_utmi1 { status = "okay"; }; &cp0_mdio { pinctrl-names = "default"; pinctrl-0 = <&cp0_smi_pins_crb>; status = "okay"; phy0: ethernet-phy@0 { reg = <0>; }; switch6: ethernet-switch@6 { reg = <6>; }; }; &cp0_xmdio { pinctrl-names = "default"; pinctrl-0 = <&cp0_xsmi_pins_crb>; status = "okay"; nbaset_phy0: ethernet-phy@0 { reg = <0>; }; }; &cp0_ethernet { status = "okay"; }; &cp0_eth0 { status = "okay"; phy-mode = "sfi"; }; &cp0_eth1 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&cp0_ge1_rgmii_pins>; phy = <&phy0>; phy-mode = "rgmii-id"; }; &cp0_eth2 { /* Disable it for now, as mainline does not support this IF yet */ status = "disabled"; phy = <&nbaset_phy0>; };