| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Copyright (C) 2024 Josua Mayer <josua@solid-run.com> |
| * |
| * DTS for SolidRun CN9130 Clearfog Pro. |
| * |
| */ |
| |
| /dts-v1/; |
| |
| #include <dt-bindings/input/input.h> |
| #include <dt-bindings/leds/common.h> |
| |
| #include "cn9130.dtsi" |
| #include "cn9130-sr-som.dtsi" |
| #include "cn9130-cf.dtsi" |
| |
| / { |
| model = "SolidRun CN9130 Clearfog Pro"; |
| compatible = "solidrun,cn9130-clearfog-pro", |
| "solidrun,cn9130-sr-som", "marvell,cn9130"; |
| |
| gpio-keys { |
| compatible = "gpio-keys"; |
| pinctrl-0 = <&rear_button_pins>; |
| pinctrl-names = "default"; |
| |
| button-0 { |
| /* The rear SW3 button */ |
| label = "Rear Button"; |
| gpios = <&cp0_gpio2 0 GPIO_ACTIVE_LOW>; |
| linux,can-disable; |
| linux,code = <BTN_0>; |
| }; |
| }; |
| }; |
| |
| /* SRDS #3 - SGMII 1GE to L2 switch */ |
| &cp0_eth1 { |
| phys = <&cp0_comphy3 1>; |
| phy-mode = "sgmii"; |
| status = "okay"; |
| |
| fixed-link { |
| speed = <1000>; |
| full-duplex; |
| }; |
| }; |
| |
| &cp0_eth2_phy { |
| /* |
| * Configure LEDs default behaviour similar to switch ports: |
| * - LED[0]: link/activity: On/blink (green) |
| * - LED[1]: link is 100/1000Mbps: On (red) |
| * - LED[2]: high impedance (floating) |
| * |
| * Switch port defaults: |
| * - LED0: link/activity: On/blink (green) |
| * - LED1: link is 1000Mbps: On (red) |
| * |
| * Identical configuration is impossible with hardware offload. |
| */ |
| marvell,reg-init = <3 16 0xf000 0x0a61>; |
| |
| leds { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| led@0 { |
| reg = <0>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_WAN; |
| label = "LED2"; |
| default-state = "keep"; |
| }; |
| |
| led@1 { |
| reg = <1>; |
| color = <LED_COLOR_ID_RED>; |
| function = LED_FUNCTION_WAN; |
| label = "LED1"; |
| default-state = "keep"; |
| }; |
| }; |
| }; |
| |
| &cp0_mdio { |
| ethernet-switch@4 { |
| compatible = "marvell,mv88e6085"; |
| reg = <4>; |
| pinctrl-0 = <&dsa_clk_pins &dsa_pins>; |
| pinctrl-names = "default"; |
| reset-gpios = <&cp0_gpio1 27 GPIO_ACTIVE_LOW>; |
| interrupt-parent = <&cp0_gpio1>; |
| interrupts = <29 IRQ_TYPE_EDGE_FALLING>; |
| |
| ethernet-ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| ethernet-port@0 { |
| reg = <0>; |
| label = "lan5"; |
| phy = <&switch0phy0>; |
| |
| leds { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| led@0 { |
| reg = <0>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_LAN; |
| label = "LED12"; |
| default-state = "keep"; |
| }; |
| |
| led@1 { |
| reg = <1>; |
| color = <LED_COLOR_ID_RED>; |
| function = LED_FUNCTION_LAN; |
| label = "LED11"; |
| default-state = "keep"; |
| }; |
| }; |
| }; |
| |
| ethernet-port@1 { |
| reg = <1>; |
| label = "lan4"; |
| phy = <&switch0phy1>; |
| |
| leds { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| led@0 { |
| reg = <0>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_LAN; |
| label = "LED10"; |
| default-state = "keep"; |
| }; |
| |
| led@1 { |
| reg = <1>; |
| color = <LED_COLOR_ID_RED>; |
| function = LED_FUNCTION_LAN; |
| label = "LED9"; |
| default-state = "keep"; |
| }; |
| }; |
| }; |
| |
| ethernet-port@2 { |
| reg = <2>; |
| label = "lan3"; |
| phy = <&switch0phy2>; |
| |
| leds { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| led@0 { |
| reg = <0>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_LAN; |
| label = "LED8"; |
| default-state = "keep"; |
| }; |
| |
| led@1 { |
| reg = <1>; |
| color = <LED_COLOR_ID_RED>; |
| function = LED_FUNCTION_LAN; |
| label = "LED7"; |
| default-state = "keep"; |
| }; |
| }; |
| }; |
| |
| ethernet-port@3 { |
| reg = <3>; |
| label = "lan2"; |
| phy = <&switch0phy3>; |
| |
| leds { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| led@0 { |
| reg = <0>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_LAN; |
| label = "LED6"; |
| default-state = "keep"; |
| }; |
| |
| led@1 { |
| reg = <1>; |
| color = <LED_COLOR_ID_RED>; |
| function = LED_FUNCTION_LAN; |
| label = "LED5"; |
| default-state = "keep"; |
| }; |
| }; |
| }; |
| |
| ethernet-port@4 { |
| reg = <4>; |
| label = "lan1"; |
| phy = <&switch0phy4>; |
| |
| leds { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| led@0 { |
| reg = <0>; |
| color = <LED_COLOR_ID_GREEN>; |
| function = LED_FUNCTION_LAN; |
| label = "LED4"; |
| default-state = "keep"; |
| }; |
| |
| led@1 { |
| reg = <1>; |
| color = <LED_COLOR_ID_RED>; |
| function = LED_FUNCTION_LAN; |
| label = "LED3"; |
| default-state = "keep"; |
| }; |
| }; |
| }; |
| |
| ethernet-port@5 { |
| reg = <5>; |
| label = "cpu"; |
| ethernet = <&cp0_eth1>; |
| phy-mode = "sgmii"; |
| |
| fixed-link { |
| speed = <1000>; |
| full-duplex; |
| }; |
| }; |
| |
| ethernet-port@6 { |
| reg = <6>; |
| label = "lan6"; |
| phy-mode = "rgmii"; |
| |
| /* |
| * Because of mdio address conflict the |
| * external phy is not readable. |
| * Force a fixed link instead. |
| */ |
| fixed-link { |
| speed = <1000>; |
| full-duplex; |
| }; |
| }; |
| }; |
| |
| mdio { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| switch0phy0: ethernet-phy@0 { |
| reg = <0x0>; |
| }; |
| |
| switch0phy1: ethernet-phy@1 { |
| reg = <0x1>; |
| /* |
| * Indirectly configure default behaviour |
| * for port lan6 leds behind external phy. |
| * Internal PHYs are not using page 3, |
| * therefore writing to it is safe. |
| */ |
| marvell,reg-init = <3 16 0xf000 0x0a61>; |
| }; |
| |
| switch0phy2: ethernet-phy@2 { |
| reg = <0x2>; |
| }; |
| |
| switch0phy3: ethernet-phy@3 { |
| reg = <0x3>; |
| }; |
| |
| switch0phy4: ethernet-phy@4 { |
| reg = <0x4>; |
| }; |
| }; |
| |
| /* |
| * There is an external phy on the switch mdio bus. |
| * Because its mdio address collides with internal phys, |
| * it is not readable. |
| * |
| * mdio-external { |
| * compatible = "marvell,mv88e6xxx-mdio-external"; |
| * #address-cells = <1>; |
| * #size-cells = <0>; |
| * |
| * ethernet-phy@1 { |
| * reg = <0x1>; |
| * }; |
| * }; |
| */ |
| }; |
| }; |
| |
| /* SRDS #4 - miniPCIe (CON2) */ |
| &cp0_pcie1 { |
| num-lanes = <1>; |
| phys = <&cp0_comphy4 1>; |
| /* dw-pcie inverts internally */ |
| reset-gpios = <&expander0 2 GPIO_ACTIVE_HIGH>; |
| status = "okay"; |
| }; |
| |
| &cp0_pinctrl { |
| dsa_clk_pins: cp0-dsa-clk-pins { |
| marvell,pins = "mpp40"; |
| marvell,function = "synce1"; |
| }; |
| |
| dsa_pins: cp0-dsa-pins { |
| marvell,pins = "mpp27", "mpp29"; |
| marvell,function = "gpio"; |
| }; |
| |
| rear_button_pins: cp0-rear-button-pins { |
| marvell,pins = "mpp32"; |
| marvell,function = "gpio"; |
| }; |
| |
| cp0_spi1_cs1_pins: cp0-spi1-cs1-pins { |
| marvell,pins = "mpp12"; |
| marvell,function = "spi1"; |
| }; |
| }; |
| |
| &cp0_spi1 { |
| /* add pin for chip-select 1 on mikrobus */ |
| pinctrl-0 = <&cp0_spi1_pins &cp0_spi1_cs1_pins>; |
| }; |
| |
| /* USB-2.0 Host on Type-A connector */ |
| &cp0_usb3_1 { |
| phys = <&cp0_utmi1>; |
| phy-names = "utmi"; |
| dr_mode = "host"; |
| status = "okay"; |
| }; |
| |
| &expander0 { |
| /* CON2 */ |
| pcie1-0-clkreq-hog { |
| gpio-hog; |
| gpios = <4 GPIO_ACTIVE_LOW>; |
| input; |
| line-name = "pcie1.0-clkreq"; |
| }; |
| |
| /* CON2 */ |
| pcie1-0-w-disable-hog { |
| gpio-hog; |
| gpios = <7 GPIO_ACTIVE_LOW>; |
| output-low; |
| line-name = "pcie1.0-w-disable"; |
| }; |
| }; |