From: Mattijs Korpershoek <mkorpershoek@baylibre.com>
To: Patrice Chotard <patrice.chotard@foss.st.com>, u-boot@lists.denx.de
Cc: Patrice CHOTARD <patrice.chotard@foss.st.com>,
Patrick DELAUNAY <patrick.delaunay@foss.st.com>,
U-Boot STM32 <uboot-stm32@st-md-mailman.stormreply.com>,
Marek Vasut <marex@denx.de>,
Caleb Connolly <caleb.connolly@linaro.org>,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Nathan Barrett-Morrison <nathan.morrison@timesys.com>,
Oliver Gaskell <Oliver.Gaskell@analog.com>,
Robert Marko <robert.marko@sartura.hr>,
Sam Protsenko <semen.protsenko@linaro.org>,
Simon Glass <sjg@chromium.org>,
Sjoerd Simons <sjoerd@collabora.com>,
Tom Rini <trini@konsulko.com>
Subject: Re: [PATCH v3 4/9] usb: dwc3-generic: Add STih407 support
Date: Wed, 22 Jan 2025 10:02:31 +0100 [thread overview]
Message-ID: <871pwvkyqg.fsf@baylibre.com> (raw)
In-Reply-To: <20250120080120.51657-5-patrice.chotard@foss.st.com>
Hi Patrice,
Thank you for the patch.
On lun., janv. 20, 2025 at 09:01, Patrice Chotard <patrice.chotard@foss.st.com> wrote:
> Add STi glue logic to manage the DWC3 HC on STiH407
> SoC family. It configures the internal glue logic and
> syscfg registers.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
> Cc: Marek Vasut <marex@denx.de>
>
> ---
>
> Changes in v3:
> - Replace debug() by dev_err()
> - check return value of syscon_regmap_lookup_by_phandle()
>
> Changes in v2:
> - add dwc3-sti.c DWC3 wrapper as done for dwc3-am62.c
>
> MAINTAINERS | 1 +
> drivers/usb/dwc3/Kconfig | 6 ++
> drivers/usb/dwc3/Makefile | 1 +
> drivers/usb/dwc3/dwc3-generic-sti.c | 132 ++++++++++++++++++++++++++++
> 4 files changed, 140 insertions(+)
> create mode 100644 drivers/usb/dwc3/dwc3-generic-sti.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 8c6c0c2a4bc..5d7e251e601 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -656,6 +656,7 @@ F: drivers/mmc/sti_sdhci.c
> F: drivers/reset/sti-reset.c
> F: drivers/serial/serial_sti_asc.c
> F: drivers/sysreset/sysreset_sti.c
> +F: drivers/usb/host/dwc3-sti.c
> F: drivers/timer/arm_global_timer.c
> F: drivers/usb/host/dwc3-sti-glue.c
> F: include/dwc3-sti-glue.h
> diff --git a/drivers/usb/dwc3/Kconfig b/drivers/usb/dwc3/Kconfig
> index 0100723a68b..7d58ae65fb6 100644
> --- a/drivers/usb/dwc3/Kconfig
> +++ b/drivers/usb/dwc3/Kconfig
> @@ -87,6 +87,12 @@ config USB_DWC3_LAYERSCAPE
> Host and Peripheral operation modes are supported. OTG is not
> supported.
>
> +config USB_DWC3_STI
> + bool "STi USB wrapper"
> + depends on DM_USB && USB_DWC3_GENERIC && SYSCON
> + help
> + Select this for STi Platforms.
The improvements done in v3 based on the comments from v2 look good to me.
However, checkpatch seems unhappy about this:
$ ./scripts/checkpatch.pl --git --u-boot --git master..HEAD
--------------------------------------------------------------
Commit 2a4d2432f669 ("usb: dwc3-generic: Add STih407 support")
--------------------------------------------------------------
WARNING: please write a paragraph that describes the config symbol fully
#42: FILE: drivers/usb/dwc3/Kconfig:90:
+config USB_DWC3_STI
Can't we reuse the help description from 'config USB_XHCI_STI' ?
I'm sorry I missed this before.
With that addressed, please add:
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> +
> menu "PHY Subsystem"
>
> config USB_DWC3_PHY_OMAP
> diff --git a/drivers/usb/dwc3/Makefile b/drivers/usb/dwc3/Makefile
> index a085c9d4628..985206eafe4 100644
> --- a/drivers/usb/dwc3/Makefile
> +++ b/drivers/usb/dwc3/Makefile
> @@ -15,3 +15,4 @@ obj-$(CONFIG_USB_DWC3_UNIPHIER) += dwc3-uniphier.o
> obj-$(CONFIG_USB_DWC3_LAYERSCAPE) += dwc3-layerscape.o
> obj-$(CONFIG_USB_DWC3_PHY_OMAP) += ti_usb_phy.o
> obj-$(CONFIG_USB_DWC3_PHY_SAMSUNG) += samsung_usb_phy.o
> +obj-$(CONFIG_USB_DWC3_STI) += dwc3-generic-sti.o
> diff --git a/drivers/usb/dwc3/dwc3-generic-sti.c b/drivers/usb/dwc3/dwc3-generic-sti.c
> new file mode 100644
> index 00000000000..2ff640cede4
> --- /dev/null
> +++ b/drivers/usb/dwc3/dwc3-generic-sti.c
> @@ -0,0 +1,132 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause
> +/*
> + * STi specific glue layer for DWC3
> + *
> + * Copyright (C) 2025, STMicroelectronics - All Rights Reserved
> + */
> +
> +#include <reset.h>
> +#include <regmap.h>
> +#include <syscon.h>
> +#include <asm/io.h>
> +#include <dm/device.h>
> +#include <dm/device_compat.h>
> +#include <dm/read.h>
> +#include <linux/usb/otg.h>
> +#include "dwc3-generic.h"
> +
> +/* glue registers */
> +#define CLKRST_CTRL 0x00
> +#define AUX_CLK_EN BIT(0)
> +#define SW_PIPEW_RESET_N BIT(4)
> +#define EXT_CFG_RESET_N BIT(8)
> +
> +#define XHCI_REVISION BIT(12)
> +
> +#define USB2_VBUS_MNGMNT_SEL1 0x2C
> +#define USB2_VBUS_UTMIOTG 0x1
> +
> +#define SEL_OVERRIDE_VBUSVALID(n) ((n) << 0)
> +#define SEL_OVERRIDE_POWERPRESENT(n) ((n) << 4)
> +#define SEL_OVERRIDE_BVALID(n) ((n) << 8)
> +
> +/* Static DRD configuration */
> +#define USB3_CONTROL_MASK 0xf77
> +
> +#define USB3_DEVICE_NOT_HOST BIT(0)
> +#define USB3_FORCE_VBUSVALID BIT(1)
> +#define USB3_DELAY_VBUSVALID BIT(2)
> +#define USB3_SEL_FORCE_OPMODE BIT(4)
> +#define USB3_FORCE_OPMODE(n) ((n) << 5)
> +#define USB3_SEL_FORCE_DPPULLDOWN2 BIT(8)
> +#define USB3_FORCE_DPPULLDOWN2 BIT(9)
> +#define USB3_SEL_FORCE_DMPULLDOWN2 BIT(10)
> +#define USB3_FORCE_DMPULLDOWN2 BIT(11)
> +
> +static void dwc3_stih407_glue_configure(struct udevice *dev, int index,
> + enum usb_dr_mode mode)
> +{
> + struct dwc3_glue_data *glue = dev_get_plat(dev);
> + struct regmap *regmap;
> + ulong syscfg_base;
> + ulong syscfg_offset;
> + ulong glue_base;
> + int ret;
> +
> + /* deassert both powerdown and softreset */
> + ret = reset_deassert_bulk(&glue->resets);
> + if (ret) {
> + dev_err(dev, "reset_deassert_bulk error: %d\n", ret);
> + return;
> + }
> +
> + regmap = syscon_regmap_lookup_by_phandle(dev, "st,syscfg");
> + if (IS_ERR(regmap)) {
> + dev_err(dev, "unable to get st,syscfg, dev %s\n", dev->name);
> + return;
> + }
> +
> + syscfg_base = regmap->ranges[0].start;
> + glue_base = dev_read_addr_index(dev, 0);
> + syscfg_offset = dev_read_addr_index(dev, 1);
> +
> + clrbits_le32(syscfg_base + syscfg_offset, USB3_CONTROL_MASK);
> +
> + /* glue drd init */
> + switch (mode) {
> + case USB_DR_MODE_PERIPHERAL:
> + clrbits_le32(syscfg_base + syscfg_offset,
> + USB3_DELAY_VBUSVALID | USB3_SEL_FORCE_OPMODE |
> + USB3_FORCE_OPMODE(0x3) | USB3_SEL_FORCE_DPPULLDOWN2 |
> + USB3_FORCE_DPPULLDOWN2 | USB3_SEL_FORCE_DMPULLDOWN2 |
> + USB3_FORCE_DMPULLDOWN2);
> +
> + setbits_le32(syscfg_base + syscfg_offset,
> + USB3_DEVICE_NOT_HOST | USB3_FORCE_VBUSVALID);
> + break;
> +
> + case USB_DR_MODE_HOST:
> + clrbits_le32(syscfg_base + syscfg_offset,
> + USB3_DEVICE_NOT_HOST | USB3_FORCE_VBUSVALID |
> + USB3_SEL_FORCE_OPMODE | USB3_FORCE_OPMODE(0x3) |
> + USB3_SEL_FORCE_DPPULLDOWN2 | USB3_FORCE_DPPULLDOWN2 |
> + USB3_SEL_FORCE_DMPULLDOWN2 | USB3_FORCE_DMPULLDOWN2);
> +
> + setbits_le32(syscfg_base + syscfg_offset, USB3_DELAY_VBUSVALID);
> + break;
> +
> + default:
> + dev_err(dev, "Unsupported mode of operation %d\n", mode);
> + return;
> + }
> +
> + /* glue init */
> + setbits_le32(glue_base + CLKRST_CTRL, AUX_CLK_EN | EXT_CFG_RESET_N | XHCI_REVISION);
> + clrbits_le32(glue_base + CLKRST_CTRL, SW_PIPEW_RESET_N);
> +
> + /* configure mux for vbus, powerpresent and bvalid signals */
> + setbits_le32(glue_base + USB2_VBUS_MNGMNT_SEL1,
> + SEL_OVERRIDE_VBUSVALID(USB2_VBUS_UTMIOTG) |
> + SEL_OVERRIDE_POWERPRESENT(USB2_VBUS_UTMIOTG) |
> + SEL_OVERRIDE_BVALID(USB2_VBUS_UTMIOTG));
> + setbits_le32(glue_base + CLKRST_CTRL, SW_PIPEW_RESET_N);
> +};
> +
> +struct dwc3_glue_ops stih407_ops = {
> + .glue_configure = dwc3_stih407_glue_configure,
> +};
> +
> +static const struct udevice_id dwc3_sti_match[] = {
> + { .compatible = "st,stih407-dwc3", .data = (ulong)&stih407_ops},
> + { /* sentinel */ }
> +};
> +
> +U_BOOT_DRIVER(dwc3_sti_wrapper) = {
> + .name = "dwc3-sti",
> + .id = UCLASS_SIMPLE_BUS,
> + .of_match = dwc3_sti_match,
> + .bind = dwc3_glue_bind,
> + .probe = dwc3_glue_probe,
> + .remove = dwc3_glue_remove,
> + .plat_auto = sizeof(struct dwc3_glue_data),
> +};
> --
> 2.25.1
next prev parent reply other threads:[~2025-01-22 9:02 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-20 8:01 [PATCH v3 0/9] Restore USB and add UMS support for STiH407-B2260 Patrice Chotard
2025-01-20 8:01 ` [PATCH v3 1/9] ARM: dts: sti: Add fixed clock for ehci and ohci nodes in stih410-b2260.dtsi Patrice Chotard
2025-01-20 8:01 ` [PATCH v3 2/9] configs: stih410-b2260: Enable DM_REGULATOR flag Patrice Chotard
2025-01-20 8:01 ` [PATCH v3 3/9] usb: dwc3-generic: Reorder include Patrice Chotard
2025-01-22 8:55 ` Mattijs Korpershoek
2025-01-20 8:01 ` [PATCH v3 4/9] usb: dwc3-generic: Add STih407 support Patrice Chotard
2025-01-22 9:02 ` Mattijs Korpershoek [this message]
2025-01-23 14:40 ` Patrice CHOTARD
2025-01-20 8:01 ` [PATCH v3 5/9] configs: stih410-b2260: Enable USB_DWC3_GENERIC and USB_DWC3_STI flags Patrice Chotard
2025-01-20 8:01 ` [PATCH v3 6/9] usb: dwc3: Remove dwc3 glue driver support for STi Patrice Chotard
2025-01-20 8:01 ` [PATCH v3 7/9] configs: stih410-b2260: Enable DM_USB_GADGET flag Patrice Chotard
2025-01-20 8:01 ` [PATCH v3 8/9] board: stih410-b2260: Remove board_usb_init/cleanup() Patrice Chotard
2025-01-20 8:01 ` [PATCH v3 9/9] configs: stih410-b2260: Enable CMD_USB_MASS_STORAGE flag Patrice Chotard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871pwvkyqg.fsf@baylibre.com \
--to=mkorpershoek@baylibre.com \
--cc=Oliver.Gaskell@analog.com \
--cc=caleb.connolly@linaro.org \
--cc=ilias.apalodimas@linaro.org \
--cc=marex@denx.de \
--cc=nathan.morrison@timesys.com \
--cc=patrice.chotard@foss.st.com \
--cc=patrick.delaunay@foss.st.com \
--cc=robert.marko@sartura.hr \
--cc=semen.protsenko@linaro.org \
--cc=sjg@chromium.org \
--cc=sjoerd@collabora.com \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=uboot-stm32@st-md-mailman.stormreply.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.