Message ID | 1305624381-22524-1-git-send-email-j.weitzel@phytec.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Jan Weitzel <j.weitzel@phytec.de> writes: > omap4430 get i2c timeouts at each access after an NACK message. > OMAP_I2C_FLAG_RESET_REGS_POSTIDLE fix it. We need a little better changelog here. Specifically, *why* does this flag fix the problem? What exactly is going wrong such that this fix is needed. Does this happen all the time? only when off-mode is used? etc. Looking closer at how this flag is used in the driver, I think the driver's usage of runtime PM is a bit broken. I'm not sure if it's related to this problem, but I'll send a short series in a little bit to clean up the runtime PM usage, and get rid of the dev->idle flag which duplicates usage counting already provided by runtime PM. Kevin > Signed-off-by: Jan Weitzel <j.weitzel@phytec.de> > Tested-by: Andy Green <andy.green@linaro.org> > Acked-by: Andy Green <andy.green@linaro.org> > --- > Works on top of tmlind linux-omap-2.6.git > v3: commit message > v2: add Tested-by / Acked-by > > arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c > index 5f4a1b2..3d3b4f4 100644 > --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c > +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c > @@ -2130,7 +2130,8 @@ static struct omap_hwmod_class omap44xx_i2c_hwmod_class = { > }; > > static struct omap_i2c_dev_attr i2c_dev_attr = { > - .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE, > + .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE | > + OMAP_I2C_FLAG_RESET_REGS_POSTIDLE, > }; > > /* i2c1 */ -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Am Dienstag, den 17.05.2011, 16:12 +0200 schrieb Kevin Hilman: > Jan Weitzel <j.weitzel@phytec.de> writes: > > > omap4430 get i2c timeouts at each access after an NACK message. > > OMAP_I2C_FLAG_RESET_REGS_POSTIDLE fix it. > > We need a little better changelog here. Specifically, *why* does this > flag fix the problem? What exactly is going wrong such that this fix > is needed. > > Does this happen all the time? only when off-mode is used? etc. Yes all time. i2cdetect say "controller timed out" every two adresses. > Looking closer at how this flag is used in the driver, I think the > driver's usage of runtime PM is a bit broken. I'm not sure if it's > related to this problem, but I'll send a short series in a little bit to > clean up the runtime PM usage, and get rid of the dev->idle flag which > duplicates usage counting already provided by runtime PM. In the isr OMAP_I2C_STAT_NACK set OMAP_I2C_CON_REG to OMAP_I2C_CON_STP, clearing all other flags. Maybe this is wrong? On OMAP3 the OMAP_I2C_CON_REG flags are set again in the OMAP_I2C_FLAG_RESET_REGS_POSTIDLE path of omap_i2c_unidle. I am not sure if this is also the right place for OMAP4 Jan -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Jan Weitzel <J.Weitzel@phytec.de> writes: > Am Dienstag, den 17.05.2011, 16:12 +0200 schrieb Kevin Hilman: >> Jan Weitzel <j.weitzel@phytec.de> writes: >> >> > omap4430 get i2c timeouts at each access after an NACK message. >> > OMAP_I2C_FLAG_RESET_REGS_POSTIDLE fix it. >> >> We need a little better changelog here. Specifically, *why* does this >> flag fix the problem? What exactly is going wrong such that this fix >> is needed. >> >> Does this happen all the time? only when off-mode is used? etc. > Yes all time. i2cdetect say "controller timed out" every two adresses. > >> Looking closer at how this flag is used in the driver, I think the >> driver's usage of runtime PM is a bit broken. I'm not sure if it's >> related to this problem, but I'll send a short series in a little bit to >> clean up the runtime PM usage, and get rid of the dev->idle flag which >> duplicates usage counting already provided by runtime PM. > In the isr OMAP_I2C_STAT_NACK set OMAP_I2C_CON_REG to OMAP_I2C_CON_STP, > clearing all other flags. Maybe this is wrong? > > On OMAP3 the OMAP_I2C_CON_REG flags are set again in the > OMAP_I2C_FLAG_RESET_REGS_POSTIDLE path of omap_i2c_unidle. > I am not sure if this is also the right place for OMAP4 Right, and I'm not sure either. That's why we need a better explanation/changelog about exactly what is happening and why this is the right fix. Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 5f4a1b2..3d3b4f4 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c @@ -2130,7 +2130,8 @@ static struct omap_hwmod_class omap44xx_i2c_hwmod_class = { }; static struct omap_i2c_dev_attr i2c_dev_attr = { - .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE, + .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE | + OMAP_I2C_FLAG_RESET_REGS_POSTIDLE, }; /* i2c1 */