// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /* * Copyright 2024 * Lukasz Majewski, DENX Software Engineering, lukma@denx.de */ /dts-v1/; #include "imx28-lwe.dtsi" / { model = "BTT3"; compatible = "lwn,imx28-btt3", "fsl,imx28"; chosen { bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait console=ttyAMA0,115200 panic=1 quiet"; }; memory@40000000 { reg = <0x40000000 0x10000000>; device_type = "memory"; }; panel { compatible = "powertip,hx8238a", "panel-dpi"; power-supply = <®_3v3>; width-mm = <70>; height-mm = <52>; panel-timing { clock-frequency = <6500000>; hactive = <320>; vactive = <240>; hfront-porch = <20>; hback-porch = <38>; hsync-len = <30>; vfront-porch = <4>; vback-porch = <14>; vsync-len = <4>; hsync-active = <0>; vsync-active = <0>; de-active = <0>; pixelclk-active = <1>; }; port { panel_in: endpoint { remote-endpoint = <&display_out>; }; }; }; poweroff { compatible = "gpio-poweroff"; gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>; }; sound { compatible = "simple-audio-card"; simple-audio-card,name = "BTTC Audio"; simple-audio-card,widgets = "Speaker", "BTTC Speaker"; simple-audio-card,routing = "BTTC Speaker", "SPKOUTN", "BTTC Speaker", "SPKOUTP"; simple-audio-card,dai-link@0 { format = "left_j"; bitclock-master = <&dai0_master>; frame-master = <&dai0_master>; mclk-fs = <256>; dai0_master: cpu { sound-dai = <&saif0>; }; codec { sound-dai = <&wm89xx>; clocks = <&saif0>; }; }; }; wifi_pwrseq: sdio-pwrseq { compatible = "mmc-pwrseq-simple"; pinctrl-names = "default"; pinctrl-0 = <&wifi_en_pin_bttc>; reset-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>; /* W1-163 needs 60us for WL_EN to be low and */ /* 150ms after high before downloading FW is possible */ post-power-on-delay-ms = <200>; power-off-delay-us = <100>; }; }; &auart0 { pinctrl-names = "default"; pinctrl-0 = <&auart0_2pins_a>; status = "okay"; }; &auart3 { pinctrl-names = "default"; pinctrl-0 = <&auart3_pins_a>; uart-has-rtscts; status = "okay"; }; &i2c0 { wm89xx: audio-codec@1a { compatible = "wlf,wm8940"; reg = <0x1a>; #sound-dai-cells = <0>; }; }; &lcdif { pinctrl-names = "default"; pinctrl-0 = <&lcdif_24bit_pins_a>, <&lcdif_sync_pins_bttc>, <&lcdif_reset_pins_bttc>; status = "okay"; port { display_out: endpoint { remote-endpoint = <&panel_in>; }; }; }; &mac0 { clocks = <&clks 57>, <&clks 57>, <&clks 64>; clock-names = "ipg", "ahb", "enet_out"; phy-handle = <&mac0_phy>; phy-mode = "rmii"; phy-supply = <®_3v3>; /* * This MAC address is adjusted during production. * Value specified below is used as a fallback during recovery. */ local-mac-address = [ 00 11 B8 00 BF 8A ]; status = "okay"; mdio { #address-cells = <1>; #size-cells = <0>; mac0_phy: ethernet-phy@0 { /* LAN8720Ai - PHY ID */ compatible = "ethernet-phy-id0007.c0f0","ethernet-phy-ieee802.3-c22"; reg = <0>; smsc,disable-energy-detect; max-speed = <100>; reset-gpios = <&gpio4 12 GPIO_ACTIVE_LOW>; reset-assert-us = <1000>; reset-deassert-us = <1000>; }; }; }; &pinctrl { pinctrl-names = "default"; pinctrl-0 = <&hog_pins_a>, <&hog_pins_rev>; hog_pins_a: hog@0 { reg = <0>; fsl,pinmux-ids = < MX28_PAD_GPMI_RDY2__GPIO_0_22 MX28_PAD_GPMI_RDY3__GPIO_0_23 MX28_PAD_GPMI_RDN__GPIO_0_24 MX28_PAD_LCD_VSYNC__GPIO_1_28 MX28_PAD_SSP2_SS1__GPIO_2_20 MX28_PAD_SSP2_SS2__GPIO_2_21 MX28_PAD_AUART2_CTS__GPIO_3_10 MX28_PAD_AUART2_RTS__GPIO_3_11 MX28_PAD_GPMI_WRN__GPIO_0_25 MX28_PAD_ENET0_RXD2__GPIO_4_9 MX28_PAD_ENET0_TXD2__GPIO_4_11 >; fsl,drive-strength = ; fsl,voltage = ; fsl,pull-up = ; }; hog_pins_rev: hog@1 { reg = <1>; fsl,pinmux-ids = < MX28_PAD_ENET0_RXD3__GPIO_4_10 MX28_PAD_ENET0_TX_CLK__GPIO_4_5 MX28_PAD_ENET0_COL__GPIO_4_14 MX28_PAD_ENET0_CRS__GPIO_4_15 >; fsl,drive-strength = ; fsl,voltage = ; fsl,pull-up = ; }; keypad_pins_bttc: keypad-bttc@0 { reg = <0>; fsl,pinmux-ids = < MX28_PAD_GPMI_D00__GPIO_0_0 MX28_PAD_AUART0_CTS__GPIO_3_2 MX28_PAD_AUART0_RTS__GPIO_3_3 MX28_PAD_GPMI_D03__GPIO_0_3 MX28_PAD_GPMI_D04__GPIO_0_4 MX28_PAD_GPMI_D05__GPIO_0_5 MX28_PAD_GPMI_D06__GPIO_0_6 MX28_PAD_GPMI_D07__GPIO_0_7 MX28_PAD_GPMI_CE1N__GPIO_0_17 MX28_PAD_GPMI_CE2N__GPIO_0_18 MX28_PAD_GPMI_CE3N__GPIO_0_19 MX28_PAD_GPMI_RDY0__GPIO_0_20 >; fsl,drive-strength = ; fsl,voltage = ; fsl,pull-up = ; }; lcdif_sync_pins_bttc: lcdif-bttc@0 { reg = <0>; fsl,pinmux-ids = < MX28_PAD_LCD_DOTCLK__LCD_DOTCLK MX28_PAD_LCD_ENABLE__LCD_ENABLE MX28_PAD_LCD_HSYNC__LCD_HSYNC MX28_PAD_LCD_RD_E__LCD_VSYNC >; fsl,drive-strength = ; fsl,voltage = ; fsl,pull-up = ; }; lcdif_reset_pins_bttc: lcdif-bttc@1 { reg = <1>; fsl,pinmux-ids = < MX28_PAD_LCD_RESET__GPIO_3_30 >; fsl,drive-strength = ; fsl,voltage = ; fsl,pull-up = ; }; ssp1_sdio_pins_a: ssp1-sdio@0 { reg = <0>; fsl,pinmux-ids = < MX28_PAD_SSP1_DATA0__SSP1_D0 MX28_PAD_GPMI_D01__SSP1_D1 MX28_PAD_GPMI_D02__SSP1_D2 MX28_PAD_SSP1_DATA3__SSP1_D3 MX28_PAD_SSP1_CMD__SSP1_CMD MX28_PAD_SSP1_SCK__SSP1_SCK >; fsl,drive-strength = ; fsl,voltage = ; fsl,pull-up = ; }; wifi_en_pin_bttc: wifi-en-pin@0 { reg = <0>; fsl,pinmux-ids = < MX28_PAD_GPMI_CLE__GPIO_0_27 >; fsl,drive-strength = ; fsl,voltage = ; fsl,pull-up = ; }; }; &pwm { pinctrl-names = "default"; pinctrl-0 = <&pwm3_pins_a>; status = "okay"; }; ®_usb_5v { gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>; }; &saif0 { pinctrl-names = "default"; pinctrl-0 = <&saif0_pins_a>; #sound-dai-cells = <0>; assigned-clocks = <&clks 53>; assigned-clock-rates = <12000000>; status = "okay"; }; &saif1 { pinctrl-names = "default"; pinctrl-0 = <&saif1_pins_a>; #sound-dai-cells = <0>; fsl,saif-master = <&saif0>; status = "okay"; }; &ssp1 { compatible = "fsl,imx28-mmc"; pinctrl-names = "default"; pinctrl-0 = <&ssp1_sdio_pins_a>; bus-width = <4>; no-1-8-v; /* force 3.3V VIO */ non-removable; vmmc-supply = <®_3v3>; mmc-pwrseq = <&wifi_pwrseq>; keep-power-in-suspend; status = "okay"; wifi@1 { reg = <1>; compatible = "brcm,bcm4329-fmac"; }; }; &ssp2 { compatible = "fsl,imx28-spi"; pinctrl-names = "default"; pinctrl-0 = <&spi2_pins_a>; status = "okay"; };