From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vignesh R Date: Tue, 23 May 2017 17:25:43 +0530 Subject: [U-Boot] [PATCH 08/11] dwc3: Add support for USB device boot In-Reply-To: <20170523115546.399-1-vigneshr@ti.com> References: <20170523115546.399-1-vigneshr@ti.com> Message-ID: <20170523115546.399-9-vigneshr@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 --- 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