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 apb@80000000 { 23 apbh@80000000 { 24 pinctrl@80018000 { 25 usb_pins_cfa10049: usb-10049@0 { 26 reg = <0>; 27 fsl,pinmux-ids = < 28 MX28_PAD_GPMI_D07__GPIO_0_7 29 >; 30 fsl,drive-strength = <MXS_DRIVE_4mA>; 31 fsl,voltage = <MXS_VOLTAGE_HIGH>; 32 fsl,pull-up = <MXS_PULL_DISABLE>; 33 }; 34 35 i2cmux_pins_cfa10049: i2cmux-10049@0 { 36 reg = <0>; 37 fsl,pinmux-ids = < 38 MX28_PAD_LCD_D22__GPIO_1_22 39 MX28_PAD_LCD_D23__GPIO_1_23 40 >; 41 fsl,drive-strength = <MXS_DRIVE_4mA>; 42 fsl,voltage = <MXS_VOLTAGE_HIGH>; 43 fsl,pull-up = <MXS_PULL_DISABLE>; 44 }; 45 46 mac0_pins_cfa10049: mac0-10049@0 { 47 reg = <0>; 48 fsl,pinmux-ids = < 49 MX28_PAD_SSP2_SS2__GPIO_2_21 50 >; 51 fsl,drive-strength = <MXS_DRIVE_4mA>; 52 fsl,voltage = <MXS_VOLTAGE_HIGH>; 53 fsl,pull-up = <MXS_PULL_DISABLE>; 54 }; 55 56 pca_pins_cfa10049: pca-10049@0 { 57 reg = <0>; 58 fsl,pinmux-ids = < 59 MX28_PAD_SSP2_SS0__GPIO_2_19 60 >; 61 fsl,drive-strength = <MXS_DRIVE_4mA>; 62 fsl,voltage = <MXS_VOLTAGE_HIGH>; 63 fsl,pull-up = <MXS_PULL_ENABLE>; 64 }; 65 66 rotary_pins_cfa10049: rotary-10049@0 { 67 reg = <0>; 68 fsl,pinmux-ids = < 69 MX28_PAD_I2C0_SCL__GPIO_3_24 70 MX28_PAD_I2C0_SDA__GPIO_3_25 71 >; 72 fsl,drive-strength = <MXS_DRIVE_4mA>; 73 fsl,voltage = <MXS_VOLTAGE_HIGH>; 74 fsl,pull-up = <MXS_PULL_ENABLE>; 75 }; 76 77 rotary_btn_pins_cfa10049: rotary-btn-10049@0 { 78 reg = <0>; 79 fsl,pinmux-ids = < 80 MX28_PAD_SAIF1_SDATA0__GPIO_3_26 81 >; 82 fsl,drive-strength = <MXS_DRIVE_4mA>; 83 fsl,voltage = <MXS_VOLTAGE_HIGH>; 84 fsl,pull-up = <MXS_PULL_ENABLE>; 85 }; 86 87 spi2_pins_cfa10049: spi2-cfa10049@0 { 88 reg = <0>; 89 fsl,pinmux-ids = < 90 MX28_PAD_SSP2_SCK__GPIO_2_16 91 MX28_PAD_SSP2_MOSI__GPIO_2_17 92 MX28_PAD_SSP2_MISO__GPIO_2_18 93 MX28_PAD_AUART1_TX__GPIO_3_5 94 >; 95 fsl,drive-strength = <MXS_DRIVE_8mA>; 96 fsl,voltage = <MXS_VOLTAGE_HIGH>; 97 fsl,pull-up = <MXS_PULL_ENABLE>; 98 }; 99 100 spi3_pins_cfa10049: spi3-cfa10049@0 { 101 reg = <0>; 102 fsl,pinmux-ids = < 103 MX28_PAD_GPMI_RDN__GPIO_0_24 104 MX28_PAD_GPMI_RESETN__GPIO_0_28 105 MX28_PAD_GPMI_CE1N__GPIO_0_17 106 MX28_PAD_GPMI_ALE__GPIO_0_26 107 MX28_PAD_GPMI_CLE__GPIO_0_27 108 >; 109 fsl,drive-strength = <MXS_DRIVE_8mA>; 110 fsl,voltage = <MXS_VOLTAGE_HIGH>; 111 fsl,pull-up = <MXS_PULL_ENABLE>; 112 }; 113 114 lcdif_18bit_pins_cfa10049: lcdif-18bit@0 { 115 reg = <0>; 116 fsl,pinmux-ids = < 117 MX28_PAD_LCD_D00__LCD_D0 118 MX28_PAD_LCD_D01__LCD_D1 119 MX28_PAD_LCD_D02__LCD_D2 120 MX28_PAD_LCD_D03__LCD_D3 121 MX28_PAD_LCD_D04__LCD_D4 122 MX28_PAD_LCD_D05__LCD_D5 123 MX28_PAD_LCD_D06__LCD_D6 124 MX28_PAD_LCD_D07__LCD_D7 125 MX28_PAD_LCD_D08__LCD_D8 126 MX28_PAD_LCD_D09__LCD_D9 127 MX28_PAD_LCD_D10__LCD_D10 128 MX28_PAD_LCD_D11__LCD_D11 129 MX28_PAD_LCD_D12__LCD_D12 130 MX28_PAD_LCD_D13__LCD_D13 131 MX28_PAD_LCD_D14__LCD_D14 132 MX28_PAD_LCD_D15__LCD_D15 133 MX28_PAD_LCD_D16__LCD_D16 134 MX28_PAD_LCD_D17__LCD_D17 135 >; 136 fsl,drive-strength = <MXS_DRIVE_4mA>; 137 fsl,voltage = <MXS_VOLTAGE_HIGH>; 138 fsl,pull-up = <MXS_PULL_DISABLE>; 139 }; 140 141 lcdif_pins_cfa10049: lcdif-evk@0 { 142 reg = <0>; 143 fsl,pinmux-ids = < 144 MX28_PAD_LCD_RD_E__LCD_VSYNC 145 MX28_PAD_LCD_WR_RWN__LCD_HSYNC 146 MX28_PAD_LCD_RS__LCD_DOTCLK 147 MX28_PAD_LCD_CS__LCD_ENABLE 148 >; 149 fsl,drive-strength = <MXS_DRIVE_4mA>; 150 fsl,voltage = <MXS_VOLTAGE_HIGH>; 151 fsl,pull-up = <MXS_PULL_DISABLE>; 152 }; 153 154 lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 { 155 reg = <0>; 156 fsl,pinmux-ids = < 157 MX28_PAD_LCD_RESET__GPIO_3_30 158 >; 159 fsl,drive-strength = <MXS_DRIVE_4mA>; 160 fsl,voltage = <MXS_VOLTAGE_HIGH>; 161 fsl,pull-up = <MXS_PULL_ENABLE>; 162 }; 163 164 w1_gpio_pins: w1-gpio@0 { 165 reg = <0>; 166 fsl,pinmux-ids = < 167 MX28_PAD_LCD_D21__GPIO_1_21 168 >; 169 fsl,drive-strength = <MXS_DRIVE_8mA>; 170 fsl,voltage = <MXS_VOLTAGE_HIGH>; 171 fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */ 172 }; 173 }; 174 175 lcdif@80030000 { 176 pinctrl-names = "default"; 177 pinctrl-0 = <&lcdif_18bit_pins_cfa10049 178 &lcdif_pins_cfa10049 179 &lcdif_pins_cfa10049_pullup>; 180 display = <&display0>; 181 status = "okay"; 182 183 display0: display0 { 184 bits-per-pixel = <32>; 185 bus-width = <18>; 186 187 display-timings { 188 native-mode = <&timing0>; 189 timing0: timing0 { 190 clock-frequency = <9216000>; 191 hactive = <320>; 192 vactive = <480>; 193 hback-porch = <2>; 194 hfront-porch = <2>; 195 vback-porch = <2>; 196 vfront-porch = <2>; 197 hsync-len = <15>; 198 vsync-len = <15>; 199 hsync-active = <0>; 200 vsync-active = <0>; 201 de-active = <1>; 202 pixelclk-active = <1>; 203 }; 204 }; 205 }; 206 }; 207 }; 208 209 apbx@80040000 { 210 pwm: pwm@80064000 { 211 pinctrl-names = "default"; 212 pinctrl-0 = <&pwm3_pins_b>; 213 status = "okay"; 214 }; 215 216 i2c1: i2c@8005a000 { 217 pinctrl-names = "default"; 218 pinctrl-0 = <&i2c1_pins_a>; 219 status = "okay"; 220 }; 221 222 i2cmux { 223 compatible = "i2c-mux-gpio"; 224 #address-cells = <1>; 225 #size-cells = <0>; 226 pinctrl-names = "default"; 227 pinctrl-0 = <&i2cmux_pins_cfa10049>; 228 mux-gpios = <&gpio1 22 0 &gpio1 23 0>; 229 i2c-parent = <&i2c1>; 230 231 i2c@0 { 232 #address-cells = <1>; 233 #size-cells = <0>; 234 reg = <0>; 235 236 adc0: nau7802@2a { 237 compatible = "nuvoton,nau7802"; 238 reg = <0x2a>; 239 nuvoton,vldo = <3000>; 240 }; 241 }; 242 243 i2c@1 { 244 #address-cells = <1>; 245 #size-cells = <0>; 246 reg = <1>; 247 248 adc1: nau7802@2a { 249 compatible = "nuvoton,nau7802"; 250 reg = <0x2a>; 251 nuvoton,vldo = <3000>; 252 }; 253 }; 254 255 i2c@2 { 256 #address-cells = <1>; 257 #size-cells = <0>; 258 reg = <2>; 259 260 adc2: nau7802@2a { 261 compatible = "nuvoton,nau7802"; 262 reg = <0x2a>; 263 nuvoton,vldo = <3000>; 264 }; 265 }; 266 267 i2c@3 { 268 reg = <3>; 269 #address-cells = <1>; 270 #size-cells = <0>; 271 272 pca9555: pca9555@20 { 273 compatible = "nxp,pca9555"; 274 pinctrl-names = "default"; 275 pinctrl-0 = <&pca_pins_cfa10049>; 276 interrupt-parent = <&gpio2>; 277 interrupts = <19 0x2>; 278 gpio-controller; 279 #gpio-cells = <2>; 280 interrupt-controller; 281 #interrupt-cells = <2>; 282 reg = <0x20>; 283 }; 284 }; 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 0>; 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 #address-cells = <1>; 402 #size-cells = <0>; 403 404 rotary_button { 405 label = "rotary_button"; 406 gpios = <&gpio3 26 1>; 407 debounce-interval = <10>; 408 linux,code = <28>; 409 }; 410 }; 411 412 rotary { 413 compatible = "rotary-encoder"; 414 pinctrl-names = "default"; 415 pinctrl-0 = <&rotary_pins_cfa10049>; 416 gpios = <&gpio3 24 1>, <&gpio3 25 1>; 417 linux,axis = <1>; /* REL_Y */ 418 rotary-encoder,relative-axis; 419 }; 420 421 backlight { 422 compatible = "pwm-backlight"; 423 pwms = <&pwm 3 5000000>; 424 brightness-levels = <0 4 8 16 32 64 128 255>; 425 default-brightness-level = <6>; 426 427 }; 428 429 onewire@0 { 430 compatible = "w1-gpio"; 431 pinctrl-names = "default"; 432 pinctrl-0 = <&w1_gpio_pins>; 433 status = "okay"; 434 gpios = <&gpio1 21 0>; 435 }; 436}; 437