Message ID | 1308862894-13802-1-git-send-email-jaswinder.singh@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Felipe Balbi |
Headers | show |
On Fri, Jun 24, 2011 at 2:31 AM, Jassi Brar <jassisinghbrar@gmail.com> wrote: > The commit > 7e6502d577106fb5b202bbaac64c5f1b065 'mfd: Add omap-usbhs runtime PM support' > besides moving to RPM, removes necessary TLL initialization as well. > > Restore the TLL initialization, without which device detection fails. > > Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org> > --- > drivers/mfd/omap-usb-host.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 42 insertions(+), 0 deletions(-) > > diff --git a/drivers/mfd/omap-usb-host.c b/drivers/mfd/omap-usb-host.c > index 8552195..12ca77b 100644 > --- a/drivers/mfd/omap-usb-host.c > +++ b/drivers/mfd/omap-usb-host.c > @@ -640,6 +640,7 @@ static int usbhs_enable(struct device *dev) > struct usbhs_omap_platform_data *pdata = &omap->platdata; > unsigned long flags = 0; > int ret = 0; > + unsigned long timeout; > unsigned reg; > > dev_dbg(dev, "starting TI HSUSB Controller\n"); > @@ -676,6 +677,47 @@ static int usbhs_enable(struct device *dev) > omap->usbhs_rev = usbhs_read(omap->uhh_base, OMAP_UHH_REVISION); > dev_dbg(dev, "OMAP UHH_REVISION 0x%x\n", omap->usbhs_rev); > > + /* perform TLL soft reset, and wait until reset is complete */ > + usbhs_write(omap->tll_base, OMAP_USBTLL_SYSCONFIG, > + OMAP_USBTLL_SYSCONFIG_SOFTRESET); > + > + /* Wait for TLL reset to complete */ > + timeout = jiffies + msecs_to_jiffies(1000); > + while (!(usbhs_read(omap->tll_base, OMAP_USBTLL_SYSSTATUS) > + & OMAP_USBTLL_SYSSTATUS_RESETDONE)) { > + cpu_relax(); > + > + if (time_after(jiffies, timeout)) { > + dev_dbg(dev, "operation timed out\n"); > + ret = -EINVAL; > + goto err_tll; > + } > + } > + dev_dbg(dev, "TLL RESET DONE\n"); > + > + /* (1<<3) = no idle mode only for initial debugging */ > + usbhs_write(omap->tll_base, OMAP_USBTLL_SYSCONFIG, > + OMAP_USBTLL_SYSCONFIG_ENAWAKEUP | > + OMAP_USBTLL_SYSCONFIG_SIDLEMODE | > + OMAP_USBTLL_SYSCONFIG_AUTOIDLE); > + > + /* Put UHH in NoIdle/NoStandby mode */ > + reg = usbhs_read(omap->uhh_base, OMAP_UHH_SYSCONFIG); > + if (is_omap_usbhs_rev1(omap)) { > + reg |= (OMAP_UHH_SYSCONFIG_ENAWAKEUP > + | OMAP_UHH_SYSCONFIG_SIDLEMODE > + | OMAP_UHH_SYSCONFIG_CACTIVITY > + | OMAP_UHH_SYSCONFIG_MIDLEMODE); > + reg &= ~OMAP_UHH_SYSCONFIG_AUTOIDLE; > + } else if (is_omap_usbhs_rev2(omap)) { > + reg &= ~OMAP4_UHH_SYSCONFIG_IDLEMODE_CLEAR; > + reg |= OMAP4_UHH_SYSCONFIG_NOIDLE; > + reg &= ~OMAP4_UHH_SYSCONFIG_STDBYMODE_CLEAR; > + reg |= OMAP4_UHH_SYSCONFIG_NOSTDBY; > + } > + > + usbhs_write(omap->uhh_base, OMAP_UHH_SYSCONFIG, reg); > + > reg = usbhs_read(omap->uhh_base, OMAP_UHH_HOSTCONFIG); > /* setup ULPI bypass and burst configurations */ > reg |= (OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN > -- > 1.7.4.1 if you move to RPM, you should'tn access these configuration/reset registers in your driver. moreover, the patch 'mfd: Add omap-usbhs runtime PM support' is already reverted. keshava -- 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
On 24 June 2011 11:52, Munegowda, Keshava <keshava_mgowda@ti.com> wrote: > On Fri, Jun 24, 2011 at 2:31 AM, Jassi Brar <jassisinghbrar@gmail.com> wrote: >> The commit >> 7e6502d577106fb5b202bbaac64c5f1b065 'mfd: Add omap-usbhs runtime PM support' >> besides moving to RPM, removes necessary TLL initialization as well. >> >> Restore the TLL initialization, without which device detection fails. >> >> Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org> > > if you move to RPM, you should'tn access these configuration/reset > registers in your driver. Sorry I don't get it. Obviously the RPM backend here doesn't initialize the TLL and if it only manages the clocks, can't we safely assume that the pm_runtime_get_sync will get clocks to speed and the driver does the TLL init ? > moreover, the patch 'mfd: Add omap-usbhs runtime PM support' is > already reverted. Ok, though if the ultimate goal is to move on to RPM, this would be a step back. Btw, which tree could I find the revert in ? Thanks, Jassi -- 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
"Munegowda, Keshava" <keshava_mgowda@ti.com> writes: > On Fri, Jun 24, 2011 at 2:31 AM, Jassi Brar <jassisinghbrar@gmail.com> wrote: >> The commit >> 7e6502d577106fb5b202bbaac64c5f1b065 'mfd: Add omap-usbhs runtime PM support' >> besides moving to RPM, removes necessary TLL initialization as well. >> >> Restore the TLL initialization, without which device detection fails. >> >> Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org> [...] > if you move to RPM, you should'tn access these configuration/reset > registers in your driver. Yes, but Jaswinder's changelog clearly shows that the runtime PM (and thus hwmod) init is not doing the equivalent of what was removed from the driver. A hunch after a quick glance is that the driver changes are only doing runtime PM calls on the UHH device and not the TTL device. In fact, the patch that builds the USB host omap_device[1] doesn't even build one. > moreover, the patch 'mfd: Add omap-usbhs runtime PM support' is > already reverted. It is reverted for this merge window, but will be added back for the next window, so Jaswinder's problem still needs to be fixed the right way. Please rework the USB host runtime PM conversion so that *all* the IP blocks are managed by runtime PM and the driver is doing runtime PM calls for all the devices used. Kevin [1] http://marc.info/?l=linux-omap&m=130693494126396&w=2 -- 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
On Tue, Jun 28, 2011 at 3:34 AM, Kevin Hilman <khilman@ti.com> wrote: > "Munegowda, Keshava" <keshava_mgowda@ti.com> writes: > >> On Fri, Jun 24, 2011 at 2:31 AM, Jassi Brar <jassisinghbrar@gmail.com> wrote: >>> The commit >>> 7e6502d577106fb5b202bbaac64c5f1b065 'mfd: Add omap-usbhs runtime PM support' >>> besides moving to RPM, removes necessary TLL initialization as well. >>> >>> Restore the TLL initialization, without which device detection fails. >>> >>> Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org> > > [...] > >> if you move to RPM, you should'tn access these configuration/reset >> registers in your driver. > > Yes, but Jaswinder's changelog clearly shows that the runtime PM (and > thus hwmod) init is not doing the equivalent of what was removed from > the driver. > > A hunch after a quick glance is that the driver changes are only doing > runtime PM calls on the UHH device and not the TTL device. In fact, > the patch that builds the USB host omap_device[1] doesn't even build one. > >> moreover, the patch 'mfd: Add omap-usbhs runtime PM support' is >> already reverted. > > It is reverted for this merge window, but will be added back for the > next window, so Jaswinder's problem still needs to be fixed the right way. > > Please rework the USB host runtime PM conversion so that *all* the IP > blocks are managed by runtime PM and the driver is doing runtime PM > calls for all the devices used. > > Kevin > [1] http://marc.info/?l=linux-omap&m=130693494126396&w=2 > Ya, the changes are going on ; I will post the patches soon. keshava -- 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/drivers/mfd/omap-usb-host.c b/drivers/mfd/omap-usb-host.c index 8552195..12ca77b 100644 --- a/drivers/mfd/omap-usb-host.c +++ b/drivers/mfd/omap-usb-host.c @@ -640,6 +640,7 @@ static int usbhs_enable(struct device *dev) struct usbhs_omap_platform_data *pdata = &omap->platdata; unsigned long flags = 0; int ret = 0; + unsigned long timeout; unsigned reg; dev_dbg(dev, "starting TI HSUSB Controller\n"); @@ -676,6 +677,47 @@ static int usbhs_enable(struct device *dev) omap->usbhs_rev = usbhs_read(omap->uhh_base, OMAP_UHH_REVISION); dev_dbg(dev, "OMAP UHH_REVISION 0x%x\n", omap->usbhs_rev); + /* perform TLL soft reset, and wait until reset is complete */ + usbhs_write(omap->tll_base, OMAP_USBTLL_SYSCONFIG, + OMAP_USBTLL_SYSCONFIG_SOFTRESET); + + /* Wait for TLL reset to complete */ + timeout = jiffies + msecs_to_jiffies(1000); + while (!(usbhs_read(omap->tll_base, OMAP_USBTLL_SYSSTATUS) + & OMAP_USBTLL_SYSSTATUS_RESETDONE)) { + cpu_relax(); + + if (time_after(jiffies, timeout)) { + dev_dbg(dev, "operation timed out\n"); + ret = -EINVAL; + goto err_tll; + } + } + dev_dbg(dev, "TLL RESET DONE\n"); + + /* (1<<3) = no idle mode only for initial debugging */ + usbhs_write(omap->tll_base, OMAP_USBTLL_SYSCONFIG, + OMAP_USBTLL_SYSCONFIG_ENAWAKEUP | + OMAP_USBTLL_SYSCONFIG_SIDLEMODE | + OMAP_USBTLL_SYSCONFIG_AUTOIDLE); + + /* Put UHH in NoIdle/NoStandby mode */ + reg = usbhs_read(omap->uhh_base, OMAP_UHH_SYSCONFIG); + if (is_omap_usbhs_rev1(omap)) { + reg |= (OMAP_UHH_SYSCONFIG_ENAWAKEUP + | OMAP_UHH_SYSCONFIG_SIDLEMODE + | OMAP_UHH_SYSCONFIG_CACTIVITY + | OMAP_UHH_SYSCONFIG_MIDLEMODE); + reg &= ~OMAP_UHH_SYSCONFIG_AUTOIDLE; + } else if (is_omap_usbhs_rev2(omap)) { + reg &= ~OMAP4_UHH_SYSCONFIG_IDLEMODE_CLEAR; + reg |= OMAP4_UHH_SYSCONFIG_NOIDLE; + reg &= ~OMAP4_UHH_SYSCONFIG_STDBYMODE_CLEAR; + reg |= OMAP4_UHH_SYSCONFIG_NOSTDBY; + } + + usbhs_write(omap->uhh_base, OMAP_UHH_SYSCONFIG, reg); + reg = usbhs_read(omap->uhh_base, OMAP_UHH_HOSTCONFIG); /* setup ULPI bypass and burst configurations */ reg |= (OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN
The commit 7e6502d577106fb5b202bbaac64c5f1b065 'mfd: Add omap-usbhs runtime PM support' besides moving to RPM, removes necessary TLL initialization as well. Restore the TLL initialization, without which device detection fails. Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org> --- drivers/mfd/omap-usb-host.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 42 insertions(+), 0 deletions(-)