diff options
| author | mattis fjallstrom <mattis@acm.org> | 2015-04-21 12:04:48 -0700 |
|---|---|---|
| committer | mattis fjallstrom <mattis@acm.org> | 2015-04-21 12:04:48 -0700 |
| commit | 96f4966bc395076e0d00884155f98728ba69a900 (patch) | |
| tree | 0d7c75f1829be401fe1a4fbf9f7c874afed984fe /arch | |
| parent | 0f40d5752c44d0330bd85bc886a0508ab85211d3 (diff) | |
| download | olio-linux-3.10-96f4966bc395076e0d00884155f98728ba69a900.tar.xz olio-linux-3.10-96f4966bc395076e0d00884155f98728ba69a900.zip | |
Device tree fixes and first commit for tickless idle.
Change-Id: I79b13e258d5b414584b9ac5afa299fc5c1e26c49
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/boot/dts/omap3.dtsi | 4 | ||||
| -rw-r--r-- | arch/arm/configs/omap3_h1_defconfig | 13 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/board-omap3h1.c | 72 |
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" */ |