From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A2DFFC44511 for ; Thu, 16 Jul 2026 16:21:42 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id F17C584EE9; Thu, 16 Jul 2026 18:09:47 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="mIUCvVJd"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 3177284CA3; Thu, 16 Jul 2026 15:45:01 +0200 (CEST) Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 2CB3A80433 for ; Thu, 16 Jul 2026 15:44:59 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=anders.roxell@linaro.org Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-c15de30790bso60048066b.2 for ; Thu, 16 Jul 2026 06:44:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1784209499; x=1784814299; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=QzCzqNxD7YHxU8GkpsMEy1AppJaAsLEymp6otukPDm4=; b=mIUCvVJdqkJCPPHpsT6lXJUsOiRLGFN6dj4UkXTHDLM+UFEKHMiNoxGSpR/h/+jJbF L7QCeCHF9+to1SYfI83O65DvS2s7b9DRuTyj+QQS628ITYaIKqX3MIL8giLZ3DKBhaD+ VkYgCbBX5mKSi9aUO9KdAVzekOPJCBko8+V/DXrONCQZWLUdeoHcPjGaCjJOMKJRyovj CcArS7CsrsccnnlpwhpRvw+izGm9SvK2/K+m+5Hld0tihh6n5+iTvYVuPI6VfoIeHq0w BCHsjcFcW5k+L7elrYXauUMQdjXLmwoMbPXn97ZactOMRd2GNdqHyghVZq/bL8xtUdTN bO6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784209499; x=1784814299; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=QzCzqNxD7YHxU8GkpsMEy1AppJaAsLEymp6otukPDm4=; b=qNjkn/PQ+IVz2gC2BTljXFwKgGlpLNpvzJ9zwkZ1FjNJ8r1BerAVxXrCerHrni9Dvg eZqA2nAdW3TMbTHexdKFh240rwRX2ImWIdNFqeRvNdOtWjvbpTffnneEQ0b487JdbUmQ 8b5LPi1BAw4Tkq1tmQDsKsPFl8OIjpetGUxllJoRq6DrsWxzxtMIN02/DLpRLLY6MuMM U0JAYKRQftauNqakjBUV9PabWK8hY71N2WcMzDl4NjlhB9QLMwb8OR7pA6FiAu/E/iJK ei+s7zoESWcDDL7Rh0P+Hg/xlc6yO65LJDWtc617BqlqU4QyOmUqKn+vZctQsvwm40fF eQgg== X-Gm-Message-State: AOJu0Yx0pZcLnLBEUUAy3WN3PDtUFDRHo6dAInlMzEDmje1/DtGzJcd0 KKrJdd1dc8AekbY+kiGp324pdFuNg7CASK+kQM+0WzXhLY/aMdFbNnq3ThYezOe/mLi4QEiJUIG uOTww X-Gm-Gg: AfdE7cmneBOL4TjKbxKnTMmbFUlKnHebjHG3ee6LppL0GOiN2cqEInpUfdVC163041L EBxYNAekXwgNWKzXlzI23F2h/8+jbDXQn5BqwIPPGq6HiRH5R9NbznTKEb4qFMDxfzVd+5hVFd+ 14oav3wiXVrpJJbUSktOULzmCYSB6L1zn3ge7xU83IGMk/vzZfirLHpAYXsjC2JEu8s6utqYvVj 4WCTtASIdHzW14YoDj7CH5n1P4ne/HlZNB7erKWrCJSioIhif5/4p/Z2AQDOIayZu+uVMadLd05 TC6JSOuqOMtq0OIq3GaSSuKeu6GfnHht08gOAP7APW2MIQe28mKz9zm+zdmXNrV1H/AhTGNyuhA /QFmRB5KMzSk/e9nYKbmgHz7y6sJStxcrh5UtHRvOeXAyzAG2EqcSAGIcbLQ+iZiuHh3feKBg/1 1VJdPGhfShbGfW9POz+Jg127LQDizkIyMNPxO2Ng== X-Received: by 2002:a17:907:5cc:b0:c12:c7ca:d704 with SMTP id a640c23a62f3a-c161f438d78mr694571566b.6.1784209498610; Thu, 16 Jul 2026 06:44:58 -0700 (PDT) Received: from localhost (c-85-229-7-191.bbcust.telenor.se. [85.229.7.191]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c16871b3dfasm221245766b.28.2026.07.16.06.44.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2026 06:44:56 -0700 (PDT) From: Anders Roxell To: u-boot@lists.denx.de, marex@denx.de Cc: mkorpershoek@kernel.org, ilias.apalodimas@linaro.org, trini@konsulko.com, michal.simek@amd.com, alchark@flipper.net, jerome.forissier@arm.com, Anders Roxell , Jerome Forissier , Jens Wiklander , Lukasz Majewski Subject: [PATCH v5 73/75] usb: gadget: fix up the last UDC drivers after the resync Date: Thu, 16 Jul 2026 15:42:43 +0200 Message-ID: <20260716134305.614278-74-anders.roxell@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260716134305.614278-1-anders.roxell@linaro.org> References: <20260716134305.614278-1-anders.roxell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Thu, 16 Jul 2026 18:09:05 +0200 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Adapt at91_udc, atmel_usba_udc and epautoconf to the new gadget API. Co-developed-by: Jerome Forissier Signed-off-by: Jerome Forissier Co-developed-by: Jens Wiklander Signed-off-by: Jens Wiklander Signed-off-by: Anders Roxell --- drivers/usb/gadget/at91_udc.c | 46 ------------- drivers/usb/gadget/atmel_usba_udc.c | 102 ++++++++-------------------- drivers/usb/gadget/epautoconf.c | 2 - 3 files changed, 28 insertions(+), 122 deletions(-) diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index b3c780a4e35c..5b0c55d59c8d 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c @@ -1435,52 +1435,6 @@ int dm_usb_gadget_handle_interrupts(struct udevice *dev) return at91_udc_irq(udc); } -int usb_gadget_register_driver(struct usb_gadget_driver *driver) -{ - struct at91_udc *udc = controller; - int ret; - - if (!driver || !driver->bind || !driver->setup) { - printf("bad paramter\n"); - return -EINVAL; - } - - if (udc->driver) { - printf("UDC already has a gadget driver\n"); - return -EBUSY; - } - - at91_start(&udc->gadget, driver); - - udc->driver = driver; - - ret = driver->bind(&udc->gadget); - if (ret) { - pr_err("driver->bind() returned %d\n", ret); - udc->driver = NULL; - } - - return ret; -} - -int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) -{ - struct at91_udc *udc = controller; - - if (!driver || !driver->unbind || !driver->disconnect) { - pr_err("bad paramter\n"); - return -EINVAL; - } - - driver->disconnect(&udc->gadget); - driver->unbind(&udc->gadget); - udc->driver = NULL; - - at91_stop(&udc->gadget); - - return 0; -} - int at91_udc_probe(struct at91_udc_data *pdata) { struct at91_udc *udc; diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index 0caf8b8b7b45..52900ad654cf 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c @@ -32,12 +32,6 @@ static int usba_udc_stop(struct usb_gadget *gadget); #include "atmel_usba_udc.h" -static int vbus_is_present(struct usba_udc *udc) -{ - /* No Vbus detection: Assume always present */ - return 1; -} - static void next_fifo_transaction(struct usba_ep *ep, struct usba_request *req) { unsigned int transaction_len; @@ -1169,32 +1163,6 @@ static int usba_udc_irq(struct usba_udc *udc) return 0; } -static int usba_udc_enable(struct usba_udc *udc) -{ - udc->devstatus = 1 << USB_DEVICE_SELF_POWERED; - - udc->vbus_prev = 0; - - /* If Vbus is present, enable the controller and wait for reset */ - if (vbus_is_present(udc) && udc->vbus_prev == 0) { - usba_writel(udc, CTRL, USBA_ENABLE_MASK); - usba_writel(udc, INT_ENB, USBA_END_OF_RESET); - } - - return 0; -} - -static int usba_udc_disable(struct usba_udc *udc) -{ - udc->gadget.speed = USB_SPEED_UNKNOWN; - reset_all_endpoints(udc); - - /* This will also disable the DP pullup */ - usba_writel(udc, CTRL, USBA_DISABLE_MASK); - - return 0; -} - static struct usba_ep *usba_udc_pdata(struct usba_platform_data *pdata, struct usba_udc *udc) { @@ -1255,69 +1223,55 @@ int dm_usb_gadget_handle_interrupts(struct udevice *dev) return usba_udc_irq(udc); } -int usb_gadget_register_driver(struct usb_gadget_driver *driver) +int usba_udc_probe(struct usba_platform_data *pdata) { - struct usba_udc *udc = &controller; - int ret; - - if (!driver || !driver->bind || !driver->setup) { - log_err("bad parameter\n"); - return -EINVAL; - } + struct usba_udc *udc; - if (udc->driver) { - log_err("UDC already has a gadget driver\n"); - return -EBUSY; - } + udc = &controller; - usba_udc_enable(udc); + udc->usba_ep = usba_udc_pdata(pdata, udc); - udc->driver = driver; + return 0; +} - ret = driver->bind(&udc->gadget); - if (ret) { - log_err("driver->bind() returned %d\n", ret); - udc->driver = NULL; - } +#else /* !CONFIG_IS_ENABLED(DM_USB_GADGET) */ +struct usba_priv_data { + struct clk_bulk clks; + struct usba_udc udc; +}; - return ret; +static int vbus_is_present(struct usba_udc *udc) +{ + /* No Vbus detection: Assume always present */ + return 1; } -int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) +static int usba_udc_enable(struct usba_udc *udc) { - struct usba_udc *udc = &controller; - - if (!driver || !driver->unbind || !driver->disconnect) { - log_err("bad parameter\n"); - return -EINVAL; - } + udc->devstatus = 1 << USB_DEVICE_SELF_POWERED; - driver->disconnect(&udc->gadget); - driver->unbind(&udc->gadget); - udc->driver = NULL; + udc->vbus_prev = 0; - usba_udc_disable(udc); + /* If Vbus is present, enable the controller and wait for reset */ + if (vbus_is_present(udc) && udc->vbus_prev == 0) { + usba_writel(udc, CTRL, USBA_ENABLE_MASK); + usba_writel(udc, INT_ENB, USBA_END_OF_RESET); + } return 0; } -int usba_udc_probe(struct usba_platform_data *pdata) +static int usba_udc_disable(struct usba_udc *udc) { - struct usba_udc *udc; - - udc = &controller; + udc->gadget.speed = USB_SPEED_UNKNOWN; + reset_all_endpoints(udc); - udc->usba_ep = usba_udc_pdata(pdata, udc); + /* This will also disable the DP pullup */ + usba_writel(udc, CTRL, USBA_DISABLE_MASK); return 0; } -#else /* !CONFIG_IS_ENABLED(DM_USB_GADGET) */ -struct usba_priv_data { - struct clk_bulk clks; - struct usba_udc udc; -}; - static int usba_udc_start(struct usb_gadget *gadget, struct usb_gadget_driver *driver) { diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c index 30016b805bfd..93ea70a5d79b 100644 --- a/drivers/usb/gadget/epautoconf.c +++ b/drivers/usb/gadget/epautoconf.c @@ -6,9 +6,7 @@ */ #include -#include #include -#include #include #include -- 2.53.0