blob: 0f53745a6fa0d8cbd3ab9cdc28a972ed748c275f [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2024 Josua Mayer <josua@solid-run.com>
*
* DTS for SolidRun CN9132 Clearfog.
*
*/
/dts-v1/;
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include "cn9130.dtsi"
#include "cn9132-sr-cex7.dtsi"
/ {
model = "SolidRun CN9132 Clearfog";
compatible = "solidrun,cn9132-clearfog",
"solidrun,cn9132-sr-cex7", "marvell,cn9130";
aliases {
ethernet1 = &cp0_eth2;
ethernet2 = &cp0_eth0;
ethernet3 = &cp2_eth0;
ethernet4 = &cp1_eth0;
i2c7 = &carrier_mpcie_i2c;
i2c8 = &carrier_ptp_i2c;
mmc1 = &cp0_sdhci0;
};
gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&cp1_wake0_pins>;
button-0 {
label = "SW2";
gpios = <&cp1_gpio2 8 GPIO_ACTIVE_LOW>;
linux,can-disable;
linux,code = <BTN_2>;
};
};
leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&cp1_batlow_pins &cp2_rsvd4_pins>;
/* LED11 */
led-io-0 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK;
function-enumerator = <0>;
default-state = "off";
gpios = <&cp1_gpio1 11 GPIO_ACTIVE_HIGH>;
};
/* LED12 */
led-io-1 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_DISK;
function-enumerator = <1>;
default-state = "off";
gpios = <&cp2_gpio1 4 GPIO_ACTIVE_HIGH>;
};
};
/* CON4 W_DISABLE1/W_DISABLE2 */
rfkill-m2-wlan {
compatible = "rfkill-gpio";
label = "m.2 wlan (CON4)";
radio-type = "wlan";
pinctrl-names = "default";
pinctrl-0 = <&cp1_10g_phy_rst_01_pins>;
/* rfkill-gpio inverts internally */
shutdown-gpios = <&cp1_gpio2 11 GPIO_ACTIVE_HIGH>;
};
/* CON5 W_DISABLE1/W_DISABLE2 */
rfkill-m2-wlan {
compatible = "rfkill-gpio";
label = "m.2 wlan (CON5)";
radio-type = "wlan";
pinctrl-names = "default";
pinctrl-0 = <&cp1_10g_phy_rst_23_pins>;
/* rfkill-gpio inverts internally */
shutdown-gpios = <&cp1_gpio2 10 GPIO_ACTIVE_HIGH>;
};
/* J21 W_DISABLE1 */
rfkill-m2-wwan {
compatible = "rfkill-gpio";
label = "m.2 wwan (J21)";
radio-type = "wwan";
pinctrl-names = "default";
pinctrl-0 = <&cp2_rsvd3_pins>;
/* rfkill-gpio inverts internally */
shutdown-gpios = <&cp2_gpio1 3 GPIO_ACTIVE_HIGH>;
};
/* J21 W_DISABLE1 */
rfkill-m2-gnss {
compatible = "rfkill-gpio";
label = "m.2 gnss (J21)";
radio-type = "gps";
pinctrl-names = "default";
pinctrl-0 = <&cp2_rsvd8_pins>;
/* rfkill-gpio inverts internally */
shutdown-gpios = <&cp2_gpio1 8 GPIO_ACTIVE_HIGH>;
};
/* J14 W_DISABLE */
rfkill-mpcie-wlan {
compatible = "rfkill-gpio";
label = "mpcie wlan (J14)";
radio-type = "wlan";
pinctrl-names = "default";
pinctrl-0 = <&cp2_rsvd2_pins>;
/* rfkill-gpio inverts internally */
shutdown-gpios = <&cp2_gpio1 2 GPIO_ACTIVE_HIGH>;
};
sfp: sfp {
compatible = "sff,sfp";
i2c-bus = <&com_10g_sfp_i2c0>;
pinctrl-names = "default";
pinctrl-0 = <&com_10g_int0_pins>;
mod-def0-gpios = <&cp0_gpio1 24 GPIO_ACTIVE_LOW>;
maximum-power-milliwatt = <2000>;
};
};
&com_smbus {
/* This bus is also routed to STM32 BMC Microcontroller (U2) */
power-sensor@40 {
compatible = "ti,ina220";
reg = <0x40>;
#io-channel-cells = <1>;
label = "vdd_12v0";
shunt-resistor = <2000>;
};
adc@48 {
compatible = "ti,tla2021";
reg = <0x48>;
#address-cells = <1>;
#size-cells = <0>;
/* supplied by chaoskey hardware noise generator circuit */
channel@0 {
reg = <0>;
};
};
};
&cp0_eth_phy0 {
/*
* Configure LEDs default behaviour:
* - LED[0]: link is 1000Mbps: On (yellow): 0111
* - LED[1]: link/activity: On/Blink (green): 0001
* - LED[2]: Off (green): 1000
*/
marvell,reg-init = <3 16 0xf000 0x0817>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
/* link */
reg = <0>;
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
/* act */
reg = <1>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@2 {
/* 1000 */
reg = <2>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
/* SRDS #4 - 10GE */
&cp0_eth0 {
phys = <&cp0_comphy4 0>;
phy-mode = "10gbase-r";
managed = "in-band-status";
sfp = <&sfp>;
status = "okay";
};
&cp0_eth2 {
phy-mode = "2500base-x";
phys = <&cp0_comphy5 2>;
status = "okay";
fixed-link {
speed = <2500>;
full-duplex;
pause;
};
};
&cp0_i2c1 {
/*
* Both COM and Carrier Board have a PCA9547 i2c mux at 0x77.
* Describe them as a single device merging each child bus.
*/
i2c-mux@77 {
i2c@0 {
/* Routed to Full PCIe (J4) */
};
i2c@1 {
/* Routed to USB Hub (U29) */
};
i2c@2 {
/* Routed to M.2 (CON4) */
};
i2c@3 {
/* Routed to M.2 (CON5) */
};
i2c@4 {
/* Routed to M.2 (J21) */
};
carrier_mpcie_i2c: i2c@5 {
#address-cells = <1>;
#size-cells = <0>;
reg = <5>;
/* Routed to mini-PCIe (J14) */
};
carrier_ptp_i2c: i2c@6 {
#address-cells = <1>;
#size-cells = <0>;
reg = <6>;
/* Routed to various optional PTP related components */
};
};
};
&cp0_mdio {
ethernet-switch@4 {
compatible = "marvell,mv88e6085";
reg = <4>;
mdio {
#address-cells = <1>;
#size-cells = <0>;
sw_phy1: ethernet-phy@1 {
reg = <0x11>;
};
sw_phy2: ethernet-phy@2 {
reg = <0x12>;
};
sw_phy3: ethernet-phy@3 {
reg = <0x13>;
};
sw_phy4: ethernet-phy@4 {
reg = <0x14>;
};
};
ethernet-ports {
#address-cells = <1>;
#size-cells = <0>;
ethernet-port@1 {
reg = <1>;
label = "lan1";
phy-handle = <&sw_phy1>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
ethernet-port@2 {
reg = <2>;
label = "lan2";
phy-handle = <&sw_phy2>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
ethernet-port@3 {
reg = <3>;
label = "lan3";
phy-handle = <&sw_phy3>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
ethernet-port@4 {
reg = <4>;
label = "lan4";
phy-handle = <&sw_phy4>;
phy-mode = "internal";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
ethernet-port@5 {
reg = <5>;
label = "cpu";
ethernet = <&cp0_eth2>;
phy-mode = "2500base-x";
fixed-link {
speed = <2500>;
full-duplex;
pause;
};
};
};
};
};
/* SRDS #0,#1,#2,#3 - PCIe */
&cp0_pcie0 {
num-lanes = <4>;
phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>, <&cp0_comphy2 0>, <&cp0_comphy3 0>;
status = "okay";
};
&cp0_pinctrl {
/*
* configure unused gpios exposed via pin headers:
* - J7-10: PWRBTN
*/
pinctrl-names = "default";
pinctrl-0 = <&cp0_pwrbtn_pins>;
};
/* microSD */
&cp0_sdhci0 {
pinctrl-0 = <&cp0_mmc0_pins>, <&cp0_mmc0_cd_pins>;
pinctrl-names = "default";
bus-width = <4>;
no-1-8-v;
status = "okay";
};
&cp0_spi1 {
/* add CS1 */
pinctrl-0 = <&cp0_spi1_pins>, <&cp0_spi1_cs1_pins>;
flash@1 {
compatible = "jedec,spi-nor";
reg = <1>;
/* read command supports max. 50MHz */
spi-max-frequency = <50000000>;
};
};
/* J38 */
&cp0_uart2 {
pinctrl-names = "default";
pinctrl-0 = <&cp0_uart2_pins>;
status = "okay";
};
&cp0_utmi {
/* M.2 "CON5" swaps D+/D- */
swap-dx-lanes = <1>;
};
&cp1_ethernet {
status = "okay";
};
/* SRDS #2 - 5GE */
&cp1_eth0 {
phys = <&cp1_comphy2 0>;
phy-mode = "5gbase-r";
phy = <&cp1_eth_phy0>;
managed = "in-band-status";
status = "okay";
};
/* SRDS #0,#1 - PCIe */
&cp1_pcie0 {
num-lanes = <2>;
phys = <&cp1_comphy0 0>, <&cp1_comphy1 0>;
status = "okay";
};
/* SRDS #4 - PCIe */
&cp1_pcie1 {
num-lanes = <1>;
phys = <&cp1_comphy4 1>;
status = "okay";
};
/* SRDS #5 - PCIe */
&cp1_pcie2 {
num-lanes = <1>;
phys = <&cp1_comphy5 2>;
status = "okay";
};
&cp1_pinctrl {
/*
* configure unused gpios exposed via pin headers:
* - J7-8: RSVD16
* - J7-10: THRM
* - J10-1: WAKE1
* - J10-2: SATA_ACT
* - J10-8: THERMTRIP
*/
pinctrl-names = "default";
pinctrl-0 = <&cp1_rsvd16_pins &cp1_sata_act_pins &cp1_thrm_irq_pins>,
<&cp1_thrm_trip_pins &cp1_wake1_pins>;
};
/* SRDS #3 - SATA */
&cp1_sata0 {
status = "okay";
/* only port 1 is available */
/delete-node/ sata-port@0;
sata-port@1 {
phys = <&cp1_comphy3 1>;
};
};
&cp1_utmi {
/* M.2 "CON4" swaps D+/D- */
swap-dx-lanes = <0>;
};
&cp1_xmdio {
pinctrl-names = "default";
pinctrl-0 = <&cp1_xmdio_pins>;
status = "okay";
cp1_eth_phy0: ethernet-phy@8 {
compatible = "ethernet-phy-ieee802.3-c45";
reg = <8>;
pinctrl-names = "default";
pinctrl-0 = <&com_10g_int1_pins>;
interrupt-parent = <&cp1_gpio2>;
interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@1 {
reg = <1>;
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@2 {
reg = <2>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
};
&cp2_ethernet {
status = "okay";
};
/* SRDS #2 - 5GE */
&cp2_eth0 {
phys = <&cp2_comphy2 0>;
phy-mode = "5gbase-r";
phy = <&cp2_eth_phy0>;
managed = "in-band-status";
status = "okay";
};
&cp2_gpio1 {
pinctrl-names= "default";
pinctrl-0 = <&cp2_rsvd9_pins>;
/* J21 */
m2-wwan-reset-hog {
gpio-hog;
gpios = <9 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
output-low;
line-name = "m2-wwan-reset";
};
};
/* SRDS #0 - PCIe */
&cp2_pcie0 {
num-lanes = <1>;
phys = <&cp2_comphy0 0>;
status = "okay";
};
/* SRDS #4 - PCIe */
&cp2_pcie1 {
num-lanes = <1>;
phys = <&cp2_comphy4 1>;
status = "okay";
};
/* SRDS #5 - PCIe */
&cp2_pcie2 {
num-lanes = <1>;
phys = <&cp2_comphy5 2>;
status = "okay";
};
&cp2_pinctrl {
/*
* configure unused gpios exposed via pin headers:
* - J7-1: RSVD10
* - J7-3: RSVD11
* - J7-5: RSVD56
* - J7-6: RSVD7
* - J7-7: RSVD27
* - J10-3: RSVD31
* - J10-5: RSVD5
* - J10-6: RSVD32
* - J10-7: RSVD0
* - J10-9: RSVD1
*/
pinctrl-names = "default";
pinctrl-0 = <&cp2_rsvd0_pins &cp2_rsvd1_pins &cp2_rsvd5_pins>,
<&cp2_rsvd7_pins &cp2_rsvd10_pins &cp2_rsvd11_pins>,
<&cp2_rsvd27_pins &cp2_rsvd31_pins &cp2_rsvd32_pins>,
<&cp2_rsvd56_pins>;
};
/* SRDS #3 - SATA */
&cp2_sata0 {
status = "okay";
/* only port 1 is available */
/delete-node/ sata-port@0;
sata-port@1 {
phys = <&cp2_comphy3 1>;
};
};
&cp2_xmdio {
pinctrl-names = "default";
pinctrl-0 = <&cp2_xmdio_pins>;
status = "okay";
cp2_eth_phy0: ethernet-phy@8 {
compatible = "ethernet-phy-ieee802.3-c45";
reg = <8>;
pinctrl-names = "default";
pinctrl-0 = <&com_10g_int2_pins>;
interrupt-parent = <&cp2_gpio2>;
interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@1 {
reg = <1>;
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@2 {
reg = <2>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
};