mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
usb: dwc3: remove dwc3 dependency on host AND gadget.
DWC3 controller curretly depends on USB && USB_GADGET. Some hardware may like to use only host feature on dwc3, or only gadget feature. So, removing this dependency of USB_DWC3 on USB and USB_GADGET. Adding the mode of operaiton of DWC3 also here HOST/GADGET/DUAL_ROLE based on which features are enabled. [ balbi@ti.com : . make sure we have default modes for all possible Kernel configurations. . Remove the config -> menuconfig change as it's unnecessary . switch over to IS_ENABLED() ] CC: Doug Anderson <dianders@chromium.org> Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
c9fda7d6f6
commit
388e5c5113
@ -1,6 +1,6 @@
|
|||||||
config USB_DWC3
|
config USB_DWC3
|
||||||
tristate "DesignWare USB3 DRD Core Support"
|
tristate "DesignWare USB3 DRD Core Support"
|
||||||
depends on (USB && USB_GADGET)
|
depends on (USB || USB_GADGET)
|
||||||
select USB_OTG_UTILS
|
select USB_OTG_UTILS
|
||||||
select USB_XHCI_PLATFORM if USB_SUPPORT && USB_XHCI_HCD
|
select USB_XHCI_PLATFORM if USB_SUPPORT && USB_XHCI_HCD
|
||||||
help
|
help
|
||||||
@ -12,6 +12,35 @@ config USB_DWC3
|
|||||||
|
|
||||||
if USB_DWC3
|
if USB_DWC3
|
||||||
|
|
||||||
|
choice
|
||||||
|
bool "DWC3 Mode Selection"
|
||||||
|
default USB_DWC3_DUAL_ROLE if (USB && USB_GADGET)
|
||||||
|
default USB_DWC3_HOST if (USB && !USB_GADGET)
|
||||||
|
default USB_DWC3_GADGET if (!USB && USB_GADGET)
|
||||||
|
|
||||||
|
config USB_DWC3_HOST
|
||||||
|
bool "Host only mode"
|
||||||
|
depends on USB
|
||||||
|
help
|
||||||
|
Select this when you want to use DWC3 in host mode only,
|
||||||
|
thereby the gadget feature will be regressed.
|
||||||
|
|
||||||
|
config USB_DWC3_GADGET
|
||||||
|
bool "Gadget only mode"
|
||||||
|
depends on USB_GADGET
|
||||||
|
help
|
||||||
|
Select this when you want to use DWC3 in gadget mode only,
|
||||||
|
thereby the host feature will be regressed.
|
||||||
|
|
||||||
|
config USB_DWC3_DUAL_ROLE
|
||||||
|
bool "Dual Role mode"
|
||||||
|
depends on (USB && USB_GADGET)
|
||||||
|
help
|
||||||
|
This is the default mode of working of DWC3 controller where
|
||||||
|
both host and gadget features are enabled.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
config USB_DWC3_DEBUG
|
config USB_DWC3_DEBUG
|
||||||
bool "Enable Debugging Messages"
|
bool "Enable Debugging Messages"
|
||||||
help
|
help
|
||||||
|
@ -4,8 +4,14 @@ ccflags-$(CONFIG_USB_DWC3_VERBOSE) += -DVERBOSE_DEBUG
|
|||||||
obj-$(CONFIG_USB_DWC3) += dwc3.o
|
obj-$(CONFIG_USB_DWC3) += dwc3.o
|
||||||
|
|
||||||
dwc3-y := core.o
|
dwc3-y := core.o
|
||||||
dwc3-y += host.o
|
|
||||||
dwc3-y += gadget.o ep0.o
|
ifneq ($(filter y,$(CONFIG_USB_DWC3_HOST) $(CONFIG_USB_DWC3_DUAL_ROLE)),)
|
||||||
|
dwc3-y += host.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(filter y,$(CONFIG_USB_DWC3_GADGET) $(CONFIG_USB_DWC3_DUAL_ROLE)),)
|
||||||
|
dwc3-y += gadget.o ep0.o
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(CONFIG_DEBUG_FS),)
|
ifneq ($(CONFIG_DEBUG_FS),)
|
||||||
dwc3-y += debugfs.o
|
dwc3-y += debugfs.o
|
||||||
|
@ -864,10 +864,24 @@ union dwc3_event {
|
|||||||
void dwc3_set_mode(struct dwc3 *dwc, u32 mode);
|
void dwc3_set_mode(struct dwc3 *dwc, u32 mode);
|
||||||
int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc);
|
int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc);
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_USB_DWC3_HOST) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)
|
||||||
int dwc3_host_init(struct dwc3 *dwc);
|
int dwc3_host_init(struct dwc3 *dwc);
|
||||||
void dwc3_host_exit(struct dwc3 *dwc);
|
void dwc3_host_exit(struct dwc3 *dwc);
|
||||||
|
#else
|
||||||
|
static inline int dwc3_host_init(struct dwc3 *dwc)
|
||||||
|
{ return 0; }
|
||||||
|
static inline void dwc3_host_exit(struct dwc3 *dwc)
|
||||||
|
{ }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_USB_DWC3_GADGET) || IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)
|
||||||
int dwc3_gadget_init(struct dwc3 *dwc);
|
int dwc3_gadget_init(struct dwc3 *dwc);
|
||||||
void dwc3_gadget_exit(struct dwc3 *dwc);
|
void dwc3_gadget_exit(struct dwc3 *dwc);
|
||||||
|
#else
|
||||||
|
static inline int dwc3_gadget_init(struct dwc3 *dwc)
|
||||||
|
{ return 0; }
|
||||||
|
static inline void dwc3_gadget_exit(struct dwc3 *dwc)
|
||||||
|
{ }
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __DRIVERS_USB_DWC3_CORE_H */
|
#endif /* __DRIVERS_USB_DWC3_CORE_H */
|
||||||
|
@ -661,6 +661,7 @@ int dwc3_debugfs_init(struct dwc3 *dwc)
|
|||||||
goto err1;
|
goto err1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_USB_DWC3_GADGET)
|
||||||
file = debugfs_create_file("mode", S_IRUGO | S_IWUSR, root,
|
file = debugfs_create_file("mode", S_IRUGO | S_IWUSR, root,
|
||||||
dwc, &dwc3_mode_fops);
|
dwc, &dwc3_mode_fops);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
@ -681,6 +682,7 @@ int dwc3_debugfs_init(struct dwc3 *dwc)
|
|||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto err1;
|
goto err1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user