[PATCH 3/5] usb: gadget: CDC ACM: call usb_gadget_initialize

Caleb Connolly
2024-01-31T14:58:14Z

To actually use the gadget the peripheral driver must be probed and we
must call g_dnl_clear_detach(). Otherwise acm_stdio_start() will always
fail to find a UDC on DT platforms.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
---
drivers/usb/gadget/f_acm.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/usb/gadget/f_acm.c b/drivers/usb/gadget/f_acm.c
index de42e0189e8d..ba216128ab27 100644
--- a/drivers/usb/gadget/f_acm.c
+++ b/drivers/usb/gadget/f_acm.c
@@ -623,12 +623,21 @@ static void acm_stdio_puts(struct stdio_dev *dev, const char *str)

static int acm_stdio_start(struct stdio_dev *dev)
{
+ struct udevice *udc;
int ret;

if (dev->priv) { /* function already exist */
return 0;
}

+ ret = udc_device_get_by_index(0, &udc);
+ if (ret) {
+ pr_err("USB init failed: %d\n", ret);
+ return ret;
+ }
+
+ g_dnl_clear_detach();
+
ret = g_dnl_register("usb_serial_acm");
if (ret)
return ret;

--
2.43.0