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 = <®_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 = <®_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®_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 = <®_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