All of lore.kernel.org
 help / color / mirror / Atom feed
From: Majunath Goudar <csmanjuvijay@gmail.com>
To: csmanjuvijay@gmail.com
Cc: Alan Stern <stern@rowland.harvard.edu>,
	Arnd Bergmann <arnd@arndb.de>, Greg KH <greg@kroah.com>,
	Kukjin Kim <kgene.kim@samsung.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org
Subject: [PATCH V3 5/6] USB: OHCI: Properly handle ohci-exynos suspend
Date: Thu, 17 Oct 2013 19:05:12 +0530	[thread overview]
Message-ID: <1382016913-10872-6-git-send-email-csmanjuvijay@gmail.com> (raw)
In-Reply-To: <1382016913-10872-1-git-send-email-csmanjuvijay@gmail.com>

Suspend scenario in case of ohci-exynos glue was not
properly handled as it was not suspending generic part
of ohci controller. Alan Stern suggested, properly handle
ohci-exynos suspend scenario.

Calling explicitly the ohci_suspend() routine in
exynos_ohci_suspend() will ensure proper handling of suspend
scenario.

V1->V2:
      -No changes.
       Due to the build failure on ep93xx reverted this patch.
       This patch is needed as Alan Stern suggestion.

V2->V3:
      -No changes.
      As a build failure on "ep93xx proper suspend patch"
      and Linaro id bounced. Rewrote this patch on top of latest
      Greg usb-next branch. This patch not gives any build error. 
      Patch is required for ohci-exynos proper suspending as Alan 
      mentioned.

      Initially when I wrote this patch I was working in Linaro, 
      now I am not part of Linaro that is why Linaro id is bouncing. 
      Sending this patch from personal mail id.

Signed-off-by: Manjunath Goudar <csmanjuvijay@gmail.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-usb@vger.kernel.org
---
 drivers/usb/host/ohci-exynos.c |   22 ++++++----------------
 1 file changed, 6 insertions(+), 16 deletions(-)

diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
index a87baed..4b5c8bd 100644
--- a/drivers/usb/host/ohci-exynos.c
+++ b/drivers/usb/host/ohci-exynos.c
@@ -192,23 +192,14 @@ static int exynos_ohci_suspend(struct device *dev)
 	struct exynos_ohci_hcd *exynos_ohci = to_exynos_ohci(hcd);
 	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
 	struct platform_device *pdev = to_platform_device(dev);
+	bool do_wakeup = device_may_wakeup(dev);
 	unsigned long flags;
-	int rc = 0;
+	int rc = ohci_suspend(hcd, do_wakeup);
 
-	/*
-	 * Root hub was already suspended. Disable irq emission and
-	 * mark HW unaccessible, bail out if RH has been resumed. Use
-	 * the spinlock to properly synchronize with possible pending
-	 * RH suspend or resume activity.
-	 */
-	spin_lock_irqsave(&ohci->lock, flags);
-	if (ohci->rh_state != OHCI_RH_SUSPENDED &&
-			ohci->rh_state != OHCI_RH_HALTED) {
-		rc = -EINVAL;
-		goto fail;
-	}
+	if (rc)
+		return rc;
 
-	clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
+	spin_lock_irqsave(&ohci->lock, flags);
 
 	if (exynos_ohci->otg)
 		exynos_ohci->otg->set_host(exynos_ohci->otg, &hcd->self);
@@ -217,10 +208,9 @@ static int exynos_ohci_suspend(struct device *dev)
 
 	clk_disable_unprepare(exynos_ohci->clk);
 
-fail:
 	spin_unlock_irqrestore(&ohci->lock, flags);
 
-	return rc;
+	return 0;
 }
 
 static int exynos_ohci_resume(struct device *dev)
-- 
1.7.9.5


WARNING: multiple messages have this Message-ID (diff)
From: csmanjuvijay@gmail.com (Majunath Goudar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V3 5/6] USB: OHCI: Properly handle ohci-exynos suspend
Date: Thu, 17 Oct 2013 19:05:12 +0530	[thread overview]
Message-ID: <1382016913-10872-6-git-send-email-csmanjuvijay@gmail.com> (raw)
In-Reply-To: <1382016913-10872-1-git-send-email-csmanjuvijay@gmail.com>

Suspend scenario in case of ohci-exynos glue was not
properly handled as it was not suspending generic part
of ohci controller. Alan Stern suggested, properly handle
ohci-exynos suspend scenario.

Calling explicitly the ohci_suspend() routine in
exynos_ohci_suspend() will ensure proper handling of suspend
scenario.

V1->V2:
      -No changes.
       Due to the build failure on ep93xx reverted this patch.
       This patch is needed as Alan Stern suggestion.

