* [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle
@ 2011-03-10 10:54 Kalle Jokiniemi
2011-03-10 10:54 ` [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm Kalle Jokiniemi
` (2 more replies)
0 siblings, 3 replies; 16+ messages in thread
From: Kalle Jokiniemi @ 2011-03-10 10:54 UTC (permalink / raw)
To: paul, khilman, tony; +Cc: linux-omap, Kalle Jokiniemi
These patches fix the issue where the wdtimer blocks CORE idle
transitions on n900 (OMAP3). The root cause was that SMART idle
mode in wdtimer did not allow the CORE idle transition to happen.
Paul, I added your S-o-bs to the patches already. Please check
that they are ok by you.
Paul Walmsley (2):
Watchdog: omap_wdt: add fine grain runtime-pm
OMAP3: wdtimer: Fix CORE idle transition
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 1 +
drivers/watchdog/omap_wdt.c | 25 +++++++++++++++++++++++--
2 files changed, 24 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm 2011-03-10 10:54 [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle Kalle Jokiniemi @ 2011-03-10 10:54 ` Kalle Jokiniemi 2011-03-10 13:02 ` Paul Walmsley 2011-03-10 10:54 ` [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition Kalle Jokiniemi 2011-03-10 11:08 ` [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle Paul Walmsley 2 siblings, 1 reply; 16+ messages in thread From: Kalle Jokiniemi @ 2011-03-10 10:54 UTC (permalink / raw) To: paul, khilman, tony; +Cc: linux-omap, Kalle Jokiniemi From: Paul Walmsley <paul@pwsan.com> The omap_wdt should only be in full active state when the registers are being accessed. Otherwise the device can be on lower power mode. This patch is based on a patch created by Atal Shargorodsky: http://lkml.org/lkml/2009/3/10/266. Signed-off-by: Paul Walmsley <paul@pwsan.com> Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> Tested-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> --- drivers/watchdog/omap_wdt.c | 25 +++++++++++++++++++++++-- 1 files changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c index 3dd4971..2b4acb8 100644 --- a/drivers/watchdog/omap_wdt.c +++ b/drivers/watchdog/omap_wdt.c @@ -124,6 +124,8 @@ static void omap_wdt_set_timeout(struct omap_wdt_dev *wdev) u32 pre_margin = GET_WLDR_VAL(timer_margin); void __iomem *base = wdev->base; + pm_runtime_get_sync(wdev->dev); + /* just count up at 32 KHz */ while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x04) cpu_relax(); @@ -131,6 +133,8 @@ static void omap_wdt_set_timeout(struct omap_wdt_dev *wdev) __raw_writel(pre_margin, base + OMAP_WATCHDOG_LDR); while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x04) cpu_relax(); + + pm_runtime_put_sync(wdev->dev); } /* @@ -160,6 +164,8 @@ static int omap_wdt_open(struct inode *inode, struct file *file) omap_wdt_ping(wdev); /* trigger loading of new timeout value */ omap_wdt_enable(wdev); + pm_runtime_put_sync(wdev->dev); + return nonseekable_open(inode, file); } @@ -171,6 +177,7 @@ static int omap_wdt_release(struct inode *inode, struct file *file) * Shut off the timer unless NOWAYOUT is defined. */ #ifndef CONFIG_WATCHDOG_NOWAYOUT + pm_runtime_get_sync(wdev->dev); omap_wdt_disable(wdev); @@ -190,9 +197,11 @@ static ssize_t omap_wdt_write(struct file *file, const char __user *data, /* Refresh LOAD_TIME. */ if (len) { + pm_runtime_get_sync(wdev->dev); spin_lock(&wdt_lock); omap_wdt_ping(wdev); spin_unlock(&wdt_lock); + pm_runtime_put_sync(wdev->dev); } return len; } @@ -224,15 +233,18 @@ static long omap_wdt_ioctl(struct file *file, unsigned int cmd, return put_user(omap_prcm_get_reset_sources(), (int __user *)arg); case WDIOC_KEEPALIVE: + pm_runtime_get_sync(wdev->dev); spin_lock(&wdt_lock); omap_wdt_ping(wdev); spin_unlock(&wdt_lock); + pm_runtime_put_sync(wdev->dev); return 0; case WDIOC_SETTIMEOUT: if (get_user(new_margin, (int __user *)arg)) return -EFAULT; omap_wdt_adjust_timeout(new_margin); + pm_runtime_get_sync(wdev->dev); spin_lock(&wdt_lock); omap_wdt_disable(wdev); omap_wdt_set_timeout(wdev); @@ -240,6 +252,7 @@ static long omap_wdt_ioctl(struct file *file, unsigned int cmd, omap_wdt_ping(wdev); spin_unlock(&wdt_lock); + pm_runtime_put_sync(wdev->dev); /* Fall */ case WDIOC_GETTIMEOUT: return put_user(timer_margin, (int __user *)arg); @@ -345,8 +358,11 @@ static void omap_wdt_shutdown(struct platform_device *pdev) { struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); - if (wdev->omap_wdt_users) + if (wdev->omap_wdt_users) { + pm_runtime_get_sync(wdev->dev); omap_wdt_disable(wdev); + pm_runtime_put_sync(wdev->dev); + } } static int __devexit omap_wdt_remove(struct platform_device *pdev) @@ -381,8 +397,11 @@ static int omap_wdt_suspend(struct platform_device *pdev, pm_message_t state) { struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); - if (wdev->omap_wdt_users) + if (wdev->omap_wdt_users) { + pm_runtime_get_sync(wdev->dev); omap_wdt_disable(wdev); + pm_runtime_put_sync(wdev->dev); + } return 0; } @@ -392,8 +411,10 @@ static int omap_wdt_resume(struct platform_device *pdev) struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); if (wdev->omap_wdt_users) { + pm_runtime_get_sync(wdev->dev); omap_wdt_enable(wdev); omap_wdt_ping(wdev); + pm_runtime_put_sync(wdev->dev); } return 0; -- 1.7.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm 2011-03-10 10:54 ` [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm Kalle Jokiniemi @ 2011-03-10 13:02 ` Paul Walmsley 2011-03-10 13:04 ` Paul Walmsley ` (2 more replies) 0 siblings, 3 replies; 16+ messages in thread From: Paul Walmsley @ 2011-03-10 13:02 UTC (permalink / raw) To: Kalle Jokiniemi; +Cc: khilman, Cousson, Benoit, tony, linux-omap [-- Attachment #1: Type: TEXT/PLAIN, Size: 757 bytes --] Hello Kalle, On Thu, 10 Mar 2011, Kalle Jokiniemi wrote: > From: Paul Walmsley <paul@pwsan.com> > > The omap_wdt should only be in full active state when the > registers are being accessed. Otherwise the device can be > on lower power mode. > > This patch is based on a patch created by Atal > Shargorodsky: http://lkml.org/lkml/2009/3/10/266. > > Signed-off-by: Paul Walmsley <paul@pwsan.com> > Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> > Tested-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> Regarding Benoît's E-mail about this patch, I wonder if this patch is still needed. If you have the time, would you be willing to do yet another test with the HWMOD_SWSUP_SIDLE patch, but without this one? - Paul ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm 2011-03-10 13:02 ` Paul Walmsley @ 2011-03-10 13:04 ` Paul Walmsley 2011-03-11 7:32 ` kalle.jokiniemi 2011-03-11 7:31 ` kalle.jokiniemi 2011-03-11 7:37 ` kalle.jokiniemi 2 siblings, 1 reply; 16+ messages in thread From: Paul Walmsley @ 2011-03-10 13:04 UTC (permalink / raw) To: Kalle Jokiniemi; +Cc: khilman, Cousson, Benoit, tony, linux-omap [-- Attachment #1: Type: TEXT/PLAIN, Size: 435 bytes --] On Thu, 10 Mar 2011, Paul Walmsley wrote: > Regarding Benoît's E-mail about this patch, I wonder if this patch is > still needed. If you have the time, would you be willing to do yet > another test with the HWMOD_SWSUP_SIDLE patch, but without this one? Sigh, I take this back. I don't think it will work without the fine-grained runtime PM control patch, since the WDTIMER will be in no-idle the entire time. - Paul ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm 2011-03-10 13:04 ` Paul Walmsley @ 2011-03-11 7:32 ` kalle.jokiniemi 0 siblings, 0 replies; 16+ messages in thread From: kalle.jokiniemi @ 2011-03-11 7:32 UTC (permalink / raw) To: paul; +Cc: khilman, b-cousson, tony, linux-omap > -----Original Message----- > From: ext Paul Walmsley [mailto:paul@pwsan.com] > Sent: 10. maaliskuuta 2011 15:04 > To: Jokiniemi Kalle (Nokia-MS/Tampere) > Cc: khilman@ti.com; Cousson, Benoit; tony@atomide.com; linux- > omap@vger.kernel.org > Subject: Re: [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm > > On Thu, 10 Mar 2011, Paul Walmsley wrote: > > > Regarding Benoît's E-mail about this patch, I wonder if this patch is > > still needed. If you have the time, would you be willing to do yet > > another test with the HWMOD_SWSUP_SIDLE patch, but without this one? > > Sigh, I take this back. I don't think it will work without the fine-grained > runtime PM control patch, since the WDTIMER will be in no-idle the entire > time. Yes, correct... - Kalle > > - Paul -- 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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm 2011-03-10 13:02 ` Paul Walmsley 2011-03-10 13:04 ` Paul Walmsley @ 2011-03-11 7:31 ` kalle.jokiniemi 2011-03-11 7:37 ` kalle.jokiniemi 2 siblings, 0 replies; 16+ messages in thread From: kalle.jokiniemi @ 2011-03-11 7:31 UTC (permalink / raw) To: paul; +Cc: khilman, b-cousson, tony, linux-omap > -----Original Message----- > From: ext Paul Walmsley [mailto:paul@pwsan.com] > Sent: 10. maaliskuuta 2011 15:02 > To: Jokiniemi Kalle (Nokia-MS/Tampere) > Cc: khilman@ti.com; Cousson, Benoit; tony@atomide.com; linux- > omap@vger.kernel.org > Subject: Re: [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm > > Hello Kalle, > > On Thu, 10 Mar 2011, Kalle Jokiniemi wrote: > > > From: Paul Walmsley <paul@pwsan.com> > > > > The omap_wdt should only be in full active state when the registers > > are being accessed. Otherwise the device can be on lower power mode. > > > > This patch is based on a patch created by Atal > > Shargorodsky: http://lkml.org/lkml/2009/3/10/266. > > > > Signed-off-by: Paul Walmsley <paul@pwsan.com> > > Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> > > Tested-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> > > Regarding Benoît's E-mail about this patch, I wonder if this patch is still > needed. If you have the time, would you be willing to do yet another test > with the HWMOD_SWSUP_SIDLE patch, but without this one? I did that already, no luck... If we want to make it work without the runtime-pm patch, then we need to switch the wdtimer2 to force idle mode. If you're uncomfortable with the idlemode priority patch, maybe we do some quirk flag that enables force idle mode for modules that have it. - Kalle > > > - Paul -- 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 ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm 2011-03-10 13:02 ` Paul Walmsley 2011-03-10 13:04 ` Paul Walmsley 2011-03-11 7:31 ` kalle.jokiniemi @ 2011-03-11 7:37 ` kalle.jokiniemi 2 siblings, 0 replies; 16+ messages in thread From: kalle.jokiniemi @ 2011-03-11 7:37 UTC (permalink / raw) To: paul; +Cc: khilman, b-cousson, tony, linux-omap Hi, > -----Original Message----- > From: Jokiniemi Kalle (Nokia-MS/Tampere) > > I did that already, no luck... If we want to make it work without the runtime- > pm patch, then we need to switch the wdtimer2 to force idle mode. If you're > uncomfortable with the idlemode priority patch, maybe we do some quirk > flag that enables force idle mode for modules that have it. Never mind that, I see this is going in already... Thanks everyone for helping out with this one. I'll backport this to MeeGo N900 kernel, so we'll get working cpu idle there ;) - Kalle ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-10 10:54 [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle Kalle Jokiniemi 2011-03-10 10:54 ` [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm Kalle Jokiniemi @ 2011-03-10 10:54 ` Kalle Jokiniemi 2011-03-10 11:22 ` Cousson, Benoit 2011-03-10 11:08 ` [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle Paul Walmsley 2 siblings, 1 reply; 16+ messages in thread From: Kalle Jokiniemi @ 2011-03-10 10:54 UTC (permalink / raw) To: paul, khilman, tony; +Cc: linux-omap, Kalle Jokiniemi From: Paul Walmsley <paul@pwsan.com> The HW superwised smart idle for wdtimer in OMAP3 prevents CORE power domain idle transitions. Disable it by swithing to SW supervised transitions. Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> Signed-off-by: Paul Walmsley <paul@pwsan.com> --- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 196a834..a99a4f3 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -1293,6 +1293,7 @@ static struct omap_hwmod omap3xxx_wd_timer2_hwmod = { .slaves = omap3xxx_wd_timer2_slaves, .slaves_cnt = ARRAY_SIZE(omap3xxx_wd_timer2_slaves), .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), + .flags = HWMOD_SWSUP_SIDLE, }; /* UART common */ -- 1.7.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-10 10:54 ` [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition Kalle Jokiniemi @ 2011-03-10 11:22 ` Cousson, Benoit 2011-03-10 12:32 ` kalle.jokiniemi 0 siblings, 1 reply; 16+ messages in thread From: Cousson, Benoit @ 2011-03-10 11:22 UTC (permalink / raw) To: Kalle Jokiniemi Cc: paul@pwsan.com, Hilman, Kevin, tony@atomide.com, linux-omap@vger.kernel.org On 3/10/2011 11:54 AM, Kalle Jokiniemi wrote: > From: Paul Walmsley<paul@pwsan.com> > > The HW superwised smart idle for wdtimer in OMAP3 prevents > CORE power domain idle transitions. Disable it by swithing > to SW supervised transitions. We should probably highlight that this looks like a HW bug. Smartidle and clockactivity are supposed to be supported by this module on OMAP3. Some further investigation with TI HW folks are needed to understand that. Regards, Benoit > > Signed-off-by: Kalle Jokiniemi<kalle.jokiniemi@nokia.com> > Signed-off-by: Paul Walmsley<paul@pwsan.com> > --- > arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c > index 196a834..a99a4f3 100644 > --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c > +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c > @@ -1293,6 +1293,7 @@ static struct omap_hwmod omap3xxx_wd_timer2_hwmod = { > .slaves = omap3xxx_wd_timer2_slaves, > .slaves_cnt = ARRAY_SIZE(omap3xxx_wd_timer2_slaves), > .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), > + .flags = HWMOD_SWSUP_SIDLE, > }; > > /* UART common */ ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-10 11:22 ` Cousson, Benoit @ 2011-03-10 12:32 ` kalle.jokiniemi 0 siblings, 0 replies; 16+ messages in thread From: kalle.jokiniemi @ 2011-03-10 12:32 UTC (permalink / raw) To: b-cousson; +Cc: paul, khilman, tony, linux-omap Hi, > -----Original Message----- > From: ext Cousson, Benoit [mailto:b-cousson@ti.com] > Sent: 10. maaliskuuta 2011 13:23 > To: Jokiniemi Kalle (Nokia-MS/Tampere) > Cc: paul@pwsan.com; Hilman, Kevin; tony@atomide.com; linux- > omap@vger.kernel.org > Subject: Re: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition > > On 3/10/2011 11:54 AM, Kalle Jokiniemi wrote: > > From: Paul Walmsley<paul@pwsan.com> > > > > The HW superwised smart idle for wdtimer in OMAP3 prevents CORE > power > > domain idle transitions. Disable it by swithing to SW supervised > > transitions. > > We should probably highlight that this looks like a HW bug. > Smartidle and clockactivity are supposed to be supported by this module on > OMAP3. > > Some further investigation with TI HW folks are needed to understand that. I added a comment also to the code in the last version of the 2/2 patch, in case you find something and want to do some improvements. - Kalle > > Regards, > Benoit > > > > > Signed-off-by: Kalle Jokiniemi<kalle.jokiniemi@nokia.com> > > Signed-off-by: Paul Walmsley<paul@pwsan.com> > > --- > > arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 1 + > > 1 files changed, 1 insertions(+), 0 deletions(-) > > > > diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c > > b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c > > index 196a834..a99a4f3 100644 > > --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c > > +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c > > @@ -1293,6 +1293,7 @@ static struct omap_hwmod > omap3xxx_wd_timer2_hwmod = { > > .slaves = omap3xxx_wd_timer2_slaves, > > .slaves_cnt = ARRAY_SIZE(omap3xxx_wd_timer2_slaves), > > .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), > > + .flags = HWMOD_SWSUP_SIDLE, > > }; > > > > /* UART common */ ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle 2011-03-10 10:54 [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle Kalle Jokiniemi 2011-03-10 10:54 ` [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm Kalle Jokiniemi 2011-03-10 10:54 ` [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition Kalle Jokiniemi @ 2011-03-10 11:08 ` Paul Walmsley 2 siblings, 0 replies; 16+ messages in thread From: Paul Walmsley @ 2011-03-10 11:08 UTC (permalink / raw) To: Kalle Jokiniemi; +Cc: khilman, tony, linux-omap On Thu, 10 Mar 2011, Kalle Jokiniemi wrote: > These patches fix the issue where the wdtimer blocks CORE idle > transitions on n900 (OMAP3). The root cause was that SMART idle > mode in wdtimer did not allow the CORE idle transition to happen. > > Paul, I added your S-o-bs to the patches already. Please check > that they are ok by you. Thanks, they look mostly fine to me. What do you think about saying something like this in the commit message on the first one? This patch is based on a patch created by Kalle Jokiniemi: https://patchwork.kernel.org/patch/618231/ which is itself based on a patch created by Atal Shargorodsky: http://lkml.org/lkml/2009/3/10/266. Also, I guess we should get an Acked-by for the second patch from Wim Van Sebroeck <wim@iguana.be> since he is the maintainer. Could you forward a copy of the second patch to linux-watchdog@vger.kernel.org and Wim and request his Ack? thanks, - Paul > > Paul Walmsley (2): > Watchdog: omap_wdt: add fine grain runtime-pm > OMAP3: wdtimer: Fix CORE idle transition > > arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 1 + > drivers/watchdog/omap_wdt.c | 25 +++++++++++++++++++++++-- > 2 files changed, 24 insertions(+), 2 deletions(-) > > -- > 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 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2 0/2] OMAP3: wdtimer: Fix CORE idle @ 2011-03-10 12:10 Kalle Jokiniemi 2011-03-10 12:10 ` [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition Kalle Jokiniemi 0 siblings, 1 reply; 16+ messages in thread From: Kalle Jokiniemi @ 2011-03-10 12:10 UTC (permalink / raw) To: linux-watchdog, wim, khilman, linux-omap, tony Cc: jhnikula, ilkka.koskinen, Kalle Jokiniemi These patches fix the issue where the wdtimer blocks CORE idle transitions on n900 (OMAP3). The root cause was that SMART idle mode in wdtimer did not allow the CORE idle transition to happen. v2: updated commit message on patch 1/2, Cc'd Wim, and added comments to code about possible HW bug in wdtimer2. Wim, please check patch number one and add your acked by. I propose that we push these upstream via linux-omap-pm, as the patches deal with PM and need to be applied together to get the desired functionality. Paul Walmsley (2): Watchdog: omap_wdt: add fine grain runtime-pm OMAP3: wdtimer: Fix CORE idle transition arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 1 + drivers/watchdog/omap_wdt.c | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-10 12:10 [PATCH v2 " Kalle Jokiniemi @ 2011-03-10 12:10 ` Kalle Jokiniemi 2011-03-10 14:52 ` Paul Walmsley 0 siblings, 1 reply; 16+ messages in thread From: Kalle Jokiniemi @ 2011-03-10 12:10 UTC (permalink / raw) To: linux-watchdog, wim, khilman, linux-omap, tony Cc: jhnikula, ilkka.koskinen, Paul Walmsley, Kalle Jokiniemi, Benoit Cousson From: Paul Walmsley <paul@pwsan.com> The HW superwised smart idle for wdtimer in OMAP3 prevents CORE power domain idle transitions. Disable it by swithing to SW supervised transitions. This could be a hardware bug in the OMAP3 wdtimer2 block. Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Benoit Cousson <b-cousson@ti.com> --- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 196a834..ebd3309 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -1293,6 +1293,11 @@ static struct omap_hwmod omap3xxx_wd_timer2_hwmod = { .slaves = omap3xxx_wd_timer2_slaves, .slaves_cnt = ARRAY_SIZE(omap3xxx_wd_timer2_slaves), .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), + /* + * XXX: Use software supervised mode, HW supervised smartidle seems to + * block CORE power domain idle transitions. Maybe a HW bug in wdt2? + */ + .flags = HWMOD_SWSUP_SIDLE, }; /* UART common */ -- 1.7.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-10 12:10 ` [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition Kalle Jokiniemi @ 2011-03-10 14:52 ` Paul Walmsley 2011-03-14 10:34 ` kalle.jokiniemi 0 siblings, 1 reply; 16+ messages in thread From: Paul Walmsley @ 2011-03-10 14:52 UTC (permalink / raw) To: Kalle Jokiniemi Cc: linux-watchdog, wim, khilman, linux-omap, tony, jhnikula, ilkka.koskinen, Benoit Cousson On Thu, 10 Mar 2011, Kalle Jokiniemi wrote: > From: Paul Walmsley <paul@pwsan.com> > > The HW superwised smart idle for wdtimer in OMAP3 prevents > CORE power domain idle transitions. Disable it by swithing > to SW supervised transitions. > > This could be a hardware bug in the OMAP3 wdtimer2 block. > > Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> > Signed-off-by: Paul Walmsley <paul@pwsan.com> > Cc: Benoit Cousson <b-cousson@ti.com> I've queued this one for 2.6.39, since it seems pretty clear that target smart-idle mode doesn't work with this IP block. Probably we'll need to do the same thing for OMAP2420/2430, but I'm not going to touch those right now, since we're so close to the merge window. - Paul ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-10 14:52 ` Paul Walmsley @ 2011-03-14 10:34 ` kalle.jokiniemi 2011-03-14 19:27 ` Paul Walmsley 0 siblings, 1 reply; 16+ messages in thread From: kalle.jokiniemi @ 2011-03-14 10:34 UTC (permalink / raw) To: paul Cc: linux-watchdog, wim, khilman, linux-omap, tony, jhnikula, ilkka.koskinen, b-cousson Hi Paul, > -----Original Message----- > From: ext Paul Walmsley [mailto:paul@pwsan.com] > Sent: 10. maaliskuuta 2011 16:53 > > From: Paul Walmsley <paul@pwsan.com> > > > > The HW superwised smart idle for wdtimer in OMAP3 prevents CORE > power > > domain idle transitions. Disable it by swithing to SW supervised > > transitions. > > > > This could be a hardware bug in the OMAP3 wdtimer2 block. > > > > Signed-off-by: Kalle Jokiniemi <kalle.jokiniemi@nokia.com> > > Signed-off-by: Paul Walmsley <paul@pwsan.com> > > Cc: Benoit Cousson <b-cousson@ti.com> > > I've queued this one for 2.6.39, since it seems pretty clear that target smart- > idle mode doesn't work with this IP block. What about the 1/2 patch? Is that going in, and to which kernel version (our integrator would like to put in a note when we can remove the back ported patch) - Kalle > > Probably we'll need to do the same thing for OMAP2420/2430, but I'm not > going to touch those right now, since we're so close to the merge window. > > > - Paul ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-14 10:34 ` kalle.jokiniemi @ 2011-03-14 19:27 ` Paul Walmsley 2011-03-15 6:57 ` kalle.jokiniemi 0 siblings, 1 reply; 16+ messages in thread From: Paul Walmsley @ 2011-03-14 19:27 UTC (permalink / raw) To: kalle.jokiniemi Cc: linux-watchdog, wim, khilman, linux-omap, tony, jhnikula, ilkka.koskinen, b-cousson Hello Kalle, On Mon, 14 Mar 2011, kalle.jokiniemi@nokia.com wrote: > What about the 1/2 patch? Is that going in, and to which kernel version > (our integrator would like to put in a note when we can remove the back > ported patch) It's queued for Linus for the upcoming merge window: http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=0503add9d251db22ba2f610fb8d9b7743a9786da Thread here: http://www.spinics.net/lists/linux-omap/msg48381.html If there aren't further comments on the watchdog patch, and Linus is okay with the branch, it should appear in 2.6.39. - Paul ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition 2011-03-14 19:27 ` Paul Walmsley @ 2011-03-15 6:57 ` kalle.jokiniemi 0 siblings, 0 replies; 16+ messages in thread From: kalle.jokiniemi @ 2011-03-15 6:57 UTC (permalink / raw) To: paul Cc: linux-watchdog, wim, khilman, linux-omap, tony, jhnikula, ilkka.koskinen, b-cousson Hi, > -----Original Message----- > From: linux-omap-owner@vger.kernel.org [mailto:linux-omap- > owner@vger.kernel.org] On Behalf Of ext Paul Walmsley > Sent: 14. maaliskuuta 2011 21:27 > To: Jokiniemi Kalle (Nokia-MS/Tampere) > Cc: linux-watchdog@vger.kernel.org; wim@iguana.be; khilman@ti.com; > linux-omap@vger.kernel.org; tony@atomide.com; jhnikula@gmail.com; > Koskinen Ilkka (Nokia-MS/Tampere); b-cousson@ti.com > Subject: RE: [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition > > Hello Kalle, > > On Mon, 14 Mar 2011, kalle.jokiniemi@nokia.com wrote: > > > What about the 1/2 patch? Is that going in, and to which kernel > > version (our integrator would like to put in a note when we can remove > > the back ported patch) > > It's queued for Linus for the upcoming merge window: > > http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap- > 2.6.git;a=commit;h=0503add9d251db22ba2f610fb8d9b7743a9786da > > Thread here: > > http://www.spinics.net/lists/linux-omap/msg48381.html > > If there aren't further comments on the watchdog patch, and Linus is okay > with the branch, it should appear in 2.6.39. Thanks for the confirmation. - Kalle > > > > - Paul > -- > 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 ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2011-03-15 6:58 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-03-10 10:54 [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle Kalle Jokiniemi 2011-03-10 10:54 ` [PATCH 1/2] Watchdog: omap_wdt: add fine grain runtime-pm Kalle Jokiniemi 2011-03-10 13:02 ` Paul Walmsley 2011-03-10 13:04 ` Paul Walmsley 2011-03-11 7:32 ` kalle.jokiniemi 2011-03-11 7:31 ` kalle.jokiniemi 2011-03-11 7:37 ` kalle.jokiniemi 2011-03-10 10:54 ` [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition Kalle Jokiniemi 2011-03-10 11:22 ` Cousson, Benoit 2011-03-10 12:32 ` kalle.jokiniemi 2011-03-10 11:08 ` [PATCH 0/2] OMAP3: wdtimer: Fix CORE idle Paul Walmsley -- strict thread matches above, loose matches on Subject: below -- 2011-03-10 12:10 [PATCH v2 " Kalle Jokiniemi 2011-03-10 12:10 ` [PATCH 2/2] OMAP3: wdtimer: Fix CORE idle transition Kalle Jokiniemi 2011-03-10 14:52 ` Paul Walmsley 2011-03-14 10:34 ` kalle.jokiniemi 2011-03-14 19:27 ` Paul Walmsley 2011-03-15 6:57 ` kalle.jokiniemi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox