From: Claudiu Beznea <claudiu.beznea@tuxon.dev>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: vkoul@kernel.org, kishon@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, p.zabel@pengutronix.de,
magnus.damm@gmail.com, yoshihiro.shimoda.uh@renesas.com,
biju.das.jz@bp.renesas.com, linux-phy@lists.infradead.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-renesas-soc@vger.kernel.org,
Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>,
Wolfram Sang <wsa+renesas@sang-engineering.com>
Subject: Re: [PATCH v7 4/7] reset: rzg2l-usbphy-ctrl: Add support for USB PWRRDY
Date: Thu, 25 Sep 2025 13:34:22 +0300 [thread overview]
Message-ID: <accea131-8735-4b67-ac21-06b7950a0417@tuxon.dev> (raw)
In-Reply-To: <CAMuHMdXWMwkEbfjHvuijWzh6CTdHKbceMmE8Y7LPdAMey9gavQ@mail.gmail.com>
Hi, Geert,
On 9/25/25 13:15, Geert Uytterhoeven wrote:
> Hi Claudiu,
>
> On Thu, 25 Sept 2025 at 12:04, Claudiu <claudiu.beznea@tuxon.dev> wrote:
>> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>>
>> On the Renesas RZ/G3S SoC, the USB PHY block has an input signal called
>> PWRRDY. This signal is managed by the system controller and must be
>> de-asserted after powering on the area where USB PHY resides and asserted
>> before powering it off.
>>
>> On power-on the USB PWRRDY signal need to be de-asserted before enabling
>> clock and switching the module to normal state (through MSTOP support). The
>> power-on configuration sequence must be:
>>
>> 1/ PWRRDY=0
>> 2/ CLK_ON=1
>> 3/ MSTOP=0
>>
>> On power-off the configuration sequence should be:
>>
>> 1/ MSTOP=1
>> 2/ CLK_ON=0
>> 3/ PWRRDY=1
>>
>> The CLK_ON and MSTOP functionalities are controlled by clock drivers.
>>
>> After long discussions with the internal HW team, it has been confirmed
>> that the HW connection b/w USB PHY block, the USB channels, the system
>> controller, clock, MSTOP, PWRRDY signal is as follows:
>>
>> ┌──────────────────────────────┐
>> │ │◄── CPG_CLKON_USB.CLK0_ON
>> │ USB CH0 │
>> ┌──────────────────────────┐ │┌───────────────────────────┐ │◄── CPG_CLKON_USB.CLK2_ON
>> │ ┌────────┐ ││host controller registers │ │
>> │ │ │ ││function controller registers│
>> │ │ PHY0 │◄──┤└───────────────────────────┘ │
>> │ USB PHY │ │ └────────────▲─────────────────┘
>> │ └────────┘ │
>> │ │ CPG_BUS_PERI_COM_MSTOP.MSTOP{6, 5}_ON
>> │┌──────────────┐ ┌────────┐
>> ││USHPHY control│ │ │
>> ││ registers │ │ PHY1 │ ┌──────────────────────────────┐
>> │└──────────────┘ │ │◄──┤ USB CH1 │
>> │ └────────┘ │┌───────────────────────────┐ │◄── CPG_CLKON_USB.CLK1_ON
>> └─▲───────▲─────────▲──────┘ ││ host controller registers │ │
>> │ │ │ │└───────────────────────────┘ │
>> │ │ │ └────────────▲─────────────────┘
>> │ │ │ │
>> │ │ │ CPG_BUS_PERI_COM_MSTOP.MSTOP7_ON
>> │PWRRDY │ │
>> │ │ CPG_CLK_ON_USB.CLK3_ON
>> │ │
>> │ CPG_BUS_PERI_COM_MSTOP.MSTOP4_ON
>> │
>> ┌────┐
>> │SYSC│
>> └────┘
>>
>> where:
>> - CPG_CLKON_USB.CLK.CLKX_ON is the register bit controlling the clock X
>> of different USB blocks, X in {0, 1, 2, 3}
>> - CPG_BUS_PERI_COM_MSTOP.MSTOPX_ON is the register bit controlling the
>> MSTOP of different USB blocks, X in {4, 5, 6, 7}
>> - USB PHY is the USB PHY block exposing 2 ports, port0 and port1, used
>> by the USB CH0, USB CH1
>> - SYSC is the system controller block controlling the PWRRDY signal
>> - USB CHx are individual USB block with host and function capabilities
>> (USB CH0 have both host and function capabilities, USB CH1 has only
>> host capabilities)
>>
>> The USBPHY control registers are controlled though the
>> reset-rzg2l-usbphy-ctrl driver. The USB PHY ports are controlled by
>> phy_rcar_gen3_usb2 (drivers/phy/renesas/phy-rcar-gen3-usb2.c file). The
>> USB PHY ports request resets from the reset-rzg2l-usbphy-ctrl driver.
>>
>> The connection b/w the system controller and the USB PHY CTRL driver is
>> implemented through the renesas,sysc-pwrrdy device tree property
>> proposed in this patch. This property specifies the register offset and the
>> bitmask required to control the PWRRDY signal.
>>
>> Since the USB PHY CTRL driver needs to be probed before any other
>> USB-specific driver on RZ/G3S, control of PWRRDY is passed exclusively
>> to it. This guarantees the correct configuration sequence between clocks,
>> MSTOP bits, and the PWRRDY bit. At the same time, changes are kept minimal
>> by avoiding modifications to the USB PHY driver to also handle the PWRRDY
>> itself.
>>
>> Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>> ---
>>
>> Changes in v7:
>> - used proper regmap update value on rzg2l_usbphy_ctrl_set_pwrrdy()
>
> Thanks for the update!
>
>> --- a/drivers/reset/reset-rzg2l-usbphy-ctrl.c
>> +++ b/drivers/reset/reset-rzg2l-usbphy-ctrl.c
>
>> @@ -110,6 +125,49 @@ static const struct regmap_config rzg2l_usb_regconf = {
>> .max_register = 1,
>> };
>>
>> +static void rzg2l_usbphy_ctrl_set_pwrrdy(struct rzg2l_usbphy_ctrl_pwrrdy *pwrrdy,
>> + bool power_on)
>> +{
>> + u32 val = (!power_on << (ffs(pwrrdy->mask) - 1)) & pwrrdy->mask;
>
> ffs(x) - 1 == __ffs(x)
OK, thank you! I'm going to wait for more feedback before updating it in a
new version.
Thank you for your review,
Claudiu
>
>> +
>> + regmap_update_bits(pwrrdy->regmap, pwrrdy->offset, pwrrdy->mask, val);
>> +}
>
> Gr{oetje,eeting}s,
>
> Geert
>
next prev parent reply other threads:[~2025-09-25 10:34 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-25 10:02 [PATCH v7 0/7] Add initial USB support for the Renesas RZ/G3S SoC Claudiu
2025-09-25 10:02 ` [PATCH v7 1/7] dt-bindings: phy: renesas,usb2-phy: Mark resets as required for RZ/G3S Claudiu
2025-09-25 10:02 ` [PATCH v7 2/7] phy: renesas: rcar-gen3-usb2: Fix an error handling path in rcar_gen3_phy_usb2_probe() Claudiu
2025-09-25 10:02 ` [PATCH v7 3/7] dt-bindings: reset: renesas,rzg2l-usbphy-ctrl: Document RZ/G3S support Claudiu
2025-09-25 10:02 ` [PATCH v7 4/7] reset: rzg2l-usbphy-ctrl: Add support for USB PWRRDY Claudiu
2025-09-25 10:15 ` Geert Uytterhoeven
2025-09-25 10:34 ` Claudiu Beznea [this message]
2025-10-08 8:34 ` Philipp Zabel
2025-10-08 9:29 ` Claudiu Beznea
2025-10-08 10:23 ` Philipp Zabel
2025-10-08 12:16 ` Claudiu Beznea
2025-10-08 12:47 ` Claudiu Beznea
2025-10-10 11:26 ` Claudiu Beznea
2025-10-13 14:57 ` Philipp Zabel
2025-10-14 8:36 ` Claudiu Beznea
2025-10-14 16:42 ` Philipp Zabel
2025-10-15 8:19 ` Claudiu Beznea
2025-10-21 8:48 ` Claudiu Beznea
2025-10-22 9:38 ` Philipp Zabel
2025-10-15 8:51 ` Geert Uytterhoeven
2025-09-25 10:03 ` [PATCH v7 5/7] reset: rzg2l-usbphy-ctrl: Add support for RZ/G3S SoC Claudiu
2025-09-25 10:03 ` [PATCH v7 6/7] arm64: dts: renesas: r9a08g045: Add USB support Claudiu
2025-09-25 10:03 ` [PATCH v7 7/7] arm64: dts: renesas: rzg3s-smarc: Enable " Claudiu
2025-10-08 3:46 ` [PATCH v7 0/7] Add initial USB support for the Renesas RZ/G3S SoC Claudiu Beznea
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=accea131-8735-4b67-ac21-06b7950a0417@tuxon.dev \
--to=claudiu.beznea@tuxon.dev \
--cc=biju.das.jz@bp.renesas.com \
--cc=claudiu.beznea.uj@bp.renesas.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=geert@linux-m68k.org \
--cc=kishon@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=vkoul@kernel.org \
--cc=wsa+renesas@sang-engineering.com \
--cc=yoshihiro.shimoda.uh@renesas.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®