1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT 2/* 3 * Copyright 2024 4 * Lukasz Majewski, DENX Software Engineering, lukma@denx.de 5 */ 6/dts-v1/; 7#include "imx28-lwe.dtsi" 8 9/ { 10 model = "BTT3"; 11 12 compatible = "lwn,imx28-btt3", "fsl,imx28"; 13 14 chosen { 15 bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait console=ttyAMA0,115200 panic=1 quiet"; 16 }; 17 18 memory@40000000 { 19 reg = <0x40000000 0x10000000>; 20 device_type = "memory"; 21 }; 22 23 panel { 24 compatible = "powertip,hx8238a", "panel-dpi"; 25 power-supply = <®_3v3>; 26 width-mm = <70>; 27 height-mm = <52>; 28 29 panel-timing { 30 clock-frequency = <6500000>; 31 hactive = <320>; 32 vactive = <240>; 33 hfront-porch = <20>; 34 hback-porch = <38>; 35 hsync-len = <30>; 36 vfront-porch = <4>; 37 vback-porch = <14>; 38 vsync-len = <4>; 39 hsync-active = <0>; 40 vsync-active = <0>; 41 de-active = <0>; 42 pixelclk-active = <1>; 43 }; 44 45 port { 46 panel_in: endpoint { 47 remote-endpoint = <&display_out>; 48 }; 49 }; 50 }; 51 52 poweroff { 53 compatible = "gpio-poweroff"; 54 gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>; 55 }; 56 57 sound { 58 compatible = "simple-audio-card"; 59 simple-audio-card,name = "BTTC Audio"; 60 simple-audio-card,widgets = "Speaker", "BTTC Speaker"; 61 simple-audio-card,routing = "BTTC Speaker", "SPKOUTN", "BTTC Speaker", "SPKOUTP"; 62 63 simple-audio-card,dai-link@0 { 64 format = "left_j"; 65 bitclock-master = <&dai0_master>; 66 frame-master = <&dai0_master>; 67 mclk-fs = <256>; 68 69 dai0_master: cpu { 70 sound-dai = <&saif0>; 71 }; 72 73 codec { 74 sound-dai = <&wm89xx>; 75 clocks = <&saif0>; 76 }; 77 }; 78 }; 79 80 wifi_pwrseq: sdio-pwrseq { 81 compatible = "mmc-pwrseq-simple"; 82 pinctrl-names = "default"; 83 pinctrl-0 = <&wifi_en_pin_bttc>; 84 reset-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>; 85 /* W1-163 needs 60us for WL_EN to be low and */ 86 /* 150ms after high before downloading FW is possible */ 87 post-power-on-delay-ms = <200>; 88 power-off-delay-us = <100>; 89 }; 90}; 91 92&auart0 { 93 pinctrl-names = "default"; 94 pinctrl-0 = <&auart0_2pins_a>; 95 status = "okay"; 96}; 97 98&auart3 { 99 pinctrl-names = "default"; 100 pinctrl-0 = <&auart3_pins_a>; 101 uart-has-rtscts; 102 status = "okay"; 103}; 104 105&i2c0 { 106 wm89xx: audio-codec@1a { 107 compatible = "wlf,wm8940"; 108 reg = <0x1a>; 109 #sound-dai-cells = <0>; 110 }; 111}; 112 113&lcdif { 114 pinctrl-names = "default"; 115 pinctrl-0 = <&lcdif_24bit_pins_a>, <&lcdif_sync_pins_bttc>, 116 <&lcdif_reset_pins_bttc>; 117 status = "okay"; 118 119 port { 120 display_out: endpoint { 121 remote-endpoint = <&panel_in>; 122 }; 123 }; 124}; 125 126&mac0 { 127 clocks = <&clks 57>, <&clks 57>, <&clks 64>; 128 clock-names = "ipg", "ahb", "enet_out"; 129 phy-handle = <&mac0_phy>; 130 phy-mode = "rmii"; 131 phy-supply = <®_3v3>; 132 /* 133 * This MAC address is adjusted during production. 134 * Value specified below is used as a fallback during recovery. 135 */ 136 local-mac-address = [ 00 11 B8 00 BF 8A ]; 137 status = "okay"; 138 139 mdio { 140 #address-cells = <1>; 141 #size-cells = <0>; 142 143 mac0_phy: ethernet-phy@0 { 144 /* LAN8720Ai - PHY ID */ 145 compatible = "ethernet-phy-id0007.c0f0","ethernet-phy-ieee802.3-c22"; 146 reg = <0>; 147 smsc,disable-energy-detect; 148 max-speed = <100>; 149 reset-gpios = <&gpio4 12 GPIO_ACTIVE_LOW>; 150 reset-assert-us = <1000>; 151 reset-deassert-us = <1000>; 152 }; 153 }; 154}; 155 156&pinctrl { 157 pinctrl-names = "default"; 158 pinctrl-0 = <&hog_pins_a>, <&hog_pins_rev>; 159 160 hog_pins_a: hog@0 { 161 reg = <0>; 162 fsl,pinmux-ids = < 163 MX28_PAD_GPMI_RDY2__GPIO_0_22 164 MX28_PAD_GPMI_RDY3__GPIO_0_23 165 MX28_PAD_GPMI_RDN__GPIO_0_24 166 MX28_PAD_LCD_VSYNC__GPIO_1_28 167 MX28_PAD_SSP2_SS1__GPIO_2_20 168 MX28_PAD_SSP2_SS2__GPIO_2_21 169 MX28_PAD_AUART2_CTS__GPIO_3_10 170 MX28_PAD_AUART2_RTS__GPIO_3_11 171 MX28_PAD_GPMI_WRN__GPIO_0_25 172 MX28_PAD_ENET0_RXD2__GPIO_4_9 173 MX28_PAD_ENET0_TXD2__GPIO_4_11 174 >; 175 fsl,drive-strength = <MXS_DRIVE_4mA>; 176 fsl,voltage = <MXS_VOLTAGE_HIGH>; 177 fsl,pull-up = <MXS_PULL_DISABLE>; 178 }; 179 180 hog_pins_rev: hog@1 { 181 reg = <1>; 182 fsl,pinmux-ids = < 183 MX28_PAD_ENET0_RXD3__GPIO_4_10 184 MX28_PAD_ENET0_TX_CLK__GPIO_4_5 185 MX28_PAD_ENET0_COL__GPIO_4_14 186 MX28_PAD_ENET0_CRS__GPIO_4_15 187 >; 188 fsl,drive-strength = <MXS_DRIVE_4mA>; 189 fsl,voltage = <MXS_VOLTAGE_HIGH>; 190 fsl,pull-up = <MXS_PULL_DISABLE>; 191 }; 192 193 keypad_pins_bttc: keypad-bttc@0 { 194 reg = <0>; 195 fsl,pinmux-ids = < 196 MX28_PAD_GPMI_D00__GPIO_0_0 197 MX28_PAD_AUART0_CTS__GPIO_3_2 198 MX28_PAD_AUART0_RTS__GPIO_3_3 199 MX28_PAD_GPMI_D03__GPIO_0_3 200 MX28_PAD_GPMI_D04__GPIO_0_4 201 MX28_PAD_GPMI_D05__GPIO_0_5 202 MX28_PAD_GPMI_D06__GPIO_0_6 203 MX28_PAD_GPMI_D07__GPIO_0_7 204 MX28_PAD_GPMI_CE1N__GPIO_0_17 205 MX28_PAD_GPMI_CE2N__GPIO_0_18 206 MX28_PAD_GPMI_CE3N__GPIO_0_19 207 MX28_PAD_GPMI_RDY0__GPIO_0_20 208 >; 209 fsl,drive-strength = <MXS_DRIVE_4mA>; 210 fsl,voltage = <MXS_VOLTAGE_HIGH>; 211 fsl,pull-up = <MXS_PULL_DISABLE>; 212 }; 213 214 lcdif_sync_pins_bttc: lcdif-bttc@0 { 215 reg = <0>; 216 fsl,pinmux-ids = < 217 MX28_PAD_LCD_DOTCLK__LCD_DOTCLK 218 MX28_PAD_LCD_ENABLE__LCD_ENABLE 219 MX28_PAD_LCD_HSYNC__LCD_HSYNC 220 MX28_PAD_LCD_RD_E__LCD_VSYNC 221 >; 222 fsl,drive-strength = <MXS_DRIVE_4mA>; 223 fsl,voltage = <MXS_VOLTAGE_HIGH>; 224 fsl,pull-up = <MXS_PULL_DISABLE>; 225 }; 226 227 lcdif_reset_pins_bttc: lcdif-bttc@1 { 228 reg = <1>; 229 fsl,pinmux-ids = < 230 MX28_PAD_LCD_RESET__GPIO_3_30 231 >; 232 fsl,drive-strength = <MXS_DRIVE_4mA>; 233 fsl,voltage = <MXS_VOLTAGE_HIGH>; 234 fsl,pull-up = <MXS_PULL_ENABLE>; 235 }; 236 237 ssp1_sdio_pins_a: ssp1-sdio@0 { 238 reg = <0>; 239 fsl,pinmux-ids = < 240 MX28_PAD_SSP1_DATA0__SSP1_D0 241 MX28_PAD_GPMI_D01__SSP1_D1 242 MX28_PAD_GPMI_D02__SSP1_D2 243 MX28_PAD_SSP1_DATA3__SSP1_D3 244 MX28_PAD_SSP1_CMD__SSP1_CMD 245 MX28_PAD_SSP1_SCK__SSP1_SCK 246 >; 247 fsl,drive-strength = <MXS_DRIVE_8mA>; 248 fsl,voltage = <MXS_VOLTAGE_HIGH>; 249 fsl,pull-up = <MXS_PULL_ENABLE>; 250 }; 251 252 wifi_en_pin_bttc: wifi-en-pin@0 { 253 reg = <0>; 254 fsl,pinmux-ids = < 255 MX28_PAD_GPMI_CLE__GPIO_0_27 256 >; 257 fsl,drive-strength = <MXS_DRIVE_8mA>; 258 fsl,voltage = <MXS_VOLTAGE_HIGH>; 259 fsl,pull-up = <MXS_PULL_ENABLE>; 260 }; 261}; 262 263&pwm { 264 pinctrl-names = "default"; 265 pinctrl-0 = <&pwm3_pins_a>; 266 status = "okay"; 267}; 268 269®_usb_5v { 270 gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>; 271}; 272 273&saif0 { 274 pinctrl-names = "default"; 275 pinctrl-0 = <&saif0_pins_a>; 276 #sound-dai-cells = <0>; 277 assigned-clocks = <&clks 53>; 278 assigned-clock-rates = <12000000>; 279 status = "okay"; 280}; 281 282&saif1 { 283 pinctrl-names = "default"; 284 pinctrl-0 = <&saif1_pins_a>; 285 #sound-dai-cells = <0>; 286 fsl,saif-master = <&saif0>; 287 status = "okay"; 288}; 289 290&ssp1 { 291 compatible = "fsl,imx28-mmc"; 292 pinctrl-names = "default"; 293 pinctrl-0 = <&ssp1_sdio_pins_a>; 294 bus-width = <4>; 295 no-1-8-v; /* force 3.3V VIO */ 296 non-removable; 297 vmmc-supply = <®_3v3>; 298 mmc-pwrseq = <&wifi_pwrseq>; 299 keep-power-in-suspend; 300 status = "okay"; 301 302 wlan@1 { 303 reg = <1>; 304 compatible = "brcm,bcm4329-fmac"; 305 }; 306}; 307 308&ssp2 { 309 compatible = "fsl,imx28-spi"; 310 pinctrl-names = "default"; 311 pinctrl-0 = <&spi2_pins_a>; 312 status = "okay"; 313}; 314