Lines Matching +full:sun4i +full:- +full:a10 +full:- +full:ehci
2 * Sunxi ehci glue
10 * SPDX-License-Identifier: GPL-2.0+
18 #include "ehci.h"
29 struct ehci_ctrl ehci; member
32 int phy_index; /* Index of the usb-phy attached to this hcd */
43 priv->ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE; in ehci_usb_probe()
44 if (IS_ERR(priv->ccm)) in ehci_usb_probe()
45 return PTR_ERR(priv->ccm); in ehci_usb_probe()
51 priv->ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0; in ehci_usb_probe()
55 priv->phy_index = ((uintptr_t)hccr - SUNXI_USB1_BASE) / BASE_DIST; in ehci_usb_probe()
56 priv->ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST; in ehci_usb_probe()
57 extra_ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST; in ehci_usb_probe()
58 priv->phy_index++; /* Non otg phys start at 1 */ in ehci_usb_probe()
60 setbits_le32(&priv->ccm->ahb_gate0, in ehci_usb_probe()
61 priv->ahb_gate_mask | extra_ahb_gate_mask); in ehci_usb_probe()
63 setbits_le32(&priv->ccm->ahb_reset0_cfg, in ehci_usb_probe()
64 priv->ahb_gate_mask | extra_ahb_gate_mask); in ehci_usb_probe()
67 sunxi_usb_phy_init(priv->phy_index); in ehci_usb_probe()
68 sunxi_usb_phy_power_on(priv->phy_index); in ehci_usb_probe()
71 HC_LENGTH(ehci_readl(&hccr->cr_capbase))); in ehci_usb_probe()
73 return ehci_register(dev, hccr, hcor, NULL, 0, plat->init_type); in ehci_usb_probe()
85 sunxi_usb_phy_exit(priv->phy_index); in ehci_usb_remove()
88 clrbits_le32(&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask); in ehci_usb_remove()
90 clrbits_le32(&priv->ccm->ahb_gate0, priv->ahb_gate_mask); in ehci_usb_remove()
96 { .compatible = "allwinner,sun4i-a10-ehci", },
97 { .compatible = "allwinner,sun5i-a13-ehci", },
98 { .compatible = "allwinner,sun6i-a31-ehci", },
99 { .compatible = "allwinner,sun7i-a20-ehci", },
100 { .compatible = "allwinner,sun8i-a23-ehci", },
101 { .compatible = "allwinner,sun8i-a83t-ehci", },
102 { .compatible = "allwinner,sun8i-h3-ehci", },
103 { .compatible = "allwinner,sun9i-a80-ehci", },
104 { .compatible = "allwinner,sun50i-a64-ehci", },