From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Florian Fainelli <florian@openwrt.org>
Cc: stern@rowland.harvard.edu, Kukjin Kim <kgene.kim@samsung.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
Felipe Balbi <balbi@ti.com>,
Lennert Buytenhek <kernel@wantstofly.org>,
linux-samsung-soc@vger.kernel.org,
Ben Dooks <ben-linux@fluff.org>,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 14/24] USB: ohci: merge ohci_finish_controller_resume with ohci_resume
Date: Fri, 5 Oct 2012 09:42:00 +0200 [thread overview]
Message-ID: <506E8F48.8040205@atmel.com> (raw)
In-Reply-To: <1349363872-27004-15-git-send-email-florian@openwrt.org>
On 10/04/2012 05:17 PM, Florian Fainelli :
> Merge ohci_finish_controller_resume with ohci_resume as suggested by Alan
> Stern. Since ohci_finish_controller_resume no longer exists, update the
> various OHCI drivers to call ohci_resume() instead. Some drivers used to set
> themselves the bit HCD_FLAG_HW_ACCESSIBLE, which is now handled by
> ohci_resume().
>
> Signed-off-by: Florian Fainelli <florian@openwrt.org>
> ---
> drivers/usb/host/ohci-at91.c | 2 +-
Seems ok for AT91, so
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Thanks Florian, bye,
> drivers/usb/host/ohci-ep93xx.c | 2 +-
> drivers/usb/host/ohci-exynos.c | 5 +----
> drivers/usb/host/ohci-hcd.c | 41 +++++++++++++++++++++++++++++++++++--
> drivers/usb/host/ohci-hub.c | 42 --------------------------------------
> drivers/usb/host/ohci-omap.c | 2 +-
> drivers/usb/host/ohci-platform.c | 2 +-
> drivers/usb/host/ohci-pxa27x.c | 2 +-
> drivers/usb/host/ohci-s3c2410.c | 3 +--
> drivers/usb/host/ohci-spear.c | 2 +-
> drivers/usb/host/ohci-tmio.c | 2 +-
> 11 files changed, 48 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index 0bf72f9..908d84a 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -705,7 +705,7 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *pdev)
> if (!clocked)
> at91_start_clock();
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #else
> diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
> index dbfbd1d..a982f04 100644
> --- a/drivers/usb/host/ohci-ep93xx.c
> +++ b/drivers/usb/host/ohci-ep93xx.c
> @@ -194,7 +194,7 @@ static int ohci_hcd_ep93xx_drv_resume(struct platform_device *pdev)
>
> ep93xx_start_hc(&pdev->dev);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #endif
> diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
> index fc3091b..53c5a989 100644
> --- a/drivers/usb/host/ohci-exynos.c
> +++ b/drivers/usb/host/ohci-exynos.c
> @@ -252,10 +252,7 @@ static int exynos_ohci_resume(struct device *dev)
> if (pdata && pdata->phy_init)
> pdata->phy_init(pdev, S5P_USB_PHY_HOST);
>
> - /* Mark hardware accessible again as we are out of D3 state by now */
> - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
> -
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> index 5d30992..568bdb3 100644
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -1003,13 +1003,50 @@ static int __maybe_unused ohci_suspend(struct usb_hcd *hcd, bool do_wakeup)
>
> static int __maybe_unused ohci_resume(struct usb_hcd *hcd, bool hibernated)
> {
> + struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> + int port;
> + bool need_reinit = false;
> +
> set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
>
> /* Make sure resume from hibernation re-enumerates everything */
> if (hibernated)
> - ohci_usb_reset(hcd_to_ohci(hcd));
> + ohci_usb_reset(ohci);
> +
> + /* See if the controller is already running or has been reset */
> + ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
> + if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
> + need_reinit = true;
> + } else {
> + switch (ohci->hc_control & OHCI_CTRL_HCFS) {
> + case OHCI_USB_OPER:
> + case OHCI_USB_RESET:
> + need_reinit = true;
> + }
> + }
> +
> + /* If needed, reinitialize and suspend the root hub */
> + if (need_reinit) {
> + spin_lock_irq(&ohci->lock);
> + ohci_rh_resume(ohci);
> + ohci_rh_suspend(ohci, 0);
> + spin_unlock_irq(&ohci->lock);
> + }
> +
> + /* Normally just turn on port power and enable interrupts */
> + else {
> + ohci_dbg(ohci, "powerup ports\n");
> + for (port = 0; port < ohci->num_ports; port++)
> + ohci_writel(ohci, RH_PS_PPS,
> + &ohci->regs->roothub.portstatus[port]);
> +
> + ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
> + ohci_readl(ohci, &ohci->regs->intrenable);
> + msleep(20);
> + }
> +
> + usb_hcd_resume_root_hub(hcd);
>
> - ohci_finish_controller_resume(hcd);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
> index 2f3619e..db09dae 100644
> --- a/drivers/usb/host/ohci-hub.c
> +++ b/drivers/usb/host/ohci-hub.c
> @@ -316,48 +316,6 @@ static int ohci_bus_resume (struct usb_hcd *hcd)
> return rc;
> }
>
> -/* Carry out the final steps of resuming the controller device */
> -static void __maybe_unused ohci_finish_controller_resume(struct usb_hcd *hcd)
> -{
> - struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> - int port;
> - bool need_reinit = false;
> -
> - /* See if the controller is already running or has been reset */
> - ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
> - if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
> - need_reinit = true;
> - } else {
> - switch (ohci->hc_control & OHCI_CTRL_HCFS) {
> - case OHCI_USB_OPER:
> - case OHCI_USB_RESET:
> - need_reinit = true;
> - }
> - }
> -
> - /* If needed, reinitialize and suspend the root hub */
> - if (need_reinit) {
> - spin_lock_irq(&ohci->lock);
> - ohci_rh_resume(ohci);
> - ohci_rh_suspend(ohci, 0);
> - spin_unlock_irq(&ohci->lock);
> - }
> -
> - /* Normally just turn on port power and enable interrupts */
> - else {
> - ohci_dbg(ohci, "powerup ports\n");
> - for (port = 0; port < ohci->num_ports; port++)
> - ohci_writel(ohci, RH_PS_PPS,
> - &ohci->regs->roothub.portstatus[port]);
> -
> - ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
> - ohci_readl(ohci, &ohci->regs->intrenable);
> - msleep(20);
> - }
> -
> - usb_hcd_resume_root_hub(hcd);
> -}
> -
> /* Carry out polling-, autostop-, and autoresume-related state changes */
> static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
> int any_connected, int rhsc_status)
> diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
> index f8b2d91..9fab4d8 100644
> --- a/drivers/usb/host/ohci-omap.c
> +++ b/drivers/usb/host/ohci-omap.c
> @@ -530,7 +530,7 @@ static int ohci_omap_resume(struct platform_device *dev)
> ohci->next_statechange = jiffies;
>
> omap_ohci_clock_power(1);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
> index 1caaf65..99d1755 100644
> --- a/drivers/usb/host/ohci-platform.c
> +++ b/drivers/usb/host/ohci-platform.c
> @@ -203,7 +203,7 @@ static int ohci_platform_resume(struct device *dev)
> return err;
> }
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
> index 77f4402..8bffde3 100644
> --- a/drivers/usb/host/ohci-pxa27x.c
> +++ b/drivers/usb/host/ohci-pxa27x.c
> @@ -591,7 +591,7 @@ static int ohci_hcd_pxa27x_drv_resume(struct device *dev)
> /* Select Power Management Mode */
> pxa27x_ohci_select_pmm(ohci, inf->port_mode);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
> index 664c869..8af53c6 100644
> --- a/drivers/usb/host/ohci-s3c2410.c
> +++ b/drivers/usb/host/ohci-s3c2410.c
> @@ -524,8 +524,7 @@ static int ohci_hcd_s3c2410_drv_resume(struct device *dev)
>
> s3c2410_start_hc(pdev, hcd);
>
> - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
> diff --git a/drivers/usb/host/ohci-spear.c b/drivers/usb/host/ohci-spear.c
> index fc7305e..d607be3 100644
> --- a/drivers/usb/host/ohci-spear.c
> +++ b/drivers/usb/host/ohci-spear.c
> @@ -231,7 +231,7 @@ static int spear_ohci_hcd_drv_resume(struct platform_device *dev)
> ohci->next_statechange = jiffies;
>
> spear_start_ohci(ohci_p);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #endif
> diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c
> index 60c2b07..2c9ab8f 100644
> --- a/drivers/usb/host/ohci-tmio.c
> +++ b/drivers/usb/host/ohci-tmio.c
> @@ -352,7 +352,7 @@ static int ohci_hcd_tmio_drv_resume(struct platform_device *dev)
>
> spin_unlock_irqrestore(&tmio->lock, flags);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
>
--
Nicolas Ferre
WARNING: multiple messages have this Message-ID (diff)
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 14/24] USB: ohci: merge ohci_finish_controller_resume with ohci_resume
Date: Fri, 5 Oct 2012 09:42:00 +0200 [thread overview]
Message-ID: <506E8F48.8040205@atmel.com> (raw)
In-Reply-To: <1349363872-27004-15-git-send-email-florian@openwrt.org>
On 10/04/2012 05:17 PM, Florian Fainelli :
> Merge ohci_finish_controller_resume with ohci_resume as suggested by Alan
> Stern. Since ohci_finish_controller_resume no longer exists, update the
> various OHCI drivers to call ohci_resume() instead. Some drivers used to set
> themselves the bit HCD_FLAG_HW_ACCESSIBLE, which is now handled by
> ohci_resume().
>
> Signed-off-by: Florian Fainelli <florian@openwrt.org>
> ---
> drivers/usb/host/ohci-at91.c | 2 +-
Seems ok for AT91, so
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Thanks Florian, bye,
> drivers/usb/host/ohci-ep93xx.c | 2 +-
> drivers/usb/host/ohci-exynos.c | 5 +----
> drivers/usb/host/ohci-hcd.c | 41 +++++++++++++++++++++++++++++++++++--
> drivers/usb/host/ohci-hub.c | 42 --------------------------------------
> drivers/usb/host/ohci-omap.c | 2 +-
> drivers/usb/host/ohci-platform.c | 2 +-
> drivers/usb/host/ohci-pxa27x.c | 2 +-
> drivers/usb/host/ohci-s3c2410.c | 3 +--
> drivers/usb/host/ohci-spear.c | 2 +-
> drivers/usb/host/ohci-tmio.c | 2 +-
> 11 files changed, 48 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index 0bf72f9..908d84a 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -705,7 +705,7 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *pdev)
> if (!clocked)
> at91_start_clock();
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #else
> diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
> index dbfbd1d..a982f04 100644
> --- a/drivers/usb/host/ohci-ep93xx.c
> +++ b/drivers/usb/host/ohci-ep93xx.c
> @@ -194,7 +194,7 @@ static int ohci_hcd_ep93xx_drv_resume(struct platform_device *pdev)
>
> ep93xx_start_hc(&pdev->dev);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #endif
> diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
> index fc3091b..53c5a989 100644
> --- a/drivers/usb/host/ohci-exynos.c
> +++ b/drivers/usb/host/ohci-exynos.c
> @@ -252,10 +252,7 @@ static int exynos_ohci_resume(struct device *dev)
> if (pdata && pdata->phy_init)
> pdata->phy_init(pdev, S5P_USB_PHY_HOST);
>
> - /* Mark hardware accessible again as we are out of D3 state by now */
> - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
> -
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> index 5d30992..568bdb3 100644
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -1003,13 +1003,50 @@ static int __maybe_unused ohci_suspend(struct usb_hcd *hcd, bool do_wakeup)
>
> static int __maybe_unused ohci_resume(struct usb_hcd *hcd, bool hibernated)
> {
> + struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> + int port;
> + bool need_reinit = false;
> +
> set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
>
> /* Make sure resume from hibernation re-enumerates everything */
> if (hibernated)
> - ohci_usb_reset(hcd_to_ohci(hcd));
> + ohci_usb_reset(ohci);
> +
> + /* See if the controller is already running or has been reset */
> + ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
> + if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
> + need_reinit = true;
> + } else {
> + switch (ohci->hc_control & OHCI_CTRL_HCFS) {
> + case OHCI_USB_OPER:
> + case OHCI_USB_RESET:
> + need_reinit = true;
> + }
> + }
> +
> + /* If needed, reinitialize and suspend the root hub */
> + if (need_reinit) {
> + spin_lock_irq(&ohci->lock);
> + ohci_rh_resume(ohci);
> + ohci_rh_suspend(ohci, 0);
> + spin_unlock_irq(&ohci->lock);
> + }
> +
> + /* Normally just turn on port power and enable interrupts */
> + else {
> + ohci_dbg(ohci, "powerup ports\n");
> + for (port = 0; port < ohci->num_ports; port++)
> + ohci_writel(ohci, RH_PS_PPS,
> + &ohci->regs->roothub.portstatus[port]);
> +
> + ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
> + ohci_readl(ohci, &ohci->regs->intrenable);
> + msleep(20);
> + }
> +
> + usb_hcd_resume_root_hub(hcd);
>
> - ohci_finish_controller_resume(hcd);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
> index 2f3619e..db09dae 100644
> --- a/drivers/usb/host/ohci-hub.c
> +++ b/drivers/usb/host/ohci-hub.c
> @@ -316,48 +316,6 @@ static int ohci_bus_resume (struct usb_hcd *hcd)
> return rc;
> }
>
> -/* Carry out the final steps of resuming the controller device */
> -static void __maybe_unused ohci_finish_controller_resume(struct usb_hcd *hcd)
> -{
> - struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> - int port;
> - bool need_reinit = false;
> -
> - /* See if the controller is already running or has been reset */
> - ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
> - if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
> - need_reinit = true;
> - } else {
> - switch (ohci->hc_control & OHCI_CTRL_HCFS) {
> - case OHCI_USB_OPER:
> - case OHCI_USB_RESET:
> - need_reinit = true;
> - }
> - }
> -
> - /* If needed, reinitialize and suspend the root hub */
> - if (need_reinit) {
> - spin_lock_irq(&ohci->lock);
> - ohci_rh_resume(ohci);
> - ohci_rh_suspend(ohci, 0);
> - spin_unlock_irq(&ohci->lock);
> - }
> -
> - /* Normally just turn on port power and enable interrupts */
> - else {
> - ohci_dbg(ohci, "powerup ports\n");
> - for (port = 0; port < ohci->num_ports; port++)
> - ohci_writel(ohci, RH_PS_PPS,
> - &ohci->regs->roothub.portstatus[port]);
> -
> - ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
> - ohci_readl(ohci, &ohci->regs->intrenable);
> - msleep(20);
> - }
> -
> - usb_hcd_resume_root_hub(hcd);
> -}
> -
> /* Carry out polling-, autostop-, and autoresume-related state changes */
> static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
> int any_connected, int rhsc_status)
> diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
> index f8b2d91..9fab4d8 100644
> --- a/drivers/usb/host/ohci-omap.c
> +++ b/drivers/usb/host/ohci-omap.c
> @@ -530,7 +530,7 @@ static int ohci_omap_resume(struct platform_device *dev)
> ohci->next_statechange = jiffies;
>
> omap_ohci_clock_power(1);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
> index 1caaf65..99d1755 100644
> --- a/drivers/usb/host/ohci-platform.c
> +++ b/drivers/usb/host/ohci-platform.c
> @@ -203,7 +203,7 @@ static int ohci_platform_resume(struct device *dev)
> return err;
> }
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
> index 77f4402..8bffde3 100644
> --- a/drivers/usb/host/ohci-pxa27x.c
> +++ b/drivers/usb/host/ohci-pxa27x.c
> @@ -591,7 +591,7 @@ static int ohci_hcd_pxa27x_drv_resume(struct device *dev)
> /* Select Power Management Mode */
> pxa27x_ohci_select_pmm(ohci, inf->port_mode);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
> index 664c869..8af53c6 100644
> --- a/drivers/usb/host/ohci-s3c2410.c
> +++ b/drivers/usb/host/ohci-s3c2410.c
> @@ -524,8 +524,7 @@ static int ohci_hcd_s3c2410_drv_resume(struct device *dev)
>
> s3c2410_start_hc(pdev, hcd);
>
> - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
> diff --git a/drivers/usb/host/ohci-spear.c b/drivers/usb/host/ohci-spear.c
> index fc7305e..d607be3 100644
> --- a/drivers/usb/host/ohci-spear.c
> +++ b/drivers/usb/host/ohci-spear.c
> @@ -231,7 +231,7 @@ static int spear_ohci_hcd_drv_resume(struct platform_device *dev)
> ohci->next_statechange = jiffies;
>
> spear_start_ohci(ohci_p);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #endif
> diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c
> index 60c2b07..2c9ab8f 100644
> --- a/drivers/usb/host/ohci-tmio.c
> +++ b/drivers/usb/host/ohci-tmio.c
> @@ -352,7 +352,7 @@ static int ohci_hcd_tmio_drv_resume(struct platform_device *dev)
>
> spin_unlock_irqrestore(&tmio->lock, flags);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
>
--
Nicolas Ferre
WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Florian Fainelli <florian@openwrt.org>
Cc: <stern@rowland.harvard.edu>, Kukjin Kim <kgene.kim@samsung.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
Felipe Balbi <balbi@ti.com>,
"Lennert Buytenhek" <kernel@wantstofly.org>,
<linux-samsung-soc@vger.kernel.org>,
"Ben Dooks" <ben-linux@fluff.org>, <linux-omap@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 14/24] USB: ohci: merge ohci_finish_controller_resume with ohci_resume
Date: Fri, 5 Oct 2012 09:42:00 +0200 [thread overview]
Message-ID: <506E8F48.8040205@atmel.com> (raw)
In-Reply-To: <1349363872-27004-15-git-send-email-florian@openwrt.org>
On 10/04/2012 05:17 PM, Florian Fainelli :
> Merge ohci_finish_controller_resume with ohci_resume as suggested by Alan
> Stern. Since ohci_finish_controller_resume no longer exists, update the
> various OHCI drivers to call ohci_resume() instead. Some drivers used to set
> themselves the bit HCD_FLAG_HW_ACCESSIBLE, which is now handled by
> ohci_resume().
>
> Signed-off-by: Florian Fainelli <florian@openwrt.org>
> ---
> drivers/usb/host/ohci-at91.c | 2 +-
Seems ok for AT91, so
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Thanks Florian, bye,
> drivers/usb/host/ohci-ep93xx.c | 2 +-
> drivers/usb/host/ohci-exynos.c | 5 +----
> drivers/usb/host/ohci-hcd.c | 41 +++++++++++++++++++++++++++++++++++--
> drivers/usb/host/ohci-hub.c | 42 --------------------------------------
> drivers/usb/host/ohci-omap.c | 2 +-
> drivers/usb/host/ohci-platform.c | 2 +-
> drivers/usb/host/ohci-pxa27x.c | 2 +-
> drivers/usb/host/ohci-s3c2410.c | 3 +--
> drivers/usb/host/ohci-spear.c | 2 +-
> drivers/usb/host/ohci-tmio.c | 2 +-
> 11 files changed, 48 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index 0bf72f9..908d84a 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -705,7 +705,7 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *pdev)
> if (!clocked)
> at91_start_clock();
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #else
> diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
> index dbfbd1d..a982f04 100644
> --- a/drivers/usb/host/ohci-ep93xx.c
> +++ b/drivers/usb/host/ohci-ep93xx.c
> @@ -194,7 +194,7 @@ static int ohci_hcd_ep93xx_drv_resume(struct platform_device *pdev)
>
> ep93xx_start_hc(&pdev->dev);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #endif
> diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
> index fc3091b..53c5a989 100644
> --- a/drivers/usb/host/ohci-exynos.c
> +++ b/drivers/usb/host/ohci-exynos.c
> @@ -252,10 +252,7 @@ static int exynos_ohci_resume(struct device *dev)
> if (pdata && pdata->phy_init)
> pdata->phy_init(pdev, S5P_USB_PHY_HOST);
>
> - /* Mark hardware accessible again as we are out of D3 state by now */
> - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
> -
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> index 5d30992..568bdb3 100644
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -1003,13 +1003,50 @@ static int __maybe_unused ohci_suspend(struct usb_hcd *hcd, bool do_wakeup)
>
> static int __maybe_unused ohci_resume(struct usb_hcd *hcd, bool hibernated)
> {
> + struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> + int port;
> + bool need_reinit = false;
> +
> set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
>
> /* Make sure resume from hibernation re-enumerates everything */
> if (hibernated)
> - ohci_usb_reset(hcd_to_ohci(hcd));
> + ohci_usb_reset(ohci);
> +
> + /* See if the controller is already running or has been reset */
> + ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
> + if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
> + need_reinit = true;
> + } else {
> + switch (ohci->hc_control & OHCI_CTRL_HCFS) {
> + case OHCI_USB_OPER:
> + case OHCI_USB_RESET:
> + need_reinit = true;
> + }
> + }
> +
> + /* If needed, reinitialize and suspend the root hub */
> + if (need_reinit) {
> + spin_lock_irq(&ohci->lock);
> + ohci_rh_resume(ohci);
> + ohci_rh_suspend(ohci, 0);
> + spin_unlock_irq(&ohci->lock);
> + }
> +
> + /* Normally just turn on port power and enable interrupts */
> + else {
> + ohci_dbg(ohci, "powerup ports\n");
> + for (port = 0; port < ohci->num_ports; port++)
> + ohci_writel(ohci, RH_PS_PPS,
> + &ohci->regs->roothub.portstatus[port]);
> +
> + ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
> + ohci_readl(ohci, &ohci->regs->intrenable);
> + msleep(20);
> + }
> +
> + usb_hcd_resume_root_hub(hcd);
>
> - ohci_finish_controller_resume(hcd);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
> index 2f3619e..db09dae 100644
> --- a/drivers/usb/host/ohci-hub.c
> +++ b/drivers/usb/host/ohci-hub.c
> @@ -316,48 +316,6 @@ static int ohci_bus_resume (struct usb_hcd *hcd)
> return rc;
> }
>
> -/* Carry out the final steps of resuming the controller device */
> -static void __maybe_unused ohci_finish_controller_resume(struct usb_hcd *hcd)
> -{
> - struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> - int port;
> - bool need_reinit = false;
> -
> - /* See if the controller is already running or has been reset */
> - ohci->hc_control = ohci_readl(ohci, &ohci->regs->control);
> - if (ohci->hc_control & (OHCI_CTRL_IR | OHCI_SCHED_ENABLES)) {
> - need_reinit = true;
> - } else {
> - switch (ohci->hc_control & OHCI_CTRL_HCFS) {
> - case OHCI_USB_OPER:
> - case OHCI_USB_RESET:
> - need_reinit = true;
> - }
> - }
> -
> - /* If needed, reinitialize and suspend the root hub */
> - if (need_reinit) {
> - spin_lock_irq(&ohci->lock);
> - ohci_rh_resume(ohci);
> - ohci_rh_suspend(ohci, 0);
> - spin_unlock_irq(&ohci->lock);
> - }
> -
> - /* Normally just turn on port power and enable interrupts */
> - else {
> - ohci_dbg(ohci, "powerup ports\n");
> - for (port = 0; port < ohci->num_ports; port++)
> - ohci_writel(ohci, RH_PS_PPS,
> - &ohci->regs->roothub.portstatus[port]);
> -
> - ohci_writel(ohci, OHCI_INTR_MIE, &ohci->regs->intrenable);
> - ohci_readl(ohci, &ohci->regs->intrenable);
> - msleep(20);
> - }
> -
> - usb_hcd_resume_root_hub(hcd);
> -}
> -
> /* Carry out polling-, autostop-, and autoresume-related state changes */
> static int ohci_root_hub_state_changes(struct ohci_hcd *ohci, int changed,
> int any_connected, int rhsc_status)
> diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
> index f8b2d91..9fab4d8 100644
> --- a/drivers/usb/host/ohci-omap.c
> +++ b/drivers/usb/host/ohci-omap.c
> @@ -530,7 +530,7 @@ static int ohci_omap_resume(struct platform_device *dev)
> ohci->next_statechange = jiffies;
>
> omap_ohci_clock_power(1);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
> index 1caaf65..99d1755 100644
> --- a/drivers/usb/host/ohci-platform.c
> +++ b/drivers/usb/host/ohci-platform.c
> @@ -203,7 +203,7 @@ static int ohci_platform_resume(struct device *dev)
> return err;
> }
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
> index 77f4402..8bffde3 100644
> --- a/drivers/usb/host/ohci-pxa27x.c
> +++ b/drivers/usb/host/ohci-pxa27x.c
> @@ -591,7 +591,7 @@ static int ohci_hcd_pxa27x_drv_resume(struct device *dev)
> /* Select Power Management Mode */
> pxa27x_ohci_select_pmm(ohci, inf->port_mode);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
>
> diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
> index 664c869..8af53c6 100644
> --- a/drivers/usb/host/ohci-s3c2410.c
> +++ b/drivers/usb/host/ohci-s3c2410.c
> @@ -524,8 +524,7 @@ static int ohci_hcd_s3c2410_drv_resume(struct device *dev)
>
> s3c2410_start_hc(pdev, hcd);
>
> - set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
> diff --git a/drivers/usb/host/ohci-spear.c b/drivers/usb/host/ohci-spear.c
> index fc7305e..d607be3 100644
> --- a/drivers/usb/host/ohci-spear.c
> +++ b/drivers/usb/host/ohci-spear.c
> @@ -231,7 +231,7 @@ static int spear_ohci_hcd_drv_resume(struct platform_device *dev)
> ohci->next_statechange = jiffies;
>
> spear_start_ohci(ohci_p);
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
> return 0;
> }
> #endif
> diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c
> index 60c2b07..2c9ab8f 100644
> --- a/drivers/usb/host/ohci-tmio.c
> +++ b/drivers/usb/host/ohci-tmio.c
> @@ -352,7 +352,7 @@ static int ohci_hcd_tmio_drv_resume(struct platform_device *dev)
>
> spin_unlock_irqrestore(&tmio->lock, flags);
>
> - ohci_finish_controller_resume(hcd);
> + ohci_resume(hcd, false);
>
> return 0;
> }
>
--
Nicolas Ferre
next prev parent reply other threads:[~2012-10-05 7:42 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1349363872-27004-1-git-send-email-florian@openwrt.org>
2012-10-04 15:17 ` [PATCH 01/24 v2] USB: EHCI: remove IXP4xx EHCI driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 02/24 v2] MIPS: Loongson 1B: use ehci-platform instead of ehci-ls1x Florian Fainelli
2012-10-04 15:17 ` [PATCH 03/24 v2] USB: EHCI: remove Loongson 1B EHCI driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 04/24 v2] MIPS: Netlogic: use ehci-platform driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 05/24 v2] USB: EHCI: remove Netlogic XLS EHCI driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 06/24 v2] USB: EHCI: add no_io_watchdog platform_data parameter to ehci-platform Florian Fainelli
2012-10-04 18:58 ` Alan Stern
2012-10-04 15:17 ` [PATCH 07/24 v2] MIPS: Alchemy: use the ehci platform driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 08/24 v2] USB: EHCI: remove Alchemy EHCI driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 09/24 v2] ARM: cns3xxx: use ehci platform driver Florian Fainelli
2012-10-04 15:17 ` Florian Fainelli
2012-10-04 15:17 ` [PATCH 10/24 v2] USB: EHCI: remove CNS3xxx EHCI " Florian Fainelli
2012-10-04 15:17 ` [PATCH 11/24 v2] USB: ohci: allow platform driver to specify the number of ports Florian Fainelli
2012-10-04 15:17 ` [PATCH 12/24] USB: ohci: move ohci_pci_{suspend,resume} to ohci-hcd.c Florian Fainelli
2012-10-04 19:07 ` Alan Stern
2012-10-04 15:17 ` [PATCH 13/24] USB: ohci: remove check for RH already suspended in ohci_suspend Florian Fainelli
2012-10-04 15:17 ` [PATCH 14/24] USB: ohci: merge ohci_finish_controller_resume with ohci_resume Florian Fainelli
2012-10-04 15:17 ` Florian Fainelli
2012-10-05 1:38 ` Jingoo Han
2012-10-05 1:38 ` Jingoo Han
2012-10-05 7:42 ` Nicolas Ferre [this message]
2012-10-05 7:42 ` Nicolas Ferre
2012-10-05 7:42 ` Nicolas Ferre
2012-10-04 15:17 ` [PATCH 15/24 v2] MIPS: PNX8550: use OHCI platform driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 16/24 v2] USB: OHCI: remove PNX8550 OHCI driver Florian Fainelli
2012-10-04 15:17 ` [PATCH 17/24 v2] ARM: cns3xxx: use OHCI platform driver Florian Fainelli
2012-10-04 15:17 ` Florian Fainelli
2012-10-04 19:19 ` Alan Stern
2012-10-04 19:19 ` Alan Stern
2012-10-04 15:17 ` [PATCH 18/24 v2] USB: OHCI: remove CNS3xxx " Florian Fainelli
2012-10-04 15:17 ` [PATCH 19/24 v2] MIPS: Netlogic: convert to use " Florian Fainelli
2012-10-04 15:17 ` [PATCH 20/24 v2] USB: OHCI: remove Netlogic XLS " Florian Fainelli
2012-10-04 15:17 ` [PATCH 21/24 v2] sh: convert boards to use the " Florian Fainelli
2012-10-04 15:17 ` Florian Fainelli
2012-10-04 15:17 ` [PATCH 22/24 v2] USB: OHCI: remove OHCI SH " Florian Fainelli
2012-10-04 15:17 ` [PATCH 23/24 v2] MIPS: Alchemy: use the OHCI " Florian Fainelli
2012-10-04 15:17 ` [PATCH 24/24 v2] USB: OHCI: remove Alchemy " Florian Fainelli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=506E8F48.8040205@atmel.com \
--to=nicolas.ferre@atmel.com \
--cc=balbi@ti.com \
--cc=ben-linux@fluff.org \
--cc=florian@openwrt.org \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@wantstofly.org \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.