summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattis fjallstrom <mattis@acm.org>2015-04-21 12:04:48 -0700
committermattis fjallstrom <mattis@acm.org>2015-04-21 12:04:48 -0700
commit96f4966bc395076e0d00884155f98728ba69a900 (patch)
tree0d7c75f1829be401fe1a4fbf9f7c874afed984fe
parent0f40d5752c44d0330bd85bc886a0508ab85211d3 (diff)
downloadolio-linux-3.10-96f4966bc395076e0d00884155f98728ba69a900.tar.xz
olio-linux-3.10-96f4966bc395076e0d00884155f98728ba69a900.zip
Device tree fixes and first commit for tickless idle.
Change-Id: I79b13e258d5b414584b9ac5afa299fc5c1e26c49
-rw-r--r--arch/arm/boot/dts/omap3.dtsi4
-rw-r--r--arch/arm/configs/omap3_h1_defconfig13
-rw-r--r--arch/arm/mach-omap2/board-omap3h1.c72
3 files changed, 60 insertions, 29 deletions
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
index a484cb75fd8..d38384056e4 100644
--- a/arch/arm/boot/dts/omap3.dtsi
+++ b/arch/arm/boot/dts/omap3.dtsi
@@ -270,6 +270,7 @@
ti,hwmods = "i2c3";
}; */
+ /*
mcspi1: spi@48098000 {
compatible = "ti,omap2-mcspi";
#address-cells = <1>;
@@ -323,7 +324,8 @@
dmas = <&sdma 70>, <&sdma 71>;
dma-names = "tx0", "rx0";
};
-
+ */
+
mmc1: mmc@4809c000 {
compatible = "ti,omap3-hsmmc";
ti,hwmods = "mmc1";
diff --git a/arch/arm/configs/omap3_h1_defconfig b/arch/arm/configs/omap3_h1_defconfig
index bc80789315e..49543946ea7 100644
--- a/arch/arm/configs/omap3_h1_defconfig
+++ b/arch/arm/configs/omap3_h1_defconfig
@@ -66,9 +66,10 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
-CONFIG_HZ_PERIODIC=y
-# CONFIG_NO_HZ_IDLE is not set
-CONFIG_NO_HZ=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+# CONFIG_NO_HZ is not set
CONFIG_HIGH_RES_TIMERS=y
#
@@ -147,7 +148,7 @@ CONFIG_SLUB=y
# CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
-# CONFIG_JUMP_LABEL is not set
+CONFIG_JUMP_LABEL=y
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
@@ -495,9 +496,8 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
CONFIG_CPU_IDLE=y
-# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
+CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
#
@@ -2493,6 +2493,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
# Light sensors
#
# CONFIG_ADJD_S311 is not set
+# CONFIG_CM32181 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_VCNL4000 is not set
diff --git a/arch/arm/mach-omap2/board-omap3h1.c b/arch/arm/mach-omap2/board-omap3h1.c
index 421b300a777..df2d785e59e 100644
--- a/arch/arm/mach-omap2/board-omap3h1.c
+++ b/arch/arm/mach-omap2/board-omap3h1.c
@@ -284,9 +284,13 @@ static struct regulator_init_data tps65910_dummy = {
};
/* --------------------------------------------------------------------------- */
+/* This one is required for the display to work ... makes no sense, but there
+ * you are.
+ */
static struct regulator_consumer_supply tps65910_touch3_supply[] = {
REGULATOR_SUPPLY("avdd", "2-004a"),
+ REGULATOR_SUPPLY("vdd", "spi1.1"),
};
static struct regulator_init_data tps65910_touch3 = {
@@ -296,7 +300,7 @@ static struct regulator_init_data tps65910_touch3 = {
.max_uV = 3300000,
.valid_modes_mask = REGULATOR_MODE_NORMAL | REGULATOR_MODE_STANDBY,
.valid_ops_mask = REGULATOR_CHANGE_STATUS | REGULATOR_CHANGE_MODE,
- .always_on = true,
+ .always_on = false,
.apply_uV = true,
.state_mem = {
@@ -390,12 +394,13 @@ static struct regulator_init_data tps65910_3v3 = {
* always on.
* NAND flash and UART3 (which we don't use) requires it
* as well.
+ *
+ * Setting always_on to "false" resulted in almost no power savings, at
+ * least in the current setting.
*/
static struct regulator_consumer_supply tps65910_1v8_supply[] = {
REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
- /* REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi.0"), */
- /* REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi.1"), */
};
static struct regulator_init_data tps65910_1v8 = {
@@ -455,10 +460,16 @@ static struct regulator_init_data tps65910_vpll = {
/* --------------------------------------------------------------------------- */
+/* If this one isn't "always on", the display doesn't come up right.
+ * Maybe the power code should be in the panel part of the driver, rather than
+ * the SPI? But then again, the SPI part is what needs a power cycle ... tricky!
+ *
+ * OK this is weird. The other touch rail (3.3) seems to be gating the display.
+ * What's going on? Maybe the spi is on the wrong rail?
+ */
static struct regulator_consumer_supply tps65910_touch_supply[] = {
REGULATOR_SUPPLY("vdd", "2-004a" ),
- REGULATOR_SUPPLY("vdd", "spi1.1"),
};
static struct regulator_init_data tps65910_touch = {
@@ -575,11 +586,21 @@ static struct regulator_init_data tps65910_vdd2 = {
/* --------------------------------------------------------------------------- */
+/* The clock has to be ON, probably because we're not enabling it properly. */
+/* If I set i2chs_keepon to 6, UBIfs fails to mount (!?). Again, probably
+ * not enabling it properly.
+ *
+ * And even with therm set, the screen acts weird (looking really dark during
+ * boot, touch not working when up).
+ */
+
+/*
static struct tps65910_sleep_keepon_data olio_slp_keepon = {
- .therm_keepon = 0,
- .clkout32k_keepon = 1,
- .i2chs_keepon = 0,
+ .therm_keepon = 1,
+ .clkout32k_keepon = 1,
+ .i2chs_keepon = 1,
};
+ */
static struct tps65910_board omap3h1_tps65910_pdata = {
@@ -715,6 +736,9 @@ static struct i2c_board_info __initdata omap3h1_i2c2_board_info[] = {
I2C_BOARD_INFO("mXT224", 0x4a),
.platform_data = &mxt_data,
},
+ {
+ I2C_BOARD_INFO("cm32181", 0x10),
+ },
#ifdef CONFIG_MACH_OMAP3_H1_EVT1
};
static struct i2c_board_info __initdata omap3h1_i2c3_board_info[] = {
@@ -724,6 +748,8 @@ static struct i2c_board_info __initdata omap3h1_i2c3_board_info[] = {
},
};
+#ifdef ONLY_KEEPING_THIS_STUFF_FOR_NOSTALGIC_REASONS
+
/* --------------------------------------------------------------------------- */
/* Create debugfs entry
*
@@ -813,7 +839,6 @@ static const struct file_operations h1_fops = {
};
-
/***************************************************************************
* acc_irq_handler - handle interrupt from accelerometer
*
@@ -895,6 +920,19 @@ static int __init omap3_acc_irq_init (int irq, void * dev_id) {
return 0;
}
+static int __init omap3_wake_init (void) {
+ pidfile = debugfs_create_file("wake_signal_pid", 0200, NULL, NULL, &h1_fops);
+ acc_wake.user_pid = 0; /* No user thread yet */
+
+ snprintf(acc_wake.lock_name, sizeof(acc_wake.lock_name),
+ "Accelerometer");
+ wake_lock_init(&acc_wake.lock, WAKE_LOCK_SUSPEND,
+ acc_wake.lock_name);
+ return 0;
+}
+
+
+#endif /* ONLY_KEEPING_THIS_STUFF_FOR_NOSTALGIC_REASONS */
/***************************************************************************
* DEVICE TREE STUFF
@@ -959,6 +997,7 @@ static int __init omap3_h1_i2c_init(void)
return 0;
}
+
static struct platform_device *omap3h1_devices[] __initdata = {
&omap3h1_vbat,
&bcm20702_bluetooth_device,
@@ -1037,16 +1076,6 @@ static struct omap_board_mux board_mux[] __initdata = {
};
#endif
-static int __init omap3_wake_init (void) {
- pidfile = debugfs_create_file("wake_signal_pid", 0200, NULL, NULL, &h1_fops);
- acc_wake.user_pid = 0; /* No user thread yet */
-
- snprintf(acc_wake.lock_name, sizeof(acc_wake.lock_name),
- "Accelerometer");
- wake_lock_init(&acc_wake.lock, WAKE_LOCK_SUSPEND,
- acc_wake.lock_name);
- return 0;
-}
static void __init omap3_h1_init(void)
@@ -1059,22 +1088,21 @@ static void __init omap3_h1_init(void)
ARRAY_SIZE(omap3h1_nand_partitions), NAND_CS,
NAND_BUSWIDTH_16, NULL);
- /* Set up the voltage domains */
-
omap_sdrc_init(NULL, NULL);
omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
omap3_h1_i2c_init();
+ /* Set up the voltage domains */
omap3_voltdm_init();
+ platform_add_devices(omap3h1_devices, ARRAY_SIZE(omap3h1_devices));
+
omap3h1_spi_init();
omap_serial_init();
- platform_add_devices(omap3h1_devices, ARRAY_SIZE(omap3h1_devices));
-
omap_display_init(&omap3h1_dss_data);
usb_bind_phy("musb-hdrc.0.auto", 0, "nop_usb_xceiv"); /* "tusb-usb-h1" */