>> -----Original Message----- >> From: Sergey Lapin [mailto:slapinid@xxxxxxxxx] >> Sent: Friday, November 27, 2009 5:33 PM >> To: Premi, Sanjeev >> Cc: Kevin Hilman; linux-omap@xxxxxxxxxxxxxxx >> Subject: Re: OMAP3: enabling CPU idle leads to panic >> >> On Fri, Nov 27, 2009 at 2:36 PM, Sergey Lapin >> <slapinid@xxxxxxxxx> wrote: >> >> >> >> Alas, that's not because omap_chip_is() function fails >> >> on these structures. >> >> >> > >> > I mean during registration of power domains. >> > >> >> int pwrdm_register(struct powerdomain *pwrdm) >> { >> unsigned long flags; >> int ret = -EINVAL; >> >> if (!pwrdm) >> return -EINVAL; >> >> if (!omap_chip_is(pwrdm->omap_chip)) >> return -EINVAL; >> returns -EINVAL for pwrdm_core (both of them), so I get panic later. >> Since OMAP2525 vs 3515 were messed-up, I think there could be more >> problems there. >> >> diff --git a/arch/arm/plat-omap/include/plat/cpu.h >> b/arch/arm/plat-omap/include/plat/cpu.h >> index 2e17890..8b15789 100644 >> --- a/arch/arm/plat-omap/include/plat/cpu.h >> +++ b/arch/arm/plat-omap/include/plat/cpu.h >> @@ -393,11 +393,11 @@ IS_OMAP_TYPE(3517, 0x3517) >> >> (!omap3_has_iva()) && \ >> (!omap3_has_sgx())) >> # define cpu_is_omap3515() (cpu_is_omap3430() && >> \ >> - >> (omap3_has_iva()) && \ >> - (!omap3_has_sgx())) >> + >> (!omap3_has_iva()) && \ >> + (omap3_has_sgx())) >> # define cpu_is_omap3525() (cpu_is_omap3430() && >> \ >> - >> (omap3_has_sgx()) && \ >> - (!omap3_has_iva())) >> + >> (!omap3_has_sgx()) && \ >> + (omap3_has_iva())) >> # define cpu_is_omap3530() (cpu_is_omap3430()) >> # define cpu_is_omap3505() is_omap3505() >> # define cpu_is_omap3517() is_omap3517() >> >> since OMAP3525 has iva but misses sgx, and vice versa 3515 has sgx but >> has no iva. >> I missed this piece before, but just accidentally found it now. I >> don't know if these are >> related, but this doesn't fix my problem with core_pwrdm. >> >> S. > > I feel, the problem could be due to this snippet below. > omap_rev() does a compare against omap_revision not just > the revision bits. > > Had submitted a patch earlier; will need some time to > find it. > > } else if (cpu_is_omap343x()) { > omap_chip.oc = CHIP_IS_OMAP3430; > if (omap_rev() == OMAP3430_REV_ES1_0) > omap_chip.oc |= CHIP_IS_OMAP3430ES1; > else if (omap_rev() >= OMAP3430_REV_ES2_0 && > omap_rev() <= OMAP3430_REV_ES2_1) > omap_chip.oc |= CHIP_IS_OMAP3430ES2; > else if (omap_rev() == OMAP3430_REV_ES3_0) > omap_chip.oc |= CHIP_IS_OMAP3430ES3_0; > else if (omap_rev() == OMAP3430_REV_ES3_1) > omap_chip.oc |= CHIP_IS_OMAP3430ES3_1; > } else { > > In meantime, can you try setting the following (explicitly) > to the code above: > else if (omap_rev() == OMAP3430_REV_ES3_1) > omap_chip.oc |= CHIP_IS_OMAP3430ES3_1; > + else > + omap_chip.oc |= CHIP_IS_OMAP3430ES3_1 > > ~sanjeev It is fixed, no more panics, thanks a lot! -- 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