summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/Kconfig20
-rw-r--r--drivers/usb/eth/asix.c40
-rw-r--r--drivers/usb/gadget/gadget_chips.h2
-rw-r--r--drivers/usb/host/dwc2.c4
-rw-r--r--drivers/usb/host/usb-uclass.c2
-rw-r--r--drivers/usb/musb-new/Kconfig28
-rw-r--r--drivers/usb/musb-new/Makefile6
-rw-r--r--drivers/usb/musb-new/musb_core.c12
-rw-r--r--drivers/usb/musb-new/musb_core.h4
-rw-r--r--drivers/usb/musb-new/musb_dma.h2
-rw-r--r--drivers/usb/musb-new/musb_gadget.c4
-rw-r--r--drivers/usb/musb-new/musb_uboot.c12
-rw-r--r--drivers/usb/musb-new/sunxi.c9
-rw-r--r--drivers/usb/musb/Makefile4
-rw-r--r--drivers/usb/musb/musb_core.c8
-rw-r--r--drivers/usb/musb/musb_hcd.c6
-rw-r--r--drivers/usb/musb/musb_hcd.h4
17 files changed, 116 insertions, 51 deletions
diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
index 716dad4..abb06fc 100644
--- a/drivers/usb/Kconfig
+++ b/drivers/usb/Kconfig
@@ -1,10 +1,5 @@
-menu USB
-config USB_ARCH_HAS_HCD
- def_bool y
-
-config USB
- bool "Support for Host-side USB"
- depends on USB_ARCH_HAS_HCD
+menuconfig USB
+ bool "USB support"
---help---
Universal Serial Bus (USB) is a specification for a serial bus
subsystem which offers higher speeds and more features than the
@@ -18,8 +13,10 @@ config USB
such as scanners, keyboards, mice, modems, cameras, disks,
flash memory, network links, and printers to the PC.
- Say Y here if your computer has a host-side USB port and you want
- to use USB devices. You then need to say Y to at least one of the
+ Say Y here if your device has an USB port, either host, peripheral or
+ dual-role.
+
+ For an USB host port, you then need to say Y to at least one of the
Host Controller Driver (HCD) options below. Choose a USB 1.1
controller, such as "UHCI HCD support" or "OHCI HCD support",
and "EHCI HCD (USB 2.0) support" except for older systems that
@@ -52,8 +49,12 @@ config DM_USB
source "drivers/usb/host/Kconfig"
+source "drivers/usb/musb-new/Kconfig"
+
source "drivers/usb/emul/Kconfig"
+comment "USB peripherals"
+
config USB_STORAGE
bool "USB Mass Storage support"
---help---
@@ -88,4 +89,3 @@ endchoice
endif
endif
-endmenu
diff --git a/drivers/usb/eth/asix.c b/drivers/usb/eth/asix.c
index 72ec41e..8a43e7c 100644
--- a/drivers/usb/eth/asix.c
+++ b/drivers/usb/eth/asix.c
@@ -1,6 +1,8 @@
/*
* Copyright (c) 2011 The Chromium OS Authors.
*
+ * Patched for AX88772B by Antmicro Ltd <www.antmicro.com>
+ *
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -64,8 +66,11 @@
AX_MEDIUM_AC | AX_MEDIUM_RE)
/* AX88772 & AX88178 RX_CTL values */
-#define AX_RX_CTL_SO 0x0080
-#define AX_RX_CTL_AB 0x0008
+#define AX_RX_CTL_RH2M 0x0200 /* 32-bit aligned RX IP header */
+#define AX_RX_CTL_RH1M 0x0100 /* Enable RX header format type 1 */
+#define AX_RX_CTL_SO 0x0080
+#define AX_RX_CTL_AB 0x0008
+#define AX_RX_HEADER_DEFAULT (AX_RX_CTL_RH1M | AX_RX_CTL_RH2M)
#define AX_DEFAULT_RX_CTL \
(AX_RX_CTL_SO | AX_RX_CTL_AB)
@@ -92,6 +97,8 @@
#define FLAG_TYPE_AX88772B (1U << 2)
#define FLAG_EEPROM_MAC (1U << 3) /* initial mac address in eeprom */
+#define ASIX_USB_VENDOR_ID 0x0b95
+#define AX88772B_USB_PRODUCT_ID 0x772b
/* driver private */
struct asix_private {
@@ -418,15 +425,23 @@ static int asix_basic_reset(struct ueth_data *dev)
return 0;
}
-static int asix_init_common(struct ueth_data *dev)
+static int asix_init_common(struct ueth_data *dev, uint8_t *enetaddr)
{
int timeout = 0;
#define TIMEOUT_RESOLUTION 50 /* ms */
int link_detected;
+ u32 ctl = AX_DEFAULT_RX_CTL;
debug("** %s()\n", __func__);
- if (asix_write_rx_ctl(dev, AX_DEFAULT_RX_CTL) < 0)
+ if ((dev->pusb_dev->descriptor.idVendor == ASIX_USB_VENDOR_ID) &&
+ (dev->pusb_dev->descriptor.idProduct == AX88772B_USB_PRODUCT_ID))
+ ctl |= AX_RX_HEADER_DEFAULT;
+
+ if (asix_write_rx_ctl(dev, ctl) < 0)
+ goto out_err;
+
+ if (asix_write_hwaddr_common(dev, enetaddr) < 0)
goto out_err;
do {
@@ -447,6 +462,12 @@ static int asix_init_common(struct ueth_data *dev)
goto out_err;
}
+ /*
+ * Wait some more to avoid timeout on first transfer
+ * (e.g. EHCI timed out on TD - token=0x8008d80)
+ */
+ mdelay(25);
+
return 0;
out_err:
return -1;
@@ -488,7 +509,7 @@ static int asix_init(struct eth_device *eth, bd_t *bd)
{
struct ueth_data *dev = (struct ueth_data *)eth->priv;
- return asix_init_common(dev);
+ return asix_init_common(dev, eth->enetaddr);
}
static int asix_send(struct eth_device *eth, void *packet, int length)
@@ -550,6 +571,12 @@ static int asix_recv(struct eth_device *eth)
return -1;
}
+ if ((dev->pusb_dev->descriptor.idVendor ==
+ ASIX_USB_VENDOR_ID) &&
+ (dev->pusb_dev->descriptor.idProduct ==
+ AX88772B_USB_PRODUCT_ID))
+ buf_ptr += 2;
+
/* Notify net stack */
net_process_received_packet(buf_ptr + sizeof(packet_len),
packet_len);
@@ -729,9 +756,10 @@ int asix_eth_get_info(struct usb_device *dev, struct ueth_data *ss,
#ifdef CONFIG_DM_ETH
static int asix_eth_start(struct udevice *dev)
{
+ struct eth_pdata *pdata = dev_get_platdata(dev);
struct asix_private *priv = dev_get_priv(dev);
- return asix_init_common(&priv->ueth);
+ return asix_init_common(&priv->ueth, pdata->enetaddr);
}
void asix_eth_stop(struct udevice *dev)
diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
index c859df2..e9811c3 100644
--- a/drivers/usb/gadget/gadget_chips.h
+++ b/drivers/usb/gadget/gadget_chips.h
@@ -125,7 +125,7 @@
#endif
/* Mentor high speed "dual role" controller, in peripheral role */
-#ifdef CONFIG_MUSB_GADGET
+#ifdef CONFIG_USB_MUSB_GADGET
#define gadget_is_musbhdrc(g) (!strcmp("musb-hdrc", (g)->name))
#else
#define gadget_is_musbhdrc(g) 0
diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
index eee60a2..ad35841 100644
--- a/drivers/usb/host/dwc2.c
+++ b/drivers/usb/host/dwc2.c
@@ -929,6 +929,10 @@ int usb_lowlevel_init(int index, enum usb_init_type init, void **controller)
root_hub_devnum = 0;
+ /* board dependant init */
+ if (board_usb_init(index, USB_INIT_HOST))
+ return -1;
+
snpsid = readl(&regs->gsnpsid);
printf("Core Release: %x.%03x\n", snpsid >> 12 & 0xf, snpsid & 0xfff);
diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index c5d1e7f..b17a7d7 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -173,7 +173,9 @@ int usb_stop(void)
uclass_foreach_dev(dev, uc)
usb_emul_reset(dev);
#endif
+#ifdef CONFIG_USB_STORAGE
usb_stor_reset();
+#endif
usb_hub_reset();
uc_priv->companion_device_count = 0;
usb_started = 0;
diff --git a/drivers/usb/musb-new/Kconfig b/drivers/usb/musb-new/Kconfig
new file mode 100644
index 0000000..0082ff8
--- /dev/null
+++ b/drivers/usb/musb-new/Kconfig
@@ -0,0 +1,28 @@
+#
+# MUSB Controller Driver
+#
+comment "MUSB Controller Driver"
+
+config USB_MUSB_HOST
+ bool "MUSB host mode support"
+ help
+ Enables the MUSB USB dual-role controller in host mode.
+
+config USB_MUSB_GADGET
+ bool "MUSB gadget mode support"
+ help
+ Enables the MUSB USB dual-role controller in gadget mode.
+
+if USB_MUSB_HOST || USB_MUSB_GADGET
+
+config USB_MUSB_SUNXI
+ bool "Enable sunxi OTG / DRC USB controller"
+ depends on ARCH_SUNXI
+ default y
+ ---help---
+ Say y here to enable support for the sunxi OTG / DRC USB controller
+ used on almost all sunxi boards. Note currently u-boot can only have
+ one usb host controller enabled at a time, so enabling this on boards
+ which also use the ehci host controller will result in build errors.
+
+endif
diff --git a/drivers/usb/musb-new/Makefile b/drivers/usb/musb-new/Makefile
index 9edeece..fd9df72 100644
--- a/drivers/usb/musb-new/Makefile
+++ b/drivers/usb/musb-new/Makefile
@@ -2,9 +2,9 @@
# for USB OTG silicon based on Mentor Graphics INVENTRA designs
#
-obj-$(CONFIG_MUSB_GADGET) += musb_gadget.o musb_gadget_ep0.o musb_core.o
-obj-$(CONFIG_MUSB_GADGET) += musb_uboot.o
-obj-$(CONFIG_MUSB_HOST) += musb_host.o musb_core.o musb_uboot.o
+obj-$(CONFIG_USB_MUSB_GADGET) += musb_gadget.o musb_gadget_ep0.o musb_core.o
+obj-$(CONFIG_USB_MUSB_GADGET) += musb_uboot.o
+obj-$(CONFIG_USB_MUSB_HOST) += musb_host.o musb_core.o musb_uboot.o
obj-$(CONFIG_USB_MUSB_DSPS) += musb_dsps.o
obj-$(CONFIG_USB_MUSB_AM35X) += am35x.o
obj-$(CONFIG_USB_MUSB_OMAP2PLUS) += omap2430.o
diff --git a/drivers/usb/musb-new/musb_core.c b/drivers/usb/musb-new/musb_core.c
index f530af4..411e5a0 100644
--- a/drivers/usb/musb-new/musb_core.c
+++ b/drivers/usb/musb-new/musb_core.c
@@ -1437,7 +1437,7 @@ static int __devinit musb_core_init(u16 musb_type, struct musb *musb)
strcat(aInfo, ", dyn FIFOs");
musb->dyn_fifo = true;
}
-#ifndef CONFIG_MUSB_DISABLE_BULK_COMBINE_SPLIT
+#ifndef CONFIG_USB_MUSB_DISABLE_BULK_COMBINE_SPLIT
if (reg & MUSB_CONFIGDATA_MPRXE) {
strcat(aInfo, ", bulk combine");
musb->bulk_combine = true;
@@ -1662,7 +1662,7 @@ irqreturn_t musb_interrupt(struct musb *musb)
}
EXPORT_SYMBOL_GPL(musb_interrupt);
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
static bool __devinitdata use_dma = 1;
/* "modprobe ... use_dma=0" etc */
@@ -2011,7 +2011,7 @@ musb_init_controller(struct musb_hdrc_platform_data *plat, struct device *dev,
pm_runtime_get_sync(musb->controller);
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
if (use_dma && dev->dma_mask) {
struct dma_controller *c;
@@ -2194,7 +2194,7 @@ fail0:
* bridge to a platform device; this driver then suffices.
*/
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
static u64 *orig_dma_mask;
#endif
@@ -2217,7 +2217,7 @@ static int __devinit musb_probe(struct platform_device *pdev)
return -ENOMEM;
}
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
/* clobbered by use_dma=n */
orig_dma_mask = dev->dma_mask;
#endif
@@ -2244,7 +2244,7 @@ static int __devexit musb_remove(struct platform_device *pdev)
musb_free(musb);
iounmap(ctrl_base);
device_init_wakeup(&pdev->dev, 0);
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
pdev->dev.dma_mask = orig_dma_mask;
#endif
return 0;
diff --git a/drivers/usb/musb-new/musb_core.h b/drivers/usb/musb-new/musb_core.h
index 8727f64..c818040 100644
--- a/drivers/usb/musb-new/musb_core.h
+++ b/drivers/usb/musb-new/musb_core.h
@@ -97,7 +97,7 @@ struct musb_ep;
#ifndef __UBOOT__
#define is_peripheral_capable() (1)
#else
-#ifdef CONFIG_MUSB_GADGET
+#ifdef CONFIG_USB_MUSB_GADGET
#define is_peripheral_capable() (1)
#else
#define is_peripheral_capable() (0)
@@ -118,7 +118,7 @@ extern void musb_g_disconnect(struct musb *);
#ifndef __UBOOT__
#define is_host_capable() (1)
#else
-#ifdef CONFIG_MUSB_HOST
+#ifdef CONFIG_USB_MUSB_HOST
#define is_host_capable() (1)
#else
#define is_host_capable() (0)
diff --git a/drivers/usb/musb-new/musb_dma.h b/drivers/usb/musb-new/musb_dma.h
index 3a97c4e..17fe89f 100644
--- a/drivers/usb/musb-new/musb_dma.h
+++ b/drivers/usb/musb-new/musb_dma.h
@@ -62,7 +62,7 @@ struct musb_hw_ep;
#define DMA_ADDR_INVALID (~(dma_addr_t)0)
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
#define is_dma_capable() (1)
#else
#define is_dma_capable() (0)
diff --git a/drivers/usb/musb-new/musb_gadget.c b/drivers/usb/musb-new/musb_gadget.c
index 97acf93..309dc7f 100644
--- a/drivers/usb/musb-new/musb_gadget.c
+++ b/drivers/usb/musb-new/musb_gadget.c
@@ -99,7 +99,7 @@
#define is_buffer_mapped(req) (is_dma_capable() && \
(req->map_state != UN_MAPPED))
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
/* Maps the buffer to dma */
static inline void map_dma_buffer(struct musb_request *request,
@@ -382,7 +382,7 @@ static void txstate(struct musb *musb, struct musb_request *req)
epnum, musb_ep->packet_sz, fifo_count,
csr);
-#ifndef CONFIG_MUSB_PIO_ONLY
+#ifndef CONFIG_USB_MUSB_PIO_ONLY
if (is_buffer_mapped(req)) {
struct dma_controller *c = musb->dma_controller;
size_t request_size;
diff --git a/drivers/usb/musb-new/musb_uboot.c b/drivers/usb/musb-new/musb_uboot.c
index 9b56e90..10f6b5d 100644
--- a/drivers/usb/musb-new/musb_uboot.c
+++ b/drivers/usb/musb-new/musb_uboot.c
@@ -15,7 +15,7 @@
#include "musb_gadget.h"
#include "musb_uboot.h"
-#ifdef CONFIG_MUSB_HOST
+#ifdef CONFIG_USB_MUSB_HOST
struct int_queue {
struct usb_host_endpoint hep;
struct urb urb;
@@ -368,9 +368,9 @@ struct dm_usb_ops musb_usb_ops = {
.reset_root_port = musb_reset_root_port,
};
#endif /* CONFIG_DM_USB */
-#endif /* CONFIG_MUSB_HOST */
+#endif /* CONFIG_USB_MUSB_HOST */
-#ifdef CONFIG_MUSB_GADGET
+#ifdef CONFIG_USB_MUSB_GADGET
static struct musb *gadget;
int usb_gadget_handle_interrupts(int index)
@@ -420,7 +420,7 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
driver->unbind(&gadget->g);
return 0;
}
-#endif /* CONFIG_MUSB_GADGET */
+#endif /* CONFIG_USB_MUSB_GADGET */
int musb_register(struct musb_hdrc_platform_data *plat, void *bdata,
void *ctl_regs)
@@ -428,12 +428,12 @@ int musb_register(struct musb_hdrc_platform_data *plat, void *bdata,
struct musb **musbp;
switch (plat->mode) {
-#if defined(CONFIG_MUSB_HOST) && !defined(CONFIG_DM_USB)
+#if defined(CONFIG_USB_MUSB_HOST) && !defined(CONFIG_DM_USB)
case MUSB_HOST:
musbp = &musb_host.host;
break;
#endif
-#ifdef CONFIG_MUSB_GADGET
+#ifdef CONFIG_USB_MUSB_GADGET
case MUSB_PERIPHERAL:
musbp = &gadget;
break;
diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
index 3a29b18..16a264a 100644
--- a/drivers/usb/musb-new/sunxi.c
+++ b/drivers/usb/musb-new/sunxi.c
@@ -200,6 +200,9 @@ static int sunxi_musb_enable(struct musb *musb)
pr_debug("%s():\n", __func__);
+ musb_ep_select(musb->mregs, 0);
+ musb_writeb(musb->mregs, MUSB_FADDR, 0);
+
if (enabled)
return 0;
@@ -286,7 +289,7 @@ static struct musb_hdrc_config musb_config = {
};
static struct musb_hdrc_platform_data musb_plat = {
-#if defined(CONFIG_MUSB_HOST)
+#if defined(CONFIG_USB_MUSB_HOST)
.mode = MUSB_HOST,
#else
.mode = MUSB_PERIPHERAL,
@@ -296,7 +299,7 @@ static struct musb_hdrc_platform_data musb_plat = {
.platform_ops = &sunxi_musb_ops,
};
-#ifdef CONFIG_MUSB_HOST
+#ifdef CONFIG_USB_MUSB_HOST
int musb_usb_probe(struct udevice *dev)
{
struct musb_host_data *host = dev_get_priv(dev);
@@ -341,7 +344,7 @@ U_BOOT_DRIVER(usb_musb) = {
void sunxi_musb_board_init(void)
{
-#ifdef CONFIG_MUSB_HOST
+#ifdef CONFIG_USB_MUSB_HOST
struct udevice *dev;
/*
diff --git a/drivers/usb/musb/Makefile b/drivers/usb/musb/Makefile
index 3c9ed98..bd2b7c5 100644
--- a/drivers/usb/musb/Makefile
+++ b/drivers/usb/musb/Makefile
@@ -5,8 +5,8 @@
# SPDX-License-Identifier: GPL-2.0+
#
-obj-$(CONFIG_MUSB_HCD) += musb_hcd.o musb_core.o
-obj-$(CONFIG_MUSB_UDC) += musb_udc.o musb_core.o
+obj-$(CONFIG_USB_MUSB_HCD) += musb_hcd.o musb_core.o
+obj-$(CONFIG_USB_MUSB_UDC) += musb_udc.o musb_core.o
obj-$(CONFIG_USB_BLACKFIN) += blackfin_usb.o
obj-$(CONFIG_USB_DAVINCI) += davinci.o
obj-$(CONFIG_USB_OMAP3) += omap3.o
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 786909f..ea3996a 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -19,7 +19,7 @@ struct musb_regs *musbr;
*/
void musb_start(void)
{
-#if defined(CONFIG_MUSB_HCD)
+#if defined(CONFIG_USB_MUSB_HCD)
u8 devctl;
u8 busctl;
#endif
@@ -32,7 +32,7 @@ void musb_start(void)
/* put into basic highspeed mode and start session */
writeb(MUSB_POWER_HSENAB, &musbr->power);
-#if defined(CONFIG_MUSB_HCD)
+#if defined(CONFIG_USB_MUSB_HCD)
/* Program PHY to use EXT VBUS if required */
if (musb_cfg.extvbus == 1) {
busctl = musb_read_ulpi_buscontrol(musbr);
@@ -81,7 +81,7 @@ void musb_configure_ep(const struct musb_epinfo *epinfo, u8 cnt)
config_fifo(tx, idx, fifoaddr);
csr = readw(&musbr->txcsr);
-#if defined(CONFIG_MUSB_HCD)
+#if defined(CONFIG_USB_MUSB_HCD)
/* clear the data toggle bit */
writew(csr | MUSB_TXCSR_CLRDATATOG, &musbr->txcsr);
#endif
@@ -94,7 +94,7 @@ void musb_configure_ep(const struct musb_epinfo *epinfo, u8 cnt)
config_fifo(rx, idx, fifoaddr);
csr = readw(&musbr->rxcsr);
-#if defined(CONFIG_MUSB_HCD)
+#if defined(CONFIG_USB_MUSB_HCD)
/* clear the data toggle bit */
writew(csr | MUSB_RXCSR_CLRDATATOG, &musbr->rxcsr);
#endif
diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c
index f0ba8aa..9a3b61a 100644
--- a/drivers/usb/musb/musb_hcd.c
+++ b/drivers/usb/musb/musb_hcd.c
@@ -117,7 +117,7 @@ static int wait_until_ep0_ready(struct usb_device *dev, u32 bit_mask)
{
u16 csr;
int result = 1;
- int timeout = CONFIG_MUSB_TIMEOUT;
+ int timeout = CONFIG_USB_MUSB_TIMEOUT;
while (result > 0) {
csr = readw(&musbr->txcsr);
@@ -179,7 +179,7 @@ static int wait_until_ep0_ready(struct usb_device *dev, u32 bit_mask)
static int wait_until_txep_ready(struct usb_device *dev, u8 ep)
{
u16 csr;
- int timeout = CONFIG_MUSB_TIMEOUT;
+ int timeout = CONFIG_USB_MUSB_TIMEOUT;
do {
if (check_stall(ep, 1)) {
@@ -211,7 +211,7 @@ static int wait_until_txep_ready(struct usb_device *dev, u8 ep)
static int wait_until_rxep_ready(struct usb_device *dev, u8 ep)
{
u16 csr;
- int timeout = CONFIG_MUSB_TIMEOUT;
+ int timeout = CONFIG_USB_MUSB_TIMEOUT;
do {
if (check_stall(ep, 0)) {
diff --git a/drivers/usb/musb/musb_hcd.h b/drivers/usb/musb/musb_hcd.h
index 0c8e75d..831957d 100644
--- a/drivers/usb/musb/musb_hcd.h
+++ b/drivers/usb/musb/musb_hcd.h
@@ -17,8 +17,8 @@
extern unsigned char new[];
#endif
-#ifndef CONFIG_MUSB_TIMEOUT
-# define CONFIG_MUSB_TIMEOUT 100000
+#ifndef CONFIG_USB_MUSB_TIMEOUT
+# define CONFIG_USB_MUSB_TIMEOUT 100000
#endif
/* This defines the endpoint number used for control transfers */