1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/ 4 */ 5/dts-v1/; 6 7#include "omap36xx.dtsi" 8 9/ { 10 model = "TI OMAP3 BeagleBoard xM"; 11 compatible = "ti,omap3-beagle-xm", "ti,omap3630", "ti,omap36xx", "ti,omap3"; 12 13 cpus { 14 cpu@0 { 15 cpu0-supply = <&vcc>; 16 }; 17 }; 18 19 memory@80000000 { 20 device_type = "memory"; 21 reg = <0x80000000 0x20000000>; /* 512 MB */ 22 }; 23 24 aliases { 25 display0 = &dvi0; 26 display1 = &tv0; 27 ethernet = ðernet; 28 }; 29 30 /* fixed 26MHz oscillator */ 31 hfclk_26m: oscillator { 32 #clock-cells = <0>; 33 compatible = "fixed-clock"; 34 clock-frequency = <26000000>; 35 }; 36 37 led-controller-1 { 38 compatible = "gpio-leds"; 39 40 led-1 { 41 label = "beagleboard::usr0"; 42 gpios = <&gpio5 22 GPIO_ACTIVE_HIGH>; /* 150 -> D6 LED */ 43 linux,default-trigger = "heartbeat"; 44 }; 45 46 led-2 { 47 label = "beagleboard::usr1"; 48 gpios = <&gpio5 21 GPIO_ACTIVE_HIGH>; /* 149 -> D7 LED */ 49 linux,default-trigger = "mmc0"; 50 }; 51 }; 52 53 led-controller-2 { 54 compatible = "pwm-leds"; 55 56 led-3 { 57 label = "beagleboard::pmu_stat"; 58 pwms = <&twl_pwmled 1 7812500>; 59 max-brightness = <127>; 60 }; 61 }; 62 63 sound { 64 compatible = "ti,omap-twl4030"; 65 ti,model = "omap3beagle"; 66 67 ti,mcbsp = <&mcbsp2>; 68 }; 69 70 gpio_keys { 71 compatible = "gpio-keys"; 72 73 user { 74 label = "user"; 75 gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>; 76 linux,code = <0x114>; 77 wakeup-source; 78 }; 79 80 }; 81 82 /* HS USB Port 2 Power */ 83 hsusb2_power: hsusb2_power_reg { 84 compatible = "regulator-fixed"; 85 regulator-name = "hsusb2_vbus"; 86 regulator-min-microvolt = <3300000>; 87 regulator-max-microvolt = <3300000>; 88 gpio = <&twl_gpio 18 GPIO_ACTIVE_HIGH>; /* GPIO LEDA */ 89 startup-delay-us = <70000>; 90 }; 91 92 /* HS USB Host PHY on PORT 2 */ 93 hsusb2_phy: hsusb2_phy { 94 compatible = "usb-nop-xceiv"; 95 reset-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>; /* gpio_147 */ 96 vcc-supply = <&hsusb2_power>; 97 #phy-cells = <0>; 98 }; 99 100 tfp410: encoder0 { 101 compatible = "ti,tfp410"; 102 powerdown-gpios = <&twl_gpio 2 GPIO_ACTIVE_LOW>; 103 104 /* XXX pinctrl from twl */ 105 106 ports { 107 #address-cells = <1>; 108 #size-cells = <0>; 109 110 port@0 { 111 reg = <0>; 112 113 tfp410_in: endpoint { 114 remote-endpoint = <&dpi_out>; 115 }; 116 }; 117 118 port@1 { 119 reg = <1>; 120 121 tfp410_out: endpoint { 122 remote-endpoint = <&dvi_connector_in>; 123 }; 124 }; 125 }; 126 }; 127 128 dvi0: connector0 { 129 compatible = "dvi-connector"; 130 label = "dvi"; 131 132 digital; 133 134 ddc-i2c-bus = <&i2c3>; 135 136 port { 137 dvi_connector_in: endpoint { 138 remote-endpoint = <&tfp410_out>; 139 }; 140 }; 141 }; 142 143 tv0: connector1 { 144 compatible = "svideo-connector"; 145 label = "tv"; 146 147 port { 148 tv_connector_in: endpoint { 149 remote-endpoint = <&venc_out>; 150 }; 151 }; 152 }; 153 154 etb@5401b000 { 155 compatible = "arm,coresight-etb10", "arm,primecell"; 156 reg = <0x5401b000 0x1000>; 157 158 clocks = <&emu_src_ck>; 159 clock-names = "apb_pclk"; 160 in-ports { 161 port { 162 etb_in: endpoint { 163 remote-endpoint = <&etm_out>; 164 }; 165 }; 166 }; 167 }; 168 169 etm@54010000 { 170 compatible = "arm,coresight-etm3x", "arm,primecell"; 171 reg = <0x54010000 0x1000>; 172 173 clocks = <&emu_src_ck>; 174 clock-names = "apb_pclk"; 175 out-ports { 176 port { 177 etm_out: endpoint { 178 remote-endpoint = <&etb_in>; 179 }; 180 }; 181 }; 182 }; 183}; 184 185&omap3_pmx_wkup { 186 gpio1_pins: pinmux_gpio1_pins { 187 pinctrl-single,pins = < 188 OMAP3_WKUP_IOPAD(0x2a0e, PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE4) /* sys_boot2.gpio_4 */ 189 >; 190 }; 191 192 dss_dpi_pins2: pinmux_dss_dpi_pins1 { 193 pinctrl-single,pins = < 194 OMAP3_WKUP_IOPAD(0x2a0a, PIN_OUTPUT | MUX_MODE3) /* sys_boot0.dss_data18 */ 195 OMAP3_WKUP_IOPAD(0x2a0c, PIN_OUTPUT | MUX_MODE3) /* sys_boot1.dss_data19 */ 196 OMAP3_WKUP_IOPAD(0x2a10, PIN_OUTPUT | MUX_MODE3) /* sys_boot3.dss_data20 */ 197 OMAP3_WKUP_IOPAD(0x2a12, PIN_OUTPUT | MUX_MODE3) /* sys_boot4.dss_data21 */ 198 OMAP3_WKUP_IOPAD(0x2a14, PIN_OUTPUT | MUX_MODE3) /* sys_boot5.dss_data22 */ 199 OMAP3_WKUP_IOPAD(0x2a16, PIN_OUTPUT | MUX_MODE3) /* sys_boot6.dss_data23 */ 200 >; 201 }; 202}; 203 204&omap3_pmx_core { 205 pinctrl-names = "default"; 206 pinctrl-0 = < 207 &hsusb2_pins 208 >; 209 210 uart3_pins: pinmux_uart3_pins { 211 pinctrl-single,pins = < 212 OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */ 213 OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx OUTPUT | MODE0 */ 214 >; 215 }; 216 217 hsusb2_pins: pinmux_hsusb2_pins { 218 pinctrl-single,pins = < 219 OMAP3_CORE1_IOPAD(0x21d4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi1_cs3.hsusb2_data2 */ 220 OMAP3_CORE1_IOPAD(0x21d6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_clk.hsusb2_data7 */ 221 OMAP3_CORE1_IOPAD(0x21d8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_simo.hsusb2_data4 */ 222 OMAP3_CORE1_IOPAD(0x21da, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_somi.hsusb2_data5 */ 223 OMAP3_CORE1_IOPAD(0x21dc, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_cs0.hsusb2_data6 */ 224 OMAP3_CORE1_IOPAD(0x21de, PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcspi2_cs1.hsusb2_data3 */ 225 >; 226 }; 227 228 dss_dpi_pins1: pinmux_dss_dpi_pins2 { 229 pinctrl-single,pins = < 230 OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT | MUX_MODE0) /* dss_pclk.dss_pclk */ 231 OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT | MUX_MODE0) /* dss_hsync.dss_hsync */ 232 OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT | MUX_MODE0) /* dss_vsync.dss_vsync */ 233 OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT | MUX_MODE0) /* dss_acbias.dss_acbias */ 234 235 OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT | MUX_MODE0) /* dss_data6.dss_data6 */ 236 OMAP3_CORE1_IOPAD(0x20ea, PIN_OUTPUT | MUX_MODE0) /* dss_data7.dss_data7 */ 237 OMAP3_CORE1_IOPAD(0x20ec, PIN_OUTPUT | MUX_MODE0) /* dss_data8.dss_data8 */ 238 OMAP3_CORE1_IOPAD(0x20ee, PIN_OUTPUT | MUX_MODE0) /* dss_data9.dss_data9 */ 239 OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE0) /* dss_data10.dss_data10 */ 240 OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE0) /* dss_data11.dss_data11 */ 241 OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE0) /* dss_data12.dss_data12 */ 242 OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE0) /* dss_data13.dss_data13 */ 243 OMAP3_CORE1_IOPAD(0x20f8, PIN_OUTPUT | MUX_MODE0) /* dss_data14.dss_data14 */ 244 OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0) /* dss_data15.dss_data15 */ 245 OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE0) /* dss_data16.dss_data16 */ 246 OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE0) /* dss_data17.dss_data17 */ 247 248 OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE3) /* dss_data18.dss_data0 */ 249 OMAP3_CORE1_IOPAD(0x2102, PIN_OUTPUT | MUX_MODE3) /* dss_data19.dss_data1 */ 250 OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE3) /* dss_data20.dss_data2 */ 251 OMAP3_CORE1_IOPAD(0x2106, PIN_OUTPUT | MUX_MODE3) /* dss_data21.dss_data3 */ 252 OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE3) /* dss_data22.dss_data4 */ 253 OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE3) /* dss_data23.dss_data5 */ 254 >; 255 }; 256}; 257 258&omap3_pmx_core2 { 259 pinctrl-names = "default"; 260 pinctrl-0 = < 261 &hsusb2_2_pins 262 >; 263 264 hsusb2_2_pins: pinmux_hsusb2_2_pins { 265 pinctrl-single,pins = < 266 OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */ 267 OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */ 268 OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */ 269 OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */ 270 OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */ 271 OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */ 272 >; 273 }; 274}; 275 276&i2c1 { 277 clock-frequency = <2600000>; 278 279 twl: twl@48 { 280 reg = <0x48>; 281 interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 282 interrupt-parent = <&intc>; 283 284 clocks = <&hfclk_26m>; 285 clock-names = "fck"; 286 287 twl_audio: audio { 288 compatible = "ti,twl4030-audio"; 289 codec { 290 }; 291 }; 292 293 twl_power: power { 294 compatible = "ti,twl4030-power-beagleboard-xm", "ti,twl4030-power-idle-osc-off"; 295 ti,use_poweroff; 296 }; 297 }; 298}; 299 300#include "twl4030.dtsi" 301#include "twl4030_omap3.dtsi" 302 303&i2c2 { 304 clock-frequency = <400000>; 305}; 306 307&i2c3 { 308 clock-frequency = <100000>; 309}; 310 311&mmc1 { 312 vmmc-supply = <&vmmc1>; 313 vqmmc-supply = <&vsim>; 314 bus-width = <8>; 315}; 316 317&mmc2 { 318 status = "disabled"; 319}; 320 321&mmc3 { 322 status = "disabled"; 323}; 324 325&twl_gpio { 326 ti,use-leds; 327 /* pullups: BIT(1) */ 328 ti,pullups = <0x000002>; 329 /* 330 * pulldowns: 331 * BIT(2), BIT(6), BIT(7), BIT(8), BIT(13) 332 * BIT(15), BIT(16), BIT(17) 333 */ 334 ti,pulldowns = <0x03a1c4>; 335}; 336 337&usb_otg_hs { 338 interface-type = <0>; 339 usb-phy = <&usb2_phy>; 340 phys = <&usb2_phy>; 341 phy-names = "usb2-phy"; 342 mode = <3>; 343 power = <50>; 344}; 345 346&uart3 { 347 interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>; 348 pinctrl-names = "default"; 349 pinctrl-0 = <&uart3_pins>; 350}; 351 352&gpio1 { 353 pinctrl-names = "default"; 354 pinctrl-0 = <&gpio1_pins>; 355}; 356 357&usbhshost { 358 port2-mode = "ehci-phy"; 359}; 360 361&usbhsehci { 362 phys = <0 &hsusb2_phy>; 363 364 #address-cells = <1>; 365 #size-cells = <0>; 366 367 hub@2 { 368 compatible = "usb424,9514"; 369 reg = <2>; 370 #address-cells = <1>; 371 #size-cells = <0>; 372 373 ethernet: ethernet@1 { 374 compatible = "usb424,ec00"; 375 reg = <1>; 376 }; 377 }; 378}; 379 380&vaux2 { 381 regulator-name = "usb_1v8"; 382 regulator-min-microvolt = <1800000>; 383 regulator-max-microvolt = <1800000>; 384 regulator-always-on; 385}; 386 387&mcbsp2 { 388 status = "okay"; 389}; 390 391&dss { 392 status = "okay"; 393 394 pinctrl-names = "default"; 395 pinctrl-0 = < 396 &dss_dpi_pins1 397 &dss_dpi_pins2 398 >; 399 400 port { 401 dpi_out: endpoint { 402 remote-endpoint = <&tfp410_in>; 403 data-lines = <24>; 404 }; 405 }; 406}; 407 408&venc { 409 status = "okay"; 410 411 vdda-supply = <&vdac>; 412 413 port { 414 venc_out: endpoint { 415 remote-endpoint = <&tv_connector_in>; 416 ti,channels = <2>; 417 }; 418 }; 419}; 420