penguin/monok8s

k8s image for Mono Gateway Dev Kit

kernel-build/dts/mono-gateway-dk.dts

raw ยท 9356 bytes

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Device Tree file for Freescale Layerscape-1046A family SoC.
 *
 * Copyright 2025 Mono Technologies Inc.
 *
 * Author: Tomaz Zaman <tomaz@mono.si>
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pwm/pwm.h>
#include "fsl-ls1046a.dtsi"

/ {
	model = "Mono Gateway Development Kit";
	compatible = "mono,gateway-dk", "fsl,ls1046a";

	aliases {
		serial0 = &duart0;
		serial1 = &duart1;

		/* Physical port order: left to right */
		ethernet0 = &enet4;  /* MAC5 - 1G leftmost */
		ethernet1 = &enet5;  /* MAC6 - 1G middle */
		ethernet2 = &enet1;  /* MAC2 - 1G rightmost */
		ethernet3 = &enet6;  /* MAC9 - 10G left */
		ethernet4 = &enet7;  /* MAC10 - 10G right */
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	leds {
		compatible = "gpio-leds";

		/* SFP+ Port 0 LEDs - Activity/Link */
		led_sfp0_link: sfp0_link {
			label = "sfp0:link";
			gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		led_sfp0_activity: sfp0_activity {
			label = "sfp0:activity";
			gpios = <&gpio2 18 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		/* SFP+ Port 1 LEDs - Activity/Link */
		led_sfp1_link: sfp1_link {
			label = "sfp1:link";
			gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		led_sfp1_activity: sfp1_activity {
			label = "sfp1:activity";
			gpios = <&gpio2 16 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

	/* SFP 1 */
	sfp_xfi0: sfp-xfi0 {
		compatible = "sff,sfp";
		i2c-bus = <&sfp0_i2c>;
		tx-disable-gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>;
		mod-def0-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
		los-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
		maximum-power-milliwatt = <3000>;
		leds = <&led_sfp0_link>, <&led_sfp0_activity>;
	};

	/* SFP 2 */
	sfp_xfi1: sfp-xfi1 {
		compatible = "sff,sfp";
		i2c-bus = <&sfp1_i2c>;
		tx-disable-gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>;
		mod-def0-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;
		los-gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>;
		maximum-power-milliwatt = <3000>;
		leds = <&led_sfp1_link>, <&led_sfp1_activity>;
	};

	/* SFP LED Controller */
	sfp_led_controller: sfp-led-controller {
		compatible = "mono,sfp-led";
		sfp-ports = <&sfp_xfi0>, <&sfp_xfi1>;
	};

};

&pcie3 {
	status = "okay";
};

&gpio2 {
	2R-enable {
		gpio-hog;
		gpios = <6 GPIO_ACTIVE_LOW>;
		output-high;
		line-name = "2r-enable";
	};

	3R-enable {
		gpio-hog;
		gpios = <2 GPIO_ACTIVE_LOW>;
		output-low;
		line-name = "3r-enable";
	};

	uart-mux {
		gpio-hog;
		gpios = <26 GPIO_ACTIVE_HIGH>;
		output-high; /* "output-high" for 2R, "output-low" for 3R */
		line-name = "uart-mux";
	};
};

&duart0 {
	status = "okay";
};

&duart1 {
	status = "okay";
	uart-has-rtscts;

	bluetooth {
		compatible = "nxp,88w8987-bt";
		fw-init-baudrate = <3000000>; 
	};
};

&usb0 {
	status = "okay";
	dr_mode = "host";
};

&usb1 {
	status = "disabled";
	disable-over-current;
};

&usb2 {
	status = "disabled";
	disable-over-current;
};

&dspi {
	status = "okay";
};

&esdhc {
	status = "okay";
	mmc-hs200-1_8v;
	bus-width = <4>;
};

&i2c0 {
	status = "okay";

	/* Thermal sensors, retimer, clock genenerator, PWM fan */
	i2c-mux@70 {
		compatible = "nxp,pca9545";
		reg = <0x70>;
		#address-cells = <1>;
		#size-cells = <0>;

		i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;

			retimer: retimer@18 {
				compatible = "ti,ds100df410";
				reg = <0x18>;
				status = "okay";
			};
		};

		i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;

			temp-sensor@4c {
				compatible = "ti,tmp431";
				reg = <0x4c>;
			};
		};

		i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;

			temp-sensor@4c {
				compatible = "ti,tmp431";
				reg = <0x4c>;
			};
		};

		i2c@3 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <3>;

			fan_controller: fan-controller@2e {
				compatible = "microchip,emc2305";
				reg = <0x2e>;
				#address-cells = <1>;
				#size-cells = <0>;
				#pwm-cells = <3>;

				fan0: fan@0 {
					reg = <0>;
					label = "System Fan 1";
					pwms = <&fan_controller 26000 1 1>;
					#cooling-cells = <2>;
				};

				fan1: fan@1 {
					reg = <1>;
					label = "System Fan 2";
					pwms = <&fan_controller 26000 1 1>;
					#cooling-cells = <2>;
				};
			};
		};
	};
};

&i2c1 {
	status = "okay";

	/* SFP+ modules */
	sfpmux: i2c-mux@70 {
		compatible = "nxp,pca9545";
		reg = <0x70>;
		#address-cells = <1>;
		#size-cells = <0>;
		
		sfp0_i2c: i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
		};

		sfp1_i2c: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
		};
	};
};

