diff options
| author | mattis fjallstrom <mattis@acm.org> | 2015-02-05 19:21:26 -0800 |
|---|---|---|
| committer | mattis fjallstrom <mattis@acm.org> | 2015-02-05 19:21:26 -0800 |
| commit | 4fc9f4d4c0c746026abd3c3a056d478fafca05a7 (patch) | |
| tree | 020f52523ab668b9f201044e5441e5b1057f759f /arch | |
| parent | c3cee153d8df64679bf0de3fc38d8f361437a492 (diff) | |
| download | olio-linux-3.10-4fc9f4d4c0c746026abd3c3a056d478fafca05a7.tar.xz olio-linux-3.10-4fc9f4d4c0c746026abd3c3a056d478fafca05a7.zip | |
First working powermanagement checkin. Changes to the default configuration and two small changes in the board file.
Change-Id: I16fe178445a17cdd2e45a64d9d34bf4cfda91a39
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/configs/omap3_h1_defconfig | 60 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/board-omap3h1.c | 87 |
2 files changed, 97 insertions, 50 deletions
diff --git a/arch/arm/configs/omap3_h1_defconfig b/arch/arm/configs/omap3_h1_defconfig index 0c4a8c2cf6a..e5f57b8f2c4 100644 --- a/arch/arm/configs/omap3_h1_defconfig +++ b/arch/arm/configs/omap3_h1_defconfig @@ -188,7 +188,7 @@ CONFIG_MODULES=y # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set CONFIG_BLOCK=y -CONFIG_LBDAF=y +# CONFIG_LBDAF is not set # CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSGLIB is not set # CONFIG_BLK_DEV_INTEGRITY is not set @@ -282,7 +282,7 @@ CONFIG_ARCH_MULTI_V6_V7=y # # OMAP Feature Selections # -# CONFIG_POWER_AVS_OMAP is not set +CONFIG_POWER_AVS_OMAP=y CONFIG_OMAP_RESET_CLOCKS=y CONFIG_OMAP_MUX=y CONFIG_OMAP_MUX_DEBUG=y @@ -464,7 +464,34 @@ CONFIG_AUTO_ZRELADDR=y # # CPU Frequency scaling # -# CONFIG_CPU_FREQ is not set +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_GOV_INTERACTIVE is not set +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +# CONFIG_GENERIC_CPUFREQ_CPU0 is not set + +# +# ARM CPU frequency scaling drivers +# +# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set +# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set +# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set +# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +CONFIG_ARM_OMAP2PLUS_CPUFREQ=y # CONFIG_CPU_IDLE is not set # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set @@ -499,14 +526,12 @@ CONFIG_SUSPEND_FREEZER=y CONFIG_HAS_WAKELOCK=y CONFIG_WAKELOCK=y CONFIG_PM_SLEEP=y -# CONFIG_PM_AUTOSLEEP is not set -CONFIG_PM_WAKELOCKS=y -CONFIG_PM_WAKELOCKS_LIMIT=100 -CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_AUTOSLEEP=y +# CONFIG_PM_WAKELOCKS is not set CONFIG_PM_RUNTIME=y CONFIG_PM=y CONFIG_PM_DEBUG=y -# CONFIG_PM_ADVANCED_DEBUG is not set +CONFIG_PM_ADVANCED_DEBUG=y # CONFIG_PM_TEST_SUSPEND is not set CONFIG_PM_SLEEP_DEBUG=y # CONFIG_APM_EMULATION is not set @@ -1262,7 +1287,7 @@ CONFIG_INPUT_TOUCHSCREEN=y # CONFIG_TOUCHSCREEN_ADS7846 is not set # CONFIG_TOUCHSCREEN_AD7877 is not set # CONFIG_TOUCHSCREEN_AD7879 is not set -CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=y # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set # CONFIG_TOUCHSCREEN_BU21013 is not set # CONFIG_TOUCHSCREEN_CY8CTMG110 is not set @@ -1339,10 +1364,12 @@ CONFIG_DEVKMEM=y # # Non-8250 serial port support # +# CONFIG_SERIAL_KGDB_NMI is not set # CONFIG_SERIAL_MAX3100 is not set # CONFIG_SERIAL_MAX310X is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_CONSOLE_POLL=y CONFIG_SERIAL_OMAP=y CONFIG_SERIAL_OMAP_CONSOLE=y # CONFIG_SERIAL_SCCNXP is not set @@ -1533,7 +1560,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_SBS is not set CONFIG_BATTERY_BQ27x00=y CONFIG_BATTERY_BQ27X00_I2C=y -CONFIG_BATTERY_BQ27X00_PLATFORM=y +# CONFIG_BATTERY_BQ27X00_PLATFORM is not set # CONFIG_BATTERY_MAX17040 is not set # CONFIG_BATTERY_MAX17042 is not set # CONFIG_CHARGER_MAX8903 is not set @@ -2279,7 +2306,6 @@ CONFIG_DCACHE_WORD_ACCESS=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_XFS_FS is not set -# CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_BTRFS_FS is not set # CONFIG_NILFS2_FS is not set @@ -2430,7 +2456,7 @@ CONFIG_MAGIC_SYSRQ=y # CONFIG_UNUSED_SYMBOLS is not set CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set -# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_DEBUG_SECTION_MISMATCH=y CONFIG_DEBUG_KERNEL=y # CONFIG_TOUCHSCREEN_DEBUG is not set # CONFIG_DEBUG_SHIRQ is not set @@ -2441,8 +2467,8 @@ CONFIG_PANIC_ON_OOPS=y CONFIG_PANIC_ON_OOPS_VALUE=1 CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 -CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y -CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=1 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set # CONFIG_TIMER_STATS is not set @@ -2534,7 +2560,11 @@ CONFIG_DYNAMIC_DEBUG=y # CONFIG_ATOMIC64_SELFTEST is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_KGDB is not set +CONFIG_KGDB=y +CONFIG_KGDB_SERIAL_CONSOLE=y +# CONFIG_KGDB_TESTS is not set +CONFIG_KGDB_KDB=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 # CONFIG_TEST_STRING_HELPERS is not set # CONFIG_TEST_KSTRTOX is not set # CONFIG_STRICT_DEVMEM is not set diff --git a/arch/arm/mach-omap2/board-omap3h1.c b/arch/arm/mach-omap2/board-omap3h1.c index df83b4dae6b..311910b52e8 100644 --- a/arch/arm/mach-omap2/board-omap3h1.c +++ b/arch/arm/mach-omap2/board-omap3h1.c @@ -140,6 +140,9 @@ static int __init omap3h1_spi_init(void) { return 0; } + + + static struct mpu_platform_data mpu_data = { .int_config = 0x00, .level_shifter = 0, @@ -164,13 +167,15 @@ static struct lm3530_platform_data omap3h1_backlight_platform_data = { .brt_val = 0x64, /* initial brightness */ }; + + static struct mxt_platform_data mxt_data = { .irqflags = IRQF_TRIGGER_FALLING, }; static struct platform_device bcm20702_bluetooth_device = { .name = "bcm20702_bluetooth", - .id = -1, + .id = -1, }; static struct regulator_init_data omap3h1_vbat_data = { @@ -179,13 +184,13 @@ static struct regulator_init_data omap3h1_vbat_data = { static struct fixed_voltage_config omap3h1_vbat_pdata = { .supply_name = "VBAT", - .microvolts = 3800000, - .init_data = &omap3h1_vbat_data, - .gpio = -EINVAL, + .microvolts = 3800000, + .init_data = &omap3h1_vbat_data, + .gpio = -EINVAL, }; static struct platform_device omap3h1_vbat = { - .name = "reg-fixed-voltage", + .name = "reg-fixed-voltage", .id = -1, .dev = { .platform_data = &omap3h1_vbat_pdata, @@ -194,7 +199,7 @@ static struct platform_device omap3h1_vbat = { static struct regulator_init_data tps65910_dummy = { .supply_regulator = "VBAT", - .constraints.always_on = true, + .constraints.always_on = true, }; static struct regulator_init_data tps65910_3v3 = { @@ -202,10 +207,10 @@ static struct regulator_init_data tps65910_3v3 = { .constraints = { .min_uV = 3300000, .max_uV = 3300000, - .valid_modes_mask = REGULATOR_MODE_NORMAL, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .always_on = true, - .apply_uV = true, + .valid_modes_mask = REGULATOR_MODE_NORMAL, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, + .always_on = true, + .apply_uV = true, }, }; @@ -214,10 +219,10 @@ static struct regulator_init_data tps65910_1v8 = { .constraints = { .min_uV = 1800000, .max_uV = 1800000, - .valid_modes_mask = REGULATOR_MODE_NORMAL, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - .always_on = true, - .apply_uV = true, + .valid_modes_mask = REGULATOR_MODE_NORMAL, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, + .always_on = true, + .apply_uV = true, }, }; @@ -228,14 +233,15 @@ static struct regulator_consumer_supply tps65910_vdd1_supply[] = { static struct regulator_init_data tps65910_vdd1 = { .supply_regulator = "VBAT", .constraints = { + .name = "vdd_mpu", .min_uV = 900000, .max_uV = 1350000, - .valid_modes_mask = REGULATOR_MODE_NORMAL, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - //.always_on = 1, + .valid_modes_mask = REGULATOR_MODE_NORMAL, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, + //.always_on = 1, }, - .num_consumer_supplies = ARRAY_SIZE(tps65910_vdd1_supply), - .consumer_supplies = tps65910_vdd1_supply, + .num_consumer_supplies = ARRAY_SIZE(tps65910_vdd1_supply), + .consumer_supplies = tps65910_vdd1_supply, }; static struct regulator_consumer_supply tps65910_vdd2_supply[] = { @@ -245,33 +251,34 @@ static struct regulator_consumer_supply tps65910_vdd2_supply[] = { static struct regulator_init_data tps65910_vdd2 = { .supply_regulator = "VBAT", .constraints = { + .name = "vdd_core", .min_uV = 900000, .max_uV = 1200000, - .valid_modes_mask = REGULATOR_MODE_NORMAL, - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, - //.always_on = 1, + .valid_modes_mask = REGULATOR_MODE_NORMAL, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, + //.always_on = 1, }, - .num_consumer_supplies = ARRAY_SIZE(tps65910_vdd2_supply), - .consumer_supplies = tps65910_vdd2_supply, + .num_consumer_supplies = ARRAY_SIZE(tps65910_vdd2_supply), + .consumer_supplies = tps65910_vdd2_supply, }; static struct tps65910_board omap3h1_tps65910_pdata = { .irq = 7 + OMAP_INTC_START, .en_ck32k_xtal = true, - .tps65910_pmic_init_data[TPS65910_REG_VRTC] = &tps65910_dummy, - .tps65910_pmic_init_data[TPS65910_REG_VIO] = &tps65910_1v8, - .tps65910_pmic_init_data[TPS65910_REG_VDD1] = &tps65910_vdd1, - .tps65910_pmic_init_data[TPS65910_REG_VDD2] = &tps65910_vdd2, - .tps65910_pmic_init_data[TPS65910_REG_VDD3] = &tps65910_dummy, + .tps65910_pmic_init_data[TPS65910_REG_VRTC] = &tps65910_dummy, + .tps65910_pmic_init_data[TPS65910_REG_VIO] = &tps65910_1v8, + .tps65910_pmic_init_data[TPS65910_REG_VDD1] = &tps65910_vdd1, + .tps65910_pmic_init_data[TPS65910_REG_VDD2] = &tps65910_vdd2, + .tps65910_pmic_init_data[TPS65910_REG_VDD3] = &tps65910_dummy, .tps65910_pmic_init_data[TPS65910_REG_VDIG1] = &tps65910_1v8, .tps65910_pmic_init_data[TPS65910_REG_VDIG2] = &tps65910_dummy, - .tps65910_pmic_init_data[TPS65910_REG_VPLL] = &tps65910_1v8, - .tps65910_pmic_init_data[TPS65910_REG_VDAC] = &tps65910_dummy, + .tps65910_pmic_init_data[TPS65910_REG_VPLL] = &tps65910_1v8, + .tps65910_pmic_init_data[TPS65910_REG_VDAC] = &tps65910_dummy, .tps65910_pmic_init_data[TPS65910_REG_VAUX1] = &tps65910_dummy, .tps65910_pmic_init_data[TPS65910_REG_VAUX2] = &tps65910_3v3, - .tps65910_pmic_init_data[TPS65910_REG_VAUX33] = &tps65910_3v3, - .tps65910_pmic_init_data[TPS65910_REG_VMMC] = &tps65910_3v3, + .tps65910_pmic_init_data[TPS65910_REG_VAUX33] = &tps65910_3v3, + .tps65910_pmic_init_data[TPS65910_REG_VMMC] = &tps65910_3v3, }; static struct i2c_board_info __initdata omap3h1_i2c1_board_info[] = { @@ -281,8 +288,8 @@ static struct i2c_board_info __initdata omap3h1_i2c1_board_info[] = { }, { I2C_BOARD_INFO("mpu6515", 0x68), - // This is needed for the interrupt wake. IH_GPIO_BASE changed in 3.10 kernel - //.irq = (IH_GPIO_BASE + MPUIRQ_GPIO), + // This is needed for the interrupt wake. IH_GPIO_BASE changed in 3.10 + // .irq = (IH_GPIO_BASE + MPUIRQ_GPIO), .platform_data = &mpu_data, }, { @@ -306,9 +313,19 @@ static struct i2c_board_info __initdata omap3h1_i2c3_board_info[] = { static int __init omap3_h1_i2c_init(void) { + /* Ugly hack: In Linux 3.10 we need to request an IRQ through + * gpio_to_irq. This means it can't be set at compile time, and + * must be done at runtime. In other words, here. + */ + gpio_request_one(ATMEL_MXT_GPIO, GPIOF_IN, "atmel_mxt_ts CHG"); omap3h1_i2c1_board_info[3].irq = gpio_to_irq(ATMEL_MXT_GPIO); + gpio_request_one(MPUIRQ_GPIO, GPIOF_IN, "mpu6515 gpio CHG"); + omap3h1_i2c1_board_info[1].irq = gpio_to_irq(MPUIRQ_GPIO); + + /* Register buses */ + omap_register_i2c_bus(1, 400, omap3h1_i2c1_board_info, ARRAY_SIZE(omap3h1_i2c1_board_info)); omap_register_i2c_bus(3, 400, omap3h1_i2c3_board_info, ARRAY_SIZE(omap3h1_i2c3_board_info)); return 0; |