On Thu, Feb 14, 2013 at 11:11:55AM +0100, Marc Kleine-Budde wrote: > >>>> @@ -32,4 +35,37 @@ const char *usb_speed_string(enum usb_device_speed speed) > >>>> } > >>>> EXPORT_SYMBOL_GPL(usb_speed_string); > >>>> > >>>> +#ifdef CONFIG_OF > >>>> +static const char *usb_dr_modes[] = { > >>>> + [USB_DR_MODE_UNKNOWN] = "", > >>>> + [USB_DR_MODE_HOST] = "host", > >>>> + [USB_DR_MODE_PERIPHERAL] = "peripheral", > >>>> + [USB_DR_MODE_OTG] = "otg", > >>>> +}; > >>> > >>> It turns out this is a problem, especially since this is generic usb > >>> code: we have a chipidea controller (a patchset just arrived) that does > >>> both host and peripheral, but not otg. And I'm told now that dwc3 > >>> controller can be synthesized like that too. > > > > I wonder if this part is really necessary. Usually you would read it > > from HW's registers. For dwc3, it's quite recently that we allowed the > > driver to be built with host-only, device-only or DRD functionality. > > The imx25 USB version of the chipidea IP Core get's really confused if > you read from the CAP_DCCPARAMS register on the host only port. In > freescale's documentation the register is marked as reserved. The host > port will not work then. heh, nicely done. > > Maybe we can ignore dr_mode in host-only and device-only builds and only > > look at it for DRD builds ? > > > >> You mean a single instance of the controller (i.e. USB port) is host and > >> peripheral but has no otg registers. This means the mode of the port is > >> configured by userspace via the debugfs file? Is this possible? > > > > yes, it is possible. Dual-Role doesn't imply OTG, but OTG implies > > Dual-Role. > > Thanks for the info. Then we need a fourth value for the helper code. > What's a sensible sting: "dual-role", "dr"? dual-role. -- balbi
Attachment:
signature.asc
Description: Digital signature