#include <common.h>
#include <clk.h>
+#include <asm/io.h>
#include <dm.h>
#include "ehci.h"
static int ehci_usb_probe(struct udevice *dev)
{
- struct ehci_hccr *hccr = (struct ehci_hccr *)dev_get_addr(dev);
+ struct ehci_hccr *hccr;
struct ehci_hcor *hcor;
int i;
for (i = 0; ; i++) {
- struct udevice *clk_dev;
- int clk_id;
+ struct clk clk;
+ int ret;
- clk_id = clk_get_by_index(dev, i, &clk_dev);
- if (clk_id < 0)
+ ret = clk_get_by_index(dev, i, &clk);
+ if (ret < 0)
break;
- if (clk_enable(clk_dev, clk_id))
- printf("failed to enable clock (dev=%s, id=%d)\n",
- clk_dev->name, clk_id);
+ if (clk_enable(&clk))
+ printf("failed to enable clock %d\n", i);
+ clk_free(&clk);
}
+ hccr = map_physmem(dev_get_addr(dev), 0x100, MAP_NOCACHE);
hcor = (struct ehci_hcor *)((uintptr_t)hccr +
HC_LENGTH(ehci_readl(&hccr->cr_capbase)));