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