xref: /linux/arch/arm/boot/dts/nxp/mxs/imx28-btt3.dtsi (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
10335256aSLukasz Majewski// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
20335256aSLukasz Majewski/*
30335256aSLukasz Majewski * Copyright 2024
40335256aSLukasz Majewski * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
50335256aSLukasz Majewski */
60335256aSLukasz Majewski/dts-v1/;
70335256aSLukasz Majewski#include "imx28-lwe.dtsi"
80335256aSLukasz Majewski
90335256aSLukasz Majewski/ {
100335256aSLukasz Majewski	model = "BTT3";
110335256aSLukasz Majewski
120335256aSLukasz Majewski	compatible = "lwn,imx28-btt3", "fsl,imx28";
130335256aSLukasz Majewski
140335256aSLukasz Majewski	chosen {
150335256aSLukasz Majewski	       bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait console=ttyAMA0,115200 panic=1 quiet";
160335256aSLukasz Majewski	};
170335256aSLukasz Majewski
180335256aSLukasz Majewski	memory@40000000 {
190335256aSLukasz Majewski		reg = <0x40000000 0x10000000>;
200335256aSLukasz Majewski		device_type = "memory";
210335256aSLukasz Majewski	};
220335256aSLukasz Majewski
230335256aSLukasz Majewski	panel {
240335256aSLukasz Majewski		compatible = "powertip,hx8238a", "panel-dpi";
250335256aSLukasz Majewski		power-supply = <&reg_3v3>;
260335256aSLukasz Majewski		width-mm = <70>;
270335256aSLukasz Majewski		height-mm = <52>;
280335256aSLukasz Majewski
290335256aSLukasz Majewski		panel-timing {
300335256aSLukasz Majewski			clock-frequency = <6500000>;
310335256aSLukasz Majewski			hactive = <320>;
320335256aSLukasz Majewski			vactive = <240>;
330335256aSLukasz Majewski			hfront-porch = <20>;
340335256aSLukasz Majewski			hback-porch = <38>;
350335256aSLukasz Majewski			hsync-len = <30>;
360335256aSLukasz Majewski			vfront-porch = <4>;
370335256aSLukasz Majewski			vback-porch = <14>;
380335256aSLukasz Majewski			vsync-len = <4>;
390335256aSLukasz Majewski			hsync-active = <0>;
400335256aSLukasz Majewski			vsync-active = <0>;
410335256aSLukasz Majewski			de-active = <0>;
420335256aSLukasz Majewski			pixelclk-active = <1>;
430335256aSLukasz Majewski		};
440335256aSLukasz Majewski
450335256aSLukasz Majewski		port {
460335256aSLukasz Majewski			panel_in: endpoint {
470335256aSLukasz Majewski				remote-endpoint = <&display_out>;
480335256aSLukasz Majewski			};
490335256aSLukasz Majewski		};
500335256aSLukasz Majewski	};
510335256aSLukasz Majewski
520335256aSLukasz Majewski	poweroff {
530335256aSLukasz Majewski		compatible = "gpio-poweroff";
540335256aSLukasz Majewski		gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
550335256aSLukasz Majewski	};
560335256aSLukasz Majewski
570335256aSLukasz Majewski	sound {
580335256aSLukasz Majewski		compatible = "simple-audio-card";
590335256aSLukasz Majewski		simple-audio-card,name = "BTTC Audio";
600335256aSLukasz Majewski		simple-audio-card,widgets = "Speaker", "BTTC Speaker";
610335256aSLukasz Majewski		simple-audio-card,routing = "BTTC Speaker", "SPKOUTN", "BTTC Speaker", "SPKOUTP";
620335256aSLukasz Majewski
630335256aSLukasz Majewski		simple-audio-card,dai-link@0 {
640335256aSLukasz Majewski			format = "left_j";
650335256aSLukasz Majewski			bitclock-master = <&dai0_master>;
660335256aSLukasz Majewski			frame-master = <&dai0_master>;
670335256aSLukasz Majewski			mclk-fs = <256>;
680335256aSLukasz Majewski
690335256aSLukasz Majewski			dai0_master: cpu {
700335256aSLukasz Majewski				sound-dai = <&saif0>;
710335256aSLukasz Majewski			};
720335256aSLukasz Majewski
730335256aSLukasz Majewski			codec {
740335256aSLukasz Majewski				sound-dai = <&wm89xx>;
750335256aSLukasz Majewski				clocks = <&saif0>;
760335256aSLukasz Majewski			};
770335256aSLukasz Majewski		};
780335256aSLukasz Majewski	};
790335256aSLukasz Majewski
800335256aSLukasz Majewski	wifi_pwrseq: sdio-pwrseq {
810335256aSLukasz Majewski		compatible = "mmc-pwrseq-simple";
820335256aSLukasz Majewski		pinctrl-names = "default";
830335256aSLukasz Majewski		pinctrl-0 = <&wifi_en_pin_bttc>;
840335256aSLukasz Majewski		reset-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
850335256aSLukasz Majewski		/* W1-163 needs 60us for WL_EN to be low and */
860335256aSLukasz Majewski		/* 150ms after high before downloading FW is possible */
870335256aSLukasz Majewski		post-power-on-delay-ms = <200>;
880335256aSLukasz Majewski		power-off-delay-us = <100>;
890335256aSLukasz Majewski	};
900335256aSLukasz Majewski};
910335256aSLukasz Majewski
920335256aSLukasz Majewski&auart0 {
930335256aSLukasz Majewski	pinctrl-names = "default";
940335256aSLukasz Majewski	pinctrl-0 = <&auart0_2pins_a>;
950335256aSLukasz Majewski	status = "okay";
960335256aSLukasz Majewski};
970335256aSLukasz Majewski
980335256aSLukasz Majewski&auart3 {
990335256aSLukasz Majewski	pinctrl-names = "default";
1000335256aSLukasz Majewski	pinctrl-0 = <&auart3_pins_a>;
1010335256aSLukasz Majewski	uart-has-rtscts;
1020335256aSLukasz Majewski	status = "okay";
1030335256aSLukasz Majewski};
1040335256aSLukasz Majewski
1050335256aSLukasz Majewski&i2c0 {
1060335256aSLukasz Majewski	wm89xx: audio-codec@1a {
1070335256aSLukasz Majewski		compatible = "wlf,wm8940";
1080335256aSLukasz Majewski		reg = <0x1a>;
1090335256aSLukasz Majewski		#sound-dai-cells = <0>;
1100335256aSLukasz Majewski	};
1110335256aSLukasz Majewski};
1120335256aSLukasz Majewski
1130335256aSLukasz Majewski&lcdif {
1140335256aSLukasz Majewski	pinctrl-names = "default";
1150335256aSLukasz Majewski	pinctrl-0 = <&lcdif_24bit_pins_a>, <&lcdif_sync_pins_bttc>,
1160335256aSLukasz Majewski		    <&lcdif_reset_pins_bttc>;
1170335256aSLukasz Majewski	status = "okay";
1180335256aSLukasz Majewski
1190335256aSLukasz Majewski	port {
1200335256aSLukasz Majewski		display_out: endpoint {
1210335256aSLukasz Majewski			remote-endpoint = <&panel_in>;
1220335256aSLukasz Majewski		};
1230335256aSLukasz Majewski	};
1240335256aSLukasz Majewski};
1250335256aSLukasz Majewski
1260335256aSLukasz Majewski&mac0 {
1270335256aSLukasz Majewski	clocks = <&clks 57>, <&clks 57>, <&clks 64>;
1280335256aSLukasz Majewski	clock-names = "ipg", "ahb", "enet_out";
1290335256aSLukasz Majewski	phy-handle = <&mac0_phy>;
1300335256aSLukasz Majewski	phy-mode = "rmii";
1310335256aSLukasz Majewski	phy-supply = <&reg_3v3>;
1320335256aSLukasz Majewski	/*
1330335256aSLukasz Majewski	 * This MAC address is adjusted during production.
1340335256aSLukasz Majewski	 * Value specified below is used as a fallback during recovery.
1350335256aSLukasz Majewski	 */
1360335256aSLukasz Majewski	local-mac-address = [ 00 11 B8 00 BF 8A ];
1370335256aSLukasz Majewski	status = "okay";
1380335256aSLukasz Majewski
1390335256aSLukasz Majewski	mdio {
1400335256aSLukasz Majewski		#address-cells = <1>;
1410335256aSLukasz Majewski		#size-cells = <0>;
1420335256aSLukasz Majewski
1430335256aSLukasz Majewski		mac0_phy: ethernet-phy@0 {
1440335256aSLukasz Majewski			/* LAN8720Ai - PHY ID */
1450335256aSLukasz Majewski			compatible = "ethernet-phy-id0007.c0f0","ethernet-phy-ieee802.3-c22";
1460335256aSLukasz Majewski			reg = <0>;
1470335256aSLukasz Majewski			smsc,disable-energy-detect;
1480335256aSLukasz Majewski			max-speed = <100>;
1490335256aSLukasz Majewski			reset-gpios = <&gpio4 12 GPIO_ACTIVE_LOW>;
1500335256aSLukasz Majewski			reset-assert-us = <1000>;
1510335256aSLukasz Majewski			reset-deassert-us = <1000>;
1520335256aSLukasz Majewski		};
1530335256aSLukasz Majewski	};
1540335256aSLukasz Majewski};
1550335256aSLukasz Majewski
1560335256aSLukasz Majewski&pinctrl {
1570335256aSLukasz Majewski	pinctrl-names = "default";
1580335256aSLukasz Majewski	pinctrl-0 = <&hog_pins_a>, <&hog_pins_rev>;
1590335256aSLukasz Majewski
1600335256aSLukasz Majewski	hog_pins_a: hog@0 {
1610335256aSLukasz Majewski		reg = <0>;
1620335256aSLukasz Majewski		fsl,pinmux-ids = <
1630335256aSLukasz Majewski			MX28_PAD_GPMI_RDY2__GPIO_0_22
1640335256aSLukasz Majewski			MX28_PAD_GPMI_RDY3__GPIO_0_23
1650335256aSLukasz Majewski			MX28_PAD_GPMI_RDN__GPIO_0_24
1660335256aSLukasz Majewski			MX28_PAD_LCD_VSYNC__GPIO_1_28
1670335256aSLukasz Majewski			MX28_PAD_SSP2_SS1__GPIO_2_20
1680335256aSLukasz Majewski			MX28_PAD_SSP2_SS2__GPIO_2_21
1690335256aSLukasz Majewski			MX28_PAD_AUART2_CTS__GPIO_3_10
1700335256aSLukasz Majewski			MX28_PAD_AUART2_RTS__GPIO_3_11
1710335256aSLukasz Majewski			MX28_PAD_GPMI_WRN__GPIO_0_25
1720335256aSLukasz Majewski			MX28_PAD_ENET0_RXD2__GPIO_4_9
1730335256aSLukasz Majewski			MX28_PAD_ENET0_TXD2__GPIO_4_11
1740335256aSLukasz Majewski		>;
1750335256aSLukasz Majewski		fsl,drive-strength = <MXS_DRIVE_4mA>;
1760335256aSLukasz Majewski		fsl,voltage = <MXS_VOLTAGE_HIGH>;
1770335256aSLukasz Majewski		fsl,pull-up = <MXS_PULL_DISABLE>;
1780335256aSLukasz Majewski	};
1790335256aSLukasz Majewski
1800335256aSLukasz Majewski	hog_pins_rev: hog@1 {
1810335256aSLukasz Majewski		reg = <1>;
1820335256aSLukasz Majewski		fsl,pinmux-ids = <
1830335256aSLukasz Majewski			MX28_PAD_ENET0_RXD3__GPIO_4_10
1840335256aSLukasz Majewski			MX28_PAD_ENET0_TX_CLK__GPIO_4_5
1850335256aSLukasz Majewski			MX28_PAD_ENET0_COL__GPIO_4_14
1860335256aSLukasz Majewski			MX28_PAD_ENET0_CRS__GPIO_4_15
1870335256aSLukasz Majewski		>;
1880335256aSLukasz Majewski		fsl,drive-strength = <MXS_DRIVE_4mA>;
1890335256aSLukasz Majewski		fsl,voltage = <MXS_VOLTAGE_HIGH>;
1900335256aSLukasz Majewski		fsl,pull-up = <MXS_PULL_DISABLE>;
1910335256aSLukasz Majewski	};
1920335256aSLukasz Majewski
1930335256aSLukasz Majewski	keypad_pins_bttc: keypad-bttc@0 {
1940335256aSLukasz Majewski		reg = <0>;
1950335256aSLukasz Majewski		fsl,pinmux-ids = <
1960335256aSLukasz Majewski			MX28_PAD_GPMI_D00__GPIO_0_0
1970335256aSLukasz Majewski			MX28_PAD_AUART0_CTS__GPIO_3_2
1980335256aSLukasz Majewski			MX28_PAD_AUART0_RTS__GPIO_3_3
1990335256aSLukasz Majewski			MX28_PAD_GPMI_D03__GPIO_0_3
2000335256aSLukasz Majewski			MX28_PAD_GPMI_D04__GPIO_0_4
2010335256aSLukasz Majewski			MX28_PAD_GPMI_D05__GPIO_0_5
2020335256aSLukasz Majewski			MX28_PAD_GPMI_D06__GPIO_0_6
2030335256aSLukasz Majewski			MX28_PAD_GPMI_D07__GPIO_0_7
2040335256aSLukasz Majewski			MX28_PAD_GPMI_CE1N__GPIO_0_17
2050335256aSLukasz Majewski			MX28_PAD_GPMI_CE2N__GPIO_0_18
2060335256aSLukasz Majewski			MX28_PAD_GPMI_CE3N__GPIO_0_19
2070335256aSLukasz Majewski			MX28_PAD_GPMI_RDY0__GPIO_0_20
2080335256aSLukasz Majewski		>;
2090335256aSLukasz Majewski		fsl,drive-strength = <MXS_DRIVE_4mA>;
2100335256aSLukasz Majewski		fsl,voltage = <MXS_VOLTAGE_HIGH>;
2110335256aSLukasz Majewski		fsl,pull-up = <MXS_PULL_DISABLE>;
2120335256aSLukasz Majewski	};
2130335256aSLukasz Majewski
2140335256aSLukasz Majewski	lcdif_sync_pins_bttc: lcdif-bttc@0 {
2150335256aSLukasz Majewski		reg = <0>;
2160335256aSLukasz Majewski		fsl,pinmux-ids = <
2170335256aSLukasz Majewski			MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
2180335256aSLukasz Majewski			MX28_PAD_LCD_ENABLE__LCD_ENABLE
2190335256aSLukasz Majewski			MX28_PAD_LCD_HSYNC__LCD_HSYNC
2200335256aSLukasz Majewski			MX28_PAD_LCD_RD_E__LCD_VSYNC
2210335256aSLukasz Majewski		>;
2220335256aSLukasz Majewski		fsl,drive-strength = <MXS_DRIVE_4mA>;
2230335256aSLukasz Majewski		fsl,voltage = <MXS_VOLTAGE_HIGH>;
2240335256aSLukasz Majewski		fsl,pull-up = <MXS_PULL_DISABLE>;
2250335256aSLukasz Majewski	};
2260335256aSLukasz Majewski
2270335256aSLukasz Majewski	lcdif_reset_pins_bttc: lcdif-bttc@1 {
2280335256aSLukasz Majewski		reg = <1>;
2290335256aSLukasz Majewski		fsl,pinmux-ids = <
2300335256aSLukasz Majewski			MX28_PAD_LCD_RESET__GPIO_3_30
2310335256aSLukasz Majewski		>;
2320335256aSLukasz Majewski		fsl,drive-strength = <MXS_DRIVE_4mA>;
2330335256aSLukasz Majewski		fsl,voltage = <MXS_VOLTAGE_HIGH>;
2340335256aSLukasz Majewski		fsl,pull-up = <MXS_PULL_ENABLE>;
2350335256aSLukasz Majewski	};
2360335256aSLukasz Majewski
2370335256aSLukasz Majewski	ssp1_sdio_pins_a: ssp1-sdio@0 {
2380335256aSLukasz Majewski		reg = <0>;
2390335256aSLukasz Majewski		fsl,pinmux-ids = <
2400335256aSLukasz Majewski			MX28_PAD_SSP1_DATA0__SSP1_D0
2410335256aSLukasz Majewski			MX28_PAD_GPMI_D01__SSP1_D1
2420335256aSLukasz Majewski			MX28_PAD_GPMI_D02__SSP1_D2
2430335256aSLukasz Majewski			MX28_PAD_SSP1_DATA3__SSP1_D3
2440335256aSLukasz Majewski			MX28_PAD_SSP1_CMD__SSP1_CMD
2450335256aSLukasz Majewski			MX28_PAD_SSP1_SCK__SSP1_SCK
2460335256aSLukasz Majewski		>;
2470335256aSLukasz Majewski		fsl,drive-strength = <MXS_DRIVE_8mA>;
2480335256aSLukasz Majewski		fsl,voltage = <MXS_VOLTAGE_HIGH>;
2490335256aSLukasz Majewski		fsl,pull-up = <MXS_PULL_ENABLE>;
2500335256aSLukasz Majewski	};
2510335256aSLukasz Majewski
2520335256aSLukasz Majewski	wifi_en_pin_bttc: wifi-en-pin@0 {
2530335256aSLukasz Majewski		reg = <0>;
2540335256aSLukasz Majewski		fsl,pinmux-ids = <
2550335256aSLukasz Majewski			MX28_PAD_GPMI_CLE__GPIO_0_27
2560335256aSLukasz Majewski		>;
2570335256aSLukasz Majewski		fsl,drive-strength = <MXS_DRIVE_8mA>;
2580335256aSLukasz Majewski		fsl,voltage = <MXS_VOLTAGE_HIGH>;
2590335256aSLukasz Majewski		fsl,pull-up = <MXS_PULL_ENABLE>;
2600335256aSLukasz Majewski	};
2610335256aSLukasz Majewski};
2620335256aSLukasz Majewski
2630335256aSLukasz Majewski&pwm {
2640335256aSLukasz Majewski	pinctrl-names = "default";
2650335256aSLukasz Majewski	pinctrl-0 = <&pwm3_pins_a>;
2660335256aSLukasz Majewski	status = "okay";
2670335256aSLukasz Majewski};
2680335256aSLukasz Majewski
2690335256aSLukasz Majewski&reg_usb_5v {
2700335256aSLukasz Majewski	gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
2710335256aSLukasz Majewski};
2720335256aSLukasz Majewski
2730335256aSLukasz Majewski&saif0 {
2740335256aSLukasz Majewski	pinctrl-names = "default";
2750335256aSLukasz Majewski	pinctrl-0 = <&saif0_pins_a>;
2760335256aSLukasz Majewski	#sound-dai-cells = <0>;
2770335256aSLukasz Majewski	assigned-clocks = <&clks 53>;
2780335256aSLukasz Majewski	assigned-clock-rates = <12000000>;
2790335256aSLukasz Majewski	status = "okay";
2800335256aSLukasz Majewski};
2810335256aSLukasz Majewski
2820335256aSLukasz Majewski&saif1 {
2830335256aSLukasz Majewski	pinctrl-names = "default";
2840335256aSLukasz Majewski	pinctrl-0 = <&saif1_pins_a>;
2850335256aSLukasz Majewski	#sound-dai-cells = <0>;
2860335256aSLukasz Majewski	fsl,saif-master = <&saif0>;
2870335256aSLukasz Majewski	status = "okay";
2880335256aSLukasz Majewski};
2890335256aSLukasz Majewski
2900335256aSLukasz Majewski&ssp1 {
2910335256aSLukasz Majewski	compatible = "fsl,imx28-mmc";
2920335256aSLukasz Majewski	pinctrl-names = "default";
2930335256aSLukasz Majewski	pinctrl-0 = <&ssp1_sdio_pins_a>;
2940335256aSLukasz Majewski	bus-width = <4>;
2950335256aSLukasz Majewski	no-1-8-v;       /* force 3.3V VIO */
2960335256aSLukasz Majewski	non-removable;
2970335256aSLukasz Majewski	vmmc-supply = <&reg_3v3>;
2980335256aSLukasz Majewski	mmc-pwrseq = <&wifi_pwrseq>;
2990335256aSLukasz Majewski	keep-power-in-suspend;
3000335256aSLukasz Majewski	status = "okay";
3010335256aSLukasz Majewski
302*c7e5d6b4SKrzysztof Kozlowski	wifi@1 {
3030335256aSLukasz Majewski		reg = <1>;
3040335256aSLukasz Majewski		compatible = "brcm,bcm4329-fmac";
3050335256aSLukasz Majewski	};
3060335256aSLukasz Majewski};
3070335256aSLukasz Majewski
3080335256aSLukasz Majewski&ssp2 {
3090335256aSLukasz Majewski	compatible = "fsl,imx28-spi";
3100335256aSLukasz Majewski	pinctrl-names = "default";
3110335256aSLukasz Majewski	pinctrl-0 = <&spi2_pins_a>;
3120335256aSLukasz Majewski	status = "okay";
3130335256aSLukasz Majewski};
314