11c510c7dSJosua Mayer// SPDX-License-Identifier: GPL-2.0+ 21c510c7dSJosua Mayer/* 31c510c7dSJosua Mayer * Copyright (C) 2024 Josua Mayer <josua@solid-run.com> 41c510c7dSJosua Mayer * 51c510c7dSJosua Mayer * DTS for SolidRun CN9130 Clearfog Pro. 61c510c7dSJosua Mayer * 71c510c7dSJosua Mayer */ 81c510c7dSJosua Mayer 91c510c7dSJosua Mayer/dts-v1/; 101c510c7dSJosua Mayer 111c510c7dSJosua Mayer#include <dt-bindings/input/input.h> 121c510c7dSJosua Mayer#include <dt-bindings/leds/common.h> 131c510c7dSJosua Mayer 141c510c7dSJosua Mayer#include "cn9130.dtsi" 151c510c7dSJosua Mayer#include "cn9130-sr-som.dtsi" 161c510c7dSJosua Mayer#include "cn9130-cf.dtsi" 171c510c7dSJosua Mayer 181c510c7dSJosua Mayer/ { 191c510c7dSJosua Mayer model = "SolidRun CN9130 Clearfog Pro"; 201c510c7dSJosua Mayer compatible = "solidrun,cn9130-clearfog-pro", 211c510c7dSJosua Mayer "solidrun,cn9130-sr-som", "marvell,cn9130"; 221c510c7dSJosua Mayer 231c510c7dSJosua Mayer gpio-keys { 241c510c7dSJosua Mayer compatible = "gpio-keys"; 251c510c7dSJosua Mayer pinctrl-0 = <&rear_button_pins>; 261c510c7dSJosua Mayer pinctrl-names = "default"; 271c510c7dSJosua Mayer 281c510c7dSJosua Mayer button-0 { 291c510c7dSJosua Mayer /* The rear SW3 button */ 301c510c7dSJosua Mayer label = "Rear Button"; 311c510c7dSJosua Mayer gpios = <&cp0_gpio2 0 GPIO_ACTIVE_LOW>; 321c510c7dSJosua Mayer linux,can-disable; 331c510c7dSJosua Mayer linux,code = <BTN_0>; 341c510c7dSJosua Mayer }; 351c510c7dSJosua Mayer }; 361c510c7dSJosua Mayer}; 371c510c7dSJosua Mayer 381c510c7dSJosua Mayer/* SRDS #3 - SGMII 1GE to L2 switch */ 391c510c7dSJosua Mayer&cp0_eth1 { 401c510c7dSJosua Mayer phys = <&cp0_comphy3 1>; 411c510c7dSJosua Mayer phy-mode = "sgmii"; 421c510c7dSJosua Mayer status = "okay"; 431c510c7dSJosua Mayer 441c510c7dSJosua Mayer fixed-link { 451c510c7dSJosua Mayer speed = <1000>; 461c510c7dSJosua Mayer full-duplex; 471c510c7dSJosua Mayer }; 481c510c7dSJosua Mayer}; 491c510c7dSJosua Mayer 501c510c7dSJosua Mayer&cp0_eth2_phy { 511c510c7dSJosua Mayer /* 521c510c7dSJosua Mayer * Configure LEDs default behaviour similar to switch ports: 531c510c7dSJosua Mayer * - LED[0]: link/activity: On/blink (green) 541c510c7dSJosua Mayer * - LED[1]: link is 100/1000Mbps: On (red) 551c510c7dSJosua Mayer * - LED[2]: high impedance (floating) 561c510c7dSJosua Mayer * 571c510c7dSJosua Mayer * Switch port defaults: 581c510c7dSJosua Mayer * - LED0: link/activity: On/blink (green) 591c510c7dSJosua Mayer * - LED1: link is 1000Mbps: On (red) 601c510c7dSJosua Mayer * 611c510c7dSJosua Mayer * Identical configuration is impossible with hardware offload. 621c510c7dSJosua Mayer */ 631c510c7dSJosua Mayer marvell,reg-init = <3 16 0xf000 0x0a61>; 641c510c7dSJosua Mayer 651c510c7dSJosua Mayer leds { 661c510c7dSJosua Mayer #address-cells = <1>; 671c510c7dSJosua Mayer #size-cells = <0>; 681c510c7dSJosua Mayer 691c510c7dSJosua Mayer led@0 { 701c510c7dSJosua Mayer reg = <0>; 711c510c7dSJosua Mayer color = <LED_COLOR_ID_GREEN>; 721c510c7dSJosua Mayer function = LED_FUNCTION_WAN; 731c510c7dSJosua Mayer label = "LED2"; 741c510c7dSJosua Mayer default-state = "keep"; 751c510c7dSJosua Mayer }; 761c510c7dSJosua Mayer 771c510c7dSJosua Mayer led@1 { 781c510c7dSJosua Mayer reg = <1>; 791c510c7dSJosua Mayer color = <LED_COLOR_ID_RED>; 801c510c7dSJosua Mayer function = LED_FUNCTION_WAN; 811c510c7dSJosua Mayer label = "LED1"; 821c510c7dSJosua Mayer default-state = "keep"; 831c510c7dSJosua Mayer }; 841c510c7dSJosua Mayer }; 851c510c7dSJosua Mayer}; 861c510c7dSJosua Mayer 871c510c7dSJosua Mayer&cp0_mdio { 881c510c7dSJosua Mayer ethernet-switch@4 { 891c510c7dSJosua Mayer compatible = "marvell,mv88e6085"; 901c510c7dSJosua Mayer reg = <4>; 911c510c7dSJosua Mayer pinctrl-0 = <&dsa_clk_pins &dsa_pins>; 921c510c7dSJosua Mayer pinctrl-names = "default"; 931c510c7dSJosua Mayer reset-gpios = <&cp0_gpio1 27 GPIO_ACTIVE_LOW>; 941c510c7dSJosua Mayer interrupt-parent = <&cp0_gpio1>; 951c510c7dSJosua Mayer interrupts = <29 IRQ_TYPE_EDGE_FALLING>; 961c510c7dSJosua Mayer 971c510c7dSJosua Mayer ethernet-ports { 981c510c7dSJosua Mayer #address-cells = <1>; 991c510c7dSJosua Mayer #size-cells = <0>; 1001c510c7dSJosua Mayer 1011c510c7dSJosua Mayer ethernet-port@0 { 1021c510c7dSJosua Mayer reg = <0>; 1031c510c7dSJosua Mayer label = "lan5"; 1041c510c7dSJosua Mayer phy = <&switch0phy0>; 1051c510c7dSJosua Mayer 1061c510c7dSJosua Mayer leds { 1071c510c7dSJosua Mayer #address-cells = <1>; 1081c510c7dSJosua Mayer #size-cells = <0>; 1091c510c7dSJosua Mayer 1101c510c7dSJosua Mayer led@0 { 1111c510c7dSJosua Mayer reg = <0>; 1121c510c7dSJosua Mayer color = <LED_COLOR_ID_GREEN>; 1131c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 1141c510c7dSJosua Mayer label = "LED12"; 1151c510c7dSJosua Mayer default-state = "keep"; 1161c510c7dSJosua Mayer }; 1171c510c7dSJosua Mayer 1181c510c7dSJosua Mayer led@1 { 1191c510c7dSJosua Mayer reg = <1>; 1201c510c7dSJosua Mayer color = <LED_COLOR_ID_RED>; 1211c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 1221c510c7dSJosua Mayer label = "LED11"; 1231c510c7dSJosua Mayer default-state = "keep"; 1241c510c7dSJosua Mayer }; 1251c510c7dSJosua Mayer }; 1261c510c7dSJosua Mayer }; 1271c510c7dSJosua Mayer 1281c510c7dSJosua Mayer ethernet-port@1 { 1291c510c7dSJosua Mayer reg = <1>; 1301c510c7dSJosua Mayer label = "lan4"; 1311c510c7dSJosua Mayer phy = <&switch0phy1>; 1321c510c7dSJosua Mayer 1331c510c7dSJosua Mayer leds { 1341c510c7dSJosua Mayer #address-cells = <1>; 1351c510c7dSJosua Mayer #size-cells = <0>; 1361c510c7dSJosua Mayer 1371c510c7dSJosua Mayer led@0 { 1381c510c7dSJosua Mayer reg = <0>; 1391c510c7dSJosua Mayer color = <LED_COLOR_ID_GREEN>; 1401c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 1411c510c7dSJosua Mayer label = "LED10"; 1421c510c7dSJosua Mayer default-state = "keep"; 1431c510c7dSJosua Mayer }; 1441c510c7dSJosua Mayer 1451c510c7dSJosua Mayer led@1 { 1461c510c7dSJosua Mayer reg = <1>; 1471c510c7dSJosua Mayer color = <LED_COLOR_ID_RED>; 1481c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 1491c510c7dSJosua Mayer label = "LED9"; 1501c510c7dSJosua Mayer default-state = "keep"; 1511c510c7dSJosua Mayer }; 1521c510c7dSJosua Mayer }; 1531c510c7dSJosua Mayer }; 1541c510c7dSJosua Mayer 1551c510c7dSJosua Mayer ethernet-port@2 { 1561c510c7dSJosua Mayer reg = <2>; 1571c510c7dSJosua Mayer label = "lan3"; 1581c510c7dSJosua Mayer phy = <&switch0phy2>; 1591c510c7dSJosua Mayer 1601c510c7dSJosua Mayer leds { 1611c510c7dSJosua Mayer #address-cells = <1>; 1621c510c7dSJosua Mayer #size-cells = <0>; 1631c510c7dSJosua Mayer 1641c510c7dSJosua Mayer led@0 { 1651c510c7dSJosua Mayer reg = <0>; 1661c510c7dSJosua Mayer color = <LED_COLOR_ID_GREEN>; 1671c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 1681c510c7dSJosua Mayer label = "LED8"; 1691c510c7dSJosua Mayer default-state = "keep"; 1701c510c7dSJosua Mayer }; 1711c510c7dSJosua Mayer 1721c510c7dSJosua Mayer led@1 { 1731c510c7dSJosua Mayer reg = <1>; 1741c510c7dSJosua Mayer color = <LED_COLOR_ID_RED>; 1751c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 1761c510c7dSJosua Mayer label = "LED7"; 1771c510c7dSJosua Mayer default-state = "keep"; 1781c510c7dSJosua Mayer }; 1791c510c7dSJosua Mayer }; 1801c510c7dSJosua Mayer }; 1811c510c7dSJosua Mayer 1821c510c7dSJosua Mayer ethernet-port@3 { 1831c510c7dSJosua Mayer reg = <3>; 1841c510c7dSJosua Mayer label = "lan2"; 1851c510c7dSJosua Mayer phy = <&switch0phy3>; 1861c510c7dSJosua Mayer 1871c510c7dSJosua Mayer leds { 1881c510c7dSJosua Mayer #address-cells = <1>; 1891c510c7dSJosua Mayer #size-cells = <0>; 1901c510c7dSJosua Mayer 1911c510c7dSJosua Mayer led@0 { 1921c510c7dSJosua Mayer reg = <0>; 1931c510c7dSJosua Mayer color = <LED_COLOR_ID_GREEN>; 1941c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 1951c510c7dSJosua Mayer label = "LED6"; 1961c510c7dSJosua Mayer default-state = "keep"; 1971c510c7dSJosua Mayer }; 1981c510c7dSJosua Mayer 1991c510c7dSJosua Mayer led@1 { 2001c510c7dSJosua Mayer reg = <1>; 2011c510c7dSJosua Mayer color = <LED_COLOR_ID_RED>; 2021c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 2031c510c7dSJosua Mayer label = "LED5"; 2041c510c7dSJosua Mayer default-state = "keep"; 2051c510c7dSJosua Mayer }; 2061c510c7dSJosua Mayer }; 2071c510c7dSJosua Mayer }; 2081c510c7dSJosua Mayer 2091c510c7dSJosua Mayer ethernet-port@4 { 2101c510c7dSJosua Mayer reg = <4>; 2111c510c7dSJosua Mayer label = "lan1"; 2121c510c7dSJosua Mayer phy = <&switch0phy4>; 2131c510c7dSJosua Mayer 2141c510c7dSJosua Mayer leds { 2151c510c7dSJosua Mayer #address-cells = <1>; 2161c510c7dSJosua Mayer #size-cells = <0>; 2171c510c7dSJosua Mayer 2181c510c7dSJosua Mayer led@0 { 2191c510c7dSJosua Mayer reg = <0>; 2201c510c7dSJosua Mayer color = <LED_COLOR_ID_GREEN>; 2211c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 2221c510c7dSJosua Mayer label = "LED4"; 2231c510c7dSJosua Mayer default-state = "keep"; 2241c510c7dSJosua Mayer }; 2251c510c7dSJosua Mayer 2261c510c7dSJosua Mayer led@1 { 2271c510c7dSJosua Mayer reg = <1>; 2281c510c7dSJosua Mayer color = <LED_COLOR_ID_RED>; 2291c510c7dSJosua Mayer function = LED_FUNCTION_LAN; 2301c510c7dSJosua Mayer label = "LED3"; 2311c510c7dSJosua Mayer default-state = "keep"; 2321c510c7dSJosua Mayer }; 2331c510c7dSJosua Mayer }; 2341c510c7dSJosua Mayer }; 2351c510c7dSJosua Mayer 2361c510c7dSJosua Mayer ethernet-port@5 { 2371c510c7dSJosua Mayer reg = <5>; 2381c510c7dSJosua Mayer label = "cpu"; 2391c510c7dSJosua Mayer ethernet = <&cp0_eth1>; 2401c510c7dSJosua Mayer phy-mode = "sgmii"; 2411c510c7dSJosua Mayer 2421c510c7dSJosua Mayer fixed-link { 2431c510c7dSJosua Mayer speed = <1000>; 2441c510c7dSJosua Mayer full-duplex; 2451c510c7dSJosua Mayer }; 2461c510c7dSJosua Mayer }; 2471c510c7dSJosua Mayer 2481c510c7dSJosua Mayer ethernet-port@6 { 2491c510c7dSJosua Mayer reg = <6>; 2501c510c7dSJosua Mayer label = "lan6"; 2511c510c7dSJosua Mayer phy-mode = "rgmii"; 2521c510c7dSJosua Mayer 2531c510c7dSJosua Mayer /* 2541c510c7dSJosua Mayer * Because of mdio address conflict the 2551c510c7dSJosua Mayer * external phy is not readable. 2561c510c7dSJosua Mayer * Force a fixed link instead. 2571c510c7dSJosua Mayer */ 2581c510c7dSJosua Mayer fixed-link { 2591c510c7dSJosua Mayer speed = <1000>; 2601c510c7dSJosua Mayer full-duplex; 2611c510c7dSJosua Mayer }; 2621c510c7dSJosua Mayer }; 2631c510c7dSJosua Mayer }; 2641c510c7dSJosua Mayer 2651c510c7dSJosua Mayer mdio { 2661c510c7dSJosua Mayer #address-cells = <1>; 2671c510c7dSJosua Mayer #size-cells = <0>; 2681c510c7dSJosua Mayer 2691c510c7dSJosua Mayer switch0phy0: ethernet-phy@0 { 2701c510c7dSJosua Mayer reg = <0x0>; 2711c510c7dSJosua Mayer }; 2721c510c7dSJosua Mayer 2731c510c7dSJosua Mayer switch0phy1: ethernet-phy@1 { 2741c510c7dSJosua Mayer reg = <0x1>; 2751c510c7dSJosua Mayer /* 2761c510c7dSJosua Mayer * Indirectly configure default behaviour 2771c510c7dSJosua Mayer * for port lan6 leds behind external phy. 2781c510c7dSJosua Mayer * Internal PHYs are not using page 3, 2791c510c7dSJosua Mayer * therefore writing to it is safe. 2801c510c7dSJosua Mayer */ 2811c510c7dSJosua Mayer marvell,reg-init = <3 16 0xf000 0x0a61>; 2821c510c7dSJosua Mayer }; 2831c510c7dSJosua Mayer 2841c510c7dSJosua Mayer switch0phy2: ethernet-phy@2 { 2851c510c7dSJosua Mayer reg = <0x2>; 2861c510c7dSJosua Mayer }; 2871c510c7dSJosua Mayer 2881c510c7dSJosua Mayer switch0phy3: ethernet-phy@3 { 2891c510c7dSJosua Mayer reg = <0x3>; 2901c510c7dSJosua Mayer }; 2911c510c7dSJosua Mayer 2921c510c7dSJosua Mayer switch0phy4: ethernet-phy@4 { 2931c510c7dSJosua Mayer reg = <0x4>; 2941c510c7dSJosua Mayer }; 2951c510c7dSJosua Mayer }; 2961c510c7dSJosua Mayer 2971c510c7dSJosua Mayer /* 2981c510c7dSJosua Mayer * There is an external phy on the switch mdio bus. 2991c510c7dSJosua Mayer * Because its mdio address collides with internal phys, 3001c510c7dSJosua Mayer * it is not readable. 3011c510c7dSJosua Mayer * 3021c510c7dSJosua Mayer * mdio-external { 3031c510c7dSJosua Mayer * compatible = "marvell,mv88e6xxx-mdio-external"; 3041c510c7dSJosua Mayer * #address-cells = <1>; 3051c510c7dSJosua Mayer * #size-cells = <0>; 3061c510c7dSJosua Mayer * 3071c510c7dSJosua Mayer * ethernet-phy@1 { 3081c510c7dSJosua Mayer * reg = <0x1>; 3091c510c7dSJosua Mayer * }; 3101c510c7dSJosua Mayer * }; 3111c510c7dSJosua Mayer */ 3121c510c7dSJosua Mayer }; 3131c510c7dSJosua Mayer}; 3141c510c7dSJosua Mayer 3151c510c7dSJosua Mayer/* SRDS #4 - miniPCIe (CON2) */ 3161c510c7dSJosua Mayer&cp0_pcie1 { 3171c510c7dSJosua Mayer num-lanes = <1>; 3181c510c7dSJosua Mayer phys = <&cp0_comphy4 1>; 3191c510c7dSJosua Mayer /* dw-pcie inverts internally */ 3201c510c7dSJosua Mayer reset-gpios = <&expander0 2 GPIO_ACTIVE_HIGH>; 3211c510c7dSJosua Mayer status = "okay"; 3221c510c7dSJosua Mayer}; 3231c510c7dSJosua Mayer 3241c510c7dSJosua Mayer&cp0_pinctrl { 3251c510c7dSJosua Mayer dsa_clk_pins: cp0-dsa-clk-pins { 3261c510c7dSJosua Mayer marvell,pins = "mpp40"; 3271c510c7dSJosua Mayer marvell,function = "synce1"; 3281c510c7dSJosua Mayer }; 3291c510c7dSJosua Mayer 3301c510c7dSJosua Mayer dsa_pins: cp0-dsa-pins { 3311c510c7dSJosua Mayer marvell,pins = "mpp27", "mpp29"; 3321c510c7dSJosua Mayer marvell,function = "gpio"; 3331c510c7dSJosua Mayer }; 3341c510c7dSJosua Mayer 3351c510c7dSJosua Mayer rear_button_pins: cp0-rear-button-pins { 3361c510c7dSJosua Mayer marvell,pins = "mpp32"; 3371c510c7dSJosua Mayer marvell,function = "gpio"; 3381c510c7dSJosua Mayer }; 3391c510c7dSJosua Mayer 3401c510c7dSJosua Mayer cp0_spi1_cs1_pins: cp0-spi1-cs1-pins { 3411c510c7dSJosua Mayer marvell,pins = "mpp12"; 3421c510c7dSJosua Mayer marvell,function = "spi1"; 3431c510c7dSJosua Mayer }; 3441c510c7dSJosua Mayer}; 3451c510c7dSJosua Mayer 3461c510c7dSJosua Mayer&cp0_spi1 { 3471c510c7dSJosua Mayer /* add pin for chip-select 1 on mikrobus */ 3481c510c7dSJosua Mayer pinctrl-0 = <&cp0_spi1_pins &cp0_spi1_cs1_pins>; 3491c510c7dSJosua Mayer}; 3501c510c7dSJosua Mayer 3511c510c7dSJosua Mayer/* USB-2.0 Host on Type-A connector */ 3521c510c7dSJosua Mayer&cp0_usb3_1 { 3531c510c7dSJosua Mayer phys = <&cp0_utmi1>; 3541c510c7dSJosua Mayer phy-names = "utmi"; 3551c510c7dSJosua Mayer dr_mode = "host"; 3561c510c7dSJosua Mayer status = "okay"; 3571c510c7dSJosua Mayer}; 3581c510c7dSJosua Mayer 3591c510c7dSJosua Mayer&expander0 { 3601c510c7dSJosua Mayer /* CON2 */ 3611c510c7dSJosua Mayer pcie1-0-clkreq-hog { 3621c510c7dSJosua Mayer gpio-hog; 3631c510c7dSJosua Mayer gpios = <4 GPIO_ACTIVE_LOW>; 3641c510c7dSJosua Mayer input; 3651c510c7dSJosua Mayer line-name = "pcie1.0-clkreq"; 3661c510c7dSJosua Mayer }; 3671c510c7dSJosua Mayer 3681c510c7dSJosua Mayer /* CON2 */ 3691c510c7dSJosua Mayer pcie1-0-w-disable-hog { 3701c510c7dSJosua Mayer gpio-hog; 3711c510c7dSJosua Mayer gpios = <7 GPIO_ACTIVE_LOW>; 3721c510c7dSJosua Mayer output-low; 3731c510c7dSJosua Mayer line-name = "pcie1.0-w-disable"; 3741c510c7dSJosua Mayer }; 3751c510c7dSJosua Mayer}; 376