[U-Boot] [PATCH 08/11] dwc3: Add support for USB device boot
Vignesh R
vigneshr at ti.com
Tue May 23 11:55:43 UTC 2017
Add support to for USB device boot for dwc3 gadget, so that RNDIS can be
used in SPL to download next stage.
Provide a way to read MAC address for usb_ether device from board
function.
Signed-off-by: Vignesh R <vigneshr at ti.com>
---
drivers/usb/gadget/ether.c | 9 ++++++++-
drivers/usb/gadget/gadget_chips.h | 2 ++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 4137d76c42af..aa219a50dae6 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -2383,6 +2383,7 @@ static int _usb_eth_init(struct ether_priv *priv)
#ifdef CONFIG_USBNET_HOST_ADDR
strlcpy(host_addr, CONFIG_USBNET_HOST_ADDR, sizeof(host_addr));
#endif
+
/* Check if the user overruled the MAC addresses */
if (getenv("usbnet_devaddr"))
strlcpy(dev_addr, getenv("usbnet_devaddr"),
@@ -2619,6 +2620,10 @@ int usb_eth_initialize(bd_t *bi)
return 0;
}
#else
+void __weak board_set_usbnet_devaddr(void)
+{
+}
+
static int usb_eth_start(struct udevice *dev)
{
struct ether_priv *priv = dev_get_priv(dev);
@@ -2683,6 +2688,8 @@ static int usb_eth_probe(struct udevice *dev)
priv->netdev = dev;
l_priv = priv;
+ /* Get MAC address for USB ETH interface */
+ board_set_usbnet_devaddr();
get_ether_addr(CONFIG_USBNET_DEVADDR, pdata->enetaddr);
eth_setenv_enetaddr("usbnet_devaddr", pdata->enetaddr);
@@ -2726,6 +2733,6 @@ U_BOOT_DRIVER(eth_usb) = {
.ops = &usb_eth_ops,
.priv_auto_alloc_size = sizeof(struct ether_priv),
.platdata_auto_alloc_size = sizeof(struct eth_pdata),
- .flags = DM_FLAG_ALLOC_PRIV_DMA,
+ .flags = DM_FLAG_ALLOC_PRIV_DMA | DM_FLAG_PRE_RELOC,
};
#endif /* CONFIG_DM_ETH */
diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
index 973cd971ad19..c09d30e0253c 100644
--- a/drivers/usb/gadget/gadget_chips.h
+++ b/drivers/usb/gadget/gadget_chips.h
@@ -231,5 +231,7 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget)
return 0x21;
else if (gadget_is_fotg210(gadget))
return 0x22;
+ else if (gadget_is_dwc3(gadget))
+ return 0x23;
return -ENOENT;
}
--
2.13.0
More information about the U-Boot
mailing list