Hi Daniel, On Fri, Mar 23, 2012 at 10:26 AM, Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> wrote: > As we will be able to remove C-states from userspace with the sysfs > API, this function is no longer needed. We remove it and that simplifies > the code for more consolidation. > > Signed-off-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> > --- > arch/arm/mach-omap2/cpuidle34xx.c | 85 +------------------------------------ > 1 files changed, 2 insertions(+), 83 deletions(-) > > diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c > index d67431a..65b4e7aa 100644 > --- a/arch/arm/mach-omap2/cpuidle34xx.c > +++ b/arch/arm/mach-omap2/cpuidle34xx.c > @@ -164,84 +164,6 @@ return_sleep_time: > } > > /** > - * next_valid_state - Find next valid C-state > - * @dev: cpuidle device > - * @drv: cpuidle driver > - * @index: Index of currently selected c-state > - * > - * If the state corresponding to index is valid, index is returned back > - * to the caller. Else, this function searches for a lower c-state which is > - * still valid (as defined in omap3_power_states[]) and returns its index. > - * > - * A state is valid if the 'valid' field is enabled and > - * if it satisfies the enable_off_mode condition. > - */ > -static int next_valid_state(struct cpuidle_device *dev, > - struct cpuidle_driver *drv, > - int index) > -{ > - struct cpuidle_state_usage *curr_usage = &dev->states_usage[index]; > - struct cpuidle_state *curr = &drv->states[index]; > - struct omap3_idle_statedata *cx = cpuidle_get_statedata(curr_usage); > - u32 mpu_deepest_state = PWRDM_POWER_RET; > - u32 core_deepest_state = PWRDM_POWER_RET; > - int next_index = -1; > - > - if (enable_off_mode) { > - mpu_deepest_state = PWRDM_POWER_OFF; > - /* > - * Erratum i583: valable for ES rev < Es1.2 on 3630. > - * CORE OFF mode is not supported in a stable form, restrict > - * instead the CORE state to RET. > - */ > - if (!IS_PM34XX_ERRATUM(PM_SDRC_WAKEUP_ERRATUM_i583)) > - core_deepest_state = PWRDM_POWER_OFF; > - } I am OK to remove the function but some of the code needs to stay (can be moved into enter_idle_bm). The errata code is needed. > - > - /* Check if current state is valid */ > - if ((cx->valid) && > - (cx->mpu_state >= mpu_deepest_state) && > - (cx->core_state >= core_deepest_state)) { > - return index; > - } else { > - int idx = OMAP3_NUM_STATES - 1; On OMAP3 not all the power states combinations are allowed, so this code looks for a C-state which satisfies the enable_off_mode flag. I am planning to remove the enable_off_mode flag but this has to come with the per-device PM QoS constraints code. > - > - /* Reach the current state starting at highest C-state */ > - for (; idx >= 0; idx--) { > - if (&drv->states[idx] == curr) { > - next_index = idx; > - break; > - } > - } > - > - /* Should never hit this condition */ > - WARN_ON(next_index == -1); > - > - /* > - * Drop to next valid state. > - * Start search from the next (lower) state. > - */ > - idx--; > - for (; idx >= 0; idx--) { > - cx = cpuidle_get_statedata(&dev->states_usage[idx]); > - if ((cx->valid) && > - (cx->mpu_state >= mpu_deepest_state) && > - (cx->core_state >= core_deepest_state)) { > - next_index = idx; > - break; > - } > - } > - /* > - * C1 is always valid. > - * So, no need to check for 'next_index == -1' outside > - * this loop. > - */ > - } > - > - return next_index; > -} > - > -/** > * omap3_enter_idle_bm - Checks for any bus activity > * @dev: cpuidle device > * @drv: cpuidle driver > @@ -254,7 +176,6 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev, > struct cpuidle_driver *drv, > int index) > { > - int new_state_idx; > u32 core_next_state, per_next_state = 0, per_saved_state = 0, cam_state; > struct omap3_idle_statedata *cx; > int ret; > @@ -265,7 +186,7 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev, > */ > cam_state = pwrdm_read_pwrst(cam_pd); > if (cam_state == PWRDM_POWER_ON) { > - new_state_idx = drv->safe_state_index; > + index = drv->safe_state_index; > goto select_state; > } > > @@ -292,10 +213,8 @@ static int omap3_enter_idle_bm(struct cpuidle_device *dev, > if (per_next_state != per_saved_state) > pwrdm_set_next_pwrst(per_pd, per_next_state); > > - new_state_idx = next_valid_state(dev, drv, index); > - > select_state: > - ret = omap3_enter_idle(dev, drv, new_state_idx); > + ret = omap3_enter_idle(dev, drv, index); > > /* Restore original PER state if it was modified */ > if (per_next_state != per_saved_state) > -- > 1.7.5.4 > Regards, Jean -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html