Re: [PATCH 2/3] usb: dwc3: pci: Enable ULPI Refclk on platforms where the firmware doesnot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 7, 2018 at 1:38 PM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
> On some Bay Trail (BYT) systems the firmware does not enable the
> ULPI Refclk.
>
> This commit adds a helper which checks and if necessary enabled the Refclk
> and calls this helper for BYT machines.


> +static void dwc3_pci_enable_ulpi_refclock(struct pci_dev *pci)
> +{
> +       void __iomem    *reg;
> +       struct resource res;
> +       struct device   *dev = &pci->dev;
> +       u32             value;
> +

> +       res.start       = pci_resource_start(pci, 1);
> +       res.end         = pci_resource_end(pci, 1);
> +       res.name        = "dwc_usb3_bar1";
> +       res.flags       = IORESOURCE_MEM;
> +
> +       reg = devm_ioremap_resource(dev, &res);
> +       if (IS_ERR(reg)) {
> +               dev_err(dev, "cannot check GP_RWREG1 to assert ulpi refclock\n");
> +               return;
> +       }

I'm not sure I understand what's wrong with simple
pci_iomap() & Co (perhaps pcim_iomap() / pcim_iomap_regions() and others)

> +
> +       value = readl(reg + GP_RWREG1);
> +       if (!(value & GP_RWREG1_ULPI_REFCLK_DISABLE))
> +               return; /* ULPI refclk already enabled */
> +
> +       dev_warn(dev, "ULPI refclock is disabled from the BIOS, enabling it\n");
> +       value &= ~GP_RWREG1_ULPI_REFCLK_DISABLE;
> +       writel(value, reg + GP_RWREG1);

> +       msleep(100);

This has to be explained.

> +}


-- 
With Best Regards,
Andy Shevchenko
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux