From: Krzysztof Kozlowski <krzk@kernel.org>
To: Joey Lu <a0987203069@gmail.com>
Cc: Vinod Koul <vkoul@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Jacky Huang <ychuang3@nuvoton.com>,
Shan-Chun Hung <schung@nuvoton.com>,
Hui-Ping Chen <hpchen0nvt@gmail.com>, Joey Lu <yclu4@nuvoton.com>,
linux-phy@lists.infradead.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/4] dt-bindings: phy: nuvoton,ma35d1-usb2-phy: extend for dual-port OTG support
Date: Tue, 30 Jun 2026 08:16:07 +0200 [thread overview]
Message-ID: <0f5a408b-5c55-4cd2-831a-49316c9912c9@kernel.org> (raw)
In-Reply-To: <24de6a00-ba4e-455b-baa7-479d1cc2edf3@gmail.com>
On 29/06/2026 12:40, Joey Lu wrote:
>
> On 6/25/2026 3:58 PM, Krzysztof Kozlowski wrote:
>> On Thu, Jun 25, 2026 at 10:39:56AM +0800, Joey Lu wrote:
>>> properties:
>>> compatible:
>>> enum:
>>> - nuvoton,ma35d1-usb2-phy
>>>
>>> + reg:
>>> + maxItems: 1
>>> +
>>> "#phy-cells":
>>> - const: 0
>>> + const: 1
>>> + description:
>>> + The single cell selects the PHY port. 0 selects the OTG port (USB0,
>>> + shared with DWC2 gadget controller) and 1 selects the host-only port
>>> + (USB1).
>>>
>>> - clocks:
>>> - maxItems: 1
>> This is odd, considering that parent does not have clocks. So explain me
>> this:
>> 1. USB PHY needed clocks.
>> 2. You extend USB PHY to cover second part.
>> 3. That extension for second part means that clocks are not needed.
>> Really, how? How is it possible in hardware?
> The hardware has two independent clock domains:
>
> - The PHY analog block takes the 24 MHz HXT as its reference, wired
> directly to the PHY's internal PLL, which derives the required
> operating
> frequencies internally. This reference path is entirely outside the SoC
> software clock tree; no software-gatable clock gate needs to be enabled
> for the PHY to power up and lock its PLL. The only software control the
> PHY driver exercises is toggling each PHY's Power-On Reset (POR) bit,
> which resides in the SYS register block. The driver accesses this via
> the parent regmap
>
> - `HUSBH0_GATE` / `HUSBH1_GATE` / `USBD_GATE` are AHB/APB bus interface
> clocks for the host and gadget (EHCI, OHCI, DWC2). They gate
> the register-access path between the CPU and each controller, not
> the PHY
> analog circuitry itself.
>
> The original single-port driver enabled `HUSBH0_GATE` as if it belonged
> to the
> PHY, but that gate is actually owned by EHCI0/OHCI0 and is already
> managed by
> those controller drivers through their own `clocks` DTS bindings. The PHY
> driver was redundantly enabling the same gate.
>
> When extending the driver to cover PHY1, the same pattern held: EHCI1/OHCI1
> manage `HUSBH1_GATE` themselves. There is no clock that belongs
> exclusively to
> the PHY, so `clocks` will be dropped from the PHY binding entirely.
What driver has to do with it?
You did not answer the question. How adding missing OTG to existing
device causes that hardware to lose a clock? How is it possible?
>>> + nuvoton,rcalcode:
>>> + $ref: /schemas/types.yaml#/definitions/uint32-array
>>> + minItems: 1
>>> + maxItems: 2
>> You should require two values. I understand that any PHY is optional,
>> thus you skip the entry, so how would you provide value for PHY1 only?
> `nuvoton,rcalcode` will be changed to require exactly two values
> (`minItems: 2, maxItems: 2`), one for PHY0 and one for PHY1 respectively.
> The property will remain optional overall; when absent, each port
> retains its
> power-on default value loaded at hardware initialisation. When present, both
> entries must be supplied.
So are you going to implement it or not?
>>> + items:
>>> + minimum: 0
>>> + maximum: 15
>>> + description:
>>> + Resistor calibration trim codes for PHY0 and PHY1 respectively.
>>> + Each 4-bit value is written to the RCALCODE field in USBPMISCR and
>>> + adjusts the PHY's internal termination resistance. Both entries are
>>> + optional; when absent the hardware reset default is used.
>>>
>>> - nuvoton,sys:
>>> - $ref: /schemas/types.yaml#/definitions/phandle
>>> + nuvoton,oc-active-high:
>>> + type: boolean
>>> description:
>>> - phandle to syscon for checking the PHY clock status.
>>> + When present, the over-current detect input from the VBUS power switch
>>> + is treated as active-high. The default (property absent) is active-low.
>>> + This setting is shared by both USB host ports.
>>>
>>> required:
>>> - compatible
>>> + - reg
>> That's ABI break which was not explained in the commit msg - neither
>> specifying impact nor actually providing reasons why you break ABI.
>>
>> And honestly, you have no resources here except the address, so now it
>> is clear that this should be folded into parent. See DTS101 talk slides.
> The commit message will be updated to explicitly acknowledge the ABI break:
> existing DTS files that contain a standalone `usb-phy` node without a `reg`
> property will fail dt-schema validation after this change. The impact is
> limited to the MA35D1 SoC; no upstream DTS for this SoC existed before this
> patch series, so no in-tree board files are broken. The break is intentional
But all of out of tree users are broken.
Best regards,
Krzysztof
next prev parent reply other threads:[~2026-06-30 6:16 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-25 2:39 [PATCH v2 0/4] phy: nuvoton: extend MA35D1 USB2 PHY driver for dual-port OTG support Joey Lu
2026-06-25 2:39 ` [PATCH v2 1/4] dt-bindings: reset: nuvoton,ma35d1-reset: add simple-mfd and child node support Joey Lu
2026-06-25 2:55 ` sashiko-bot
2026-06-25 7:51 ` Krzysztof Kozlowski
2026-06-29 9:48 ` Joey Lu
2026-06-25 2:39 ` [PATCH v2 2/4] dt-bindings: phy: nuvoton,ma35d1-usb2-phy: extend for dual-port OTG support Joey Lu
2026-06-25 2:58 ` sashiko-bot
2026-06-25 7:58 ` Krzysztof Kozlowski
2026-06-29 10:40 ` Joey Lu
2026-06-30 6:16 ` Krzysztof Kozlowski [this message]
2026-07-02 1:49 ` Joey Lu
2026-06-25 2:39 ` [PATCH v2 3/4] arm64: dts: nuvoton: ma35d1: add USB controllers and dual-port PHY node Joey Lu
2026-06-25 2:56 ` sashiko-bot
2026-06-25 2:39 ` [PATCH v2 4/4] phy: nuvoton: phy-ma35d1-usb2: extend to dual-port with OTG support Joey Lu
2026-06-25 2:59 ` sashiko-bot
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=0f5a408b-5c55-4cd2-831a-49316c9912c9@kernel.org \
--to=krzk@kernel.org \
--cc=a0987203069@gmail.com \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=hpchen0nvt@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=neil.armstrong@linaro.org \
--cc=robh@kernel.org \
--cc=schung@nuvoton.com \
--cc=vkoul@kernel.org \
--cc=ychuang3@nuvoton.com \
--cc=yclu4@nuvoton.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