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