All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@suse.de>
To: Linus Torvalds <torvalds@osdl.org>, Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org,
	linux-usb-devel@lists.sourceforge.net, david-b@pacbell.net
Subject: [patch 19/22] USB: ohci, move ppc asic tweaks nearer pci
Date: Wed, 23 Nov 2005 15:45:42 -0800	[thread overview]
Message-ID: <20051123234542.GT527@kroah.com> (raw)
In-Reply-To: <20051123234335.GA527@kroah.com>

[-- Attachment #1: usb-ohci-move-ppc-asic-tweaks-nearer-pci.patch --]
[-- Type: text/plain, Size: 3809 bytes --]

From: David Brownell <david-b@pacbell.net>

This should fix a suspend/resume issues that appear with OHCI on some
PPC hardware.  The PCI layer should doesn't have the hooks needed for
such ASIC-specific hooks (in this case, software clock gating), so
this moves the code to do that into hcd-pci.c ... where it can be
done after the relevant PCI PM state transition (to/from D3).

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/usb/core/hcd-pci.c  |   38 ++++++++++++++++++++++++++++++++++++--
 drivers/usb/host/ohci-pci.c |   36 ------------------------------------
 2 files changed, 36 insertions(+), 38 deletions(-)

--- usb-2.6.orig/drivers/usb/core/hcd-pci.c
+++ usb-2.6/drivers/usb/core/hcd-pci.c
@@ -20,9 +20,17 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/pci.h>
+#include <linux/usb.h>
+
 #include <asm/io.h>
 #include <asm/irq.h>
-#include <linux/usb.h>
+
+#ifdef CONFIG_PPC_PMAC
+#include <asm/machdep.h>
+#include <asm/pmac_feature.h>
+#include <asm/pci-bridge.h>
+#include <asm/prom.h>
+#endif
 
 #include "usb.h"
 #include "hcd.h"
@@ -277,8 +285,22 @@ int usb_hcd_pci_suspend (struct pci_dev 
 	}
 
 done:
-	if (retval == 0)
+	if (retval == 0) {
 		dev->dev.power.power_state = PMSG_SUSPEND;
+
+#ifdef CONFIG_PPC_PMAC
+		/* Disable ASIC clocks for USB */
+		if (_machine == _MACH_Pmac) {
+			struct device_node	*of_node;
+
+			of_node = pci_device_to_OF_node (dev);
+			if (of_node)
+				pmac_call_feature(PMAC_FTR_USB_ENABLE,
+							of_node, 0, 0);
+		}
+#endif
+	}
+
 	return retval;
 }
 EXPORT_SYMBOL (usb_hcd_pci_suspend);
@@ -301,6 +323,18 @@ int usb_hcd_pci_resume (struct pci_dev *
 		return 0;
 	}
 
+#ifdef CONFIG_PPC_PMAC
+	/* Reenable ASIC clocks for USB */
+	if (_machine == _MACH_Pmac) {
+		struct device_node *of_node;
+
+		of_node = pci_device_to_OF_node (dev);
+		if (of_node)
+			pmac_call_feature (PMAC_FTR_USB_ENABLE,
+						of_node, 0, 1);
+	}
+#endif
+
 	/* NOTE:  chip docs cover clean "real suspend" cases (what Linux
 	 * calls "standby", "suspend to RAM", and so on).  There are also
 	 * dirty cases when swsusp fakes a suspend in "shutdown" mode.
--- usb-2.6.orig/drivers/usb/host/ohci-pci.c
+++ usb-2.6/drivers/usb/host/ohci-pci.c
@@ -14,15 +14,6 @@
  * This file is licenced under the GPL.
  */
  
-#include <linux/jiffies.h>
-
-#ifdef CONFIG_PPC_PMAC
-#include <asm/machdep.h>
-#include <asm/pmac_feature.h>
-#include <asm/pci-bridge.h>
-#include <asm/prom.h>
-#endif
-
 #ifndef CONFIG_PCI
 #error "This file is PCI bus glue.  CONFIG_PCI must be defined."
 #endif
