376 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			376 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // 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";
 | |
| 	};
 | |
| };
 |