On Thu, Jun 7, 2018 at 1:38 PM, Hans de Goede <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html