xref: /freebsd/sys/contrib/device-tree/src/arm64/marvell/cn9130-cf.dtsi (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1*0e8011faSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+
2*0e8011faSEmmanuel Vadot/*
3*0e8011faSEmmanuel Vadot * Copyright (C) 2024 Josua Mayer <josua@solid-run.com>
4*0e8011faSEmmanuel Vadot *
5*0e8011faSEmmanuel Vadot * DTS for common base of SolidRun CN9130 Clearfog Base and Pro.
6*0e8011faSEmmanuel Vadot *
7*0e8011faSEmmanuel Vadot */
8*0e8011faSEmmanuel Vadot
9*0e8011faSEmmanuel Vadot/ {
10*0e8011faSEmmanuel Vadot	aliases {
11*0e8011faSEmmanuel Vadot		/* label nics same order as armada 388 clearfog */
12*0e8011faSEmmanuel Vadot		ethernet0 = &cp0_eth2;
13*0e8011faSEmmanuel Vadot		ethernet1 = &cp0_eth1;
14*0e8011faSEmmanuel Vadot		ethernet2 = &cp0_eth0;
15*0e8011faSEmmanuel Vadot		i2c1 = &cp0_i2c1;
16*0e8011faSEmmanuel Vadot		mmc1 = &cp0_sdhci0;
17*0e8011faSEmmanuel Vadot	};
18*0e8011faSEmmanuel Vadot
19*0e8011faSEmmanuel Vadot	reg_usb3_vbus0: regulator-usb3-vbus0 {
20*0e8011faSEmmanuel Vadot		compatible = "regulator-fixed";
21*0e8011faSEmmanuel Vadot		regulator-name = "vbus0";
22*0e8011faSEmmanuel Vadot		regulator-min-microvolt = <5000000>;
23*0e8011faSEmmanuel Vadot		regulator-max-microvolt = <5000000>;
24*0e8011faSEmmanuel Vadot		gpios = <&expander0 6 GPIO_ACTIVE_LOW>;
25*0e8011faSEmmanuel Vadot	};
26*0e8011faSEmmanuel Vadot
27*0e8011faSEmmanuel Vadot	sfp: sfp {
28*0e8011faSEmmanuel Vadot		compatible = "sff,sfp";
29*0e8011faSEmmanuel Vadot		i2c-bus = <&cp0_i2c1>;
30*0e8011faSEmmanuel Vadot		los-gpios = <&expander0 12 GPIO_ACTIVE_HIGH>;
31*0e8011faSEmmanuel Vadot		mod-def0-gpios = <&expander0 15 GPIO_ACTIVE_LOW>;
32*0e8011faSEmmanuel Vadot		tx-disable-gpios = <&expander0 14 GPIO_ACTIVE_HIGH>;
33*0e8011faSEmmanuel Vadot		tx-fault-gpios = <&expander0 13 GPIO_ACTIVE_HIGH>;
34*0e8011faSEmmanuel Vadot		maximum-power-milliwatt = <2000>;
35*0e8011faSEmmanuel Vadot	};
36*0e8011faSEmmanuel Vadot};
37*0e8011faSEmmanuel Vadot
38*0e8011faSEmmanuel Vadot/* SRDS #2 - SFP+ 10GE */
39*0e8011faSEmmanuel Vadot&cp0_eth0 {
40*0e8011faSEmmanuel Vadot	managed = "in-band-status";
41*0e8011faSEmmanuel Vadot	phys = <&cp0_comphy2 0>;
42*0e8011faSEmmanuel Vadot	phy-mode = "10gbase-r";
43*0e8011faSEmmanuel Vadot	sfp = <&sfp>;
44*0e8011faSEmmanuel Vadot	status = "okay";
45*0e8011faSEmmanuel Vadot};
46*0e8011faSEmmanuel Vadot
47*0e8011faSEmmanuel Vadot&cp0_i2c0 {
48*0e8011faSEmmanuel Vadot	expander0: gpio-expander@20 {
49*0e8011faSEmmanuel Vadot		compatible = "nxp,pca9555";
50*0e8011faSEmmanuel Vadot		reg = <0x20>;
51*0e8011faSEmmanuel Vadot		gpio-controller;
52*0e8011faSEmmanuel Vadot		#gpio-cells = <2>;
53*0e8011faSEmmanuel Vadot		pinctrl-0 = <&expander0_pins>;
54*0e8011faSEmmanuel Vadot		pinctrl-names = "default";
55*0e8011faSEmmanuel Vadot		interrupt-parent = <&cp0_gpio1>;
56*0e8011faSEmmanuel Vadot		interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
57*0e8011faSEmmanuel Vadot
58*0e8011faSEmmanuel Vadot		/* CON3 */
59*0e8011faSEmmanuel Vadot		pcie2-0-clkreq-hog {
60*0e8011faSEmmanuel Vadot			gpio-hog;
61*0e8011faSEmmanuel Vadot			gpios = <0 GPIO_ACTIVE_LOW>;
62*0e8011faSEmmanuel Vadot			input;
63*0e8011faSEmmanuel Vadot			line-name = "pcie2.0-clkreq";
64*0e8011faSEmmanuel Vadot		};
65*0e8011faSEmmanuel Vadot
66*0e8011faSEmmanuel Vadot		/* CON3 */
67*0e8011faSEmmanuel Vadot		pcie2-0-w-disable-hog {
68*0e8011faSEmmanuel Vadot			gpio-hog;
69*0e8011faSEmmanuel Vadot			gpios = <3 GPIO_ACTIVE_LOW>;
70*0e8011faSEmmanuel Vadot			output-low;
71*0e8011faSEmmanuel Vadot			line-name = "pcie2.0-w-disable";
72*0e8011faSEmmanuel Vadot		};
73*0e8011faSEmmanuel Vadot
74*0e8011faSEmmanuel Vadot		usb3-ilimit-hog {
75*0e8011faSEmmanuel Vadot			gpio-hog;
76*0e8011faSEmmanuel Vadot			gpios = <5 GPIO_ACTIVE_LOW>;
77*0e8011faSEmmanuel Vadot			input;
78*0e8011faSEmmanuel Vadot			line-name = "usb3-current-limit";
79*0e8011faSEmmanuel Vadot		};
80*0e8011faSEmmanuel Vadot
81*0e8011faSEmmanuel Vadot		m2-devslp-hog {
82*0e8011faSEmmanuel Vadot			gpio-hog;
83*0e8011faSEmmanuel Vadot			gpios = <11 GPIO_ACTIVE_HIGH>;
84*0e8011faSEmmanuel Vadot			output-low;
85*0e8011faSEmmanuel Vadot			line-name = "m.2 devslp";
86*0e8011faSEmmanuel Vadot		};
87*0e8011faSEmmanuel Vadot	};
88*0e8011faSEmmanuel Vadot
89*0e8011faSEmmanuel Vadot	/* The MCP3021 supports standard and fast modes */
90*0e8011faSEmmanuel Vadot	adc@4c {
91*0e8011faSEmmanuel Vadot		compatible = "microchip,mcp3021";
92*0e8011faSEmmanuel Vadot		reg = <0x4c>;
93*0e8011faSEmmanuel Vadot	};
94*0e8011faSEmmanuel Vadot
95*0e8011faSEmmanuel Vadot	carrier_eeprom: eeprom@52 {
96*0e8011faSEmmanuel Vadot		compatible = "atmel,24c02";
97*0e8011faSEmmanuel Vadot		reg = <0x52>;
98*0e8011faSEmmanuel Vadot		pagesize = <8>;
99*0e8011faSEmmanuel Vadot	};
100*0e8011faSEmmanuel Vadot};
101*0e8011faSEmmanuel Vadot
102*0e8011faSEmmanuel Vadot&cp0_i2c1 {
103*0e8011faSEmmanuel Vadot	/*
104*0e8011faSEmmanuel Vadot	 * Routed to SFP, M.2, mikrobus, and miniPCIe
105*0e8011faSEmmanuel Vadot	 * SFP limits this to 100kHz, and requires an AT24C01A/02/04 with
106*0e8011faSEmmanuel Vadot	 *  address pins tied low, which takes addresses 0x50 and 0x51.
107*0e8011faSEmmanuel Vadot	 * Mikrobus doesn't specify beyond an I2C bus being present.
108*0e8011faSEmmanuel Vadot	 * PCIe uses ARP to assign addresses, or 0x63-0x64.
109*0e8011faSEmmanuel Vadot	 */
110*0e8011faSEmmanuel Vadot	clock-frequency = <100000>;
111*0e8011faSEmmanuel Vadot	pinctrl-0 = <&cp0_i2c1_pins>;
112*0e8011faSEmmanuel Vadot	pinctrl-names = "default";
113*0e8011faSEmmanuel Vadot	status = "okay";
114*0e8011faSEmmanuel Vadot};
115*0e8011faSEmmanuel Vadot
116*0e8011faSEmmanuel Vadot/* SRDS #5 - miniPCIe (CON3) */
117*0e8011faSEmmanuel Vadot&cp0_pcie2 {
118*0e8011faSEmmanuel Vadot	num-lanes = <1>;
119*0e8011faSEmmanuel Vadot	phys = <&cp0_comphy5 2>;
120*0e8011faSEmmanuel Vadot	/* dw-pcie inverts internally */
121*0e8011faSEmmanuel Vadot	reset-gpios = <&expander0 1 GPIO_ACTIVE_HIGH>;
122*0e8011faSEmmanuel Vadot	status = "okay";
123*0e8011faSEmmanuel Vadot};
124*0e8011faSEmmanuel Vadot
125*0e8011faSEmmanuel Vadot&cp0_pinctrl {
126*0e8011faSEmmanuel Vadot	cp0_i2c1_pins: cp0-i2c1-pins {
127*0e8011faSEmmanuel Vadot		marvell,pins = "mpp35", "mpp36";
128*0e8011faSEmmanuel Vadot		marvell,function = "i2c1";
129*0e8011faSEmmanuel Vadot	};
130*0e8011faSEmmanuel Vadot
131*0e8011faSEmmanuel Vadot	cp0_mmc0_pins: cp0-mmc0-pins {
132*0e8011faSEmmanuel Vadot		marvell,pins = "mpp43", "mpp56", "mpp57", "mpp58",
133*0e8011faSEmmanuel Vadot			       "mpp59", "mpp60", "mpp61";
134*0e8011faSEmmanuel Vadot		marvell,function = "sdio";
135*0e8011faSEmmanuel Vadot	};
136*0e8011faSEmmanuel Vadot
137*0e8011faSEmmanuel Vadot	mikro_spi_pins: cp0-spi1-cs1-pins {
138*0e8011faSEmmanuel Vadot		marvell,pins = "mpp12";
139*0e8011faSEmmanuel Vadot		marvell,function = "spi1";
140*0e8011faSEmmanuel Vadot	};
141*0e8011faSEmmanuel Vadot
142*0e8011faSEmmanuel Vadot	mikro_uart_pins: cp0-uart-pins {
143*0e8011faSEmmanuel Vadot		marvell,pins = "mpp2", "mpp3";
144*0e8011faSEmmanuel Vadot		marvell,function = "uart1";
145*0e8011faSEmmanuel Vadot	};
146*0e8011faSEmmanuel Vadot
147*0e8011faSEmmanuel Vadot	expander0_pins: cp0-expander0-pins {
148*0e8011faSEmmanuel Vadot		marvell,pins = "mpp4";
149*0e8011faSEmmanuel Vadot		marvell,function = "gpio";
150*0e8011faSEmmanuel Vadot	};
151*0e8011faSEmmanuel Vadot};
152*0e8011faSEmmanuel Vadot
153*0e8011faSEmmanuel Vadot/* SRDS #0 - SATA on M.2 connector */
154*0e8011faSEmmanuel Vadot&cp0_sata0 {
155*0e8011faSEmmanuel Vadot	phys = <&cp0_comphy0 1>;
156*0e8011faSEmmanuel Vadot	status = "okay";
157*0e8011faSEmmanuel Vadot
158*0e8011faSEmmanuel Vadot	/* only port 1 is available */
159*0e8011faSEmmanuel Vadot	/delete-node/ sata-port@0;
160*0e8011faSEmmanuel Vadot};
161*0e8011faSEmmanuel Vadot
162*0e8011faSEmmanuel Vadot/* microSD */
163*0e8011faSEmmanuel Vadot&cp0_sdhci0 {
164*0e8011faSEmmanuel Vadot	pinctrl-0 = <&cp0_mmc0_pins>;
165*0e8011faSEmmanuel Vadot	pinctrl-names = "default";
166*0e8011faSEmmanuel Vadot	bus-width = <4>;
167*0e8011faSEmmanuel Vadot	no-1-8-v;
168*0e8011faSEmmanuel Vadot	status = "okay";
169*0e8011faSEmmanuel Vadot};
170*0e8011faSEmmanuel Vadot
171*0e8011faSEmmanuel Vadot&cp0_spi1 {
172*0e8011faSEmmanuel Vadot	/* CS1 for mikrobus */
173*0e8011faSEmmanuel Vadot	pinctrl-0 = <&cp0_spi1_pins &mikro_spi_pins>;
174*0e8011faSEmmanuel Vadot};
175*0e8011faSEmmanuel Vadot
176*0e8011faSEmmanuel Vadot/*
177*0e8011faSEmmanuel Vadot * SRDS #1 - USB-3.0 Host on Type-A connector
178*0e8011faSEmmanuel Vadot * USB-2.0 Host on mPCI-e connector (CON3)
179*0e8011faSEmmanuel Vadot */
180*0e8011faSEmmanuel Vadot&cp0_usb3_0 {
181*0e8011faSEmmanuel Vadot	phys = <&cp0_comphy1 0>, <&cp0_utmi0>;
182*0e8011faSEmmanuel Vadot	phy-names = "comphy", "utmi";
183*0e8011faSEmmanuel Vadot	vbus-supply = <&reg_usb3_vbus0>;
184*0e8011faSEmmanuel Vadot	dr_mode = "host";
185*0e8011faSEmmanuel Vadot	status = "okay";
186*0e8011faSEmmanuel Vadot};
187*0e8011faSEmmanuel Vadot
188*0e8011faSEmmanuel Vadot&cp0_utmi {
189*0e8011faSEmmanuel Vadot	status = "okay";
190*0e8011faSEmmanuel Vadot};
191*0e8011faSEmmanuel Vadot
192*0e8011faSEmmanuel Vadot/* mikrobus uart */
193*0e8011faSEmmanuel Vadot&cp0_uart0 {
194*0e8011faSEmmanuel Vadot	pinctrl-0 = <&mikro_uart_pins>;
195*0e8011faSEmmanuel Vadot	pinctrl-names = "default";
196*0e8011faSEmmanuel Vadot	status = "okay";
197*0e8011faSEmmanuel Vadot};
198