1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright 2012 Free Electrons 4 */ 5 6/* 7 * The CFA-10049 is an expansion board for the CFA-10036 module, thus we 8 * need to include the CFA-10036 DTS. 9 */ 10#include "imx28-cfa10036.dts" 11 12/ { 13 model = "Crystalfontz CFA-10049 Board"; 14 compatible = "crystalfontz,cfa10049", "crystalfontz,cfa10036", "fsl,imx28"; 15 16 i2cmux { 17 compatible = "i2c-mux-gpio"; 18 #address-cells = <1>; 19 #size-cells = <0>; 20 pinctrl-names = "default"; 21 pinctrl-0 = <&i2cmux_pins_cfa10049>; 22 mux-gpios = <&gpio1 22 0 &gpio1 23 0>; 23 i2c-parent = <&i2c1>; 24 25 i2c@0 { 26 #address-cells = <1>; 27 #size-cells = <0>; 28 reg = <0>; 29 30 adc0: nau7802@2a { 31 compatible = "nuvoton,nau7802"; 32 reg = <0x2a>; 33 nuvoton,vldo = <3000>; 34 }; 35 }; 36 37 i2c@1 { 38 #address-cells = <1>; 39 #size-cells = <0>; 40 reg = <1>; 41 42 adc1: nau7802@2a { 43 compatible = "nuvoton,nau7802"; 44 reg = <0x2a>; 45 nuvoton,vldo = <3000>; 46 }; 47 }; 48 49 i2c@2 { 50 #address-cells = <1>; 51 #size-cells = <0>; 52 reg = <2>; 53 54 adc2: nau7802@2a { 55 compatible = "nuvoton,nau7802"; 56 reg = <0x2a>; 57 nuvoton,vldo = <3000>; 58 }; 59 }; 60 61 i2c@3 { 62 reg = <3>; 63 #address-cells = <1>; 64 #size-cells = <0>; 65 66 pca9555: pca9555@20 { 67 compatible = "nxp,pca9555"; 68 pinctrl-names = "default"; 69 pinctrl-0 = <&pca_pins_cfa10049>; 70 interrupt-parent = <&gpio2>; 71 interrupts = <19 0x2>; 72 gpio-controller; 73 #gpio-cells = <2>; 74 interrupt-controller; 75 #interrupt-cells = <2>; 76 reg = <0x20>; 77 }; 78 }; 79 }; 80 81 regulators { 82 compatible = "simple-bus"; 83 #address-cells = <1>; 84 #size-cells = <0>; 85 86 reg_usb1_vbus: regulator@0 { 87 compatible = "regulator-fixed"; 88 reg = <0>; 89 pinctrl-names = "default"; 90 pinctrl-0 = <&usb_pins_cfa10049>; 91 regulator-name = "usb1_vbus"; 92 regulator-min-microvolt = <5000000>; 93 regulator-max-microvolt = <5000000>; 94 gpio = <&gpio0 7 1>; 95 }; 96 }; 97 98 spi-2 { 99 compatible = "spi-gpio"; 100 pinctrl-names = "default"; 101 pinctrl-0 = <&spi2_pins_cfa10049>; 102 status = "okay"; 103 sck-gpios = <&gpio2 16 0>; 104 mosi-gpios = <&gpio2 17 0>; 105 miso-gpios = <&gpio2 18 0>; 106 cs-gpios = <&gpio3 5 0>; 107 num-chipselects = <1>; 108 #address-cells = <1>; 109 #size-cells = <0>; 110 111 hx8357: hx8357@0 { 112 compatible = "himax,hx8357b", "himax,hx8357"; 113 reg = <0>; 114 spi-max-frequency = <100000>; 115 spi-cpol; 116 spi-cpha; 117 gpios-reset = <&gpio3 30 0>; 118 im-gpios = <&gpio5 4 0 &gpio5 5 0 &gpio5 6 0>; 119 }; 120 }; 121 122 spi-3 { 123 compatible = "spi-gpio"; 124 pinctrl-names = "default"; 125 pinctrl-0 = <&spi3_pins_cfa10049>; 126 status = "okay"; 127 sck-gpios = <&gpio0 24 0>; 128 mosi-gpios = <&gpio0 28 0>; 129 cs-gpios = <&gpio0 17 0 &gpio0 26 0 &gpio0 27 0>; 130 num-chipselects = <3>; 131 #address-cells = <1>; 132 #size-cells = <0>; 133 134 gpio5: gpio5@0 { 135 compatible = "fairchild,74hc595"; 136 gpio-controller; 137 #gpio-cells = <2>; 138 reg = <0>; 139 registers-number = <2>; 140 spi-max-frequency = <100000>; 141 }; 142 143 gpio6: gpio6@1 { 144 compatible = "fairchild,74hc595"; 145 gpio-controller; 146 #gpio-cells = <2>; 147 reg = <1>; 148 registers-number = <4>; 149 spi-max-frequency = <100000>; 150 }; 151 152 dac0: dh2228@2 { 153 compatible = "rohm,dh2228fv"; 154 reg = <2>; 155 spi-max-frequency = <100000>; 156 }; 157 }; 158 159 gpio-keys { 160 compatible = "gpio-keys"; 161 pinctrl-names = "default"; 162 pinctrl-0 = <&rotary_btn_pins_cfa10049>; 163 164 rotary-button { 165 label = "rotary_button"; 166 gpios = <&gpio3 26 1>; 167 debounce-interval = <10>; 168 linux,code = <28>; 169 }; 170 }; 171 172 rotary { 173 compatible = "rotary-encoder"; 174 pinctrl-names = "default"; 175 pinctrl-0 = <&rotary_pins_cfa10049>; 176 gpios = <&gpio3 24 1>, <&gpio3 25 1>; 177 linux,axis = <1>; /* REL_Y */ 178 rotary-encoder,relative-axis; 179 }; 180 181 backlight { 182 compatible = "pwm-backlight"; 183 pwms = <&pwm 3 5000000>; 184 brightness-levels = <0 4 8 16 32 64 128 255>; 185 default-brightness-level = <6>; 186 187 }; 188 189 onewire { 190 compatible = "w1-gpio"; 191 pinctrl-names = "default"; 192 pinctrl-0 = <&w1_gpio_pins>; 193 status = "okay"; 194 gpios = <&gpio1 21 0>; 195 }; 196}; 197 198&i2c1 { 199 pinctrl-names = "default"; 200 pinctrl-0 = <&i2c1_pins_a>; 201 status = "okay"; 202}; 203 204&lcdif { 205 pinctrl-names = "default"; 206 pinctrl-0 = <&lcdif_18bit_pins_cfa10049 207 &lcdif_pins_cfa10049 208 &lcdif_pins_cfa10049_pullup>; 209 display = <&display0>; 210 status = "okay"; 211 212 display0: display0 { 213 bits-per-pixel = <32>; 214 bus-width = <18>; 215 216 display-timings { 217 native-mode = <&timing0>; 218 timing0: timing0 { 219 clock-frequency = <9216000>; 220 hactive = <320>; 221 vactive = <480>; 222 hback-porch = <2>; 223 hfront-porch = <2>; 224 vback-porch = <2>; 225 vfront-porch = <2>; 226 hsync-len = <15>; 227 vsync-len = <15>; 228 hsync-active = <0>; 229 vsync-active = <0>; 230 de-active = <1>; 231 pixelclk-active = <1>; 232 }; 233 }; 234 }; 235}; 236 237&lradc { 238 fsl,lradc-touchscreen-wires = <4>; 239 status = "okay"; 240}; 241 242&mac0 { 243 phy-mode = "rmii"; 244 pinctrl-names = "default"; 245 pinctrl-0 = <&mac0_pins_a 246 &mac0_pins_cfa10049>; 247 phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>; 248 phy-reset-duration = <100>; 249 status = "okay"; 250}; 251 252&pinctrl { 253 usb_pins_cfa10049: usb-10049@0 { 254 reg = <0>; 255 fsl,pinmux-ids = < 256 MX28_PAD_GPMI_D07__GPIO_0_7 257 >; 258 fsl,drive-strength = <MXS_DRIVE_4mA>; 259 fsl,voltage = <MXS_VOLTAGE_HIGH>; 260 fsl,pull-up = <MXS_PULL_DISABLE>; 261 }; 262 263 i2cmux_pins_cfa10049: i2cmux-10049@0 { 264 reg = <0>; 265 fsl,pinmux-ids = < 266 MX28_PAD_LCD_D22__GPIO_1_22 267 MX28_PAD_LCD_D23__GPIO_1_23 268 >; 269 fsl,drive-strength = <MXS_DRIVE_4mA>; 270 fsl,voltage = <MXS_VOLTAGE_HIGH>; 271 fsl,pull-up = <MXS_PULL_DISABLE>; 272 }; 273 274 mac0_pins_cfa10049: mac0-10049@0 { 275 reg = <0>; 276 fsl,pinmux-ids = < 277 MX28_PAD_SSP2_SS2__GPIO_2_21 278 >; 279 fsl,drive-strength = <MXS_DRIVE_4mA>; 280 fsl,voltage = <MXS_VOLTAGE_HIGH>; 281 fsl,pull-up = <MXS_PULL_DISABLE>; 282 }; 283 284 pca_pins_cfa10049: pca-10049@0 { 285 reg = <0>; 286 fsl,pinmux-ids = < 287 MX28_PAD_SSP2_SS0__GPIO_2_19 288 >; 289 fsl,drive-strength = <MXS_DRIVE_4mA>; 290 fsl,voltage = <MXS_VOLTAGE_HIGH>; 291 fsl,pull-up = <MXS_PULL_ENABLE>; 292 }; 293 294 rotary_pins_cfa10049: rotary-10049@0 { 295 reg = <0>; 296 fsl,pinmux-ids = < 297 MX28_PAD_I2C0_SCL__GPIO_3_24 298 MX28_PAD_I2C0_SDA__GPIO_3_25 299 >; 300 fsl,drive-strength = <MXS_DRIVE_4mA>; 301 fsl,voltage = <MXS_VOLTAGE_HIGH>; 302 fsl,pull-up = <MXS_PULL_ENABLE>; 303 }; 304 305 rotary_btn_pins_cfa10049: rotary-btn-10049@0 { 306 reg = <0>; 307 fsl,pinmux-ids = < 308 MX28_PAD_SAIF1_SDATA0__GPIO_3_26 309 >; 310 fsl,drive-strength = <MXS_DRIVE_4mA>; 311 fsl,voltage = <MXS_VOLTAGE_HIGH>; 312 fsl,pull-up = <MXS_PULL_ENABLE>; 313 }; 314 315 spi2_pins_cfa10049: spi2-cfa10049@0 { 316 reg = <0>; 317 fsl,pinmux-ids = < 318 MX28_PAD_SSP2_SCK__GPIO_2_16 319 MX28_PAD_SSP2_MOSI__GPIO_2_17 320 MX28_PAD_SSP2_MISO__GPIO_2_18 321 MX28_PAD_AUART1_TX__GPIO_3_5 322 >; 323 fsl,drive-strength = <MXS_DRIVE_8mA>; 324 fsl,voltage = <MXS_VOLTAGE_HIGH>; 325 fsl,pull-up = <MXS_PULL_ENABLE>; 326 }; 327 328 spi3_pins_cfa10049: spi3-cfa10049@0 { 329 reg = <0>; 330 fsl,pinmux-ids = < 331 MX28_PAD_GPMI_RDN__GPIO_0_24 332 MX28_PAD_GPMI_RESETN__GPIO_0_28 333 MX28_PAD_GPMI_CE1N__GPIO_0_17 334 MX28_PAD_GPMI_ALE__GPIO_0_26 335 MX28_PAD_GPMI_CLE__GPIO_0_27 336 >; 337 fsl,drive-strength = <MXS_DRIVE_8mA>; 338 fsl,voltage = <MXS_VOLTAGE_HIGH>; 339 fsl,pull-up = <MXS_PULL_ENABLE>; 340 }; 341 342 lcdif_18bit_pins_cfa10049: lcdif-18bit@0 { 343 reg = <0>; 344 fsl,pinmux-ids = < 345 MX28_PAD_LCD_D00__LCD_D0 346 MX28_PAD_LCD_D01__LCD_D1 347 MX28_PAD_LCD_D02__LCD_D2 348 MX28_PAD_LCD_D03__LCD_D3 349 MX28_PAD_LCD_D04__LCD_D4 350 MX28_PAD_LCD_D05__LCD_D5 351 MX28_PAD_LCD_D06__LCD_D6 352 MX28_PAD_LCD_D07__LCD_D7 353 MX28_PAD_LCD_D08__LCD_D8 354 MX28_PAD_LCD_D09__LCD_D9 355 MX28_PAD_LCD_D10__LCD_D10 356 MX28_PAD_LCD_D11__LCD_D11 357 MX28_PAD_LCD_D12__LCD_D12 358 MX28_PAD_LCD_D13__LCD_D13 359 MX28_PAD_LCD_D14__LCD_D14 360 MX28_PAD_LCD_D15__LCD_D15 361 MX28_PAD_LCD_D16__LCD_D16 362 MX28_PAD_LCD_D17__LCD_D17 363 >; 364 fsl,drive-strength = <MXS_DRIVE_4mA>; 365 fsl,voltage = <MXS_VOLTAGE_HIGH>; 366 fsl,pull-up = <MXS_PULL_DISABLE>; 367 }; 368 369 lcdif_pins_cfa10049: lcdif-evk@0 { 370 reg = <0>; 371 fsl,pinmux-ids = < 372 MX28_PAD_LCD_RD_E__LCD_VSYNC 373 MX28_PAD_LCD_WR_RWN__LCD_HSYNC 374 MX28_PAD_LCD_RS__LCD_DOTCLK 375 MX28_PAD_LCD_CS__LCD_ENABLE 376 >; 377 fsl,drive-strength = <MXS_DRIVE_4mA>; 378 fsl,voltage = <MXS_VOLTAGE_HIGH>; 379 fsl,pull-up = <MXS_PULL_DISABLE>; 380 }; 381 382 lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 { 383 reg = <0>; 384 fsl,pinmux-ids = < 385 MX28_PAD_LCD_RESET__GPIO_3_30 386 >; 387 fsl,drive-strength = <MXS_DRIVE_4mA>; 388 fsl,voltage = <MXS_VOLTAGE_HIGH>; 389 fsl,pull-up = <MXS_PULL_ENABLE>; 390 }; 391 392 w1_gpio_pins: w1-gpio@0 { 393 reg = <0>; 394 fsl,pinmux-ids = < 395 MX28_PAD_LCD_D21__GPIO_1_21 396 >; 397 fsl,drive-strength = <MXS_DRIVE_8mA>; 398 fsl,voltage = <MXS_VOLTAGE_HIGH>; 399 fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */ 400 }; 401}; 402 403&pwm { 404 pinctrl-names = "default"; 405 pinctrl-0 = <&pwm3_pins_b>; 406 status = "okay"; 407}; 408 409&usb1 { 410 vbus-supply = <®_usb1_vbus>; 411 pinctrl-0 = <&usb1_pins_a>; 412 pinctrl-names = "default"; 413 status = "okay"; 414}; 415 416&usbphy1 { 417 status = "okay"; 418}; 419