mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	dm: usb: Convert echi-pci to use new DM PCI API
Convert this driver to use the new driver model PCI API. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Marek Vasut <marex@denx.de>
This commit is contained in:
		
							parent
							
								
									ff758ccc8a
								
							
						
					
					
						commit
						09c5c16455
					
				@ -18,32 +18,34 @@ struct ehci_pci_priv {
 | 
			
		||||
	struct ehci_ctrl ehci;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void ehci_pci_common_init(pci_dev_t pdev, struct ehci_hccr **ret_hccr,
 | 
			
		||||
				 struct ehci_hcor **ret_hcor)
 | 
			
		||||
#ifdef CONFIG_DM_USB
 | 
			
		||||
 | 
			
		||||
static void ehci_pci_init(struct udevice *dev, struct ehci_hccr **ret_hccr,
 | 
			
		||||
			  struct ehci_hcor **ret_hcor)
 | 
			
		||||
{
 | 
			
		||||
	struct ehci_hccr *hccr;
 | 
			
		||||
	struct ehci_hcor *hcor;
 | 
			
		||||
	uint32_t cmd;
 | 
			
		||||
	u32 cmd;
 | 
			
		||||
 | 
			
		||||
	hccr = (struct ehci_hccr *)pci_map_bar(pdev,
 | 
			
		||||
	hccr = (struct ehci_hccr *)dm_pci_map_bar(dev,
 | 
			
		||||
			PCI_BASE_ADDRESS_0, PCI_REGION_MEM);
 | 
			
		||||
	hcor = (struct ehci_hcor *)((uint32_t) hccr +
 | 
			
		||||
	hcor = (struct ehci_hcor *)((uintptr_t) hccr +
 | 
			
		||||
			HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
 | 
			
		||||
 | 
			
		||||
	debug("EHCI-PCI init hccr 0x%x and hcor 0x%x hc_length %d\n",
 | 
			
		||||
	      (uint32_t)hccr, (uint32_t)hcor,
 | 
			
		||||
	      (uint32_t)HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
 | 
			
		||||
	      (u32)hccr, (u32)hcor,
 | 
			
		||||
	      (u32)HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
 | 
			
		||||
 | 
			
		||||
	*ret_hccr = hccr;
 | 
			
		||||
	*ret_hcor = hcor;
 | 
			
		||||
 | 
			
		||||
	/* enable busmaster */
 | 
			
		||||
	pci_read_config_dword(pdev, PCI_COMMAND, &cmd);
 | 
			
		||||
	dm_pci_read_config32(dev, PCI_COMMAND, &cmd);
 | 
			
		||||
	cmd |= PCI_COMMAND_MASTER;
 | 
			
		||||
	pci_write_config_dword(pdev, PCI_COMMAND, cmd);
 | 
			
		||||
	dm_pci_write_config32(dev, PCI_COMMAND, cmd);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_DM_USB
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PCI_EHCI_DEVICE
 | 
			
		||||
static struct pci_device_id ehci_pci_ids[] = {
 | 
			
		||||
@ -55,6 +57,31 @@ static struct pci_device_id ehci_pci_ids[] = {
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void ehci_pci_legacy_init(pci_dev_t pdev, struct ehci_hccr **ret_hccr,
 | 
			
		||||
				 struct ehci_hcor **ret_hcor)
 | 
			
		||||
{
 | 
			
		||||
	struct ehci_hccr *hccr;
 | 
			
		||||
	struct ehci_hcor *hcor;
 | 
			
		||||
	u32 cmd;
 | 
			
		||||
 | 
			
		||||
	hccr = (struct ehci_hccr *)pci_map_bar(pdev,
 | 
			
		||||
			PCI_BASE_ADDRESS_0, PCI_REGION_MEM);
 | 
			
		||||
	hcor = (struct ehci_hcor *)((uintptr_t) hccr +
 | 
			
		||||
			HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
 | 
			
		||||
 | 
			
		||||
	debug("EHCI-PCI init hccr 0x%x and hcor 0x%x hc_length %d\n",
 | 
			
		||||
	      (u32)hccr, (u32)hcor,
 | 
			
		||||
	      (u32)HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
 | 
			
		||||
 | 
			
		||||
	*ret_hccr = hccr;
 | 
			
		||||
	*ret_hcor = hcor;
 | 
			
		||||
 | 
			
		||||
	/* enable busmaster */
 | 
			
		||||
	pci_read_config_dword(pdev, PCI_COMMAND, &cmd);
 | 
			
		||||
	cmd |= PCI_COMMAND_MASTER;
 | 
			
		||||
	pci_write_config_dword(pdev, PCI_COMMAND, cmd);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Create the appropriate control structures to manage
 | 
			
		||||
 * a new EHCI host controller.
 | 
			
		||||
@ -73,7 +100,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 | 
			
		||||
		printf("EHCI host controller not found\n");
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
	ehci_pci_common_init(pdev, ret_hccr, ret_hcor);
 | 
			
		||||
	ehci_pci_legacy_init(pdev, ret_hccr, ret_hcor);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
@ -94,7 +121,7 @@ static int ehci_pci_probe(struct udevice *dev)
 | 
			
		||||
	struct ehci_hccr *hccr;
 | 
			
		||||
	struct ehci_hcor *hcor;
 | 
			
		||||
 | 
			
		||||
	ehci_pci_common_init(dm_pci_get_bdf(dev), &hccr, &hcor);
 | 
			
		||||
	ehci_pci_init(dev, &hccr, &hcor);
 | 
			
		||||
 | 
			
		||||
	return ehci_register(dev, hccr, hcor, NULL, 0, USB_INIT_HOST);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user