18ccc0d23SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-or-later OR MIT 28ccc0d23SEmmanuel Vadot/* 38ccc0d23SEmmanuel Vadot * Copyright 2024 48ccc0d23SEmmanuel Vadot * Lukasz Majewski, DENX Software Engineering, lukma@denx.de 58ccc0d23SEmmanuel Vadot */ 68ccc0d23SEmmanuel Vadot/dts-v1/; 78ccc0d23SEmmanuel Vadot#include "imx28-lwe.dtsi" 88ccc0d23SEmmanuel Vadot 98ccc0d23SEmmanuel Vadot/ { 108ccc0d23SEmmanuel Vadot model = "BTT3"; 118ccc0d23SEmmanuel Vadot 128ccc0d23SEmmanuel Vadot compatible = "lwn,imx28-btt3", "fsl,imx28"; 138ccc0d23SEmmanuel Vadot 148ccc0d23SEmmanuel Vadot chosen { 158ccc0d23SEmmanuel Vadot bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait console=ttyAMA0,115200 panic=1 quiet"; 168ccc0d23SEmmanuel Vadot }; 178ccc0d23SEmmanuel Vadot 188ccc0d23SEmmanuel Vadot memory@40000000 { 198ccc0d23SEmmanuel Vadot reg = <0x40000000 0x10000000>; 208ccc0d23SEmmanuel Vadot device_type = "memory"; 218ccc0d23SEmmanuel Vadot }; 228ccc0d23SEmmanuel Vadot 238ccc0d23SEmmanuel Vadot panel { 248ccc0d23SEmmanuel Vadot compatible = "powertip,hx8238a", "panel-dpi"; 258ccc0d23SEmmanuel Vadot power-supply = <®_3v3>; 268ccc0d23SEmmanuel Vadot width-mm = <70>; 278ccc0d23SEmmanuel Vadot height-mm = <52>; 288ccc0d23SEmmanuel Vadot 298ccc0d23SEmmanuel Vadot panel-timing { 308ccc0d23SEmmanuel Vadot clock-frequency = <6500000>; 318ccc0d23SEmmanuel Vadot hactive = <320>; 328ccc0d23SEmmanuel Vadot vactive = <240>; 338ccc0d23SEmmanuel Vadot hfront-porch = <20>; 348ccc0d23SEmmanuel Vadot hback-porch = <38>; 358ccc0d23SEmmanuel Vadot hsync-len = <30>; 368ccc0d23SEmmanuel Vadot vfront-porch = <4>; 378ccc0d23SEmmanuel Vadot vback-porch = <14>; 388ccc0d23SEmmanuel Vadot vsync-len = <4>; 398ccc0d23SEmmanuel Vadot hsync-active = <0>; 408ccc0d23SEmmanuel Vadot vsync-active = <0>; 418ccc0d23SEmmanuel Vadot de-active = <0>; 428ccc0d23SEmmanuel Vadot pixelclk-active = <1>; 438ccc0d23SEmmanuel Vadot }; 448ccc0d23SEmmanuel Vadot 458ccc0d23SEmmanuel Vadot port { 468ccc0d23SEmmanuel Vadot panel_in: endpoint { 478ccc0d23SEmmanuel Vadot remote-endpoint = <&display_out>; 488ccc0d23SEmmanuel Vadot }; 498ccc0d23SEmmanuel Vadot }; 508ccc0d23SEmmanuel Vadot }; 518ccc0d23SEmmanuel Vadot 528ccc0d23SEmmanuel Vadot poweroff { 538ccc0d23SEmmanuel Vadot compatible = "gpio-poweroff"; 548ccc0d23SEmmanuel Vadot gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>; 558ccc0d23SEmmanuel Vadot }; 568ccc0d23SEmmanuel Vadot 578ccc0d23SEmmanuel Vadot sound { 588ccc0d23SEmmanuel Vadot compatible = "simple-audio-card"; 598ccc0d23SEmmanuel Vadot simple-audio-card,name = "BTTC Audio"; 608ccc0d23SEmmanuel Vadot simple-audio-card,widgets = "Speaker", "BTTC Speaker"; 618ccc0d23SEmmanuel Vadot simple-audio-card,routing = "BTTC Speaker", "SPKOUTN", "BTTC Speaker", "SPKOUTP"; 628ccc0d23SEmmanuel Vadot 638ccc0d23SEmmanuel Vadot simple-audio-card,dai-link@0 { 648ccc0d23SEmmanuel Vadot format = "left_j"; 658ccc0d23SEmmanuel Vadot bitclock-master = <&dai0_master>; 668ccc0d23SEmmanuel Vadot frame-master = <&dai0_master>; 678ccc0d23SEmmanuel Vadot mclk-fs = <256>; 688ccc0d23SEmmanuel Vadot 698ccc0d23SEmmanuel Vadot dai0_master: cpu { 708ccc0d23SEmmanuel Vadot sound-dai = <&saif0>; 718ccc0d23SEmmanuel Vadot }; 728ccc0d23SEmmanuel Vadot 738ccc0d23SEmmanuel Vadot codec { 748ccc0d23SEmmanuel Vadot sound-dai = <&wm89xx>; 758ccc0d23SEmmanuel Vadot clocks = <&saif0>; 768ccc0d23SEmmanuel Vadot }; 778ccc0d23SEmmanuel Vadot }; 788ccc0d23SEmmanuel Vadot }; 798ccc0d23SEmmanuel Vadot 808ccc0d23SEmmanuel Vadot wifi_pwrseq: sdio-pwrseq { 818ccc0d23SEmmanuel Vadot compatible = "mmc-pwrseq-simple"; 828ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 838ccc0d23SEmmanuel Vadot pinctrl-0 = <&wifi_en_pin_bttc>; 848ccc0d23SEmmanuel Vadot reset-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>; 858ccc0d23SEmmanuel Vadot /* W1-163 needs 60us for WL_EN to be low and */ 868ccc0d23SEmmanuel Vadot /* 150ms after high before downloading FW is possible */ 878ccc0d23SEmmanuel Vadot post-power-on-delay-ms = <200>; 888ccc0d23SEmmanuel Vadot power-off-delay-us = <100>; 898ccc0d23SEmmanuel Vadot }; 908ccc0d23SEmmanuel Vadot}; 918ccc0d23SEmmanuel Vadot 928ccc0d23SEmmanuel Vadot&auart0 { 938ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 948ccc0d23SEmmanuel Vadot pinctrl-0 = <&auart0_2pins_a>; 958ccc0d23SEmmanuel Vadot status = "okay"; 968ccc0d23SEmmanuel Vadot}; 978ccc0d23SEmmanuel Vadot 988ccc0d23SEmmanuel Vadot&auart3 { 998ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 1008ccc0d23SEmmanuel Vadot pinctrl-0 = <&auart3_pins_a>; 1018ccc0d23SEmmanuel Vadot uart-has-rtscts; 1028ccc0d23SEmmanuel Vadot status = "okay"; 1038ccc0d23SEmmanuel Vadot}; 1048ccc0d23SEmmanuel Vadot 1058ccc0d23SEmmanuel Vadot&i2c0 { 1068ccc0d23SEmmanuel Vadot wm89xx: audio-codec@1a { 1078ccc0d23SEmmanuel Vadot compatible = "wlf,wm8940"; 1088ccc0d23SEmmanuel Vadot reg = <0x1a>; 1098ccc0d23SEmmanuel Vadot #sound-dai-cells = <0>; 1108ccc0d23SEmmanuel Vadot }; 1118ccc0d23SEmmanuel Vadot}; 1128ccc0d23SEmmanuel Vadot 1138ccc0d23SEmmanuel Vadot&lcdif { 1148ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 1158ccc0d23SEmmanuel Vadot pinctrl-0 = <&lcdif_24bit_pins_a>, <&lcdif_sync_pins_bttc>, 1168ccc0d23SEmmanuel Vadot <&lcdif_reset_pins_bttc>; 1178ccc0d23SEmmanuel Vadot status = "okay"; 1188ccc0d23SEmmanuel Vadot 1198ccc0d23SEmmanuel Vadot port { 1208ccc0d23SEmmanuel Vadot display_out: endpoint { 1218ccc0d23SEmmanuel Vadot remote-endpoint = <&panel_in>; 1228ccc0d23SEmmanuel Vadot }; 1238ccc0d23SEmmanuel Vadot }; 1248ccc0d23SEmmanuel Vadot}; 1258ccc0d23SEmmanuel Vadot 1268ccc0d23SEmmanuel Vadot&mac0 { 1278ccc0d23SEmmanuel Vadot clocks = <&clks 57>, <&clks 57>, <&clks 64>; 1288ccc0d23SEmmanuel Vadot clock-names = "ipg", "ahb", "enet_out"; 1298ccc0d23SEmmanuel Vadot phy-handle = <&mac0_phy>; 1308ccc0d23SEmmanuel Vadot phy-mode = "rmii"; 1318ccc0d23SEmmanuel Vadot phy-supply = <®_3v3>; 1328ccc0d23SEmmanuel Vadot /* 1338ccc0d23SEmmanuel Vadot * This MAC address is adjusted during production. 1348ccc0d23SEmmanuel Vadot * Value specified below is used as a fallback during recovery. 1358ccc0d23SEmmanuel Vadot */ 1368ccc0d23SEmmanuel Vadot local-mac-address = [ 00 11 B8 00 BF 8A ]; 1378ccc0d23SEmmanuel Vadot status = "okay"; 1388ccc0d23SEmmanuel Vadot 1398ccc0d23SEmmanuel Vadot mdio { 1408ccc0d23SEmmanuel Vadot #address-cells = <1>; 1418ccc0d23SEmmanuel Vadot #size-cells = <0>; 1428ccc0d23SEmmanuel Vadot 1438ccc0d23SEmmanuel Vadot mac0_phy: ethernet-phy@0 { 1448ccc0d23SEmmanuel Vadot /* LAN8720Ai - PHY ID */ 1458ccc0d23SEmmanuel Vadot compatible = "ethernet-phy-id0007.c0f0","ethernet-phy-ieee802.3-c22"; 1468ccc0d23SEmmanuel Vadot reg = <0>; 1478ccc0d23SEmmanuel Vadot smsc,disable-energy-detect; 1488ccc0d23SEmmanuel Vadot max-speed = <100>; 1498ccc0d23SEmmanuel Vadot reset-gpios = <&gpio4 12 GPIO_ACTIVE_LOW>; 1508ccc0d23SEmmanuel Vadot reset-assert-us = <1000>; 1518ccc0d23SEmmanuel Vadot reset-deassert-us = <1000>; 1528ccc0d23SEmmanuel Vadot }; 1538ccc0d23SEmmanuel Vadot }; 1548ccc0d23SEmmanuel Vadot}; 1558ccc0d23SEmmanuel Vadot 1568ccc0d23SEmmanuel Vadot&pinctrl { 1578ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 1588ccc0d23SEmmanuel Vadot pinctrl-0 = <&hog_pins_a>, <&hog_pins_rev>; 1598ccc0d23SEmmanuel Vadot 1608ccc0d23SEmmanuel Vadot hog_pins_a: hog@0 { 1618ccc0d23SEmmanuel Vadot reg = <0>; 1628ccc0d23SEmmanuel Vadot fsl,pinmux-ids = < 1638ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_RDY2__GPIO_0_22 1648ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_RDY3__GPIO_0_23 1658ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_RDN__GPIO_0_24 1668ccc0d23SEmmanuel Vadot MX28_PAD_LCD_VSYNC__GPIO_1_28 1678ccc0d23SEmmanuel Vadot MX28_PAD_SSP2_SS1__GPIO_2_20 1688ccc0d23SEmmanuel Vadot MX28_PAD_SSP2_SS2__GPIO_2_21 1698ccc0d23SEmmanuel Vadot MX28_PAD_AUART2_CTS__GPIO_3_10 1708ccc0d23SEmmanuel Vadot MX28_PAD_AUART2_RTS__GPIO_3_11 1718ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_WRN__GPIO_0_25 1728ccc0d23SEmmanuel Vadot MX28_PAD_ENET0_RXD2__GPIO_4_9 1738ccc0d23SEmmanuel Vadot MX28_PAD_ENET0_TXD2__GPIO_4_11 1748ccc0d23SEmmanuel Vadot >; 1758ccc0d23SEmmanuel Vadot fsl,drive-strength = <MXS_DRIVE_4mA>; 1768ccc0d23SEmmanuel Vadot fsl,voltage = <MXS_VOLTAGE_HIGH>; 1778ccc0d23SEmmanuel Vadot fsl,pull-up = <MXS_PULL_DISABLE>; 1788ccc0d23SEmmanuel Vadot }; 1798ccc0d23SEmmanuel Vadot 1808ccc0d23SEmmanuel Vadot hog_pins_rev: hog@1 { 1818ccc0d23SEmmanuel Vadot reg = <1>; 1828ccc0d23SEmmanuel Vadot fsl,pinmux-ids = < 1838ccc0d23SEmmanuel Vadot MX28_PAD_ENET0_RXD3__GPIO_4_10 1848ccc0d23SEmmanuel Vadot MX28_PAD_ENET0_TX_CLK__GPIO_4_5 1858ccc0d23SEmmanuel Vadot MX28_PAD_ENET0_COL__GPIO_4_14 1868ccc0d23SEmmanuel Vadot MX28_PAD_ENET0_CRS__GPIO_4_15 1878ccc0d23SEmmanuel Vadot >; 1888ccc0d23SEmmanuel Vadot fsl,drive-strength = <MXS_DRIVE_4mA>; 1898ccc0d23SEmmanuel Vadot fsl,voltage = <MXS_VOLTAGE_HIGH>; 1908ccc0d23SEmmanuel Vadot fsl,pull-up = <MXS_PULL_DISABLE>; 1918ccc0d23SEmmanuel Vadot }; 1928ccc0d23SEmmanuel Vadot 1938ccc0d23SEmmanuel Vadot keypad_pins_bttc: keypad-bttc@0 { 1948ccc0d23SEmmanuel Vadot reg = <0>; 1958ccc0d23SEmmanuel Vadot fsl,pinmux-ids = < 1968ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D00__GPIO_0_0 1978ccc0d23SEmmanuel Vadot MX28_PAD_AUART0_CTS__GPIO_3_2 1988ccc0d23SEmmanuel Vadot MX28_PAD_AUART0_RTS__GPIO_3_3 1998ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D03__GPIO_0_3 2008ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D04__GPIO_0_4 2018ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D05__GPIO_0_5 2028ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D06__GPIO_0_6 2038ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D07__GPIO_0_7 2048ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_CE1N__GPIO_0_17 2058ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_CE2N__GPIO_0_18 2068ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_CE3N__GPIO_0_19 2078ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_RDY0__GPIO_0_20 2088ccc0d23SEmmanuel Vadot >; 2098ccc0d23SEmmanuel Vadot fsl,drive-strength = <MXS_DRIVE_4mA>; 2108ccc0d23SEmmanuel Vadot fsl,voltage = <MXS_VOLTAGE_HIGH>; 2118ccc0d23SEmmanuel Vadot fsl,pull-up = <MXS_PULL_DISABLE>; 2128ccc0d23SEmmanuel Vadot }; 2138ccc0d23SEmmanuel Vadot 2148ccc0d23SEmmanuel Vadot lcdif_sync_pins_bttc: lcdif-bttc@0 { 2158ccc0d23SEmmanuel Vadot reg = <0>; 2168ccc0d23SEmmanuel Vadot fsl,pinmux-ids = < 2178ccc0d23SEmmanuel Vadot MX28_PAD_LCD_DOTCLK__LCD_DOTCLK 2188ccc0d23SEmmanuel Vadot MX28_PAD_LCD_ENABLE__LCD_ENABLE 2198ccc0d23SEmmanuel Vadot MX28_PAD_LCD_HSYNC__LCD_HSYNC 2208ccc0d23SEmmanuel Vadot MX28_PAD_LCD_RD_E__LCD_VSYNC 2218ccc0d23SEmmanuel Vadot >; 2228ccc0d23SEmmanuel Vadot fsl,drive-strength = <MXS_DRIVE_4mA>; 2238ccc0d23SEmmanuel Vadot fsl,voltage = <MXS_VOLTAGE_HIGH>; 2248ccc0d23SEmmanuel Vadot fsl,pull-up = <MXS_PULL_DISABLE>; 2258ccc0d23SEmmanuel Vadot }; 2268ccc0d23SEmmanuel Vadot 2278ccc0d23SEmmanuel Vadot lcdif_reset_pins_bttc: lcdif-bttc@1 { 2288ccc0d23SEmmanuel Vadot reg = <1>; 2298ccc0d23SEmmanuel Vadot fsl,pinmux-ids = < 2308ccc0d23SEmmanuel Vadot MX28_PAD_LCD_RESET__GPIO_3_30 2318ccc0d23SEmmanuel Vadot >; 2328ccc0d23SEmmanuel Vadot fsl,drive-strength = <MXS_DRIVE_4mA>; 2338ccc0d23SEmmanuel Vadot fsl,voltage = <MXS_VOLTAGE_HIGH>; 2348ccc0d23SEmmanuel Vadot fsl,pull-up = <MXS_PULL_ENABLE>; 2358ccc0d23SEmmanuel Vadot }; 2368ccc0d23SEmmanuel Vadot 2378ccc0d23SEmmanuel Vadot ssp1_sdio_pins_a: ssp1-sdio@0 { 2388ccc0d23SEmmanuel Vadot reg = <0>; 2398ccc0d23SEmmanuel Vadot fsl,pinmux-ids = < 2408ccc0d23SEmmanuel Vadot MX28_PAD_SSP1_DATA0__SSP1_D0 2418ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D01__SSP1_D1 2428ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_D02__SSP1_D2 2438ccc0d23SEmmanuel Vadot MX28_PAD_SSP1_DATA3__SSP1_D3 2448ccc0d23SEmmanuel Vadot MX28_PAD_SSP1_CMD__SSP1_CMD 2458ccc0d23SEmmanuel Vadot MX28_PAD_SSP1_SCK__SSP1_SCK 2468ccc0d23SEmmanuel Vadot >; 2478ccc0d23SEmmanuel Vadot fsl,drive-strength = <MXS_DRIVE_8mA>; 2488ccc0d23SEmmanuel Vadot fsl,voltage = <MXS_VOLTAGE_HIGH>; 2498ccc0d23SEmmanuel Vadot fsl,pull-up = <MXS_PULL_ENABLE>; 2508ccc0d23SEmmanuel Vadot }; 2518ccc0d23SEmmanuel Vadot 2528ccc0d23SEmmanuel Vadot wifi_en_pin_bttc: wifi-en-pin@0 { 2538ccc0d23SEmmanuel Vadot reg = <0>; 2548ccc0d23SEmmanuel Vadot fsl,pinmux-ids = < 2558ccc0d23SEmmanuel Vadot MX28_PAD_GPMI_CLE__GPIO_0_27 2568ccc0d23SEmmanuel Vadot >; 2578ccc0d23SEmmanuel Vadot fsl,drive-strength = <MXS_DRIVE_8mA>; 2588ccc0d23SEmmanuel Vadot fsl,voltage = <MXS_VOLTAGE_HIGH>; 2598ccc0d23SEmmanuel Vadot fsl,pull-up = <MXS_PULL_ENABLE>; 2608ccc0d23SEmmanuel Vadot }; 2618ccc0d23SEmmanuel Vadot}; 2628ccc0d23SEmmanuel Vadot 2638ccc0d23SEmmanuel Vadot&pwm { 2648ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 2658ccc0d23SEmmanuel Vadot pinctrl-0 = <&pwm3_pins_a>; 2668ccc0d23SEmmanuel Vadot status = "okay"; 2678ccc0d23SEmmanuel Vadot}; 2688ccc0d23SEmmanuel Vadot 2698ccc0d23SEmmanuel Vadot®_usb_5v { 2708ccc0d23SEmmanuel Vadot gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>; 2718ccc0d23SEmmanuel Vadot}; 2728ccc0d23SEmmanuel Vadot 2738ccc0d23SEmmanuel Vadot&saif0 { 2748ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 2758ccc0d23SEmmanuel Vadot pinctrl-0 = <&saif0_pins_a>; 2768ccc0d23SEmmanuel Vadot #sound-dai-cells = <0>; 2778ccc0d23SEmmanuel Vadot assigned-clocks = <&clks 53>; 2788ccc0d23SEmmanuel Vadot assigned-clock-rates = <12000000>; 2798ccc0d23SEmmanuel Vadot status = "okay"; 2808ccc0d23SEmmanuel Vadot}; 2818ccc0d23SEmmanuel Vadot 2828ccc0d23SEmmanuel Vadot&saif1 { 2838ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 2848ccc0d23SEmmanuel Vadot pinctrl-0 = <&saif1_pins_a>; 2858ccc0d23SEmmanuel Vadot #sound-dai-cells = <0>; 2868ccc0d23SEmmanuel Vadot fsl,saif-master = <&saif0>; 2878ccc0d23SEmmanuel Vadot status = "okay"; 2888ccc0d23SEmmanuel Vadot}; 2898ccc0d23SEmmanuel Vadot 2908ccc0d23SEmmanuel Vadot&ssp1 { 2918ccc0d23SEmmanuel Vadot compatible = "fsl,imx28-mmc"; 2928ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 2938ccc0d23SEmmanuel Vadot pinctrl-0 = <&ssp1_sdio_pins_a>; 2948ccc0d23SEmmanuel Vadot bus-width = <4>; 2958ccc0d23SEmmanuel Vadot no-1-8-v; /* force 3.3V VIO */ 2968ccc0d23SEmmanuel Vadot non-removable; 2978ccc0d23SEmmanuel Vadot vmmc-supply = <®_3v3>; 2988ccc0d23SEmmanuel Vadot mmc-pwrseq = <&wifi_pwrseq>; 2998ccc0d23SEmmanuel Vadot keep-power-in-suspend; 3008ccc0d23SEmmanuel Vadot status = "okay"; 3018ccc0d23SEmmanuel Vadot 302*ae5de77eSEmmanuel Vadot wifi@1 { 3038ccc0d23SEmmanuel Vadot reg = <1>; 3048ccc0d23SEmmanuel Vadot compatible = "brcm,bcm4329-fmac"; 3058ccc0d23SEmmanuel Vadot }; 3068ccc0d23SEmmanuel Vadot}; 3078ccc0d23SEmmanuel Vadot 3088ccc0d23SEmmanuel Vadot&ssp2 { 3098ccc0d23SEmmanuel Vadot compatible = "fsl,imx28-spi"; 3108ccc0d23SEmmanuel Vadot pinctrl-names = "default"; 3118ccc0d23SEmmanuel Vadot pinctrl-0 = <&spi2_pins_a>; 3128ccc0d23SEmmanuel Vadot status = "okay"; 3138ccc0d23SEmmanuel Vadot}; 314