Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
  1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
  2/*
  3 * Copyright (C) 2021 MediaTek Inc.
  4 * Authors: Frank Wunderlich <frank-w@public-files.de>
  5 *          Eric Woudstra <ericwouds@gmail.com>
  6 *          Tianling Shen <cnsztl@immortalwrt.org>
  7 */
  8
  9/dts-v1/;
 10
 11#include <dt-bindings/gpio/gpio.h>
 12#include <dt-bindings/input/input.h>
 13#include <dt-bindings/leds/common.h>
 14#include <dt-bindings/pinctrl/mt65xx.h>
 15
 16#include "mt7986a.dtsi"
 17
 18/ {
 19	model = "Bananapi BPI-R3 Mini";
 20	chassis-type = "embedded";
 21	compatible = "bananapi,bpi-r3mini", "mediatek,mt7986a";
 22
 23	aliases {
 24		serial0 = &uart0;
 25		ethernet0 = &gmac0;
 26		ethernet1 = &gmac1;
 27	};
 28
 29	chosen {
 30		stdout-path = "serial0:115200n8";
 31	};
 32
 33	dcin: regulator-12v {
 34		compatible = "regulator-fixed";
 35		regulator-name = "12vd";
 36		regulator-min-microvolt = <12000000>;
 37		regulator-max-microvolt = <12000000>;
 38		regulator-boot-on;
 39		regulator-always-on;
 40	};
 41
 42	fan: pwm-fan {
 43		compatible = "pwm-fan";
 44		#cooling-cells = <2>;
 45		/*
 46		 * The signal is inverted on this board and the PWM driver
 47		 * does not support polarity inversion.
 48		 */
 49		/* cooling level (0, 1, 2) */
 50		cooling-levels = <255 96 0>;
 51		pwms = <&pwm 0 10000>;
 52	};
 53
 54	reg_1p8v: regulator-1v8 {
 55		compatible = "regulator-fixed";
 56		regulator-name = "1.8vd";
 57		regulator-min-microvolt = <1800000>;
 58		regulator-max-microvolt = <1800000>;
 59		regulator-boot-on;
 60		regulator-always-on;
 61		vin-supply = <&dcin>;
 62	};
 63
 64	reg_3p3v: regulator-3v3 {
 65		compatible = "regulator-fixed";
 66		regulator-name = "3.3vd";
 67		regulator-min-microvolt = <3300000>;
 68		regulator-max-microvolt = <3300000>;
 69		regulator-boot-on;
 70		regulator-always-on;
 71		vin-supply = <&dcin>;
 72	};
 73
 74	usb_vbus: regulator-5v {
 75		compatible = "regulator-fixed";
 76		regulator-name = "usb_vbus";
 77		regulator-min-microvolt = <5000000>;
 78		regulator-max-microvolt = <5000000>;
 79		gpios = <&pio 20 GPIO_ACTIVE_LOW>;
 80		regulator-boot-on;
 81	};
 82
 83	en8811_a: regulator-phy1 {
 84		compatible = "regulator-fixed";
 85		regulator-name = "phy1";
 86		regulator-min-microvolt = <3300000>;
 87		regulator-max-microvolt = <3300000>;
 88		gpio = <&pio 16 GPIO_ACTIVE_LOW>;
 89		regulator-always-on;
 90	};
 91
 92	en8811_b: regulator-phy2 {
 93		compatible = "regulator-fixed";
 94		regulator-name = "phy2";
 95		regulator-min-microvolt = <3300000>;
 96		regulator-max-microvolt = <3300000>;
 97		gpio = <&pio 17 GPIO_ACTIVE_LOW>;
 98		regulator-always-on;
 99	};
100
101	leds {
102		compatible = "gpio-leds";
103
104		green_led: led-0 {
105			color = <LED_COLOR_ID_GREEN>;
106			function = LED_FUNCTION_POWER;
107			gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
108			default-state = "on";
109		};
110	};
111
112	gpio-keys {
113		compatible = "gpio-keys";
114
115		reset-key {
116			label = "reset";
117			linux,code = <KEY_RESTART>;
118			gpios = <&pio 7 GPIO_ACTIVE_LOW>;
119		};
120	};
121
122};
123
124&cpu_thermal {
125	cooling-maps {
126		map0 {
127			/* active: set fan to cooling level 2 */
128			cooling-device = <&fan 2 2>;
129			trip = <&cpu_trip_active_high>;
130		};
131
132		map1 {
133			/* active: set fan to cooling level 1 */
134			cooling-device = <&fan 1 1>;
135			trip = <&cpu_trip_active_med>;
136		};
137
138		map2 {
139			/* active: set fan to cooling level 0 */
140			cooling-device = <&fan 0 0>;
141			trip = <&cpu_trip_active_low>;
142		};
143	};
144};
145
146&crypto {
147	status = "okay";
148};
149
150&eth {
151	status = "okay";
152
153	gmac0: mac@0 {
154		compatible = "mediatek,eth-mac";
155		reg = <0>;
156		phy-mode = "2500base-x";
157		phy-handle = <&phy0>;
158	};
159
160	gmac1: mac@1 {
161		compatible = "mediatek,eth-mac";
162		reg = <1>;
163		phy-mode = "2500base-x";
164		phy-handle = <&phy1>;
165	};
166
167	mdio: mdio-bus {
168		#address-cells = <1>;
169		#size-cells = <0>;
170	};
171};
172
173&mmc0 {
174	pinctrl-names = "default", "state_uhs";
175	pinctrl-0 = <&mmc0_pins_default>;
176	pinctrl-1 = <&mmc0_pins_uhs>;
177	vmmc-supply = <&reg_3p3v>;
178	vqmmc-supply = <&reg_1p8v>;
179};
180
181
182&i2c0 {
183	pinctrl-names = "default";
184	pinctrl-0 = <&i2c_pins>;
185	status = "okay";
186
187	/* MAC Address EEPROM */
188	eeprom@50 {
189		compatible = "atmel,24c02";
190		reg = <0x50>;
191
192		address-width = <8>;
193		pagesize = <8>;
194		size = <256>;
195	};
196};
197
198&mdio {
199	phy0: ethernet-phy@14 {
200		reg = <14>;
201		interrupts-extended = <&pio 48 IRQ_TYPE_EDGE_FALLING>;
202		reset-gpios = <&pio 49 GPIO_ACTIVE_LOW>;
203		reset-assert-us = <10000>;
204		reset-deassert-us = <20000>;
205		phy-mode = "2500base-x";
206		full-duplex;
207		pause;
208		airoha,pnswap-rx;
209
210		leds {
211			#address-cells = <1>;
212			#size-cells = <0>;
213
214			led@0 { /* en8811_a_gpio5 */
215				reg = <0>;
216				color = <LED_COLOR_ID_YELLOW>;
217				function = LED_FUNCTION_LAN;
218				function-enumerator = <1>;
219				default-state = "keep";
220			};
221			led@1 { /* en8811_a_gpio4 */
222				reg = <1>;
223				color = <LED_COLOR_ID_GREEN>;
224				function = LED_FUNCTION_LAN;
225				function-enumerator = <2>;
226				default-state = "keep";
227			};
228		};
229	};
230
231	phy1: ethernet-phy@15 {
232		reg = <15>;
233		interrupts-extended = <&pio 46 IRQ_TYPE_EDGE_FALLING>;
234		reset-gpios = <&pio 47 GPIO_ACTIVE_LOW>;
235		reset-assert-us = <10000>;
236		reset-deassert-us = <20000>;
237		phy-mode = "2500base-x";
238		full-duplex;
239		pause;
240		airoha,pnswap-rx;
241
242		leds {
243			#address-cells = <1>;
244			#size-cells = <0>;
245
246			led@0 { /* en8811_b_gpio5 */
247				reg = <0>;
248				color = <LED_COLOR_ID_YELLOW>;
249				function = LED_FUNCTION_WAN;
250				function-enumerator = <1>;
251				default-state = "keep";
252			};
253			led@1 { /* en8811_b_gpio4 */
254				reg = <1>;
255				color = <LED_COLOR_ID_GREEN>;
256				function = LED_FUNCTION_WAN;
257				function-enumerator = <2>;
258				default-state = "keep";
259			};
260		};
261	};
262};
263
264&pcie {
265	pinctrl-names = "default";
266	pinctrl-0 = <&pcie_pins>;
267	status = "okay";
268};
269
270&pcie_phy {
271	status = "okay";
272};
273
274&pio {
275	i2c_pins: i2c-pins {
276		mux {
277			function = "i2c";
278			groups = "i2c";
279		};
280	};
281
282	mmc0_pins_default: mmc0-pins {
283		mux {
284			function = "emmc";
285			groups = "emmc_51";
286		};
287		conf-cmd-dat {
288			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
289			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
290			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
291			input-enable;
292			drive-strength = <4>;
293			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
294		};
295		conf-clk {
296			pins = "EMMC_CK";
297			drive-strength = <6>;
298			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
299		};
300		conf-ds {
301			pins = "EMMC_DSL";
302			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
303		};
304		conf-rst {
305			pins = "EMMC_RSTB";
306			drive-strength = <4>;
307			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
308		};
309	};
310
311	mmc0_pins_uhs: mmc0-uhs-pins {
312		mux {
313			function = "emmc";
314			groups = "emmc_51";
315		};
316		conf-cmd-dat {
317			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
318			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
319			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
320			input-enable;
321			drive-strength = <4>;
322			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
323		};
324		conf-clk {
325			pins = "EMMC_CK";
326			drive-strength = <6>;
327			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
328		};
329		conf-ds {
330			pins = "EMMC_DSL";
331			bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
332		};
333		conf-rst {
334			pins = "EMMC_RSTB";
335			drive-strength = <4>;
336			bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
337		};
338	};
339
340	pcie_pins: pcie-pins {
341		mux {
342			function = "pcie";
343			groups = "pcie_clk", "pcie_wake", "pcie_pereset";
344		};
345	};
346
347	pwm_pins: pwm-pins {
348		mux {
349			function = "pwm";
350			groups = "pwm0";
351		};
352	};
353
354	spi_flash_pins: spi-flash-pins {
355		mux {
356			function = "spi";
357			groups = "spi0", "spi0_wp_hold";
358		};
359	};
360
361	usb_ngff_pins: usb-ngff-pins {
362		ngff-gnss-off-conf {
363			pins = "GPIO_6";
364			drive-strength = <8>;
365			mediatek,pull-up-adv = <1>;
366		};
367		ngff-pe-rst-conf {
368			pins = "GPIO_7";
369			drive-strength = <8>;
370			mediatek,pull-up-adv = <1>;
371		};
372		ngff-wwan-off-conf {
373			pins = "GPIO_8";
374			drive-strength = <8>;
375			mediatek,pull-up-adv = <1>;
376		};
377		ngff-pwr-off-conf {
378			pins = "GPIO_9";
379			drive-strength = <8>;
380			mediatek,pull-up-adv = <1>;
381		};
382		ngff-rst-conf {
383			pins = "GPIO_10";
384			drive-strength = <8>;
385			mediatek,pull-up-adv = <1>;
386		};
387		ngff-coex-conf {
388			pins = "SPI1_CS";
389			drive-strength = <8>;
390			mediatek,pull-up-adv = <1>;
391		};
392	};
393
394	wf_2g_5g_pins: wf-2g-5g-pins {
395		mux {
396			function = "wifi";
397			groups = "wf_2g", "wf_5g";
398		};
399		conf {
400			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
401			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
402			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
403			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
404			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
405			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
406			       "WF1_TOP_CLK", "WF1_TOP_DATA";
407			drive-strength = <4>;
408		};
409	};
410
411	wf_dbdc_pins: wf-dbdc-pins {
412		mux {
413			function = "wifi";
414			groups = "wf_dbdc";
415		};
416		conf {
417			pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
418			       "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
419			       "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
420			       "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
421			       "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
422			       "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
423			       "WF1_TOP_CLK", "WF1_TOP_DATA";
424			drive-strength = <4>;
425		};
426	};
427
428	wf_led_pins: wf-led-pins {
429		mux {
430			function = "led";
431			groups = "wifi_led";
432		};
433	};
434};
435
436&pwm {
437	pinctrl-names = "default";
438	pinctrl-0 = <&pwm_pins>;
439	status = "okay";
440};
441
442&spi0 {
443	pinctrl-names = "default";
444	pinctrl-0 = <&spi_flash_pins>;
445	status = "okay";
446
447	flash@0 {
448		compatible = "spi-nand";
449		#address-cells = <1>;
450		#size-cells = <1>;
451		reg = <0>;
452
453		spi-max-frequency = <20000000>;
454		spi-tx-bus-width = <4>;
455		spi-rx-bus-width = <4>;
456	};
457};
458
459&ssusb {
460	pinctrl-names = "default";
461	pinctrl-0 = <&usb_ngff_pins>;
462	vusb33-supply = <&reg_3p3v>;
463	vbus-supply = <&usb_vbus>;
464	status = "okay";
465};
466
467&trng {
468	status = "okay";
469};
470
471&uart0 {
472	status = "okay";
473};
474
475&usb_phy {
476	status = "okay";
477};
478
479&watchdog {
480	status = "okay";
481};
482
483&wifi {
484	status = "okay";
485	pinctrl-names = "default", "dbdc";
486	pinctrl-0 = <&wf_2g_5g_pins>, <&wf_led_pins>;
487	pinctrl-1 = <&wf_dbdc_pins>, <&wf_led_pins>;
488
489	led {
490		led-active-low;
491	};
492};
493