On 12/13/2018 03:03 PM, Jean-Jacques Hiblot wrote: > > On 05/12/2018 13:57, Marek Vasut wrote: >> On 12/05/2018 01:49 PM, Stefan Mavrodiev wrote: >>> When the device is in peripheral mode >> Can you have two devices, one in peripheral mode and one in host mode, >> on the same system ? > > It is possible with the musb-new. Using DM_USB and DM_USB_GADGET, I did > it with on a beaglebone black.
Does this patch break it ? And if so, can you send a proper fix ? > JJ > >>> there is no >>> struct usb_bus_priv allocated pointer, as the uclass driver >>> ("usb_dev_generic") doesn't call per_device_auto_alloc_size. >>> >>> This results in writing to the internal SDRAM at >>> priv->desc_before_addr = true; >>> >>> Signed-off-by: Stefan Mavrodiev <ste...@olimex.com> >>> --- >>> drivers/usb/musb-new/sunxi.c | 8 ++++++-- >>> 1 file changed, 6 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c >>> index 6cf9826cda..f3deb9bc66 100644 >>> --- a/drivers/usb/musb-new/sunxi.c >>> +++ b/drivers/usb/musb-new/sunxi.c >>> @@ -435,11 +435,14 @@ static int musb_usb_probe(struct udevice *dev) >>> { >>> struct sunxi_glue *glue = dev_get_priv(dev); >>> struct musb_host_data *host = &glue->mdata; >>> - struct usb_bus_priv *priv = dev_get_uclass_priv(dev); >>> struct musb_hdrc_platform_data pdata; >>> void *base = dev_read_addr_ptr(dev); >>> int ret; >>> +#ifdef CONFIG_USB_MUSB_HOST >>> + struct usb_bus_priv *priv = dev_get_uclass_priv(dev); >>> +#endif >>> + >>> if (!base) >>> return -EINVAL; >>> @@ -459,7 +462,6 @@ static int musb_usb_probe(struct udevice *dev) >>> return ret; >>> } >>> - priv->desc_before_addr = true; >> See my question at the beginning, and if that can be the case, the fix >> is to check if priv is not null here, eg. >> if (priv) >> priv->... >> >> Still, why is the priv data not allocated for device ? >> >>> memset(&pdata, 0, sizeof(pdata)); >>> pdata.power = 250; >>> @@ -467,6 +469,8 @@ static int musb_usb_probe(struct udevice *dev) >>> pdata.config = glue->cfg->config; >>> #ifdef CONFIG_USB_MUSB_HOST >>> + priv->desc_before_addr = true; >>> + >>> pdata.mode = MUSB_HOST; >>> host->host = musb_init_controller(&pdata, &glue->dev, base); >>> if (!host->host) >>> >> -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot