usb: sunxi: ehci: get rid of ifdefs
We can use compatibles instead. Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
This commit is contained in:
		
							parent
							
								
									b62cdbdded
								
							
						
					
					
						commit
						1ed9c11188
					
				|  | @ -22,11 +22,17 @@ | ||||||
| #define AHB_CLK_DIST		1 | #define AHB_CLK_DIST		1 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | struct ehci_sunxi_cfg { | ||||||
|  | 	bool has_reset; | ||||||
|  | 	u32 extra_ahb_gate_mask; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| struct ehci_sunxi_priv { | struct ehci_sunxi_priv { | ||||||
| 	struct ehci_ctrl ehci; | 	struct ehci_ctrl ehci; | ||||||
| 	struct sunxi_ccm_reg *ccm; | 	struct sunxi_ccm_reg *ccm; | ||||||
| 	int ahb_gate_mask; /* Mask of ahb_gate0 clk gate bits for this hcd */ | 	int ahb_gate_mask; /* Mask of ahb_gate0 clk gate bits for this hcd */ | ||||||
| 	struct phy phy; | 	struct phy phy; | ||||||
|  | 	const struct ehci_sunxi_cfg *cfg; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static int ehci_usb_probe(struct udevice *dev) | static int ehci_usb_probe(struct udevice *dev) | ||||||
|  | @ -38,6 +44,7 @@ static int ehci_usb_probe(struct udevice *dev) | ||||||
| 	int extra_ahb_gate_mask = 0; | 	int extra_ahb_gate_mask = 0; | ||||||
| 	int phys, ret; | 	int phys, ret; | ||||||
| 
 | 
 | ||||||
|  | 	priv->cfg = (const struct ehci_sunxi_cfg *)dev_get_driver_data(dev); | ||||||
| 	priv->ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE; | 	priv->ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE; | ||||||
| 	if (IS_ERR(priv->ccm)) | 	if (IS_ERR(priv->ccm)) | ||||||
| 		return PTR_ERR(priv->ccm); | 		return PTR_ERR(priv->ccm); | ||||||
|  | @ -72,18 +79,15 @@ no_phy: | ||||||
| 	 * clocks resp. phys. | 	 * clocks resp. phys. | ||||||
| 	 */ | 	 */ | ||||||
| 	priv->ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0; | 	priv->ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0; | ||||||
| #if defined(CONFIG_MACH_SUNXI_H3_H5) || defined(CONFIG_MACH_SUN50I) | 	extra_ahb_gate_mask = priv->cfg->extra_ahb_gate_mask; | ||||||
| 	extra_ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_OHCI0; |  | ||||||
| #endif |  | ||||||
| 	priv->ahb_gate_mask <<= phys * AHB_CLK_DIST; | 	priv->ahb_gate_mask <<= phys * AHB_CLK_DIST; | ||||||
| 	extra_ahb_gate_mask <<= phys * AHB_CLK_DIST; | 	extra_ahb_gate_mask <<= phys * AHB_CLK_DIST; | ||||||
| 
 | 
 | ||||||
| 	setbits_le32(&priv->ccm->ahb_gate0, | 	setbits_le32(&priv->ccm->ahb_gate0, | ||||||
| 		     priv->ahb_gate_mask | extra_ahb_gate_mask); | 		     priv->ahb_gate_mask | extra_ahb_gate_mask); | ||||||
| #ifdef CONFIG_SUNXI_GEN_SUN6I | 	if (priv->cfg->has_reset) | ||||||
| 		setbits_le32(&priv->ccm->ahb_reset0_cfg, | 		setbits_le32(&priv->ccm->ahb_reset0_cfg, | ||||||
| 			     priv->ahb_gate_mask | extra_ahb_gate_mask); | 			     priv->ahb_gate_mask | extra_ahb_gate_mask); | ||||||
| #endif |  | ||||||
| 
 | 
 | ||||||
| 	hcor = (struct ehci_hcor *)((uintptr_t)hccr + | 	hcor = (struct ehci_hcor *)((uintptr_t)hccr + | ||||||
| 				    HC_LENGTH(ehci_readl(&hccr->cr_capbase))); | 				    HC_LENGTH(ehci_readl(&hccr->cr_capbase))); | ||||||
|  | @ -108,25 +112,64 @@ static int ehci_usb_remove(struct udevice *dev) | ||||||
| 	if (ret) | 	if (ret) | ||||||
| 		return ret; | 		return ret; | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_SUNXI_GEN_SUN6I | 	if (priv->cfg->has_reset) | ||||||
| 		clrbits_le32(&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask); | 		clrbits_le32(&priv->ccm->ahb_reset0_cfg, priv->ahb_gate_mask); | ||||||
| #endif |  | ||||||
| 	clrbits_le32(&priv->ccm->ahb_gate0, priv->ahb_gate_mask); | 	clrbits_le32(&priv->ccm->ahb_gate0, priv->ahb_gate_mask); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static const struct ehci_sunxi_cfg sun4i_a10_cfg = { | ||||||
|  | 	.has_reset = false, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static const struct ehci_sunxi_cfg sun6i_a31_cfg = { | ||||||
|  | 	.has_reset = true, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static const struct ehci_sunxi_cfg sun8i_h3_cfg = { | ||||||
|  | 	.has_reset = true, | ||||||
|  | 	.extra_ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_OHCI0, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| static const struct udevice_id ehci_usb_ids[] = { | static const struct udevice_id ehci_usb_ids[] = { | ||||||
| 	{ .compatible = "allwinner,sun4i-a10-ehci", }, | 	{ | ||||||
| 	{ .compatible = "allwinner,sun5i-a13-ehci", }, | 		.compatible = "allwinner,sun4i-a10-ehci", | ||||||
| 	{ .compatible = "allwinner,sun6i-a31-ehci", }, | 		.data = (ulong)&sun4i_a10_cfg, | ||||||
| 	{ .compatible = "allwinner,sun7i-a20-ehci", }, | 	}, | ||||||
| 	{ .compatible = "allwinner,sun8i-a23-ehci", }, | 	{ | ||||||
| 	{ .compatible = "allwinner,sun8i-a83t-ehci", }, | 		.compatible = "allwinner,sun5i-a13-ehci", | ||||||
| 	{ .compatible = "allwinner,sun8i-h3-ehci",  }, | 		.data = (ulong)&sun4i_a10_cfg, | ||||||
| 	{ .compatible = "allwinner,sun9i-a80-ehci", }, | 	}, | ||||||
| 	{ .compatible = "allwinner,sun50i-a64-ehci", }, | 	{ | ||||||
| 	{ } | 		.compatible = "allwinner,sun6i-a31-ehci", | ||||||
|  | 		.data = (ulong)&sun6i_a31_cfg, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.compatible = "allwinner,sun7i-a20-ehci", | ||||||
|  | 		.data = (ulong)&sun4i_a10_cfg, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.compatible = "allwinner,sun8i-a23-ehci", | ||||||
|  | 		.data = (ulong)&sun6i_a31_cfg, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.compatible = "allwinner,sun8i-a83t-ehci", | ||||||
|  | 		.data = (ulong)&sun6i_a31_cfg, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.compatible = "allwinner,sun8i-h3-ehci", | ||||||
|  | 		.data = (ulong)&sun8i_h3_cfg, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.compatible = "allwinner,sun9i-a80-ehci", | ||||||
|  | 		.data = (ulong)&sun6i_a31_cfg, | ||||||
|  | 	}, | ||||||
|  | 	{ | ||||||
|  | 		.compatible = "allwinner,sun50i-a64-ehci", | ||||||
|  | 		.data = (ulong)&sun8i_h3_cfg, | ||||||
|  | 	}, | ||||||
|  | 	{ /* sentinel */ } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| U_BOOT_DRIVER(ehci_sunxi) = { | U_BOOT_DRIVER(ehci_sunxi) = { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue