Hello.

On 15-03-2013 4:25, Kuninori Morimoto wrote:

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);

Yes, that would have been more handy. I'm just not sure if it will be acceptable to community.

WBR, Sergei

--
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

Reply via email to