lkml.org 
[lkml]   [2014]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 12/16] usb: dwc3: add delay phy power change quirk
    Date
    AMD NL needs to delay PHY power change from P0 to P1/P2/P3 when link state
    changing from U0 to U1/U2/U3 respectively.

    Signed-off-by: Huang Rui <ray.huang@amd.com>
    ---
    drivers/usb/dwc3/core.c | 3 +++
    drivers/usb/dwc3/core.h | 1 +
    drivers/usb/dwc3/dwc3-pci.c | 3 ++-
    drivers/usb/dwc3/platform_data.h | 1 +
    4 files changed, 7 insertions(+), 1 deletion(-)

    diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
    index a9f1d4c..920a8ab 100644
    --- a/drivers/usb/dwc3/core.c
    +++ b/drivers/usb/dwc3/core.c
    @@ -383,6 +383,9 @@ static void dwc3_phy_setup(struct dwc3 *dwc)
    if (dwc->quirks & DWC3_QUIRK_DEPP1P2P3)
    reg |= DWC3_GUSB3PIPECTL_DEP1P2P3(1);

    + if (dwc->quirks & DWC3_QUIRK_DEPOCHANGE)
    + reg |= DWC3_GUSB3PIPECTL_DEPOCHANGE;
    +
    dwc3_writel(dwc->regs, DWC3_GUSB3PIPECTL(0), reg);

    mdelay(100);
    diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
    index cf70fa6..4c0200f 100644
    --- a/drivers/usb/dwc3/core.h
    +++ b/drivers/usb/dwc3/core.h
    @@ -180,6 +180,7 @@
    #define DWC3_GUSB3PIPECTL_REQP1P2P3 (1 << 24)
    #define DWC3_GUSB3PIPECTL_DEP1P2P3_MASK DWC3_GUSB3PIPECTL_DEP1P2P3(7)
    #define DWC3_GUSB3PIPECTL_DEP1P2P3(n) ((n) << 19)
    +#define DWC3_GUSB3PIPECTL_DEPOCHANGE (1 << 18)
    #define DWC3_GUSB3PIPECTL_SUSPHY (1 << 17)

    /* Global TX Fifo Size Register */
    diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
    index 23ae6a7..0eb8b2a 100644
    --- a/drivers/usb/dwc3/dwc3-pci.c
    +++ b/drivers/usb/dwc3/dwc3-pci.c
    @@ -153,7 +153,8 @@ static int dwc3_pci_probe(struct pci_dev *pci,
    | DWC3_QUIRK_U2EXIT_LFPS
    | DWC3_QUIRK_U2SSINP3OK
    | DWC3_QUIRK_REQP1P2P3
    - | DWC3_QUIRK_DEPP1P2P3;
    + | DWC3_QUIRK_DEPP1P2P3
    + | DWC3_QUIRK_DEPOCHANGE;
    }

    ret = platform_device_add_resources(dwc3, res, ARRAY_SIZE(res));
    diff --git a/drivers/usb/dwc3/platform_data.h b/drivers/usb/dwc3/platform_data.h
    index e668c1f..934c5e1 100644
    --- a/drivers/usb/dwc3/platform_data.h
    +++ b/drivers/usb/dwc3/platform_data.h
    @@ -34,5 +34,6 @@ struct dwc3_platform_data {
    #define DWC3_QUIRK_U2SSINP3OK (1 << 3)
    #define DWC3_QUIRK_REQP1P2P3 (1 << 4)
    #define DWC3_QUIRK_DEPP1P2P3 (1 << 5)
    +#define DWC3_QUIRK_DEPOCHANGE (1 << 6)

    };
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-10-17 11:41    [W:3.351 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site