lkml.org 
[lkml]   [2022]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/6] usb: dwc3: Calculate REFCLKPER based on reference clock
    Date
    Instead of using a special property to determine the reference clock
    period, use the rate of the reference clock. When we have a legacy
    snps,ref-clock-period-ns property and no reference clock, use it
    instead. Fractional clocks are not currently supported, and will be
    dealt with in the next commit.

    Signed-off-by: Sean Anderson <sean.anderson@seco.com>
    ---

    drivers/usb/dwc3/core.c | 13 +++++++++++--
    1 file changed, 11 insertions(+), 2 deletions(-)

    diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
    index 699ab9abdc47..5214daceda86 100644
    --- a/drivers/usb/dwc3/core.c
    +++ b/drivers/usb/dwc3/core.c
    @@ -348,13 +348,22 @@ static void dwc3_frame_length_adjustment(struct dwc3 *dwc)
    static void dwc3_ref_clk_period(struct dwc3 *dwc)
    {
    u32 reg;
    + unsigned long rate, period;

    - if (dwc->ref_clk_per == 0)
    + if (dwc->ref_clk) {
    + rate = clk_get_rate(dwc->ref_clk);
    + if (!rate)
    + return;
    + period = NSEC_PER_SEC / rate;
    + } else if (dwc->ref_clk_per) {
    + period = dwc->ref_clk_per;
    + } else {
    return;
    + }

    reg = dwc3_readl(dwc->regs, DWC3_GUCTL);
    reg &= ~DWC3_GUCTL_REFCLKPER_MASK;
    - reg |= FIELD_PREP(DWC3_GUCTL_REFCLKPER_MASK, dwc->ref_clk_per);
    + reg |= FIELD_PREP(DWC3_GUCTL_REFCLKPER_MASK, period);
    dwc3_writel(dwc->regs, DWC3_GUCTL, reg);
    }

    --
    2.25.1
    \
     
     \ /
      Last update: 2022-01-15 00:40    [W:4.258 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site