V2->V3:
      -No changes.
      As a build failure on "ep93xx proper suspend patch"
      and Linaro id bounced. Rewrote this patch on top of latest
      Greg usb-next branch. This patch not gives any build error. 
      Patch is required for ohci-exynos proper suspending as Alan 
      mentioned.

      Initially when I wrote this patch I was working in Linaro, 
      now I am not part of Linaro that is why Linaro id is bouncing. 
      Sending this patch from personal mail id.

Signed-off-by: Manjunath Goudar <csmanjuvijay@gmail.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: linux-samsung-soc at vger.kernel.org
Cc: linux-kernel at vger.kernel.org
Cc: linux-usb at vger.kernel.org
---
 drivers/usb/host/ohci-exynos.c |   22 ++++++----------------
 1 file changed, 6 insertions(+), 16 deletions(-)

diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
index a87baed..4b5c8bd 100644
--- a/drivers/usb/host/ohci-exynos.c
+++ b/drivers/usb/host/ohci-exynos.c
@@ -192,23 +192,14 @@ static int exynos_ohci_suspend(struct device *dev)
 	struct exynos_ohci_hcd *exynos_ohci = to_exynos_ohci(hcd);
 	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
 	struct platform_device *pdev = to_platform_device(dev);
+	bool do_wakeup = device_may_wakeup(dev);
 	unsigned long flags;
-	int rc = 0;
+	int rc = ohci_suspend(hcd, do_wakeup);
 
-	/*
-	 * Root hub was already suspended. Disable irq emission and
-	 * mark HW unaccessible, bail out if RH has been resumed. Use
-	 * the spinlock to properly synchronize with possible pending
-	 * RH suspend or resume activity.
-	 */
-	spin_lock_irqsave(&ohci->lock, flags);
-	if (ohci->rh_state != OHCI_RH_SUSPENDED &&
-			ohci->rh_state != OHCI_RH_HALTED) {
-		rc = -EINVAL;
-		goto fail;
-	}
+	if (rc)
+		return rc;
 
-	clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
+	spin_lock_irqsave(&ohci->lock, flags);
 
 	if (exynos_ohci->otg)
 		exynos_ohci->otg->set_host(exynos_ohci->otg, &hcd->self);
@@ -217,10 +208,9 @@ static int exynos_ohci_suspend(struct device *dev)
 
 	clk_disable_unprepare(exynos_ohci->clk);
 
-fail:
 	spin_unlock_irqrestore(&ohci->lock, flags);
 
-	return rc;
+	return 0;
 }
 
 static int exynos_ohci_resume(struct device *dev)
-- 
1.7.9.5

  parent reply	other threads:[~2013-10-17 13:35 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-02 10:15 [PATCH 00/11] USB: OHCI:Properly handle ohci_suspend()routine in bus glue Majunath Goudar
2013-10-02 10:15 ` [PATCH 01/11] USB: OHCI: Properly handle OHCI controller suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 02/11] USB: OHCI: Properly handle ohci-at91 suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 03/11] USB: OHCI: Properly handle ohci-s3c2410 suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 04/11] USB: OHCI: Properly handle ohci-da8xx suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 05/11] USB: OHCI: Properly handle ohci-ep93xx suspend Majunath Goudar
2013-10-14 15:49   ` Olof Johansson
2013-10-14 20:34     ` Alan Stern
2013-10-14 20:41       ` Greg KH
2013-10-14 20:42       ` Hartley Sweeten
2013-10-14 20:50         ` Alan Stern
2013-10-14 21:07           ` Hartley Sweeten
2013-10-15  4:32             ` Olof Johansson
     [not found]               ` <CAKsNYyzFe+o0ctNYyHhL7m71LnAC4WTKbkfN37WHmLBRjgj9+w@mail.gmail.com>
2013-10-15 15:15                 ` Greg KH
2013-10-02 10:15 ` [PATCH 06/11] USB: OHCI: Properly handle ohci-exynos suspend Majunath Goudar
2013-10-02 11:34   ` Bartlomiej Zolnierkiewicz
2013-10-02 14:38     ` Alan Stern
2013-10-02 15:10       ` Bartlomiej Zolnierkiewicz
2013-10-02 15:52         ` Alan Stern
2013-10-02 10:15 ` [PATCH 07/11] USB: OHCI: Properly handle ohci-omap suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 08/11] USB: OHCI: Properly handle ohci-platform suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 09/11] USB: OHCI: Properly handle ohci-pxa27x suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 10/11] USB: OHCI: Properly handle ohci-sm501 suspend Majunath Goudar
2013-10-02 10:15 ` [PATCH 11/11] USB: OHCI: Properly handle ohci-spear suspend Majunath Goudar
2013-10-03 13:02 ` [PATCH V2 00/11] USB: OHCI :Properly handle ohci_suspend()routine in bus glue Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 01/11] USB: OHCI: Properly handle OHCI controller suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 02/11] USB: OHCI: Properly handle ohci-at91 suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 03/11] USB: OHCI: Properly handle ohci-s3c2410 suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 04/11] USB: OHCI: Properly handle ohci-da8xx suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 05/11] USB: OHCI: Properly handle ohci-ep93xx suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 06/11] USB: OHCI: Properly handle ohci-exynos suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 07/11] USB: OHCI: Properly handle ohci-omap suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 08/11] USB: OHCI: Properly handle ohci-platform suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 09/11] USB: OHCI: Properly handle ohci-pxa27x suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 10/11] USB: OHCI: Properly handle ohci-sm501 suspend Majunath Goudar
2013-10-03 13:02   ` [PATCH V2 11/11] USB: OHCI: Properly handle ohci-spear suspend Majunath Goudar
2013-10-15 13:19 ` [PATCH V2 0/7] USB: OHCI:Properly handle ohci_suspend()routine in bus glue Majunath Goudar
2013-10-15 13:19   ` [PATCH V2 1/7] USB: OHCI: Properly handle OHCI controller suspend Majunath Goudar
2013-10-15 15:19     ` Greg KH
2013-10-15 13:19   ` [PATCH V2 2/7] USB: OHCI: Properly handle ohci-at91 suspend Majunath Goudar
2013-10-15 13:19   ` [PATCH V2 3/7] USB: OHCI: Properly handle ohci-s3c2410 suspend Majunath Goudar
2013-10-15 13:19   ` [PATCH V2 4/7] USB: OHCI: Properly handle ohci-da8xx suspend Majunath Goudar
2013-10-15 13:20   ` [PATCH V2 5/7] USB: OHCI: Properly handle ohci-ep93xx suspend Majunath Goudar
2013-10-15 15:26     ` Alan Stern
2013-10-15 13:20   ` [PATCH V2 6/7] USB: OHCI: Properly handle ohci-exynos suspend Majunath Goudar
2013-10-15 13:20   ` [PATCH V2 7/7] USB: OHCI: Properly handle ohci-spear suspend Majunath Goudar
     [not found] ` <1382016913-10872-1-git-send-email-csmanjuvijay@gmail.com>
