* [PATCH v2 0/5] cmd: bind: Fix driver binding @ 2021-04-19 9:45 Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 1/5] cmd: bind: Fix driver binding on a device Patrice Chotard ` (4 more replies) 0 siblings, 5 replies; 13+ messages in thread From: Patrice Chotard @ 2021-04-19 9:45 UTC (permalink / raw) To: u-boot This series is fixing issues reported by Herbert Poetzl when trying to bind Ethernet gadget over USB on STM32MP1 platform. 2 issues have been found: - fix the bind command. - add dwc2 bcdDevice in USB gadget controller. - add test to check binding of driver without compatible string. Changes in v2: - add bind test Patrice Chotard (5): cmd: bind: Fix driver binding on a device usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller usb: sandbox: Add gadget callbacks configs: sandbox: add USB_ETHER and GADGET_DOWNLOAD gadget support test/py: Add usb gadget binding test cmd/bind.c | 2 +- configs/sandbox_defconfig | 3 +++ drivers/core/device.c | 2 +- drivers/core/lists.c | 11 ++++++++--- drivers/core/root.c | 2 +- drivers/misc/imx8/scu.c | 2 +- drivers/serial/serial-uclass.c | 2 +- drivers/timer/timer-uclass.c | 2 +- drivers/usb/gadget/gadget_chips.h | 8 ++++++++ drivers/usb/host/usb-sandbox.c | 28 ++++++++++++++++++++++++++++ include/dm/lists.h | 3 ++- test/dm/nop.c | 2 +- test/dm/test-fdt.c | 2 +- test/py/tests/test_bind.py | 7 +++++++ 14 files changed, 64 insertions(+), 12 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/5] cmd: bind: Fix driver binding on a device 2021-04-19 9:45 [PATCH v2 0/5] cmd: bind: Fix driver binding Patrice Chotard @ 2021-04-19 9:45 ` Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller Patrice Chotard ` (3 subsequent siblings) 4 siblings, 0 replies; 13+ messages in thread From: Patrice Chotard @ 2021-04-19 9:45 UTC (permalink / raw) To: u-boot Fix a regression brings by commit 84f8e36f03fa ("cmd: bind: allow to bind driver with driver data") As example, the following bind command doesn't work: bind /soc/usb-otg at 49000000 usb_ether As usb_ether driver has no compatible string, it can't be find by lists_bind_fdt(). In bind_by_node_path(), which called lists_bind_fdt(), the driver entry is known, pass it to lists_bind_fdt() to force the driver entry selection. For this, add a new parameter struct *driver to lists_bind_fdt(). Fix also all lists_bind_fdt() callers. Fixes: 84f8e36f03fa ("cmd: bind: allow to bind driver with driver data") Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Reported-by: Herbert Poetzl <herbert@13thfloor.at> Cc: Marek Vasut <marex@denx.de> Cc: Herbert Poetzl <herbert@13thfloor.at> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> --- (no changes since v1) cmd/bind.c | 2 +- drivers/core/device.c | 2 +- drivers/core/lists.c | 11 ++++++++--- drivers/core/root.c | 2 +- drivers/misc/imx8/scu.c | 2 +- drivers/serial/serial-uclass.c | 2 +- drivers/timer/timer-uclass.c | 2 +- include/dm/lists.h | 3 ++- test/dm/nop.c | 2 +- test/dm/test-fdt.c | 2 +- 10 files changed, 18 insertions(+), 12 deletions(-) diff --git a/cmd/bind.c b/cmd/bind.c index af2f22cc4c..d8f610943c 100644 --- a/cmd/bind.c +++ b/cmd/bind.c @@ -152,7 +152,7 @@ static int bind_by_node_path(const char *path, const char *drv_name) } ofnode = ofnode_path(path); - ret = lists_bind_fdt(parent, ofnode, &dev, false); + ret = lists_bind_fdt(parent, ofnode, &dev, drv, false); if (!dev || ret) { printf("Unable to bind. err:%d\n", ret); diff --git a/drivers/core/device.c b/drivers/core/device.c index 81f6880eac..3abd89aca6 100644 --- a/drivers/core/device.c +++ b/drivers/core/device.c @@ -1133,6 +1133,6 @@ int dev_enable_by_path(const char *path) if (ret) return ret; - return lists_bind_fdt(parent, node, NULL, false); + return lists_bind_fdt(parent, node, NULL, NULL, false); } #endif diff --git a/drivers/core/lists.c b/drivers/core/lists.c index e214306b90..2eb808ce2d 100644 --- a/drivers/core/lists.c +++ b/drivers/core/lists.c @@ -182,7 +182,7 @@ static int driver_check_compatible(const struct udevice_id *of_match, } int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp, - bool pre_reloc_only) + struct driver *drv, bool pre_reloc_only) { struct driver *driver = ll_entry_start(struct driver, driver); const int n_ents = ll_entry_count(struct driver, driver); @@ -225,8 +225,13 @@ int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp, for (entry = driver; entry != driver + n_ents; entry++) { ret = driver_check_compatible(entry->of_match, &id, compat); - if (!ret) - break; + if (drv) { + if (drv == entry) + break; + } else { + if (!ret) + break; + } } if (entry == driver + n_ents) continue; diff --git a/drivers/core/root.c b/drivers/core/root.c index 9bc682cffe..3c6fa3838d 100644 --- a/drivers/core/root.c +++ b/drivers/core/root.c @@ -236,7 +236,7 @@ static int dm_scan_fdt_node(struct udevice *parent, ofnode parent_node, pr_debug(" - ignoring disabled device\n"); continue; } - err = lists_bind_fdt(parent, node, NULL, pre_reloc_only); + err = lists_bind_fdt(parent, node, NULL, NULL, pre_reloc_only); if (err && !ret) { ret = err; debug("%s: ret=%d\n", node_name, ret); diff --git a/drivers/misc/imx8/scu.c b/drivers/misc/imx8/scu.c index 035a600f71..4ab5cb4bf1 100644 --- a/drivers/misc/imx8/scu.c +++ b/drivers/misc/imx8/scu.c @@ -219,7 +219,7 @@ static int imx8_scu_bind(struct udevice *dev) debug("%s(dev=%p)\n", __func__, dev); ofnode_for_each_subnode(node, dev_ofnode(dev)) { - ret = lists_bind_fdt(dev, node, &child, true); + ret = lists_bind_fdt(dev, node, &child, NULL, true); if (ret) return ret; debug("bind child dev %s\n", child->name); diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 8a87eed683..6d1c671efc 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -67,7 +67,7 @@ static int serial_check_stdout(const void *blob, struct udevice **devp) * anyway. */ if (node > 0 && !lists_bind_fdt(gd->dm_root, offset_to_ofnode(node), - devp, false)) { + devp, NULL, false)) { if (!device_probe(*devp)) return 0; } diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c index 6f00a5d0db..b1ac604b5b 100644 --- a/drivers/timer/timer-uclass.c +++ b/drivers/timer/timer-uclass.c @@ -148,7 +148,7 @@ int notrace dm_timer_init(void) * If the timer is not marked to be bound before * relocation, bind it anyway. */ - if (!lists_bind_fdt(dm_root(), node, &dev, false)) { + if (!lists_bind_fdt(dm_root(), node, &dev, NULL, false)) { ret = device_probe(dev); if (ret) return ret; diff --git a/include/dm/lists.h b/include/dm/lists.h index 1a86552546..5896ae3658 100644 --- a/include/dm/lists.h +++ b/include/dm/lists.h @@ -53,13 +53,14 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only); * @parent: parent device (root) * @node: device tree node to bind * @devp: if non-NULL, returns a pointer to the bound device + * @drv: if non-NULL, force this driver to be bound * @pre_reloc_only: If true, bind only nodes with special devicetree properties, * or drivers with the DM_FLAG_PRE_RELOC flag. If false bind all drivers. * @return 0 if device was bound, -EINVAL if the device tree is invalid, * other -ve value on error */ int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp, - bool pre_reloc_only); + struct driver *drv, bool pre_reloc_only); /** * device_bind_driver() - bind a device to a driver diff --git a/test/dm/nop.c b/test/dm/nop.c index 2cd92c5240..75b9e7b6cc 100644 --- a/test/dm/nop.c +++ b/test/dm/nop.c @@ -25,7 +25,7 @@ static int noptest_bind(struct udevice *parent) const char *bind_flag = ofnode_read_string(ofnode, "bind"); if (bind_flag && (strcmp(bind_flag, "True") == 0)) - lists_bind_fdt(parent, ofnode, &dev, false); + lists_bind_fdt(parent, ofnode, &dev, NULL, false); ofnode = dev_read_next_subnode(ofnode); } diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c index 6e83aeecd9..c6968b0d5f 100644 --- a/test/dm/test-fdt.c +++ b/test/dm/test-fdt.c @@ -592,7 +592,7 @@ static int zero_size_cells_bus_child_bind(struct udevice *dev) int err; ofnode_for_each_subnode(child, dev_ofnode(dev)) { - err = lists_bind_fdt(dev, child, NULL, false); + err = lists_bind_fdt(dev, child, NULL, NULL, false); if (err) { dev_err(dev, "%s: lists_bind_fdt, err=%d\n", __func__, err); -- 2.17.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller 2021-04-19 9:45 [PATCH v2 0/5] cmd: bind: Fix driver binding Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 1/5] cmd: bind: Fix driver binding on a device Patrice Chotard @ 2021-04-19 9:45 ` Patrice Chotard 2021-06-18 6:55 ` Patrice CHOTARD 2021-09-01 9:12 ` Patrice CHOTARD 2021-04-19 9:45 ` [PATCH v2 3/5] usb: sandbox: Add gadget callbacks Patrice Chotard ` (2 subsequent siblings) 4 siblings, 2 replies; 13+ messages in thread From: Patrice Chotard @ 2021-04-19 9:45 UTC (permalink / raw) To: u-boot Add an entry in usb_gadget_controller_number() for the DWC2 gadget controller. It is used to bind the USB Ethernet driver. Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Reported-by: Herbert Poetzl <herbert@13thfloor.at> Cc: Marek Vasut <marex@denx.de> Cc: Herbert Poetzl <herbert@13thfloor.at> --- (no changes since v1) drivers/usb/gadget/gadget_chips.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h index 0cdf47c2dd..06e6a48949 100644 --- a/drivers/usb/gadget/gadget_chips.h +++ b/drivers/usb/gadget/gadget_chips.h @@ -167,6 +167,12 @@ #define gadget_is_mtu3(g) 0 #endif +#ifdef CONFIG_USB_GADGET_DWC2_OTG +#define gadget_is_dwc2(g) (!strcmp("dwc2-udc", (g)->name)) +#else +#define gadget_is_dwc2(g) 0 +#endif + /** * usb_gadget_controller_number - support bcdDevice id convention * @gadget: the controller being driven @@ -232,5 +238,7 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget) return 0x25; else if (gadget_is_mtu3(gadget)) return 0x26; + else if (gadget_is_dwc2(gadget)) + return 0x27; return -ENOENT; } -- 2.17.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller 2021-04-19 9:45 ` [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller Patrice Chotard @ 2021-06-18 6:55 ` Patrice CHOTARD 2021-08-02 15:56 ` [Uboot-stm32] " Patrice CHOTARD 2021-09-01 9:12 ` Patrice CHOTARD 1 sibling, 1 reply; 13+ messages in thread From: Patrice CHOTARD @ 2021-06-18 6:55 UTC (permalink / raw) To: u-boot Cc: Patrick DELAUNAY, U-Boot STM32, Marek Vasut, Herbert Poetzl, Lukasz Majewski Hi Lukasz, Marek Can you have a look a this patch please ? Thanks Patrice On 4/19/21 11:45 AM, Patrice Chotard wrote: > Add an entry in usb_gadget_controller_number() for the DWC2 > gadget controller. It is used to bind the USB Ethernet driver. > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Reported-by: Herbert Poetzl <herbert@13thfloor.at> > Cc: Marek Vasut <marex@denx.de> > Cc: Herbert Poetzl <herbert@13thfloor.at> > --- > > (no changes since v1) > > drivers/usb/gadget/gadget_chips.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h > index 0cdf47c2dd..06e6a48949 100644 > --- a/drivers/usb/gadget/gadget_chips.h > +++ b/drivers/usb/gadget/gadget_chips.h > @@ -167,6 +167,12 @@ > #define gadget_is_mtu3(g) 0 > #endif > > +#ifdef CONFIG_USB_GADGET_DWC2_OTG > +#define gadget_is_dwc2(g) (!strcmp("dwc2-udc", (g)->name)) > +#else > +#define gadget_is_dwc2(g) 0 > +#endif > + > /** > * usb_gadget_controller_number - support bcdDevice id convention > * @gadget: the controller being driven > @@ -232,5 +238,7 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget) > return 0x25; > else if (gadget_is_mtu3(gadget)) > return 0x26; > + else if (gadget_is_dwc2(gadget)) > + return 0x27; > return -ENOENT; > } > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Uboot-stm32] [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller 2021-06-18 6:55 ` Patrice CHOTARD @ 2021-08-02 15:56 ` Patrice CHOTARD 0 siblings, 0 replies; 13+ messages in thread From: Patrice CHOTARD @ 2021-08-02 15:56 UTC (permalink / raw) To: u-boot Cc: Patrick DELAUNAY, U-Boot STM32, Marek Vasut, Lukasz Majewski, Herbert Poetzl Hi Lukasz Only this patch of this series is missing a reviewed-by for being accepted, can you have a look please ? Thanks Patrice On 6/18/21 8:55 AM, Patrice CHOTARD wrote: > Hi Lukasz, Marek > > Can you have a look a this patch please ? > > Thanks > Patrice > > On 4/19/21 11:45 AM, Patrice Chotard wrote: >> Add an entry in usb_gadget_controller_number() for the DWC2 >> gadget controller. It is used to bind the USB Ethernet driver. >> >> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> >> Reported-by: Herbert Poetzl <herbert@13thfloor.at> >> Cc: Marek Vasut <marex@denx.de> >> Cc: Herbert Poetzl <herbert@13thfloor.at> >> --- >> >> (no changes since v1) >> >> drivers/usb/gadget/gadget_chips.h | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h >> index 0cdf47c2dd..06e6a48949 100644 >> --- a/drivers/usb/gadget/gadget_chips.h >> +++ b/drivers/usb/gadget/gadget_chips.h >> @@ -167,6 +167,12 @@ >> #define gadget_is_mtu3(g) 0 >> #endif >> >> +#ifdef CONFIG_USB_GADGET_DWC2_OTG >> +#define gadget_is_dwc2(g) (!strcmp("dwc2-udc", (g)->name)) >> +#else >> +#define gadget_is_dwc2(g) 0 >> +#endif >> + >> /** >> * usb_gadget_controller_number - support bcdDevice id convention >> * @gadget: the controller being driven >> @@ -232,5 +238,7 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget) >> return 0x25; >> else if (gadget_is_mtu3(gadget)) >> return 0x26; >> + else if (gadget_is_dwc2(gadget)) >> + return 0x27; >> return -ENOENT; >> } >> > _______________________________________________ > Uboot-stm32 mailing list > Uboot-stm32@st-md-mailman.stormreply.com > https://st-md-mailman.stormreply.com/mailman/listinfo/uboot-stm32 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller 2021-04-19 9:45 ` [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller Patrice Chotard 2021-06-18 6:55 ` Patrice CHOTARD @ 2021-09-01 9:12 ` Patrice CHOTARD 1 sibling, 0 replies; 13+ messages in thread From: Patrice CHOTARD @ 2021-09-01 9:12 UTC (permalink / raw) To: u-boot, Lukasz Majewski Cc: Patrick DELAUNAY, U-Boot STM32, Marek Vasut, Herbert Poetzl, Lukasz Majewski Hi Lukasz Can you add your reviewed-by on this patch ? This patch, and the other 4 patches of this serie, are still blocked on patchwork since April. Thanks ;-) Patrice On 4/19/21 11:45 AM, Patrice Chotard wrote: > Add an entry in usb_gadget_controller_number() for the DWC2 > gadget controller. It is used to bind the USB Ethernet driver. > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Reported-by: Herbert Poetzl <herbert@13thfloor.at> > Cc: Marek Vasut <marex@denx.de> > Cc: Herbert Poetzl <herbert@13thfloor.at> > --- > > (no changes since v1) > > drivers/usb/gadget/gadget_chips.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h > index 0cdf47c2dd..06e6a48949 100644 > --- a/drivers/usb/gadget/gadget_chips.h > +++ b/drivers/usb/gadget/gadget_chips.h > @@ -167,6 +167,12 @@ > #define gadget_is_mtu3(g) 0 > #endif > > +#ifdef CONFIG_USB_GADGET_DWC2_OTG > +#define gadget_is_dwc2(g) (!strcmp("dwc2-udc", (g)->name)) > +#else > +#define gadget_is_dwc2(g) 0 > +#endif > + > /** > * usb_gadget_controller_number - support bcdDevice id convention > * @gadget: the controller being driven > @@ -232,5 +238,7 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget) > return 0x25; > else if (gadget_is_mtu3(gadget)) > return 0x26; > + else if (gadget_is_dwc2(gadget)) > + return 0x27; > return -ENOENT; > } > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 3/5] usb: sandbox: Add gadget callbacks 2021-04-19 9:45 [PATCH v2 0/5] cmd: bind: Fix driver binding Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 1/5] cmd: bind: Fix driver binding on a device Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller Patrice Chotard @ 2021-04-19 9:45 ` Patrice Chotard 2021-06-18 6:56 ` Patrice CHOTARD 2021-06-26 18:31 ` Simon Glass 2021-04-19 9:45 ` [PATCH v2 4/5] configs: sandbox: add USB_ETHER and GADGET_DOWNLOAD gadget support Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 5/5] test/py: Add usb gadget binding test Patrice Chotard 4 siblings, 2 replies; 13+ messages in thread From: Patrice Chotard @ 2021-04-19 9:45 UTC (permalink / raw) To: u-boot Add usb_gadget_handle_interrupts(), usb_gadget_register_driver() and usb_gadget_unregister_driver() to be able to test binding usb gadget. Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Cc: Marek Vasut <marex@denx.de> Cc: Herbert Poetzl <herbert@13thfloor.at> --- (no changes since v1) drivers/usb/host/usb-sandbox.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/usb/host/usb-sandbox.c b/drivers/usb/host/usb-sandbox.c index d7cc92aa54..d1103dcb2e 100644 --- a/drivers/usb/host/usb-sandbox.c +++ b/drivers/usb/host/usb-sandbox.c @@ -9,6 +9,13 @@ #include <log.h> #include <usb.h> #include <dm/root.h> +#include <linux/usb/gadget.h> + +struct sandbox_udc { + struct usb_gadget gadget; +}; + +struct sandbox_udc *this_controller; struct sandbox_usb_ctrl { int rootdev; @@ -117,6 +124,27 @@ static int sandbox_submit_int(struct udevice *bus, struct usb_device *udev, return ret; } +int usb_gadget_handle_interrupts(int index) +{ + return 0; +} + +int usb_gadget_register_driver(struct usb_gadget_driver *driver) +{ + struct sandbox_udc *dev = this_controller; + + return driver->bind(&dev->gadget); +} + +int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) +{ + struct sandbox_udc *dev = this_controller; + + driver->unbind(&dev->gadget); + + return 0; +} + static int sandbox_alloc_device(struct udevice *dev, struct usb_device *udev) { struct sandbox_usb_ctrl *ctrl = dev_get_priv(dev); -- 2.17.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/5] usb: sandbox: Add gadget callbacks 2021-04-19 9:45 ` [PATCH v2 3/5] usb: sandbox: Add gadget callbacks Patrice Chotard @ 2021-06-18 6:56 ` Patrice CHOTARD 2021-06-26 18:31 ` Simon Glass 1 sibling, 0 replies; 13+ messages in thread From: Patrice CHOTARD @ 2021-06-18 6:56 UTC (permalink / raw) To: u-boot Cc: Patrick DELAUNAY, U-Boot STM32, Marek Vasut, Herbert Poetzl, Simon Glass Hi Marek Can you have a look a this patch please ? Thanks Patrice On 4/19/21 11:45 AM, Patrice Chotard wrote: > Add usb_gadget_handle_interrupts(), usb_gadget_register_driver() > and usb_gadget_unregister_driver() to be able to test > binding usb gadget. > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Cc: Marek Vasut <marex@denx.de> > Cc: Herbert Poetzl <herbert@13thfloor.at> > --- > > (no changes since v1) > > drivers/usb/host/usb-sandbox.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/drivers/usb/host/usb-sandbox.c b/drivers/usb/host/usb-sandbox.c > index d7cc92aa54..d1103dcb2e 100644 > --- a/drivers/usb/host/usb-sandbox.c > +++ b/drivers/usb/host/usb-sandbox.c > @@ -9,6 +9,13 @@ > #include <log.h> > #include <usb.h> > #include <dm/root.h> > +#include <linux/usb/gadget.h> > + > +struct sandbox_udc { > + struct usb_gadget gadget; > +}; > + > +struct sandbox_udc *this_controller; > > struct sandbox_usb_ctrl { > int rootdev; > @@ -117,6 +124,27 @@ static int sandbox_submit_int(struct udevice *bus, struct usb_device *udev, > return ret; > } > > +int usb_gadget_handle_interrupts(int index) > +{ > + return 0; > +} > + > +int usb_gadget_register_driver(struct usb_gadget_driver *driver) > +{ > + struct sandbox_udc *dev = this_controller; > + > + return driver->bind(&dev->gadget); > +} > + > +int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) > +{ > + struct sandbox_udc *dev = this_controller; > + > + driver->unbind(&dev->gadget); > + > + return 0; > +} > + > static int sandbox_alloc_device(struct udevice *dev, struct usb_device *udev) > { > struct sandbox_usb_ctrl *ctrl = dev_get_priv(dev); > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/5] usb: sandbox: Add gadget callbacks 2021-04-19 9:45 ` [PATCH v2 3/5] usb: sandbox: Add gadget callbacks Patrice Chotard 2021-06-18 6:56 ` Patrice CHOTARD @ 2021-06-26 18:31 ` Simon Glass 1 sibling, 0 replies; 13+ messages in thread From: Simon Glass @ 2021-06-26 18:31 UTC (permalink / raw) To: Patrice Chotard Cc: U-Boot Mailing List, Patrick DELAUNAY, U-Boot STM32, Marek Vasut, Herbert Poetzl On Mon, 19 Apr 2021 at 03:47, Patrice Chotard <patrice.chotard@foss.st.com> wrote: > > Add usb_gadget_handle_interrupts(), usb_gadget_register_driver() > and usb_gadget_unregister_driver() to be able to test > binding usb gadget. > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Cc: Marek Vasut <marex@denx.de> > Cc: Herbert Poetzl <herbert@13thfloor.at> > --- > > (no changes since v1) > > drivers/usb/host/usb-sandbox.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> But it looks like gadgets should be converted to DM properly? ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 4/5] configs: sandbox: add USB_ETHER and GADGET_DOWNLOAD gadget support 2021-04-19 9:45 [PATCH v2 0/5] cmd: bind: Fix driver binding Patrice Chotard ` (2 preceding siblings ...) 2021-04-19 9:45 ` [PATCH v2 3/5] usb: sandbox: Add gadget callbacks Patrice Chotard @ 2021-04-19 9:45 ` Patrice Chotard 2021-04-29 16:10 ` Simon Glass 2021-04-19 9:45 ` [PATCH v2 5/5] test/py: Add usb gadget binding test Patrice Chotard 4 siblings, 1 reply; 13+ messages in thread From: Patrice Chotard @ 2021-04-19 9:45 UTC (permalink / raw) To: u-boot This is needed for new gadget binding test. Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Cc: Marek Vasut <marex@denx.de> Cc: Herbert Poetzl <herbert@13thfloor.at> --- (no changes since v1) configs/sandbox_defconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 5bc90d09a8..f7eb27d4a1 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -251,6 +251,9 @@ CONFIG_USB=y CONFIG_DM_USB=y CONFIG_USB_EMUL=y CONFIG_USB_KEYBOARD=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_ETHER=y CONFIG_DM_VIDEO=y CONFIG_VIDEO_COPY=y CONFIG_CONSOLE_ROTATION=y -- 2.17.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/5] configs: sandbox: add USB_ETHER and GADGET_DOWNLOAD gadget support 2021-04-19 9:45 ` [PATCH v2 4/5] configs: sandbox: add USB_ETHER and GADGET_DOWNLOAD gadget support Patrice Chotard @ 2021-04-29 16:10 ` Simon Glass 0 siblings, 0 replies; 13+ messages in thread From: Simon Glass @ 2021-04-29 16:10 UTC (permalink / raw) To: u-boot On Mon, 19 Apr 2021 at 02:49, Patrice Chotard <patrice.chotard@foss.st.com> wrote: > > This is needed for new gadget binding test. > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Cc: Marek Vasut <marex@denx.de> > Cc: Herbert Poetzl <herbert@13thfloor.at> > --- > > (no changes since v1) > > configs/sandbox_defconfig | 3 +++ > 1 file changed, 3 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 5/5] test/py: Add usb gadget binding test 2021-04-19 9:45 [PATCH v2 0/5] cmd: bind: Fix driver binding Patrice Chotard ` (3 preceding siblings ...) 2021-04-19 9:45 ` [PATCH v2 4/5] configs: sandbox: add USB_ETHER and GADGET_DOWNLOAD gadget support Patrice Chotard @ 2021-04-19 9:45 ` Patrice Chotard 2021-04-29 16:10 ` Simon Glass 4 siblings, 1 reply; 13+ messages in thread From: Patrice Chotard @ 2021-04-19 9:45 UTC (permalink / raw) To: u-boot Add a specific usb gadget binding test which check that binding a driver without compatible string is working as expected. the command "bind /usb at 1 usb_ether" should give the following "dm tree" command output: [...] usb 0 [ ] usb_sandbox |-- usb at 1 usb_hub 0 [ ] usb_hub | |-- hub usb_emul 0 [ ] usb_sandbox_hub | | `-- hub-emul usb_emul 1 [ ] usb_sandbox_flash | | |-- flash-stick at 0 usb_emul 2 [ ] usb_sandbox_flash | | |-- flash-stick at 1 usb_emul 3 [ ] usb_sandbox_flash | | |-- flash-stick at 2 usb_emul 4 [ ] usb_sandbox_keyb | | `-- keyb at 3 eth 4 [ ] usb_ether | `-- usb at 1 [...] Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> Cc: Marek Vasut <marex@denx.de> Cc: Herbert Poetzl <herbert@13thfloor.at> --- Changes in v2: - add bind test test/py/tests/test_bind.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/py/tests/test_bind.py b/test/py/tests/test_bind.py index 6703325c0b..56edd78863 100644 --- a/test/py/tests/test_bind.py +++ b/test/py/tests/test_bind.py @@ -33,6 +33,13 @@ def test_bind_unbind_with_node(u_boot_console): assert in_tree(tree, 'bind-test-child1', 'phy', 'phy_sandbox', 1, False) assert in_tree(tree, 'bind-test-child2', 'simple_bus', 'simple_bus', 1, True) + #bind usb_ether driver (which has no compatible) to usb at 1 node. + ##New entry usb_ether should appear in the dm tree + response = u_boot_console.run_command('bind /usb at 1 usb_ether') + assert response == '' + tree = u_boot_console.run_command('dm tree') + assert in_tree(tree, 'usb at 1', 'eth', 'usb_ether', 1, True) + #Unbind child #1. No error expected and all devices should be there except for bind-test-child1 response = u_boot_console.run_command('unbind /bind-test/bind-test-child1') assert response == '' -- 2.17.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 5/5] test/py: Add usb gadget binding test 2021-04-19 9:45 ` [PATCH v2 5/5] test/py: Add usb gadget binding test Patrice Chotard @ 2021-04-29 16:10 ` Simon Glass 0 siblings, 0 replies; 13+ messages in thread From: Simon Glass @ 2021-04-29 16:10 UTC (permalink / raw) To: u-boot On Mon, 19 Apr 2021 at 02:58, Patrice Chotard <patrice.chotard@foss.st.com> wrote: > > Add a specific usb gadget binding test which check that > binding a driver without compatible string is working as expected. > > the command "bind /usb at 1 usb_ether" should give the following "dm tree" > command output: > > [...] > usb 0 [ ] usb_sandbox |-- usb at 1 > usb_hub 0 [ ] usb_hub | |-- hub > usb_emul 0 [ ] usb_sandbox_hub | | `-- hub-emul > usb_emul 1 [ ] usb_sandbox_flash | | |-- flash-stick at 0 > usb_emul 2 [ ] usb_sandbox_flash | | |-- flash-stick at 1 > usb_emul 3 [ ] usb_sandbox_flash | | |-- flash-stick at 2 > usb_emul 4 [ ] usb_sandbox_keyb | | `-- keyb at 3 > eth 4 [ ] usb_ether | `-- usb at 1 > [...] > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Cc: Marek Vasut <marex@denx.de> > Cc: Herbert Poetzl <herbert@13thfloor.at> > > --- > > Changes in v2: > - add bind test > > test/py/tests/test_bind.py | 7 +++++++ > 1 file changed, 7 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-09-01 9:13 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-04-19 9:45 [PATCH v2 0/5] cmd: bind: Fix driver binding Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 1/5] cmd: bind: Fix driver binding on a device Patrice Chotard 2021-04-19 9:45 ` [PATCH v2 2/5] usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller Patrice Chotard 2021-06-18 6:55 ` Patrice CHOTARD 2021-08-02 15:56 ` [Uboot-stm32] " Patrice CHOTARD 2021-09-01 9:12 ` Patrice CHOTARD 2021-04-19 9:45 ` [PATCH v2 3/5] usb: sandbox: Add gadget callbacks Patrice Chotard 2021-06-18 6:56 ` Patrice CHOTARD 2021-06-26 18:31 ` Simon Glass 2021-04-19 9:45 ` [PATCH v2 4/5] configs: sandbox: add USB_ETHER and GADGET_DOWNLOAD gadget support Patrice Chotard 2021-04-29 16:10 ` Simon Glass 2021-04-19 9:45 ` [PATCH v2 5/5] test/py: Add usb gadget binding test Patrice Chotard 2021-04-29 16:10 ` Simon Glass
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.