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