/* * Copyright (C) 2014 Olio Devices, Inc. * Authors: Evan Wilson * Mattis Fjallstrom * * Modified from omap3-beagle-xm.dts * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; /* reserve memory for ram_console */ /memreserve/ 0x83000000 0x20000; /* IMAGE_DOWN_LOAD_ADDR */ /* /memreserve/ 0x83020000 0x16000; */ /* OMAP_SECURE_RAM_STORAGE_ADDR */ /* /memreserve/ 0x83036000 0x9000; */ /* OMAP3_SECURE_RAM_CTX_ADDR */ /include/ "omap36xx.dtsi" / { model = "Olio OMAP3 H1 Board"; compatible = "olio,omap3-h1", "ti,omap3"; cpus { cpu@0 { device_type = "cpu"; operating-points = < /* kHz uV (from opp3xxx_data.c) */ 300000 1012500 600000 1200000 800000 1325000 >; cpu0-supply = <&omap_tps65910>; /* OPP tolerance in percentage */ voltage-tolerance = <0>; reset-voltage = <1275000>; }; }; vbat: fixedregulator@0 { compatible = "regulator-fixed"; regulator-name = "vbat"; regulator-min-microvolt = <3700000>; regulator-max-microvolt = <3700000>; regulator-boot-on; }; ramoops { compatible = "ramoops"; status = "ok"; android,ramoops-buffer-start = <0x83000000>; android,ramoops-buffer-size = <0x20000>; android,ramoops-console-size = <0x1FC00>; android,ramoops-annotate-size = <0x400>; }; /* omap_pimic is used by the omap-pmic-regulator driver - a * generic framework for omap interfacing with i2c drivers, based * on the TWL framework. * * This is the two regulators needed by the AM3603. */ omap_pimic { omap_tps65910: omap_vdd1 { compatible = "ti,omap-tps65910-vdd1"; ti,boot-voltage-micro-volts = <1275000>; ti,vp = <&vp_mpu>; }; omap_tps65910_vdd2: omap_vdd2 { compatible = "ti,omap-tps65910-vdd2"; ti,boot-voltage-micro-volts = <1200000>; ti,vp = <&vp_core>; }; }; pad-wkup { /* on omap, the irqs are calculated as follows: * for the 96 intc IRQs * irq = 16 + irq_offset (from TRM sec 12.3.2) * for a gpio IRQ (banks numbered 1 to 6) * irq = 16 + 96 + (gpio_bank - 1) * 32 + GPIO no. */ compatible = "ti,pad-wkup"; /* Map the pad offset (off) to an interrupt (IRQ). */ /* if handle is 1, an irq will be generated based on */ /* the pad wkup bit. If 0, the pad will be used only */ /* for reporting, assumingly because the domain will */ /* be in a state during suspend to generate the IRQ */ /* directly. */ /* generic_handle_irq() will be called for multiple */ /* wakeup sources, but only the first in the order */ /* listed below will be reported as the wakeup reason */ /* */ /* off IRQ handle */ ti,pad_irq = <0x150 88 1>, /* 72 + 16, uart1 - BT input */ <0x9f6 143 1>, /* mpu6515 irq pin - is this offset correct? */ <0x9f4 123 1>; /* BT host wake */ }; sound { compatible = "olio,omap-soc-omap3h1"; olio,mcbsp_bt = <&mcbsp2>; olio,mcbsp_mic = <&mcbsp3>; olio,mic_enable = <&gpio5 18 0>; }; }; &vc { ti,i2c-high-speed; ti,i2c-pad-load = <3>; vc_mpu { ti,master-channel; }; vc_core { ti,use-master-slave-addr; }; }; &glbl_prm { status = "ok"; sys_clk = "osc_sys_ck"; autoextclkmode = <2>; sys_off_mode; auto_off; auto_retention; offmodesetup_time = <6000>; clksetup_time = <1000>; }; &omap3_pmx_core { /* pinmux@48002030 */ pinctrl-names = "default"; pinctrl-0 = < &board_pins &dev_pins >; board_pins: pinmux_board_pins { pinctrl-single,pins = < 0x0a4 0x000 /* DSS_PCLK, MODE0 | OUTPUT */ 0x0a6 0x000 /* DSS_HSYNC, MODE0 | OUTPUT */ 0x0a8 0x000 /* DSS_VSYNC, MODE0 | OUTPUT */ 0x0ac 0x000 /* DSS_DATA0, MODE0 | OUTPUT */ 0x0ae 0x000 /* DSS_DATA1, MODE0 | OUTPUT */ 0x0b0 0x000 /* DSS_DATA2, MODE0 | OUTPUT */ 0x0b2 0x000 /* DSS_DATA3, MODE0 | OUTPUT */ 0x0b4 0x000 /* DSS_DATA4, MODE0 | OUTPUT */ 0x0b6 0x000 /* DSS_DATA5, MODE0 | OUTPUT */ 0x0b8 0x000 /* DSS_DATA6, MODE0 | OUTPUT */ 0x0ba 0x000 /* DSS_DATA7, MODE0 | OUTPUT */ 0x0bc 0x000 /* DSS_DATA8, MODE0 | OUTPUT */ 0x0be 0x000 /* DSS_DATA9, MODE0 | OUTPUT */ 0x0c0 0x000 /* DSS_DATA10, MODE0 | OUTPUT */ 0x0c2 0x000 /* DSS_DATA11, MODE0 | OUTPUT */ 0x0c4 0x000 /* DSS_DATA12, MODE0 | OUTPUT */ 0x0c6 0x000 /* DSS_DATA13, MODE0 | OUTPUT */ 0x0c8 0x000 /* DSS_DATA14, MODE0 | OUTPUT */ 0x0ca 0x000 /* DSS_DATA15, MODE0 | OUTPUT */ 0x0cc 0x000 /* DSS_DATA16, MODE0 | OUTPUT */ 0x0ce 0x000 /* DSS_DATA17, MODE0 | OUTPUT */ 0x198 0x000 /* MCSPI1_CLK, MODE0 | OUTNPUT */ 0x19a 0x000 /* MCSPI1_SIMO, MODE0 | OUTPUT */ 0x19c 0x118 /* MCSPI1_SOMI, MODE0 | INPUT_PULLUP */ 0x1a0 0x000 /* MCSPI1_CS1, MODE0 | OUTPUT */ /* CKE pin for memory */ 0x232 0x000 /* SDRC_CKE0, MODE0 | OUTPUT */ 0x234 0x000 /* SDRC_CKE1, MODE0 | OUTPUT */ /* touch reset */ 0x0f2 0x11c /* CAM_D6, MODE4 | INPUT_PULLUP */ 0x5ba 0x004 /* ETK_D7, MODE4 | OUTPUT (from GL susp) */ 0x1b0 0x4118 /* 0xc100 SYS_NIRQ, MODE0 | INPUT | OFFWAKEUP */ 0x0dc 0x004 /* CAM_HS, MODE4 | OUTPUT */ /* USB */ 0x172 0x100 /* HSUSB0_CLK, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x174 0x000 /* HSUSB0_STP, (OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT) */ 0x176 0x100 /* HSUSB0_DIR, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x178 0x100 /* HSUSB0_NXT, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x17a 0x100 /* HSUSB0_DATA0, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x17c 0x100 /* HSUSB0_DATA1, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT */ 0x17e 0x100 /* HSUSB0_DATA2, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x180 0x100 /* HSUSB0_DATA3, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x182 0x100 /* HSUSB0_DATA4, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x184 0x100 /* HSUSB0_DATA5, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x186 0x100 /* HSUSB0_DATA6, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x188 0x100 /* HSUSB0_DATA7, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ /* pin for controlling bluetooth chip, settings from uboot */ 0x1a8 0x004 /* CONTROL_PADCONF_MCSPI2_SIMO, (IDIS | PI | M4 ) */ 0x1aa 0x004 /* CONTROL_PADCONF_MCSPI2_SOMI, (IDIS | PI | M4 ) */ /* UART3 pins */ #ifdef CONFIG_OLIO_H1_PRODUCTION /* Production build, no console, safe mode */ 0x16a 0x007 0x16c 0x007 0x16e 0x007 /* RX */ 0x170 0x007 /* TX */ #else /* regular build, working UART console */ 0x16e 0x100 /* RX, input, off wake up */ 0x170 0x000 /* TX, output */ #endif /* GPIO146, aka UART2TX, aka Microphone enable */ 0x148 0x161C /* (204) OUTPUT | GPIO | OFF_ENABLE | OFF_PULL_LOW */ /* (0x161C) 0001011000011100 | PULL_ENA | PULL_UP */ /* Accelerometer interrupt */ /* I've tried configuring this both in the wkup pinmux (below) and here, but this location makes it not function as an interrupt... ??? */ /* 0x9f6 0x4104 */ /* JTAG_EMU1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT | OMAP_PIN_OFF_WAKEUPENABLE */ 0x14c 0x000 /* UART1, BT, TX */ 0x14e 0xA00 /* UART1, BT, RTS - A00 = output off high, this one is active low! */ 0x150 0x4100 /* UART1, BT, CTS */ 0x152 0x100 /* UART1, BT, RX */ /* BT_WAKE_GPIO - for waking up BT */ /* OMAP_OFF_ENABLE, OMAP_OFF_PULL_EN, OMAP_OFF_OUTENABLE for sleep modes. */ /* Now set this to regular old output .. also off enable, output low. (0x600) */ 0x0da 0x004 /* 0x1604 */ /* DSS_DATA23, (IDIS | PI | M4 ) */ >; }; dev_pins: pinmux_pv_pins { pinctrl-single,pins = < 0x5b2 0x204 /* USB control, ETK_D3, MODE4 | OUTPUT */ /* 0x1a2 0x104 */ /* ALS interrupt, input, GPIO */ 0x086 0x004 /* DRV2605 vibrator, output, GPIO */ /* 0x938 0x104 */ /* Battery state, input, GPIO */ >; }; /* i2c1_pins: pinmux_i2c1_pins { pinctrl-single,pins = < 0x18a 0x118 */ /* I2C1_SCL, MODE0 | INPUT_PULLUP */ /* 0x18c 0x118 */ /* I2C1_SCA, MODE0 | INPUT_PULLUP */ /* >; }; */ i2c1_pins: pinmux_i2c1_pins { pinctrl-single,pins = < 0x18a 0x118 /* I2C1_SCL, MODE0 | INPUT_PULLUP */ 0x18c 0x118 /* I2C1_SCL, MODE0 | INPUT_PULLUP */ >; }; i2c2_pins: pinmux_i2c2_pins { pinctrl-single,pins = < 0x18e 0x118 /* I2C2_SCL, MODE0 | INPUT_PULLUP */ 0x190 0x118 /* I2C2_SDA, MODE0 | INPUT_PULLUP */ >; }; }; &omap3_pmx_wkup { /* pinmux@0x48002a00 */ pinctrl-names = "default"; pinctrl-0 = <&wkup_pins>; wkup_pins: pinmux_wakeup_pins { pinctrl-single,pins = < 0x006 0x008 /* SYS_CLKREQ, MODE0 | PULLDOWN */ 0x018 0x000 /* SYS_OFF_MODE, MODE0 */ /* Fuel gauge interrupt */ 0x01a 0x4104 /* SYS_CLKOUT1, MODE4 | OMAP_PIN_INPUT */ /* * lm3530 PWM pin, gpio128 * gpio128, MODE4 | OFFPULLDOWN | OFFENABLE | OFFOUTENABLE | * OUTPUT */ 0x058 0x1604 /* Wakeup from Bluetooth */ 0x024 0x410C /* JTAG_EMU0, OMAP_MUX_MODE4 | OMAP_PIN_INPUT | OMAP_PIN_OFF_WAKEUPENABLE */ /* Accelerometer interrupt */ 0x026 0x410C /* JTAG_EMU1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT | OMAP_PIN_OFF_WAKEUPENABLE */ >; }; }; &i2c1 { pinctrl-names = "default"; pinctrl-0 = <&i2c1_pins>; status = "okay"; clock-frequency = <400000>; tps: tps@2d { reg = <0x2d>; }; }; /include/ "tps65910.dtsi" &tps { interrupt-parent = <&intc>; interrupts = <7>; /* SYS_NIRQ */ #interrupt-cells = <2>; interrupt-controller; /* This is from HEAD */ /* ti,en-ck32k-xtal; */ /* This is from GL's suspend branch */ /* crystal oscillator is installed on the board */ ti,en-ck32k-xtal; ti,en-dev-slp; ti,sleepsig-pol; ti,clkout32k-keepon; /* set SR_CTL_I2C_SEL - access to smartreflex registers by control i2c */ ti,system-power-controller; vcc1-supply = <&vbat>; vcc2-supply = <&vbat>; vcc3-supply = <&vbat>; vcc4-supply = <&vbat>; vcc5-supply = <&vbat>; vcc6-supply = <&vbat>; vcc7-supply = <&vbat>; vccio-supply = <&vbat>; regulators { vrtc_reg: regulator@0 { regulator-always-on; ti,regulator-ext-sleep-control = <8>; }; /* DSS is on this one (and much else) */ vio_reg: regulator@1 { regulator-name = "vdds_dsi"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; }; /* Leave one and two on for reliable wake-up */ vdd1_reg: regulator@2 { /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */ /* regulator-boot-on; regulator-always-on; */ /* external sleep control by means of SYS_OFF_MODE signal */ /* regulator-name = "vdd_mpu_iva"; */ regulator-name = "vdd_mpu_iva"; regulator-min-microvolt = <975000>; regulator-max-microvolt = <1275000>; ti,regulator-ext-sleep-control = <8>; }; vdd2_reg: regulator@3 { /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */ /* regulator-boot-on; regulator-always-on; */ /* external sleep control by means of SYS_OFF_MODE signal */ regulator-name = "vdd_core"; regulator-min-microvolt = <900000>; regulator-max-microvolt = <1200000>; ti,regulator-ext-sleep-control = <8>; }; /* not used, I think */ vdd3_reg: regulator@4 { status = "disabled"; ti,regulator-ext-sleep-control = <8>; }; /* This is the accelerometer. We always want it on. */ vdig1_reg: regulator@5 { regulator-name = "vaccel"; regulator-min-microvolt = <2700000>; regulator-max-microvolt = <2700000>; }; /* vdig2_reg: regulator@6 {}; unused */ vdig2_reg: regulator@6 { status = "disabled"; ti,regulator-ext-sleep-control = <8>; }; /* Nobody is explicitly using this rail, but it seems like * it goes to VDDA_DPLL_PER on the chip. So we need it. */ vpll_reg: regulator@7 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; ti,regulator-ext-sleep-control = <8>; }; /* vdac_reg: regulator@8 {}; unused */ vdac_reg: regulator@8 { status = "disabled"; ti,regulator-ext-sleep-control = <8>; }; vaux1_reg: regulator@9 { /* not used, 2.85V by default */ status = "disabled"; ti,regulator-ext-sleep-control = <8>; }; vaux2_reg: regulator@10 { regulator-name = "vaux2"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; ti,regulator-ext-sleep-control = <8>; }; /* This is Bluetooth - never turn it off */ vaux33_reg: regulator@11 { regulator-name = "vaux33"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; ti,regulator-ext-sleep-control = <0x10>; }; /* This one goes to both SPI (for DSS) and touch. How can I * specify two consumers in DT? (vdd for dss, avdd for touch). */ vmmc_reg: regulator@12 { regulator-name = "avdd"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; /*ti,regulator-ext-sleep-control = <8>;*/ }; }; }; /* leave gpio bank interface clocks on during suspend * to avoid race condition in gpio_irq_handler */ &gpio1 { ti,no_idle_on_suspend; }; &gpio2 { ti,no_idle_on_suspend; }; &gpio3 { ti,no_idle_on_suspend; }; &gpio4 { ti,no_idle_on_suspend; }; &gpio5 { ti,no_idle_on_suspend; }; &gpio6 { ti,no_idle_on_suspend; }; /* external */ &mmc1 { status = "disabled"; }; &mmc2 { status = "disabled"; }; &mmc3 { status = "disabled"; };