Re: usb: udc-core: Dual gadget issue in v3.1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Thu, Oct 13, 2011 at 12:50:55PM +0530, Gupta, Ajay Kumar wrote:
> We are facing an issue in AM335x based custom board which has two musb
> port.
>
> a) musb0  ID pin is floating and have micro-B plug receptacle
> connector. [DEVICE ONLY]
> b) musb1  ID pin is grounded and have standard-A plug receptacle
> connector. [HOST ONLY]
> 
> We are using udc-core in linux v3.1-rc8 kernel. This kernel only
> provides option for selecting gadget driver for first instance only as
> builtin.

why don't you mark all gadget drivers as modules ? I do that all the
time:

CONFIG_USB_GADGET=m
CONFIG_USB_GADGET_DEBUG=y
CONFIG_USB_GADGET_DEBUG_FILES=y
CONFIG_USB_GADGET_DEBUG_FS=y
CONFIG_USB_GADGET_VBUS_DRAW=2
CONFIG_USB_R8A66597=m
CONFIG_USB_M66592=m
CONFIG_USB_AMD5536UDC=m
CONFIG_USB_CI13XXX_PCI=m
CONFIG_USB_NET2272=m
CONFIG_USB_NET2272_DMA=y
CONFIG_USB_NET2280=m
CONFIG_USB_GOKU=m
CONFIG_USB_EG20T=m
CONFIG_USB_DUMMY_HCD=m
CONFIG_USB_GADGET_DUALSPEED=y
CONFIG_USB_GADGET_SUPERSPEED=y
CONFIG_USB_ZERO=m
CONFIG_USB_ZERO_HNPTEST=y
CONFIG_USB_AUDIO=m
CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
CONFIG_USB_ETH_EEM=y
CONFIG_USB_G_NCM=m
CONFIG_USB_GADGETFS=m
CONFIG_USB_FUNCTIONFS=m
CONFIG_USB_FUNCTIONFS_ETH=y
CONFIG_USB_FUNCTIONFS_RNDIS=y
CONFIG_USB_FUNCTIONFS_GENERIC=y
CONFIG_USB_FILE_STORAGE=m
CONFIG_USB_FILE_STORAGE_TEST=y
CONFIG_USB_MASS_STORAGE=m
CONFIG_USB_G_SERIAL=m
CONFIG_USB_MIDI_GADGET=m
CONFIG_USB_G_PRINTER=m
CONFIG_USB_CDC_COMPOSITE=m
CONFIG_USB_G_NOKIA=m
CONFIG_USB_G_MULTI=m
CONFIG_USB_G_MULTI_RNDIS=y
CONFIG_USB_G_MULTI_CDC=y
CONFIG_USB_G_HID=m
CONFIG_USB_G_DBGP=m
# CONFIG_USB_G_DBGP_PRINTK is not set
CONFIG_USB_G_DBGP_SERIAL=y
CONFIG_USB_G_WEBCAM=m

> Current musb driver requires a gadget module to be inserted for a musb
> port to be usable in OTG mode which is the only mode available in
> v3.1-rc8 due to recent changes removing all HOST and GADGET only
> ifdeffery.

You can add runtime checks based on platform_data. Something like:

switch (pdata->mode) {
case MUSB_HOST:
	start_host();
	break;
case MUSB_PERIPHERAL:
	start_gadget();
	break;
case MUSB_OTG:
	start_gadget()
	start_host();
	break;
default:
	error();
}

which means that for a port which is host-only, it won't require a
gadget driver and for a port which is gadget-only, it won't start host
stack.

> Now for the custom board's musb1 port to be usable we have two option:
> 1) After bootup insert a gadget module and then use host functionality.
> 2) Change the menuconfig  logic and possibly udc-core layer so that it provides option
>  to select second gadget module as builtin.

why built-in ?

> 3) Change musb driver so that there is no need for gadget driver for
> host only ports.  (may be based on musb->board_mode ?)

yes.

> In there any plan to support option 2) or 3) above?
> 
> Now the issue on our custom board is that we want root filesystem on
> MSC pen drive connected to musb1 port and this gadget limitation is
> stopping us to support this.

well, patches are welcome ;-)

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux