
On Tuesday, November 17, 2015 at 04:53:59 AM, Simon Glass wrote:
Convert this driver to use the new driver model PCI API.
Nit, in the subject, it should be ehci, not echi ;-)
Signed-off-by: Simon Glass sjg@chromium.org
drivers/usb/host/ehci-pci.c | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-)
[...]
@@ -38,12 +40,12 @@ static void ehci_pci_common_init(pci_dev_t pdev, struct ehci_hccr **ret_hccr, *ret_hcor = hcor;
/* enable busmaster */
- pci_read_config_dword(pdev, PCI_COMMAND, &cmd);
- dm_pci_read_config32(dev, PCI_COMMAND, &cmd);
Is the dm_ prefix really needed on these functions ?
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;
- uint32_t cmd;
- hccr = (struct ehci_hccr *)pci_map_bar(pdev,
PCI_BASE_ADDRESS_0, PCI_REGION_MEM);
- hcor = (struct ehci_hcor *)((uint32_t) hccr +
This should be uintptr_t instead of uint32_t . Oh, and uint32_t should not be used, use u32 where applicable.
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)));
- *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);
+}
[...]
Best regards, Marek Vasut