when the omap_opp structures are disabled by setting the frequency as 0 as below (as an example) {0, VDD2_OPP1, 0x1E}, program_opp attempts to set voltage even after frequency setting fails. we can instead return if we see invalid values for either frequency or voltage Signed-off-by: Nishanth Menon <nm@xxxxxx> --- arch/arm/mach-omap2/resource34xx.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/resource34xx.c b/arch/arm/mach-omap2/resource34xx.c index 1693e9b..491e1dc 100644 --- a/arch/arm/mach-omap2/resource34xx.c +++ b/arch/arm/mach-omap2/resource34xx.c @@ -282,6 +282,11 @@ static int program_opp(int res, struct omap_opp *opp, int target_level, t_opp = ID_VDD(res) | ID_OPP_NO(opp[target_level].opp_id); c_opp = ID_VDD(res) | ID_OPP_NO(opp[current_level].opp_id); #endif + + /* Sanity check of the OPP params before attempting to set */ + if (!opp[target_level].rate || !opp[target_level].vsel) + return -EINVAL; + if (target_level > current_level) raise = 1; else -- 1.6.0.4 -- 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