mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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);
> 


  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®