diff options
Diffstat (limited to 'arch/arm/boot/dts')
| -rw-r--r-- | arch/arm/boot/dts/omap3.dtsi | 10 | ||||
| -rw-r--r-- | arch/arm/boot/dts/omap3_h1.dts | 337 |
2 files changed, 240 insertions, 107 deletions
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi index 78e97bea7af..cae4e9725d0 100644 --- a/arch/arm/boot/dts/omap3.dtsi +++ b/arch/arm/boot/dts/omap3.dtsi @@ -13,12 +13,13 @@ / { compatible = "ti,omap3430", "ti,omap3"; interrupt-parent = <&intc>; - +/* aliases { serial0 = &uart1; serial1 = &uart2; serial2 = &uart3; }; + */ cpus { cpu@0 { @@ -207,7 +208,7 @@ <&omap3_pmx_core 26 0xd9 1>, <&omap3_pmx_core 28 0xc1 4>; }; - +/* uart1: serial@4806a000 { compatible = "ti,omap3-uart"; ti,hwmods = "uart1"; @@ -224,8 +225,8 @@ compatible = "ti,omap3-uart"; ti,hwmods = "uart3"; clock-frequency = <48000000>; - }; - /* + }; */ + i2c1: i2c@48070000 { compatible = "ti,omap3-i2c"; #address-cells = <1>; @@ -233,6 +234,7 @@ ti,hwmods = "i2c1"; }; + /* i2c2: i2c@48072000 { compatible = "ti,omap3-i2c"; #address-cells = <1>; diff --git a/arch/arm/boot/dts/omap3_h1.dts b/arch/arm/boot/dts/omap3_h1.dts index 2e69ef757ff..94f566db142 100644 --- a/arch/arm/boot/dts/omap3_h1.dts +++ b/arch/arm/boot/dts/omap3_h1.dts @@ -26,20 +26,43 @@ 800000 1275000 /* 1000000 1337500 */ >; + 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; + }; + + 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 + * for a gpio IRQ (banks numbered 1 to 6) + * irq = 16 + 96 + (gpio_bank - 1) * 32 + GPIO no. */ - compatible = "ti,pad-wkup"; + compatible = "ti,pad-wkup"; /* Map the pad offset (off) to an interrupt (IRQ). */ /* if handle is 1, an irq will be generated based on */ @@ -52,8 +75,17 @@ /* listed below will be reported as the wakeup reason */ /* */ /* off IRQ handle */ - ti,pad_irq = <0x16e 90 1>, /* uart3 - serial rx */ - <0x9f6 143 1>; /* mpu6515 irq pin */ + ti,pad_irq = <0x150 88 1>, /* uart1 - BT input */ + <0x16e 90 0>, /* uart3 - serial rx */ + <0x9f6 143 1>, /* mpu6515 irq pin - is this offset correct? */ + <0x9f4 123 1>, /* BT host wake */ + <0x1b0 23 1>; /* sys_nirq */ + }; + + sound { + compatible = "olio,omap-soc-omap3h1"; + olio,mcbsp = <&mcbsp3>; + olio,mic_enable = <&gpio5 18 0>; }; }; @@ -76,7 +108,7 @@ sys_off_mode; auto_off; auto_retention; - offmodesetup_time = <3500>; + offmodesetup_time = <6000>; clksetup_time = <1000>; }; @@ -84,6 +116,7 @@ pinctrl-names = "default"; pinctrl-0 = < &board_pins + &dev_pins >; board_pins: pinmux_board_pins { @@ -116,17 +149,17 @@ 0x1a0 0x000 /* MCSPI1_CS1, MODE0 | OUTPUT */ /* CKE pin for memory */ - 0x232 0x000 /* SDRC_CKE0, MODE0 | OUTPUT */ - 0x234 0x000 /* SDRC_CKE1, MODE0 | OUTPUT */ + 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 */ - 0x1b0 0x100 /* SYS_NIRQ, MODE0 | INPUT */ + 0x1b0 0xc100 /* SYS_NIRQ, MODE0 | INPUT | OFFWAKEUP */ + 0x0dc 0x004 /* CAM_HS, MODE4 | OUTPUT */ - /* USB */ + /* USB */ 0x172 0x100 /* HSUSB0_CLK, (OMAP_MUX_MODE0 | OMAP_PIN_INPUT) */ 0x174 0x000 /* HSUSB0_STP, (OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT) */ @@ -142,33 +175,52 @@ 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 ) */ /* BT_WAKE_GPIO - for waking up BT */ - /* OMAP_OFF_ENABLE and OMAP_OFF_PULL_EN for sleep modes. */ - 0x0da 0x1204 /* DSS_DATA23, (IDIS | PI | M4 ) */ + /* OMAP_OFF_ENABLE, OMAP_OFF_PULL_EN, OMAP_OFF_OUTENABLE for sleep modes. */ + /* Now set this to regular old output */ + 0x0da 0x004 /* 0x1604 */ /* DSS_DATA23, (IDIS | PI | M4 ) */ + /* UART3 pins */ + 0x16e 0x100 /* RX, input, off wake up */ + 0x170 0x000 /* TX, output */ + + /* 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 */ + OMAP_PIN_OFF_WAKEUPENABLE */ + + 0x14c 0x000 /* UART1, BT, TX */ + 0x14e 0x000 /* UART1, BT, RTS */ + 0x150 0x4100 /* UART1, BT, CTS */ + 0x152 0x100 /* UART1, BT, RX */ >; }; - uart1_pins: pinmux_uart1_pins { - pinctrl-single,pins = < - /* uart1 */ - 0x152 0x118 /* UART1_RX, MODEO | (uboot: ien, pullup, m0 */ - 0x146 0x000 /* UART1_TX, MODE0 | OUTPUT, MODE0 */ - >; - }; + dev_pins: pinmux_pv_pins { + pinctrl-single,pins = < + 0x5b2 0x004 /* USB control, ETK_D3, MODE4 | OUTPUT */ + /* 0x1a2 0x104 */ /* ALS interrupt, input, GPIO */ + 0x086 0x004 /* DRV2605 vibrator, output, GPIO */ + /* 0x938 0x104 */ /* Battery state, input, GPIO */ + >; + }; - uart3_pins: pinmux_uart3_pins { + i2c1_pins: pinmux_i2c1_pins { pinctrl-single,pins = < - /* uart3 */ - 0x16e 0x4118 /* UART3_RX, MODEO | INPUT_PULLUP | OFFWAKEUP*/ - 0x170 0x000 /* UART3_TX, MODE0 | OUTPUT */ + 0x18a 0x118 /* I2C1_SCL, MODE0 | INPUT_PULLUP */ + 0x18c 0x118 /* I2C1_SCA, MODE0 | INPUT_PULLUP */ >; }; + }; @@ -177,26 +229,177 @@ pinctrl-names = "default"; pinctrl-0 = <&wkup_pins>; - wkup_pins: pinmux_wakeup_pins { + wkup_pins: pinmux_wakeup_pins { pinctrl-single,pins = < 0x006 0x008 /* SYS_CLKREQ, MODE0 | PULLDOWN */ 0x018 0x000 /* SYS_OFF_MODE, MODE0 */ 0x01a 0x10c /* SYS_CLKOUT1, MODE4 | INPUT_PULLDOWN */ - /* Bluetooth wakeup */ - /* 0x024 0x4104 */ /* JTAG_EMU0, OMAP_MUX_MODE4 | OMAP_PIN_INPUT | + + /* Wakeup from Bluetooth */ + 0x024 0x410C /* JTAG_EMU0, OMAP_MUX_MODE4 | OMAP_PIN_INPUT | OMAP_PIN_OFF_WAKEUPENABLE */ /* Accelerometer interrupt */ - 0x026 0x4104 /* JTAG_EMU1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT | + 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 { + interrupts = <7>; /* SYS_NIRQ */ + interrupt-parent = <&intc>; + + #interrupt-cells = <2>; + interrupt-controller; + + 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 */ + 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-min-microvolt = <900000>; + regulator-max-microvolt = <1350000>; + 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-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + /* 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 = <8>; */ + }; + + /* 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-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; -}; + ti,no_idle_on_suspend; + }; &gpio2 { ti,no_idle_on_suspend; @@ -232,75 +435,3 @@ }; -#if 0 /* Not currently used */ -&i2c1 { - /* clock-frequency = <400000>; */ - /* PMIC ONLY */ -}; - - -/* I2C-2 has everything other than PMIC. */ - -&i2c2 { - clock-frequency = <400000>; - - mxt224@4a { /* Taken from Minnow, needs to be updated */ - compatible = "atmel,maxtouch"; /* OLIO */ - reg = <0x4a>; /* OLIO */ - interrupt-parent = <&gpio4>; - interrupts = <3 0>; /* gpio-99 32 * 3 + 3 */ - wakeup-source; - atmel,cfg-name = ""; /* needs setting, OLIO */ - atmel,reset_gpio = <>; /* needs setting, OLIO */ - - /* below is from minnow */ - - /* gpios = <&gpio4 3 0>, /\* IRQ gpio-099 *\/ */ - /* <&gpio6 4 0>; /\* RESET gpio-164*\/ */ - - /* pinctrl-names = "pullup", "pulldown"; */ - /* pinctrl-0 = <&atmxt_int_pullup>; */ - /* pinctrl-1 = <&atmxt_int_pulldown>; */ - /* support-snowflake = <1>; */ - }; - - mpu6515@68 { - }; - - /* This driver does not yet support device tree - lm3530-led@38 { - };*/ - - /* This driver does not yet support device tree - cm3391@10 { - };*/ - - - -}; - -&i2c3 { - clock-frequency = <400000>; - - /* This driver does not yet support device tree - bq274xx@55 { - }; */ -}; - -#endif - -&uart1 { - pinctrl-0 = <&uart1_pins>; - pinctrl-names = "default"; -}; - -&uart2 { - status = "disabled"; -}; - -&uart3 { - pinctrl-0 = <&uart3_pins>; - pinctrl-names = "default"; - autosuspend-delay = <(-1)>; /* -1 = infinity. Negative value needs parens */ - wakeup-capable; -}; |