&i2c2 {
	status = "okay";

	i2c-mux@70 {
		compatible = "nxp,pca9545";
		reg = <0x70>;
		#address-cells = <1>;
		#size-cells = <0>;
		
		i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;

			power_sensor@40 {
				compatible = "ti,ina234";
				reg = <0x40>;
				label = "USB Power Delivery";
				#io-channel-cells = <1>;
				shunt-resistor = <1000>;
			};	
			power_sensor@41 {
				compatible = "ti,ina234";
				reg = <0x41>;
				label = "5V PSU";
				#io-channel-cells = <1>;
				shunt-resistor = <1000>;
			};
			power_sensor@42 {
				compatible = "ti,ina234";
				reg = <0x42>;
				label = "1V Core PSU";
				#io-channel-cells = <1>;
				shunt-resistor = <1000>;
			};						
			power_sensor@43 {
				compatible = "ti,ina234";
				reg = <0x43>;
				label = "1.2V DDR PSU";
				#io-channel-cells = <1>;
				shunt-resistor = <5000>;
			};
		};

		i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;

			power_sensor@40 {
				compatible = "ti,ina234";
				reg = <0x40>;
				label = "1.35V SerDes PSU";
				#io-channel-cells = <1>;
				shunt-resistor = <5000>;
			};	
			power_sensor@41 {
				compatible = "ti,ina234";
				reg = <0x41>;
				label = "1.8V PSU";
				#io-channel-cells = <1>;
				shunt-resistor = <5000>;
			};
			power_sensor@42 {
				compatible = "ti,ina234";
				reg = <0x42>;
				label = "2.5V DDR PSU";
				#io-channel-cells = <1>;
				shunt-resistor = <5000>;
			};						
			power_sensor@43 {
				compatible = "ti,ina234";
				reg = <0x43>;
				label = "3.3V PSU";
				#io-channel-cells = <1>;
				shunt-resistor = <1000>;
			};
		};	

		i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;

			rtc@53 {
				compatible = "nxp,pcf2131";
				reg = <0x53>;
				status = "okay";
			};

			typec: hd3ss3220@47 {
				compatible = "ti,hd3ss3220";
				reg = <0x47>;
			};
		};

		i2c@3 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <3>;

			lp5810@6c {
				compatible = "ti,lp5812";
				reg = <0x6c>;
				#address-cells = <1>;
				#size-cells = <0>;
					
				led@0 {
					reg = <0>;
					color = <LED_COLOR_ID_WHITE>;
					label = "status:white";
					led-max-microamp = <25500>;
				};
				
				led@1 {
					reg = <1>;
					color = <LED_COLOR_ID_BLUE>;
					label = "status:blue";
					led-max-microamp = <25500>;
				};
				
				led@2 {
					reg = <2>;
					color = <LED_COLOR_ID_GREEN>;
					label = "status:green";
					led-max-microamp = <25500>;
				};
				
				led@3 {
					reg = <3>;
					color = <LED_COLOR_ID_RED>;
					label = "status:red";
					led-max-microamp = <25500>;
				};		
			};
		};
	};
};

&i2c3 {
	status = "okay";
};

&qspi {
	status = "okay";

	mt25qu512a0: flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "jedec,spi-nor";
		spi-max-frequency = <50000000>;
		reg = <0>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@flash {
				label = "flash";
				reg = <0x0 0x4000000>;
			};

			partition@0 {
				label = "rcw-bl2";
				reg = <0x0 0x100000>;
			};

			partition@100000 {
				label = "uboot";
				reg = <0x100000 0x200000>;
			};

			partition@300000 {
				label = "uboot-env";
				reg = <0x300000 0x100000>;
			};

			partition@400000 {
				label = "fman-ucode";
				reg = <0x400000 0x100000>;
			};

			partition@500000 {
				label = "recovery-dtb";
				reg = <0x500000 0x100000>;
			};

			partition@600000 {
				label = "backup";
				reg = <0x600000 0x400000>;
			};

			partition@a00000 {
				label = "kernel-initramfs";
				reg = <0xa00000 0x1600000>;
			};

			partition@2000000 {
				label = "unallocated";
				reg = <0x2000000 0x2000000>;
			};
		};
	};
};

#include "fsl-ls1046-post.dtsi"

&fman0 {
	ethernet@e0000 {
		status = "disabled";
	};

	ethernet@e4000 {
		status = "disabled";
	};

	ethernet@e6000 {
		status = "disabled";
	};

	ethernet@e8000 {
		phy-handle = <&sgmii_phy0>;
		phy-connection-type = "sgmii";
		status = "okay";
	};

	ethernet@ea000 {
		phy-handle = <&sgmii_phy1>;
		phy-connection-type = "sgmii";
		status = "okay";
	};

	ethernet@e2000 {
		phy-handle = <&sgmii_phy2>;
		phy-connection-type = "sgmii";
		status = "okay";
	};

	fm1_mac9: ethernet@f0000 { /* 10GEC1 */
		sfp = <&sfp_xfi0>;
		phy-connection-type = "10gbase-r";
		managed = "in-band-status";
		pcs-handle-names = "xfi";  /* Match enet7 for consistency */
	};

	fm1_mac10: ethernet@f2000 { /* 10GEC2 */
		sfp = <&sfp_xfi1>;
		phy-connection-type = "10gbase-r";
		managed = "in-band-status";
	};
	
	mdio@fc000 {
		status = "disabled";
	};

	mdio@fd000 {
		sgmii_phy0: ethernet-phy@0 {
			reg = <0x0>;
		};

		sgmii_phy1: ethernet-phy@1 {
			reg = <0x1>;
		};

		sgmii_phy2: ethernet-phy@2 {
			reg = <0x2>;
		};
	};
};