]> git.sur5r.net Git - u-boot/blobdiff - drivers/usb/host/ohci-sunxi.c
usb: sunxi: sun50i: enable OHCI0 clock when OHCI1 is in use
[u-boot] / drivers / usb / host / ohci-sunxi.c
index 19f99adcf10762f3b484b4943d1c5e18c8de05d4..2b99169da6423ca2e6c79c106891044dd5284fcf 100644 (file)
@@ -25,6 +25,7 @@
 struct ohci_sunxi_cfg {
        bool has_reset;
        u32 extra_ahb_gate_mask;
+       u32 extra_usb_gate_mask;
 };
 
 struct ohci_sunxi_priv {
@@ -89,7 +90,8 @@ no_phy:
 
        setbits_le32(&priv->ccm->ahb_gate0,
                     priv->ahb_gate_mask | extra_ahb_gate_mask);
-       setbits_le32(&priv->ccm->usb_clk_cfg, priv->usb_gate_mask);
+       setbits_le32(&priv->ccm->usb_clk_cfg,
+                    priv->usb_gate_mask | priv->cfg->extra_usb_gate_mask);
        if (priv->cfg->has_reset)
                setbits_le32(&priv->ccm->ahb_reset0_cfg,
                             priv->ahb_gate_mask | extra_ahb_gate_mask);
@@ -135,6 +137,12 @@ static const struct ohci_sunxi_cfg sun8i_h3_cfg = {
        .extra_ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0,
 };
 
+static const struct ohci_sunxi_cfg sun50i_a64_cfg = {
+       .has_reset = true,
+       .extra_ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0,
+       .extra_usb_gate_mask = CCM_USB_CTRL_OHCI0_CLK,
+};
+
 static const struct udevice_id ohci_usb_ids[] = {
        {
                .compatible = "allwinner,sun4i-a10-ohci",
@@ -170,7 +178,7 @@ static const struct udevice_id ohci_usb_ids[] = {
        },
        {
                .compatible = "allwinner,sun50i-a64-ohci",
-               .data = (ulong)&sun6i_a31_cfg,
+               .data = (ulong)&sun50i_a64_cfg,
        },
        { /* sentinel */ }
 };