@@ -115,39 +106,12 @@ ohci_pci_start (struct usb_hcd *hcd)
 static int ohci_pci_suspend (struct usb_hcd *hcd, pm_message_t message)
 {
 	/* root hub was already suspended */
-
-	/* FIXME these PMAC things get called in the wrong places.  ASIC
-	 * clocks should be turned off AFTER entering D3, and on BEFORE
-	 * trying to enter D0.  Evidently the PCI layer doesn't currently
-	 * provide the right sort of platform hooks for this ...
-	 */
-#ifdef CONFIG_PPC_PMAC
-	if (_machine == _MACH_Pmac) {
-	   	struct device_node	*of_node;
- 
-		/* Disable USB PAD & cell clock */
-		of_node = pci_device_to_OF_node (to_pci_dev(hcd->self.controller));
-		if (of_node)
-			pmac_call_feature(PMAC_FTR_USB_ENABLE, of_node, 0, 0);
-	}
-#endif /* CONFIG_PPC_PMAC */
 	return 0;
 }
 
 
 static int ohci_pci_resume (struct usb_hcd *hcd)
 {
-#ifdef CONFIG_PPC_PMAC
-	if (_machine == _MACH_Pmac) {
-		struct device_node *of_node;
-
-		/* Re-enable USB PAD & cell clock */
-		of_node = pci_device_to_OF_node (to_pci_dev(hcd->self.controller));
-		if (of_node)
-			pmac_call_feature (PMAC_FTR_USB_ENABLE, of_node, 0, 1);
-	}
-#endif /* CONFIG_PPC_PMAC */
-
 	usb_hcd_resume_root_hub(hcd);
 	return 0;
 }

--

  parent reply	other threads:[~2005-11-23 23:46 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20051123225156.624397000@press.kroah.org>
2005-11-23 23:43 ` [patch 00/22] PCI, USB and hwmon patches for 2.6.15-rc2-git Greg Kroah-Hartman
2005-11-23 23:43   ` [patch 01/22] Small fixes to driver core Greg Kroah-Hartman
2005-11-23 23:43   ` [patch 02/22] MTD git tree location added to MAINTAINERS Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 03/22] Clarify T: field in MAINTAINERS Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 04/22] Add more SCM trees to MAINTAINERS Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 05/22] hwmon: Fix missing boundary check when setting W83627THF in0 limits Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 06/22] hwmon: Fix lm78 VID conversion Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 07/22] hwmon: Fix missing it87 fan div init Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 08/22] hwmon: hdaps missing an axis Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 09/22] PCI: trivial printk updates in common.c Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 10/22] PCI Express Hotplug: clear sticky power-fault bit Greg Kroah-Hartman
2005-11-23 23:44   ` [patch 11/22] PCI: remove bogus resource collision error Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 12/22] PCI: kernel-doc fix for pci-acpi.c Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 13/22] PCI: direct.c: DBG Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 14/22] USB: SN9C10x driver - bad page state fix Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 15/22] USB: ftdi_sio: new IDs for KOBIL devices Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 16/22] USB: EHCI updates Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 17/22] USB: EHCI updates mostly whitespace cleanups Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 18/22] USB: EHCI updates split init/reinit logic for resume Greg Kroah-Hartman
2005-11-23 23:45   ` Greg Kroah-Hartman [this message]
2005-11-23 23:45   ` [patch 20/22] USB: fix USB key generates ioctl_internal_command errors issue Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 21/22] USB: kernel-doc for linux/usb.h Greg Kroah-Hartman
2005-11-23 23:45   ` [patch 22/22] usb serial: remove redundant include Greg Kroah-Hartman
2005-11-24  0:01   ` [patch 00/22] PCI, USB and hwmon patches for 2.6.15-rc2-git Linus Torvalds
2005-11-24  0:57     ` Greg KH

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=20051123234542.GT527@kroah.com \
    --to=gregkh@suse.de \
    --cc=akpm@osdl.org \
    --cc=david-b@pacbell.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=torvalds@osdl.org \
    /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.