From: Ong Boon Leong <boon.leong....@intel.com>

Due to power saving purpose, BIOS disabled ulpi phy refclk by default.
Hence, the refclk will only be enabled during device/driver probing.
and disabled during driver removal.

Signed-off-by: Ong Boon Leong <boon.leong....@intel.com>
---
 ...b-dwc3-pci-Enable-disable-ulpi-phy-refclk.patch |   73 ++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100644 
meta/cfg/kernel-cache/features/valleyisland-io/0001-usb-dwc3-pci-Enable-disable-ulpi-phy-refclk.patch

diff --git 
a/meta/cfg/kernel-cache/features/valleyisland-io/0001-usb-dwc3-pci-Enable-disable-ulpi-phy-refclk.patch
 
b/meta/cfg/kernel-cache/features/valleyisland-io/0001-usb-dwc3-pci-Enable-disable-ulpi-phy-refclk.patch
new file mode 100644
index 0000000..ed8c02a
--- /dev/null
+++ 
b/meta/cfg/kernel-cache/features/valleyisland-io/0001-usb-dwc3-pci-Enable-disable-ulpi-phy-refclk.patch
@@ -0,0 +1,73 @@
+From 9068004eb49c9a166c25716d46f65c973d314273 Mon Sep 17 00:00:00 2001
+From: Maurice Petallo <mauricex.r.peta...@intel.com>
+Date: Wed, 6 Nov 2013 13:47:55 +0800
+Subject: [PATCH 01/19] usb: dwc3: pci: Enable/disable ulpi phy refclk
+
+Due to power saving purpose, BIOS disabled ulpi phy refclk by default.
+Hence, the refclk will only be enabled during device/driver probing.
+and disabled during driver removal.
+
+Signed-off-by: Maurice Petallo <mauricex.r.peta...@intel.com>
+Signed-off-by: Chew, Chiau Ee <chiau.ee.c...@intel.com>
+---
+ drivers/usb/dwc3/dwc3-pci.c |   23 +++++++++++++++++++++++
+ 1 files changed, 23 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
+index 1046dfc..23ee760 100644
+--- a/drivers/usb/dwc3/dwc3-pci.c
++++ b/drivers/usb/dwc3/dwc3-pci.c
+@@ -52,6 +52,10 @@
+ #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3       0xabcd
+ #define PCI_DEVICE_ID_INTEL_BYT               0x0f37
+
++#define DWC3_PCI_GEN_REGRW1           0xa0
++#define DWC3_PCI_GEN_REGRW1_REFCLK_EN(n)  (n & 0xfffdffff)
++#define DWC3_PCI_GEN_REGRW1_REFCLK_DIS(n) (n | 0x020000)
++
+ struct dwc3_pci {
+       struct device           *dev;
+       struct platform_device  *dwc3;
+@@ -113,6 +117,19 @@ err1:
+       return ret;
+ }
+
++static void dwc3_pci_ulpiphy_refclk(struct pci_dev *pci, int enable)
++{
++      u32 val;
++
++      pci_read_config_dword(pci, DWC3_PCI_GEN_REGRW1, &val);
++      if (enable)
++              val = DWC3_PCI_GEN_REGRW1_REFCLK_EN(val);
++      else
++              val = DWC3_PCI_GEN_REGRW1_REFCLK_DIS(val);
++
++      pci_write_config_dword(pci, DWC3_PCI_GEN_REGRW1, val);
++}
++
+ static int dwc3_pci_probe(struct pci_dev *pci,
+               const struct pci_device_id *id)
+ {
+@@ -184,6 +201,9 @@ static int dwc3_pci_probe(struct pci_dev *pci,
+               goto err3;
+       }
+
++      /* enable ulpi phy refclk */
++      dwc3_pci_ulpiphy_refclk(pci, 1);
++
+       return 0;
+
+ err3:
+@@ -199,6 +219,9 @@ static void dwc3_pci_remove(struct pci_dev *pci)
+ {
+       struct dwc3_pci *glue = pci_get_drvdata(pci);
+
++      /* disable ulpi phy refclk */
++      dwc3_pci_ulpiphy_refclk(pci, 0);
++
+       platform_device_unregister(glue->usb2_phy);
+       platform_device_unregister(glue->usb3_phy);
+       platform_device_unregister(glue->dwc3);
+--
+1.7.4.4
+
-- 
1.7.10.4

_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to