public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usb: Move xhci_pme_quirk() behind an #ifdef CONFIG_PM, as it is not used when it's not defined
@ 2015-08-18  7:55 Tomer Barletz
  2015-08-26 21:57 ` Tomer Barletz
  0 siblings, 1 reply; 3+ messages in thread
From: Tomer Barletz @ 2015-08-18  7:55 UTC (permalink / raw)
  To: linux-usb; +Cc: mathias.nyman, gregkh, linux-kernel, Tomer Barletz

Signed-off-by: Tomer Barletz <barletz@gmail.com>
---
 drivers/usb/host/xhci-pci.c | 90 ++++++++++++++++++++++-----------------------
 1 file changed, 45 insertions(+), 45 deletions(-)

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 5590eac..c79d336 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -180,51 +180,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
 				"QUIRK: Resetting on resume");
 }
 
-/*
- * In some Intel xHCI controllers, in order to get D3 working,
- * through a vendor specific SSIC CONFIG register at offset 0x883c,
- * SSIC PORT need to be marked as "unused" before putting xHCI
- * into D3. After D3 exit, the SSIC port need to be marked as "used".
- * Without this change, xHCI might not enter D3 state.
- * Make sure PME works on some Intel xHCI controllers by writing 1 to clear
- * the Internal PME flag bit in vendor specific PMCTRL register at offset 0x80a4
- */
-static void xhci_pme_quirk(struct usb_hcd *hcd, bool suspend)
-{
-	struct xhci_hcd	*xhci = hcd_to_xhci(hcd);
-	struct pci_dev		*pdev = to_pci_dev(hcd->self.controller);
-	u32 val;
-	void __iomem *reg;
-
-	if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
-		 pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) {
-
-		reg = (void __iomem *) xhci->cap_regs + PORT2_SSIC_CONFIG_REG2;
-
-		/* Notify SSIC that SSIC profile programming is not done */
-		val = readl(reg) & ~PROG_DONE;
-		writel(val, reg);
-
-		/* Mark SSIC port as unused(suspend) or used(resume) */
-		val = readl(reg);
-		if (suspend)
-			val |= SSIC_PORT_UNUSED;
-		else
-			val &= ~SSIC_PORT_UNUSED;
-		writel(val, reg);
-
-		/* Notify SSIC that SSIC profile programming is done */
-		val = readl(reg) | PROG_DONE;
-		writel(val, reg);
-		readl(reg);
-	}
-
-	reg = (void __iomem *) xhci->cap_regs + 0x80a4;
-	val = readl(reg);
-	writel(val | BIT(28), reg);
-	readl(reg);
-}
-
 #ifdef CONFIG_ACPI
 static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev)
 {
@@ -345,6 +300,51 @@ static void xhci_pci_remove(struct pci_dev *dev)
 }
 
 #ifdef CONFIG_PM
+/*
+ * In some Intel xHCI controllers, in order to get D3 working,
+ * through a vendor specific SSIC CONFIG register at offset 0x883c,
+ * SSIC PORT need to be marked as "unused" before putting xHCI
+ * into D3. After D3 exit, the SSIC port need to be marked as "used".
+ * Without this change, xHCI might not enter D3 state.
+ * Make sure PME works on some Intel xHCI controllers by writing 1 to clear
+ * the Internal PME flag bit in vendor specific PMCTRL register at offset 0x80a4
+ */
+static void xhci_pme_quirk(struct usb_hcd *hcd, bool suspend)
+{
+	struct xhci_hcd	*xhci = hcd_to_xhci(hcd);
+	struct pci_dev		*pdev = to_pci_dev(hcd->self.controller);
+	u32 val;
+	void __iomem *reg;
+
+	if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
+		 pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) {
+
+		reg = (void __iomem *) xhci->cap_regs + PORT2_SSIC_CONFIG_REG2;
+
+		/* Notify SSIC that SSIC profile programming is not done */
+		val = readl(reg) & ~PROG_DONE;
+		writel(val, reg);
+
+		/* Mark SSIC port as unused(suspend) or used(resume) */
+		val = readl(reg);
+		if (suspend)
+			val |= SSIC_PORT_UNUSED;
+		else
+			val &= ~SSIC_PORT_UNUSED;
+		writel(val, reg);
+
+		/* Notify SSIC that SSIC profile programming is done */
+		val = readl(reg) | PROG_DONE;
+		writel(val, reg);
+		readl(reg);
+	}
+
+	reg = (void __iomem *) xhci->cap_regs + 0x80a4;
+	val = readl(reg);
+	writel(val | BIT(28), reg);
+	readl(reg);
+}
+
 static int xhci_pci_suspend(struct usb_hcd *hcd, bool do_wakeup)
 {
 	struct xhci_hcd	*xhci = hcd_to_xhci(hcd);
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] usb: Move xhci_pme_quirk() behind an #ifdef CONFIG_PM, as it is not used when it's not defined
  2015-08-18  7:55 [PATCH] usb: Move xhci_pme_quirk() behind an #ifdef CONFIG_PM, as it is not used when it's not defined Tomer Barletz
@ 2015-08-26 21:57 ` Tomer Barletz
  2015-08-27  8:21   ` Mathias Nyman
  0 siblings, 1 reply; 3+ messages in thread
From: Tomer Barletz @ 2015-08-26 21:57 UTC (permalink / raw)
  To: linux-usb; +Cc: mathias.nyman, gregkh, linux-kernel

Ping.


On Tue, Aug 18, 2015 at 12:55 AM, Tomer Barletz <barletz@gmail.com> wrote:
> Signed-off-by: Tomer Barletz <barletz@gmail.com>
> ---
>  drivers/usb/host/xhci-pci.c | 90 ++++++++++++++++++++++-----------------------
>  1 file changed, 45 insertions(+), 45 deletions(-)
>
> diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
> index 5590eac..c79d336 100644
> --- a/drivers/usb/host/xhci-pci.c
> +++ b/drivers/usb/host/xhci-pci.c
> @@ -180,51 +180,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
>                                 "QUIRK: Resetting on resume");
>  }
>
> -/*
> - * In some Intel xHCI controllers, in order to get D3 working,
> - * through a vendor specific SSIC CONFIG register at offset 0x883c,
> - * SSIC PORT need to be marked as "unused" before putting xHCI
> - * into D3. After D3 exit, the SSIC port need to be marked as "used".
> - * Without this change, xHCI might not enter D3 state.
> - * Make sure PME works on some Intel xHCI controllers by writing 1 to clear
> - * the Internal PME flag bit in vendor specific PMCTRL register at offset 0x80a4
> - */
> -static void xhci_pme_quirk(struct usb_hcd *hcd, bool suspend)
> -{
> -       struct xhci_hcd *xhci = hcd_to_xhci(hcd);
> -       struct pci_dev          *pdev = to_pci_dev(hcd->self.controller);
> -       u32 val;
> -       void __iomem *reg;
> -
> -       if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
> -                pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) {
> -
> -               reg = (void __iomem *) xhci->cap_regs + PORT2_SSIC_CONFIG_REG2;
> -
> -               /* Notify SSIC that SSIC profile programming is not done */
> -               val = readl(reg) & ~PROG_DONE;
> -               writel(val, reg);
> -
> -               /* Mark SSIC port as unused(suspend) or used(resume) */
> -               val = readl(reg);
> -               if (suspend)
> -                       val |= SSIC_PORT_UNUSED;
> -               else
> -                       val &= ~SSIC_PORT_UNUSED;
> -               writel(val, reg);
> -
> -               /* Notify SSIC that SSIC profile programming is done */
> -               val = readl(reg) | PROG_DONE;
> -               writel(val, reg);
> -               readl(reg);
> -       }
> -
> -       reg = (void __iomem *) xhci->cap_regs + 0x80a4;
> -       val = readl(reg);
> -       writel(val | BIT(28), reg);
> -       readl(reg);
> -}
> -
>  #ifdef CONFIG_ACPI
>  static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev)
>  {
> @@ -345,6 +300,51 @@ static void xhci_pci_remove(struct pci_dev *dev)
>  }
>
>  #ifdef CONFIG_PM
> +/*
> + * In some Intel xHCI controllers, in order to get D3 working,
> + * through a vendor specific SSIC CONFIG register at offset 0x883c,
> + * SSIC PORT need to be marked as "unused" before putting xHCI
> + * into D3. After D3 exit, the SSIC port need to be marked as "used".
> + * Without this change, xHCI might not enter D3 state.
> + * Make sure PME works on some Intel xHCI controllers by writing 1 to clear
> + * the Internal PME flag bit in vendor specific PMCTRL register at offset 0x80a4
> + */
> +static void xhci_pme_quirk(struct usb_hcd *hcd, bool suspend)
> +{
> +       struct xhci_hcd *xhci = hcd_to_xhci(hcd);
> +       struct pci_dev          *pdev = to_pci_dev(hcd->self.controller);
> +       u32 val;
> +       void __iomem *reg;
> +
> +       if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
> +                pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) {
> +
> +               reg = (void __iomem *) xhci->cap_regs + PORT2_SSIC_CONFIG_REG2;
> +
> +               /* Notify SSIC that SSIC profile programming is not done */
> +               val = readl(reg) & ~PROG_DONE;
> +               writel(val, reg);
> +
> +               /* Mark SSIC port as unused(suspend) or used(resume) */
> +               val = readl(reg);
> +               if (suspend)
> +                       val |= SSIC_PORT_UNUSED;
> +               else
> +                       val &= ~SSIC_PORT_UNUSED;
> +               writel(val, reg);
> +
> +               /* Notify SSIC that SSIC profile programming is done */
> +               val = readl(reg) | PROG_DONE;
> +               writel(val, reg);
> +               readl(reg);
> +       }
> +
> +       reg = (void __iomem *) xhci->cap_regs + 0x80a4;
> +       val = readl(reg);
> +       writel(val | BIT(28), reg);
> +       readl(reg);
> +}
> +
>  static int xhci_pci_suspend(struct usb_hcd *hcd, bool do_wakeup)
>  {
>         struct xhci_hcd *xhci = hcd_to_xhci(hcd);
> --
> 2.4.3
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] usb: Move xhci_pme_quirk() behind an #ifdef CONFIG_PM, as it is not used when it's not defined
  2015-08-26 21:57 ` Tomer Barletz
@ 2015-08-27  8:21   ` Mathias Nyman
  0 siblings, 0 replies; 3+ messages in thread
From: Mathias Nyman @ 2015-08-27  8:21 UTC (permalink / raw)
  To: Tomer Barletz, linux-usb; +Cc: mathias.nyman, gregkh, linux-kernel

On 27.08.2015 00:57, Tomer Barletz wrote:
> Ping.
>

Ah, yes, makes sense.
I'll add it

-Mathias



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-08-27  8:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-18  7:55 [PATCH] usb: Move xhci_pme_quirk() behind an #ifdef CONFIG_PM, as it is not used when it's not defined Tomer Barletz
2015-08-26 21:57 ` Tomer Barletz
2015-08-27  8:21   ` Mathias Nyman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox