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 | |
| 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
| -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" */ |