X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fusb%2Fhost%2Fehci-sunxi.c;h=068f24f48392810401a609edd7596ba1e7791a48;hb=1a9a5f7a39d655868d7e51327786ca6bccbbec68;hp=d5eb492169672b6cfd88261edf830c92f0d1f998;hpb=3655f287b6eb9f9dfd35d9229bd0d53fa400877d;p=u-boot diff --git a/drivers/usb/host/ehci-sunxi.c b/drivers/usb/host/ehci-sunxi.c index d5eb492169..068f24f483 100644 --- a/drivers/usb/host/ehci-sunxi.c +++ b/drivers/usb/host/ehci-sunxi.c @@ -38,28 +38,32 @@ static int ehci_usb_probe(struct udevice *dev) struct ehci_sunxi_priv *priv = dev_get_priv(dev); struct ehci_hccr *hccr = (struct ehci_hccr *)dev_get_addr(dev); struct ehci_hcor *hcor; + int extra_ahb_gate_mask = 0; /* * This should go away once we've moved to the driver model for * clocks resp. phys. */ priv->ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0; -#ifdef CONFIG_MACH_SUN8I_H3 - priv->ahb_gate_mask |= 1 << AHB_GATE_OFFSET_USB_OHCI0; +#if defined(CONFIG_MACH_SUNXI_H3_H5) || defined(CONFIG_MACH_SUN50I) + extra_ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_OHCI0; #endif - priv->phy_index = ((u32)hccr - SUNXI_USB1_BASE) / BASE_DIST; + priv->phy_index = ((uintptr_t)hccr - SUNXI_USB1_BASE) / BASE_DIST; priv->ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST; + extra_ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST; priv->phy_index++; /* Non otg phys start at 1 */ - setbits_le32(&ccm->ahb_gate0, priv->ahb_gate_mask); + setbits_le32(&ccm->ahb_gate0, + priv->ahb_gate_mask | extra_ahb_gate_mask); #ifdef CONFIG_SUNXI_GEN_SUN6I - setbits_le32(&ccm->ahb_reset0_cfg, priv->ahb_gate_mask); + setbits_le32(&ccm->ahb_reset0_cfg, + priv->ahb_gate_mask | extra_ahb_gate_mask); #endif sunxi_usb_phy_init(priv->phy_index); sunxi_usb_phy_power_on(priv->phy_index); - hcor = (struct ehci_hcor *)((uint32_t)hccr + + hcor = (struct ehci_hcor *)((uintptr_t)hccr + HC_LENGTH(ehci_readl(&hccr->cr_capbase))); return ehci_register(dev, hccr, hcor, NULL, 0, plat->init_type); @@ -94,6 +98,7 @@ static const struct udevice_id ehci_usb_ids[] = { { .compatible = "allwinner,sun8i-a83t-ehci", }, { .compatible = "allwinner,sun8i-h3-ehci", }, { .compatible = "allwinner,sun9i-a80-ehci", }, + { .compatible = "allwinner,sun50i-a64-ehci", }, { } };