1/* 2 * Copyright (C) 2013 Marek Belisko <marek@goldelico.com> 3 * 4 * Based on omap3-beagle-xm.dts 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 */ 10/dts-v1/; 11 12#include "omap36xx.dtsi" 13 14/ { 15 model = "OMAP3 GTA04"; 16 compatible = "ti,omap3-gta04", "ti,omap36xx", "ti,omap3"; 17 18 cpus { 19 cpu@0 { 20 cpu0-supply = <&vcc>; 21 }; 22 }; 23 24 memory { 25 device_type = "memory"; 26 reg = <0x80000000 0x20000000>; /* 512 MB */ 27 }; 28 29 aliases { 30 display0 = &lcd; 31 }; 32 33 gpio-keys { 34 compatible = "gpio-keys"; 35 36 aux-button { 37 label = "aux"; 38 linux,code = <169>; 39 gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; 40 gpio-key,wakeup; 41 }; 42 }; 43 44 sound { 45 compatible = "ti,omap-twl4030"; 46 ti,model = "gta04"; 47 48 ti,mcbsp = <&mcbsp2>; 49 }; 50 51 /* GSM audio */ 52 sound_telephony { 53 compatible = "simple-audio-card"; 54 simple-audio-card,name = "GTA04 voice"; 55 simple-audio-card,bitclock-master = <&telephony_link_master>; 56 simple-audio-card,frame-master = <&telephony_link_master>; 57 simple-audio-card,format = "i2s"; 58 59 simple-audio-card,cpu { 60 sound-dai = <&mcbsp4>; 61 }; 62 63 telephony_link_master: simple-audio-card,codec { 64 sound-dai = <>m601_codec>; 65 }; 66 }; 67 68 gtm601_codec: gsm_codec { 69 compatible = "option,gtm601"; 70 #sound-dai-cells = <0>; 71 }; 72 73 spi_lcd { 74 compatible = "spi-gpio"; 75 #address-cells = <0x1>; 76 #size-cells = <0x0>; 77 pinctrl-names = "default"; 78 pinctrl-0 = <&spi_gpio_pins>; 79 80 gpio-sck = <&gpio1 12 GPIO_ACTIVE_HIGH>; 81 gpio-miso = <&gpio1 18 GPIO_ACTIVE_HIGH>; 82 gpio-mosi = <&gpio1 20 GPIO_ACTIVE_HIGH>; 83 cs-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; 84 num-chipselects = <1>; 85 86 /* lcd panel */ 87 lcd: td028ttec1@0 { 88 compatible = "toppoly,td028ttec1"; 89 reg = <0>; 90 spi-max-frequency = <100000>; 91 spi-cpol; 92 spi-cpha; 93 94 label = "lcd"; 95 port { 96 lcd_in: endpoint { 97 remote-endpoint = <&dpi_out>; 98 }; 99 }; 100 }; 101 }; 102 103 hsusb2_phy: hsusb2_phy { 104 compatible = "usb-nop-xceiv"; 105 reset-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>; 106 }; 107 108 tv0: connector@1 { 109 compatible = "svideo-connector"; 110 label = "tv"; 111 112 port { 113 tv_connector_in: endpoint { 114 remote-endpoint = <&opa_out>; 115 }; 116 }; 117 }; 118 119 tv_amp: opa362 { 120 compatible = "ti,opa362"; 121 enable-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>; 122 123 ports { 124 #address-cells = <1>; 125 #size-cells = <0>; 126 127 port@0 { 128 reg = <0>; 129 opa_in: endpoint@0 { 130 remote-endpoint = <&venc_out>; 131 }; 132 }; 133 134 port@1 { 135 reg = <1>; 136 opa_out: endpoint@0 { 137 remote-endpoint = <&tv_connector_in>; 138 }; 139 }; 140 }; 141 }; 142}; 143 144&omap3_pmx_core { 145 pinctrl-names = "default"; 146 pinctrl-0 = < 147 &hsusb2_pins 148 >; 149 150 hsusb2_pins: pinmux_hsusb2_pins { 151 pinctrl-single,pins = < 152 OMAP3_CORE1_IOPAD(0x21d4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi1_cs3.hsusb2_data2 */ 153 OMAP3_CORE1_IOPAD(0x21d6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_clk.hsusb2_data7 */ 154 OMAP3_CORE1_IOPAD(0x21d8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_simo.hsusb2_data4 */ 155 OMAP3_CORE1_IOPAD(0x21da, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_somi.hsusb2_data5 */ 156 OMAP3_CORE1_IOPAD(0x21dc, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_cs0.hsusb2_data6 */ 157 OMAP3_CORE1_IOPAD(0x21de, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_cs1.hsusb2_data3 */ 158 >; 159 }; 160 161 uart1_pins: pinmux_uart1_pins { 162 pinctrl-single,pins = < 163 OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE0) /* uart1_rx.uart1_rx */ 164 OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE0) /* uart1_tx.uart1_tx */ 165 >; 166 }; 167 168 uart2_pins: pinmux_uart2_pins { 169 pinctrl-single,pins = < 170 OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */ 171 OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE0) /* uart2_tx.uart2_tx */ 172 >; 173 }; 174 175 uart3_pins: pinmux_uart3_pins { 176 pinctrl-single,pins = < 177 OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | MUX_MODE0) /* uart3_rx.uart3_rx */ 178 OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx.uart3_tx */ 179 >; 180 }; 181 182 mmc1_pins: pinmux_mmc1_pins { 183 pinctrl-single,pins = < 184 OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk.sdmmc1_clk */ 185 OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_cmd.sdmmc1_cmd */ 186 OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat0.sdmmc1_dat0 */ 187 OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1.sdmmc1_dat1 */ 188 OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2.sdmmc1_dat2 */ 189 OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3.sdmmc1_dat3 */ 190 >; 191 }; 192 193 dss_dpi_pins: pinmux_dss_dpi_pins { 194 pinctrl-single,pins = < 195 OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT | MUX_MODE0) /* dss_pclk.dss_pclk */ 196 OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT | MUX_MODE0) /* dss_hsync.dss_hsync */ 197 OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT | MUX_MODE0) /* dss_vsync.dss_vsync */ 198 OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT | MUX_MODE0) /* dss_acbias.dss_acbias */ 199 OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE0) /* dss_data0.dss_data0 */ 200 OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE0) /* dss_data1.dss_data1 */ 201 OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE0) /* dss_data2.dss_data2 */ 202 OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE0) /* dss_data3.dss_data3 */ 203 OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE0) /* dss_data4.dss_data4 */ 204 OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE0) /* dss_data5.dss_data5 */ 205 OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT | MUX_MODE0) /* dss_data6.dss_data6 */ 206 OMAP3_CORE1_IOPAD(0x20ea, PIN_OUTPUT | MUX_MODE0) /* dss_data7.dss_data7 */ 207 OMAP3_CORE1_IOPAD(0x20ec, PIN_OUTPUT | MUX_MODE0) /* dss_data8.dss_data8 */ 208 OMAP3_CORE1_IOPAD(0x20ee, PIN_OUTPUT | MUX_MODE0) /* dss_data9.dss_data9 */ 209 OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE0) /* dss_data10.dss_data10 */ 210 OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE0) /* dss_data11.dss_data11 */ 211 OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE0) /* dss_data12.dss_data12 */ 212 OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE0) /* dss_data13.dss_data13 */ 213 OMAP3_CORE1_IOPAD(0x20f8, PIN_OUTPUT | MUX_MODE0) /* dss_data14.dss_data14 */ 214 OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0) /* dss_data15.dss_data15 */ 215 OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE0) /* dss_data16.dss_data16 */ 216 OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE0) /* dss_data17.dss_data17 */ 217 OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE0) /* dss_data18.dss_data18 */ 218 OMAP3_CORE1_IOPAD(0x2102, PIN_OUTPUT | MUX_MODE0) /* dss_data19.dss_data19 */ 219 OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE0) /* dss_data20.dss_data20 */ 220 OMAP3_CORE1_IOPAD(0x2106, PIN_OUTPUT | MUX_MODE0) /* dss_data21.dss_data21 */ 221 OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE0) /* dss_data22.dss_data22 */ 222 OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE0) /* dss_data23.dss_data23 */ 223 >; 224 }; 225 226 hdq_pins: hdq_pins { 227 pinctrl-single,pins = < 228 OMAP3_CORE1_IOPAD(0x21c6, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_sda.hdq */ 229 >; 230 }; 231}; 232 233&omap3_pmx_core2 { 234 pinctrl-names = "default"; 235 pinctrl-0 = < 236 &hsusb2_2_pins 237 >; 238 239 hsusb2_2_pins: pinmux_hsusb2_2_pins { 240 pinctrl-single,pins = < 241 OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */ 242 OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */ 243 OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */ 244 OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */ 245 OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */ 246 OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */ 247 >; 248 }; 249 250 spi_gpio_pins: spi_gpio_pinmux { 251 pinctrl-single,pins = < 252 OMAP3630_CORE2_IOPAD(0x25d8, PIN_OUTPUT | MUX_MODE4) /* clk */ 253 OMAP3630_CORE2_IOPAD(0x25e6, PIN_OUTPUT | MUX_MODE4) /* cs */ 254 OMAP3630_CORE2_IOPAD(0x25e8, PIN_OUTPUT | MUX_MODE4) /* tx */ 255 OMAP3630_CORE2_IOPAD(0x25e4, PIN_INPUT | MUX_MODE4) /* rx */ 256 >; 257 }; 258}; 259 260&i2c1 { 261 clock-frequency = <2600000>; 262 263 twl: twl@48 { 264 reg = <0x48>; 265 interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 266 interrupt-parent = <&intc>; 267 268 twl_audio: audio { 269 compatible = "ti,twl4030-audio"; 270 ti,enable-vibra = <1>; 271 codec { 272 ti,ramp_delay_value = <3>; 273 }; 274 }; 275 276 twl_power: power { 277 compatible = "ti,twl4030-power"; 278 ti,use_poweroff; 279 }; 280 }; 281}; 282 283#include "twl4030.dtsi" 284#include "twl4030_omap3.dtsi" 285 286&i2c2 { 287 clock-frequency = <400000>; 288 289 /* pressure sensor */ 290 bmp085@77 { 291 compatible = "bosch,bmp085"; 292 reg = <0x77>; 293 interrupt-parent = <&gpio4>; 294 interrupts = <17 IRQ_TYPE_EDGE_RISING>; /* GPIO_113 */ 295 }; 296 297 /* accelerometer */ 298 bma180@41 { 299 compatible = "bosch,bma180"; 300 reg = <0x41>; 301 interrupt-parent = <&gpio4>; 302 interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; /* GPIO_115 */ 303 }; 304 305 /* gyroscope */ 306 itg3200@68 { 307 compatible = "invensense,itg3200"; 308 reg = <0x68>; 309 interrupt-parent = <&gpio2>; 310 interrupts = <24 0>; /* GPIO_56 */ 311 }; 312 313 /* leds */ 314 tca6507@45 { 315 compatible = "ti,tca6507"; 316 #address-cells = <1>; 317 #size-cells = <0>; 318 reg = <0x45>; 319 320 gpio-controller; 321 #gpio-cells = <2>; 322 323 gta04_led0: red_aux@0 { 324 label = "gta04:red:aux"; 325 reg = <0x0>; 326 }; 327 328 gta04_led1: green_aux@1 { 329 label = "gta04:green:aux"; 330 reg = <0x1>; 331 }; 332 333 gta04_led3: red_power@3 { 334 label = "gta04:red:power"; 335 reg = <0x3>; 336 linux,default-trigger = "default-on"; 337 }; 338 339 gta04_led4: green_power@4 { 340 label = "gta04:green:power"; 341 reg = <0x4>; 342 }; 343 344 wifi_reset: wifi_reset@6 { 345 reg = <0x6>; 346 compatible = "gpio"; 347 }; 348 }; 349 350 /* compass aka magnetometer */ 351 hmc5843@1e { 352 compatible = "honeywell,hmc5883l"; 353 reg = <0x1e>; 354 }; 355 356 /* touchscreen */ 357 tsc2007@48 { 358 compatible = "ti,tsc2007"; 359 reg = <0x48>; 360 interrupt-parent = <&gpio6>; 361 interrupts = <0 IRQ_TYPE_EDGE_FALLING>; /* GPIO_160 */ 362 gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; 363 ti,x-plate-ohms = <600>; 364 }; 365}; 366 367&i2c3 { 368 clock-frequency = <100000>; 369}; 370 371&usb_otg_hs { 372 interface-type = <0>; 373 usb-phy = <&usb2_phy>; 374 phys = <&usb2_phy>; 375 phy-names = "usb2-phy"; 376 mode = <3>; 377 power = <50>; 378}; 379 380&usbhshost { 381 port2-mode = "ehci-phy"; 382}; 383 384&usbhsehci { 385 phys = <0 &hsusb2_phy>; 386}; 387 388&mmc1 { 389 pinctrl-names = "default"; 390 pinctrl-0 = <&mmc1_pins>; 391 vmmc-supply = <&vmmc1>; 392 bus-width = <4>; 393 ti,non-removable; 394}; 395 396&mmc2 { 397 vmmc-supply = <&vaux4>; 398 bus-width = <4>; 399 ti,non-removable; 400 cap-power-off-card; 401}; 402 403&mmc3 { 404 status = "disabled"; 405}; 406 407&twl_keypad { 408 status = "disabled"; 409}; 410 411&uart1 { 412 pinctrl-names = "default"; 413 pinctrl-0 = <&uart1_pins>; 414}; 415 416&uart2 { 417 pinctrl-names = "default"; 418 pinctrl-0 = <&uart2_pins>; 419}; 420 421&uart3 { 422 pinctrl-names = "default"; 423 pinctrl-0 = <&uart3_pins>; 424}; 425 426&charger { 427 ti,bb-uvolt = <3200000>; 428 ti,bb-uamp = <150>; 429}; 430 431/* spare */ 432&vaux1 { 433 regulator-min-microvolt = <2500000>; 434 regulator-max-microvolt = <3000000>; 435}; 436 437/* sensors */ 438&vaux2 { 439 regulator-min-microvolt = <2800000>; 440 regulator-max-microvolt = <2800000>; 441 regulator-always-on; 442}; 443 444/* camera */ 445&vaux3 { 446 regulator-min-microvolt = <2500000>; 447 regulator-max-microvolt = <2500000>; 448}; 449 450/* WLAN/BT */ 451&vaux4 { 452 regulator-min-microvolt = <2800000>; 453 regulator-max-microvolt = <3150000>; 454}; 455 456/* GPS LNA */ 457&vsim { 458 regulator-min-microvolt = <2800000>; 459 regulator-max-microvolt = <3150000>; 460}; 461 462&dss { 463 pinctrl-names = "default"; 464 pinctrl-0 = < &dss_dpi_pins >; 465 466 status = "okay"; 467 vdds_dsi-supply = <&vpll2>; 468 469 port { 470 dpi_out: endpoint { 471 remote-endpoint = <&lcd_in>; 472 data-lines = <24>; 473 }; 474 }; 475}; 476 477&venc { 478 status = "okay"; 479 480 vdda-supply = <&vdac>; 481 482 port { 483 venc_out: endpoint { 484 remote-endpoint = <&opa_in>; 485 ti,channels = <2>; 486 ti,invert-polarity; 487 }; 488 }; 489}; 490 491&gpmc { 492 ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */ 493 494 nand@0,0 { 495 reg = <0 0 4>; /* CS0, offset 0, IO size 4 */ 496 nand-bus-width = <16>; 497 ti,nand-ecc-opt = "bch8"; 498 499 gpmc,sync-clk-ps = <0>; 500 gpmc,cs-on-ns = <0>; 501 gpmc,cs-rd-off-ns = <44>; 502 gpmc,cs-wr-off-ns = <44>; 503 gpmc,adv-on-ns = <6>; 504 gpmc,adv-rd-off-ns = <34>; 505 gpmc,adv-wr-off-ns = <44>; 506 gpmc,we-off-ns = <40>; 507 gpmc,oe-off-ns = <54>; 508 gpmc,access-ns = <64>; 509 gpmc,rd-cycle-ns = <82>; 510 gpmc,wr-cycle-ns = <82>; 511 gpmc,wr-access-ns = <40>; 512 gpmc,wr-data-mux-bus-ns = <0>; 513 gpmc,device-width = <2>; 514 515 #address-cells = <1>; 516 #size-cells = <1>; 517 518 x-loader@0 { 519 label = "X-Loader"; 520 reg = <0 0x80000>; 521 }; 522 523 bootloaders@80000 { 524 label = "U-Boot"; 525 reg = <0x80000 0x1e0000>; 526 }; 527 528 bootloaders_env@260000 { 529 label = "U-Boot Env"; 530 reg = <0x260000 0x20000>; 531 }; 532 533 kernel@280000 { 534 label = "Kernel"; 535 reg = <0x280000 0x400000>; 536 }; 537 538 filesystem@680000 { 539 label = "File System"; 540 reg = <0x680000 0xf980000>; 541 }; 542 }; 543}; 544 545&mcbsp2 { 546 status = "okay"; 547}; 548 549&hdqw1w { 550 pinctrl-names = "default"; 551 pinctrl-0 = <&hdq_pins>; 552}; 553 554&mcbsp4 { 555 status = "okay"; 556}; 557