On Tue, 2022-01-18 at 19:24 -0500, Sean Anderson wrote: > 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@xxxxxxxx> > --- > > (no changes since v1) > > 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); > } > Looks good here on a ZynqMP board. Reviewed-by: Robert Hancock <robert.hancock@xxxxxxxxxx> Tested-by: Robert Hancock <robert.hancock@xxxxxxxxxx>