From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: rva333@protonmail.com, Chunfeng Yun <chunfeng.yun@mediatek.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Matthias Brugger <matthias.bgg@gmail.com>
Cc: linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] usb: mtu3: introduce platform data
Date: Thu, 17 Sep 2026 15:41:14 +0200 [thread overview]
Message-ID: <b3b2f2ae-1eb1-4d3d-9f4b-4de3868802f1@collabora.com> (raw)
In-Reply-To: <20260917-6595-mtu3-v1-2-a2ba7c230d68@protonmail.com>
On 9/17/26 09:32, Roman Vivchar via B4 Relay wrote:
> From: Roman Vivchar <rva333@protonmail.com>
>
That's good, but the commit title doesn't explain anything.
usb: mtu3: Add SoC platform data for FIFO slots ?
...or anything else that actually explains what you're doing.
> Some SoCs, such as mt6595, require specific quirks for the MTU3 to
> function properly.
>
> The mt6595 IP block doesn't support multiple slots for the FIFO,
> resulting FIFO wrap.
>
> Fix this by adding platform data with a field to handle FIFO limitation.
Well, also say that this commit brings no functional differences for the
currently supported SoCs :-)
>
> Assisted-by: LLM (debugging)
> Signed-off-by: Roman Vivchar <rva333@protonmail.com>
> ---
> drivers/usb/mtu3/mtu3.h | 9 +++++++++
> drivers/usb/mtu3/mtu3_core.c | 5 +++++
> drivers/usb/mtu3/mtu3_gadget.c | 8 ++++++--
> drivers/usb/mtu3/mtu3_plat.c | 8 ++++++--
> 4 files changed, 26 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/mtu3/mtu3.h b/drivers/usb/mtu3/mtu3.h
> index ba5a63669e5f..1258aa7483aa 100644
> --- a/drivers/usb/mtu3/mtu3.h
> +++ b/drivers/usb/mtu3/mtu3.h
> @@ -315,6 +315,14 @@ static inline struct ssusb_mtk *dev_to_ssusb(struct device *dev)
> return dev_get_drvdata(dev);
> }
>
> +/**
> + * struct mtu3_platform_data - platform data for the driver.
> + * @single_slot: the IP can handle only one buffer for bulk transfers
> + */
> +struct mtu3_platform_data {
> + bool single_slot;
bool fifo_single_slot ?
> +};
> +
> /**
> * struct mtu3 - device driver instance data.
> * @slot: MTU3_U2_IP_SLOT_DEFAULT for U2 IP only,
> @@ -369,6 +377,7 @@ struct mtu3 {
> unsigned connected:1;
> unsigned async_callbacks:1;
> unsigned separate_fifo:1;
> + unsigned single_slot:1;
unsigned fifo_single_slot:1 ?
...or you can bring the entire pdata structure in there for easy future extension.
Your choice.
>
> u8 address;
> u8 test_mode_nr;
> diff --git a/drivers/usb/mtu3/mtu3_core.c b/drivers/usb/mtu3/mtu3_core.c
> index 66dbfe1705d5..03e28c93bc51 100644
> --- a/drivers/usb/mtu3/mtu3_core.c
> +++ b/drivers/usb/mtu3/mtu3_core.c
> @@ -923,6 +923,7 @@ int ssusb_gadget_init(struct ssusb_mtk *ssusb)
> {
> struct device *dev = ssusb->dev;
> struct platform_device *pdev = to_platform_device(dev);
> + const struct mtu3_platform_data *pdata = NULL;
> struct mtu3 *mtu = NULL;
> int ret = -ENOMEM;
>
> @@ -930,6 +931,10 @@ int ssusb_gadget_init(struct ssusb_mtk *ssusb)
> if (mtu == NULL)
> return -ENOMEM;
>
> + pdata = device_get_match_data(dev);
> + if (pdata)
Checking if there's any pdata is redundant, since you have already correctly
assigned pdata to all of the of_match entries.
Cheers,
Angelo
> + mtu->single_slot = pdata->single_slot;
> +
> mtu->irq = platform_get_irq_byname_optional(pdev, "device");
> if (mtu->irq < 0) {
> if (mtu->irq == -EPROBE_DEFER)
> diff --git a/drivers/usb/mtu3/mtu3_gadget.c b/drivers/usb/mtu3/mtu3_gadget.c
> index f224f2ee379a..bfacb1ba152e 100644
> --- a/drivers/usb/mtu3/mtu3_gadget.c
> +++ b/drivers/usb/mtu3/mtu3_gadget.c
> @@ -112,8 +112,12 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)
> mep->ep.desc = desc;
> mep->ep.comp_desc = comp_desc;
>
> - /* slot mainly affects bulk/isoc transfer, so ignore int */
> - mep->slot = usb_endpoint_xfer_int(desc) ? 0 : mtu->slot;
> + if (mtu->single_slot)
> + /* older IPs can handle only one slot reliably */
> + mep->slot = 0;
> + else
> + /* slot mainly affects bulk/isoc transfer, so ignore int */
> + mep->slot = usb_endpoint_xfer_int(desc) ? 0 : mtu->slot;
>
> ret = mtu3_config_ep(mtu, mep, interval, burst, mult);
> if (ret < 0)
> diff --git a/drivers/usb/mtu3/mtu3_plat.c b/drivers/usb/mtu3/mtu3_plat.c
> index cc8a864dbd63..bc65acdfb0de 100644
> --- a/drivers/usb/mtu3/mtu3_plat.c
> +++ b/drivers/usb/mtu3/mtu3_plat.c
> @@ -611,9 +611,13 @@ static const struct dev_pm_ops mtu3_pm_ops = {
>
> #define DEV_PM_OPS (IS_ENABLED(CONFIG_PM) ? &mtu3_pm_ops : NULL)
>
> +static const struct mtu3_platform_data mt8173_platform_data = {
> + .single_slot = false,
> +};
> +
> static const struct of_device_id mtu3_of_match[] = {
> - {.compatible = "mediatek,mt8173-mtu3",},
> - {.compatible = "mediatek,mtu3",},
> + { .compatible = "mediatek,mt8173-mtu3", .data = &mt8173_platform_data },
> + { .compatible = "mediatek,mtu3", .data = &mt8173_platform_data },
> {},
> };
> MODULE_DEVICE_TABLE(of, mtu3_of_match);
>
next prev parent reply other threads:[~2026-09-17 13:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 7:32 [PATCH 0/3] usb: mtu3: add mt6595 support Roman Vivchar via B4 Relay
2026-09-17 7:32 ` [PATCH 1/3] dt-bindings: usb: mtu3: add mt6595 Roman Vivchar via B4 Relay
2026-09-17 13:41 ` AngeloGioacchino Del Regno
2026-09-17 7:32 ` [PATCH 2/3] usb: mtu3: introduce platform data Roman Vivchar via B4 Relay
2026-09-17 13:41 ` AngeloGioacchino Del Regno [this message]
2026-09-17 14:10 ` Roman Vivchar
2026-09-17 7:32 ` [PATCH 3/3] usb: mtu3: add mt6595 support Roman Vivchar via B4 Relay
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=b3b2f2ae-1eb1-4d3d-9f4b-4de3868802f1@collabora.com \
--to=angelogioacchino.delregno@collabora.com \
--cc=chunfeng.yun@mediatek.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-usb@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=robh@kernel.org \
--cc=rva333@protonmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®