Hi Sergei
> >>>> 0xAAAA0000 ===========
> >>>> EHCI
> >>>> ----------
> >>>> 0xAAAA0094 PHY
> >>>> 0xAAAA009C PHY
> >>>> ----------
> >>>> EHCI
> >>>> 0xAAAA0400 ==========
> >>>> ...
> >>>> 0xAAAA0800 ----------
> >>>> PHY
> >>>> 0xAAAA0900 ----------
>
> >>>> This driver couldn't probe if it used "request_mem_region()"
>
> >>> Fair enough. I must say, though. That's a peculiar register mapping ;-)
>
> >> Not peculiar enough to not be able to overcome it. Those registers
> >> at 0xAAAA009[4C]
> >> are not really PHY related, they control EHCI internal buffering. They
> >> probably shouldn't
> >> have been a part of this driver even...
>
> > I'm not sure what is the best solution.
>
> I suspect that these registers should be intialized as a part of
> ehci-platform driver's power_on() platform callback.
I had same opinion before, and of course I agree your opinion.
But, not in power_on() callback.
I guess you need to create new callback (for init),
since power_on() and ioremap() timing
if (pdata->power_on) {
err = pdata->power_on(dev);
if (err < 0)
return err;
}
...
hcd->regs = devm_ioremap_resource(&dev->dev, res_mem);
if (IS_ERR(hcd->regs)) {
err = PTR_ERR(hcd->regs);
goto err_put_hcd;
}
# init() here ?
if (pdata->init)
err = pdata->init(dev, hcd->regs);
Best regards
---
Kuninori Morimoto
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html