Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf835e8d authored by Tony Lindgren's avatar Tony Lindgren
Browse files

Merge branch 'for_3.6/fixes/pm' of...

Merge branch 'for_3.6/fixes/pm' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into fixes
parents 90f7f9ac 196449de
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -94,7 +94,7 @@ int __init omap4_opp_init(void)
{
{
	int r = -ENODEV;
	int r = -ENODEV;


	if (!cpu_is_omap44xx())
	if (!cpu_is_omap443x())
		return r;
		return r;


	r = omap_init_opp_table(omap44xx_opp_def_list,
	r = omap_init_opp_table(omap44xx_opp_def_list,
+4 −15
Original line number Original line Diff line number Diff line
@@ -272,21 +272,16 @@ void omap_sram_idle(void)
	per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
	per_next_state = pwrdm_read_next_pwrst(per_pwrdm);
	core_next_state = pwrdm_read_next_pwrst(core_pwrdm);
	core_next_state = pwrdm_read_next_pwrst(core_pwrdm);


	if (mpu_next_state < PWRDM_POWER_ON) {
	pwrdm_pre_transition(NULL);
		pwrdm_pre_transition(mpu_pwrdm);
		pwrdm_pre_transition(neon_pwrdm);
	}


	/* PER */
	/* PER */
	if (per_next_state < PWRDM_POWER_ON) {
	if (per_next_state < PWRDM_POWER_ON) {
		pwrdm_pre_transition(per_pwrdm);
		per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0;
		per_going_off = (per_next_state == PWRDM_POWER_OFF) ? 1 : 0;
		omap2_gpio_prepare_for_idle(per_going_off);
		omap2_gpio_prepare_for_idle(per_going_off);
	}
	}


	/* CORE */
	/* CORE */
	if (core_next_state < PWRDM_POWER_ON) {
	if (core_next_state < PWRDM_POWER_ON) {
		pwrdm_pre_transition(core_pwrdm);
		if (core_next_state == PWRDM_POWER_OFF) {
		if (core_next_state == PWRDM_POWER_OFF) {
			omap3_core_save_context();
			omap3_core_save_context();
			omap3_cm_save_context();
			omap3_cm_save_context();
@@ -339,20 +334,14 @@ void omap_sram_idle(void)
			omap2_prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,
			omap2_prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK,
					       OMAP3430_GR_MOD,
					       OMAP3430_GR_MOD,
					       OMAP3_PRM_VOLTCTRL_OFFSET);
					       OMAP3_PRM_VOLTCTRL_OFFSET);
		pwrdm_post_transition(core_pwrdm);
	}
	}
	omap3_intc_resume_idle();
	omap3_intc_resume_idle();


	pwrdm_post_transition(NULL);

	/* PER */
	/* PER */
	if (per_next_state < PWRDM_POWER_ON) {
	if (per_next_state < PWRDM_POWER_ON)
		omap2_gpio_resume_after_idle();
		omap2_gpio_resume_after_idle();
		pwrdm_post_transition(per_pwrdm);
	}

	if (mpu_next_state < PWRDM_POWER_ON) {
		pwrdm_post_transition(mpu_pwrdm);
		pwrdm_post_transition(neon_pwrdm);
	}
}
}


static void omap3_pm_idle(void)
static void omap3_pm_idle(void)
+6 −2
Original line number Original line Diff line number Diff line
@@ -56,9 +56,13 @@ ppa_por_params:
 * The restore function pointer is stored at CPUx_WAKEUP_NS_PA_ADDR_OFFSET.
 * The restore function pointer is stored at CPUx_WAKEUP_NS_PA_ADDR_OFFSET.
 * It returns to the caller for CPU INACTIVE and ON power states or in case
 * It returns to the caller for CPU INACTIVE and ON power states or in case
 * CPU failed to transition to targeted OFF/DORMANT state.
 * CPU failed to transition to targeted OFF/DORMANT state.
 *
 * omap4_finish_suspend() calls v7_flush_dcache_all() which doesn't save
 * stack frame and it expects the caller to take care of it. Hence the entire
 * stack frame is saved to avoid possible stack corruption.
 */
 */
ENTRY(omap4_finish_suspend)
ENTRY(omap4_finish_suspend)
	stmfd	sp!, {lr}
	stmfd	sp!, {r4-r12, lr}
	cmp	r0, #0x0
	cmp	r0, #0x0
	beq	do_WFI				@ No lowpower state, jump to WFI
	beq	do_WFI				@ No lowpower state, jump to WFI


@@ -226,7 +230,7 @@ scu_gp_clear:
skip_scu_gp_clear:
skip_scu_gp_clear:
	isb
	isb
	dsb
	dsb
	ldmfd	sp!, {pc}
	ldmfd	sp!, {r4-r12, pc}
ENDPROC(omap4_finish_suspend)
ENDPROC(omap4_finish_suspend)


/*
/*
+1 −0
Original line number Original line Diff line number Diff line
@@ -67,6 +67,7 @@ void __init omap_pmic_init(int bus, u32 clkrate,
			   const char *pmic_type, int pmic_irq,
			   const char *pmic_type, int pmic_irq,
			   struct twl4030_platform_data *pmic_data)
			   struct twl4030_platform_data *pmic_data)
{
{
	omap_mux_init_signal("sys_nirq", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE);
	strncpy(pmic_i2c_board_info.type, pmic_type,
	strncpy(pmic_i2c_board_info.type, pmic_type,
		sizeof(pmic_i2c_board_info.type));
		sizeof(pmic_i2c_board_info.type));
	pmic_i2c_board_info.irq = pmic_irq;
	pmic_i2c_board_info.irq = pmic_irq;
+3 −1
Original line number Original line Diff line number Diff line
@@ -218,7 +218,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)


	policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);
	policy->cur = policy->min = policy->max = omap_getspeed(policy->cpu);


	if (atomic_inc_return(&freq_table_users) == 1)
	if (!freq_table)
		result = opp_init_cpufreq_table(mpu_dev, &freq_table);
		result = opp_init_cpufreq_table(mpu_dev, &freq_table);


	if (result) {
	if (result) {
@@ -227,6 +227,8 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
		goto fail_ck;
		goto fail_ck;
	}
	}


	atomic_inc_return(&freq_table_users);

	result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
	result = cpufreq_frequency_table_cpuinfo(policy, freq_table);
	if (result)
	if (result)
		goto fail_table;
		goto fail_table;