2013-10-17 13:35   ` [PATCH V3 3/6] USB: OHCI: Properly handle ohci-s3c2410 suspend Majunath Goudar
2013-10-17 13:35     ` Majunath Goudar
2013-10-17 13:35   ` Majunath Goudar [this message]
2013-10-17 13:35     ` [PATCH V3 5/6] USB: OHCI: Properly handle ohci-exynos suspend Majunath Goudar
     [not found] ` <1382094376-31016-1-git-send-email-csmanjuvijay@gmail.com>
2013-10-18 11:06   ` [PATCH V3 3/6] USB: OHCI: Properly handle ohci-s3c2410 suspend Majunath Goudar
2013-10-18 11:06     ` Majunath Goudar
2013-10-18 11:06   ` [PATCH V3 5/6] USB: OHCI: Properly handle ohci-exynos suspend Majunath Goudar
2013-10-18 11:06     ` Majunath Goudar
     [not found] ` <1382365136-24472-1-git-send-email-csmanjuvijay@gmail.com>
2013-10-21 14:18   ` [PATCH V4 3/6] USB: OHCI: Properly handle ohci-s3c2410 suspend Majunath Goudar
2013-10-21 14:18     ` Majunath Goudar
2013-10-21 14:18   ` [PATCH V4 5/6] USB: OHCI: Properly handle ohci-exynos suspend Majunath Goudar
2013-10-21 14:18     ` Majunath Goudar
2013-10-21 14:18     ` Majunath Goudar
2013-11-13 12:10 ` [PATCH V4 0/6]USB: OHCI:Properly handle ohci_suspend()routine in bus glue Majunath Goudar
2013-11-13 12:10   ` [PATCH V4 1/6] USB: OHCI: Properly handle OHCI controller suspend Majunath Goudar
2013-11-13 12:10   ` [PATCH 2/6] USB: OHCI: Properly handle ohci-at91 suspend Majunath Goudar
2013-11-13 12:10   ` [PATCH 3/6] USB: OHCI: Properly handle ohci-s3c2410 suspend Majunath Goudar
2013-11-13 12:10     ` Majunath Goudar
2013-11-13 12:10   ` [PATCH 4/6] USB: OHCI: Properly handle ohci-da8xx suspend Majunath Goudar
2013-11-13 12:10   ` [PATCH 5/6] USB: OHCI: Properly handle ohci-exynos suspend Majunath Goudar
2013-11-13 12:10     ` Majunath Goudar
2013-11-13 12:10   ` [PATCH 6/6] USB: OHCI: Properly handle ohci-spear suspend Majunath Goudar

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=1382016913-10872-6-git-send-email-csmanjuvijay@gmail.com \
    --to=csmanjuvijay@gmail.com \
    --cc=arnd@arndb.de \
    --cc=greg@kroah.com \
    --cc=kgene.kim@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@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.