Hi Daniel > > On 08.04.2013 12:42, B, Ravi wrote: > >> Subject: [PATCH v2 07/11] usb: musb: add Kconfig options for HOST, > GAGDET > >> or DUAL_ROLE modes > >> > >> This makes building the actual object files optional to the selected > >> mode, which saves users who know which kind of USB mode support they > >> need some binary size. > >> > >> Unimplemented functions are stubbed out with static inline functions. > >> > >> Signed-off-by: Daniel Mack <zonque@xxxxxxxxx> > >> --- > >> drivers/usb/musb/Kconfig | 29 +++++++++++++++++++++++++++++ > >> drivers/usb/musb/Makefile | 10 ++++++++-- > >> drivers/usb/musb/musb_gadget.h | 21 +++++++++++++++++++++ > >> drivers/usb/musb/musb_host.h | 29 +++++++++++++++++++++++++++-- > >> 4 files changed, 85 insertions(+), 4 deletions(-) > >> > >> diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig > >> index 47442d3..aab1568 100644 > >> --- a/drivers/usb/musb/Kconfig > >> +++ b/drivers/usb/musb/Kconfig > >> @@ -28,6 +28,35 @@ config USB_MUSB_HDRC > >> if USB_MUSB_HDRC > >> > >> choice > >> + bool "MUSB Mode Selection" > >> + default USB_MUSB_DUAL_ROLE if (USB && USB_GADGET) > >> + default USB_MUSB_HOST if (USB && !USB_GADGET) > >> + default USB_MUSB_GADGET if (!USB && USB_GADGET) > >> + > >> +config USB_MUSB_HOST > >> + bool "Host only mode" > >> + depends on USB > >> + help > >> + Select this when you want to use MUSB in host mode only, > >> + thereby the gadget feature will be regressed. > >> + > >> +config USB_MUSB_GADGET > >> + bool "Gadget only mode" > >> + depends on USB_GADGET > >> + help > >> + Select this when you want to use MUSB in gadget mode only, > >> + thereby the host feature will be regressed. > >> + > >> +config USB_MUSB_DUAL_ROLE > >> + bool "Dual Role mode" > >> + depends on (USB && USB_GADGET) > >> + help > >> + This is the default mode of working of MUSB controller where > >> + both host and gadget features are enabled. > >> + > >> +endchoice > > > > How do you cater for multi-instance support? Where one controller to > force as host and other as device (similar to am33x beagle configuration). > > In general for all combination possible like <host, host> <host, device> > <device, host> <dual, dual> etc. > > The actual mode chosen for an instance is passed in via pdata/DT. The > Kconfig options only exist in order to stub out code that certainly > isn't needed for a particular platform. IOW, to reduce the binary size. > > So the beagleboard will have to select the DUAL_ROLE config parameters, > where other board (like mine) can go for the HOST only option. > > If a user selects a mode as runtime parameter that is stubbed out by the > chosen config, it will simply don't do anything. Just as with a driver > that is referenced from DT but not compiled in. I don't think we should > be over-smart here and mess with the configured platform data. If the > platform data is wrong, it has to be fixed anyway. Felipe, do you agree? > > I understand, this is for binary code reduction. But in multi instance case force host/device config option shall be selected only when both controller need to configured as host only or device only. like <host, host> or <device, device>. In any other case dual-role need to be chosen. You can explain in help section of this Kconfig option. -- Ravi B -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html