]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
usb: gadget: CDC ACM: call usb_gadget_initialize
authorCaleb Connolly <caleb.connolly@linaro.org>
Wed, 20 Mar 2024 14:30:49 +0000 (14:30 +0000)
committerMattijs Korpershoek <mkorpershoek@baylibre.com>
Fri, 22 Mar 2024 09:16:13 +0000 (10:16 +0100)
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.

Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
Link: https://lore.kernel.org/r/20240320-b4-qcom-usb-v4-3-41be480172e1@linaro.org
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
drivers/usb/gadget/f_acm.c

index de42e0189e8ddc277f88220ee6d1ffdefa5f72f9..ba216128ab27b0242215958e1f860f0c810d0116 100644 (file)
@@ -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;