From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CCA7139C00B for ; Wed, 8 Jul 2026 10:36:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783506992; cv=none; b=MLdT4EaCbWEqxA7kAeiTbqqW6/sqFeetrP9LabIaxgnqp3RjvV8/Sbf3Haxa5j+NLfjjXoElJg8Yh8IqI6mCrCdmBDyNSLiyCuZKo9pD6CqTcZGSfUUG3oImwM7w6zVw1VcJaTVBf1oOWYggdJDzU23OsYLpOP223WCylcbcuTQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783506992; c=relaxed/simple; bh=8KtbuVruq0Q1QGHlLWLaYjY5NM2Kt+opc7Rb2rB4TGw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kENS3L45vgbahWex9nphTX4Pxx6ZYLhzw6vJaXvjk8pvPGtQ55TeTdLKi4Mtwdvhb/hPX/MSoqJLJac+D9wcNSoTvyXzR7oBPs5blRMCMfPtKxbRu5akN7AfMNB/gILzj7I6R9VSM+iWJivh3VMZHl87X0n5h+2nSutS4dmtXrg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jstTdQdM; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jstTdQdM" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2caf4496889so3334515ad.1 for ; Wed, 08 Jul 2026 03:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783506980; x=1784111780; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=phrqd1lecyMf28t/u+W7zekPmM5RqS/waumL1i8YI0k=; b=jstTdQdMOMPa6ZTkjWo0dFR+oQhTT+PFKtpv2zfEoNK8eE3FfqL08FIxrFLE3EEk1R OYg37WsOeZifDmW13TKqhVJUdtqebLHbAWm/YjMAPzRLGCKyG5e7PeL/dNj0ZytVGGDR hOR6hWsi0zQ/9+jc9DmBKLzqjR49ZgxHewMYhPRgkr5BwVfBAgQW2PHxJrvtgFQTSLKl zpMbChW+24if1J0NHOpHeYsI1j1WcC7UKr4i0JL6AgyUxyFK6cjaJeqKFCPlzkmtorPG GFA3PExXjJVQkJxD5reV76dHlfANcR4BiAWIZHm58QDoa/PP3TVK4DxET7aRqJKCCLaU iQeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783506980; x=1784111780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=phrqd1lecyMf28t/u+W7zekPmM5RqS/waumL1i8YI0k=; b=fQJGi2bk8AsfXis2px5C3S+18Y7LpdA3Pw5IemsHWACUwhLV/TqquHXKysmmi97VjN tiV2+mHec2o8Ds9sRpeVje1H/rH6XKDVosJdPUVwA0JA8kpBiK36zdOebm4IpykcZFco dwzcZsNKq2ORU+kCfe4uopDjVKBc94qtluz3SfaHOhg1p1NF8O8xsD5xub3IgfSqFixS DtKkHxU+A0mVJwIXxl2dIJ/8GfL/BjPQvS90yGmBsExA2itciJOd/7izicIgPKOaNbEq /+wGga6/S2+jDSOwXmbf9P+hnrFobNxMM8Iyi5ZARJ/u2FZ+rIwAujdR6DnW1VWk9Kf+ vgMA== X-Forwarded-Encrypted: i=1; AHgh+RoZGRzmUwFpy2Ht+IpTDxMnzB+IpPP5agKXtXlpzHZqG+yfG4IXruXvYqjKoBMP/x2j/Z6g0r/INX+5lEE=@vger.kernel.org X-Gm-Message-State: AOJu0Yww8i3QjNNL2HW0uy7wTZ3U0puzU1ta9a9Pys2GATlex1dBlmLZ iEsA2ZVH1lFc4KgNT4lo/k7yaPxA9tXAC48NOR+A0IZa6WgH+cGIK96yAmsjsg== X-Gm-Gg: AfdE7cnKAja/Ni6bHomd6xJKhqwz9T9W+F+Xd3tjfvlIbVfi9PmLKOaZ8TcKbf+Ogvc zud+gtBrmJhZiFU54UwYEu4F8qRl42kchilVHp9WpAdZR+JQkuduQICW0T7rRbd5eioW2QfXd3T E5jNcnIO4Ix11OvCy23hYUYJzMXuav1dlnhXfH2tUs6GGjdiSax7DiCI9ZfmKTsYGR9qTE4CN2M AJ2CjYFSE+Meg6bLWWbFywm7fb2HlD1Luqbl8TvttcQq0Fi9tlulf7wixC/z1zF78F33n+8ZNoV 3E9ck8iAZyfTNiLiwl/4gefyMmiXvEoQkBjqk8eboSvchd987taH2oGfFgD6u3NXlWmMm58Ht6W iS1oOXFSG97hAvbVkSKGMm80Tbzh/ai7EH3W91TUHG6wrwntt5UT0n9GtBHPVQhCH2rw7247NdN ovoeiP0GR4lX4ZYXJ3eGqR2fEEnz7kuWWCxtbcoY16KmW+YdkRei8wnIZzmbxxBw/d59K5VBc+m g== X-Received: by 2002:a17:902:ce04:b0:2c9:fc4c:8142 with SMTP id d9443c01a7336-2cce9f79c01mr19599535ad.2.1783506979889; Wed, 08 Jul 2026 03:36:19 -0700 (PDT) Received: from localhost.localdomain (60-250-196-139.hinet-ip.hinet.net. [60.250.196.139]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bdb9a3sm25987525ad.13.2026.07.08.03.36.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2026 03:36:19 -0700 (PDT) From: Joey Lu To: Vinod Koul , Neil Armstrong Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Arnd Bergmann , Catalin Marinas , Jacky Huang , Shan-Chun Hung , Hui-Ping Chen , Joey Lu , linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Joey Lu Subject: [PATCH v3 2/3] arm64: dts: nuvoton: ma35d1: add USB controllers and dual-port PHY node Date: Wed, 8 Jul 2026 18:36:05 +0800 Message-ID: <20260708103606.1462960-3-a0987203069@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260708103606.1462960-1-a0987203069@gmail.com> References: <20260708103606.1462960-1-a0987203069@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit PHY0 is referenced by both the DWC2 gadget and EHCI0/OHCI0 nodes because the USB0 signal lines are physically wired to all three controllers simultaneously; the on-chip hardware mux, driven by the USB ID pin, selects which controller is active. The PHY framework handles this shared reference correctly. OHCI companion nodes are required alongside their EHCI counterparts so that the EHCI driver can hand off full-speed and low-speed devices that cannot operate at high speed; without them those device classes fail to enumerate. The board files add pinctrl entries for the HSUSB signals (VBUSVLD, PWREN, OVC) because these lines are routed through multiplexed pads and must be explicitly configured for USB function. Signed-off-by: Joey Lu --- .../boot/dts/nuvoton/ma35d1-iot-512m.dts | 36 ++++++++++ .../boot/dts/nuvoton/ma35d1-som-256m.dts | 36 ++++++++++ arch/arm64/boot/dts/nuvoton/ma35d1.dtsi | 65 +++++++++++++++++++ 3 files changed, 137 insertions(+) diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts b/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts index 78534d613486..0a068abda6e0 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts +++ b/arch/arm64/boot/dts/nuvoton/ma35d1-iot-512m.dts @@ -97,6 +97,16 @@ pinctrl_uart14: uart14-pins { power-source = <1>; }; }; + + hsusb { + pinctrl_hsusb: hsusb-pins { + nuvoton,pins = <5 15 1>, /* VBUSVLD */ + <11 12 9>, /* PWREN */ + <11 13 9>; /* OVC */ + bias-disable; + power-source = <1>; + }; + }; }; &uart0 { @@ -151,3 +161,29 @@ eth_phy1: ethernet-phy@1 { reg = <1>; }; }; + +&usb_phy { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_hsusb>; + status = "okay"; +}; + +&usb { + status = "okay"; +}; + +&ehci0 { + status = "okay"; +}; + +&ehci1 { + status = "okay"; +}; + +&ohci0 { + status = "okay"; +}; + +&ohci1 { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts b/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts index a029b660e8dc..7f1e6d2a1fc2 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts +++ b/arch/arm64/boot/dts/nuvoton/ma35d1-som-256m.dts @@ -100,6 +100,16 @@ pinctrl_uart16: uart16-pins { power-source = <1>; }; }; + + hsusb { + pinctrl_hsusb: hsusb-pins { + nuvoton,pins = <5 15 1>, /* VBUSVLD */ + <11 12 9>, /* PWREN */ + <11 13 9>; /* OVC */ + bias-disable; + power-source = <1>; + }; + }; }; &uart0 { @@ -153,3 +163,29 @@ eth_phy1: ethernet-phy@1 { reg = <1>; }; }; + +&usb_phy { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_hsusb>; + status = "okay"; +}; + +&usb { + status = "okay"; +}; + +&ehci0 { + status = "okay"; +}; + +&ehci1 { + status = "okay"; +}; + +&ohci0 { + status = "okay"; +}; + +&ohci1 { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi index 7228ad4735b5..5a7a39b1b514 100644 --- a/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi +++ b/arch/arm64/boot/dts/nuvoton/ma35d1.dtsi @@ -88,6 +88,14 @@ sys: system-management@40460000 { #reset-cells = <1>; }; + usb_phy: usb-phy { + compatible = "nuvoton,ma35d1-usb2-phy"; + clocks = <&clk HUSBH0_GATE>; + nuvoton,sys = <&sys>; + #phy-cells = <1>; + status = "disabled"; + }; + clk: clock-controller@40460200 { compatible = "nuvoton,ma35d1-clk"; reg = <0x00000000 0x40460200 0x0 0x100>; @@ -431,5 +439,62 @@ mdio1: mdio { #size-cells = <0>; }; }; + + usb: usb@40200000 { + compatible = "snps,dwc2"; + reg = <0x0 0x40200000 0x0 0x1000>; + interrupts = ; + clocks = <&clk USBD_GATE>; + clock-names = "otg"; + phys = <&usb_phy 0>; + phy-names = "usb2-phy"; + dr_mode = "peripheral"; + g-np-tx-fifo-size = <16>; + g-rx-fifo-size = <0x100>; + g-tx-fifo-size = <256 256 64 64 64 32 32 32>; + status = "disabled"; + }; + + ehci0: usb@40140000 { + compatible = "generic-ehci"; + reg = <0x0 0x40140000 0x0 0x1000>; + interrupts = ; + clocks = <&clk HUSBH0_GATE>; + phys = <&usb_phy 0>; + phy-names = "usb"; + companion = <&ohci0>; + status = "disabled"; + }; + + ehci1: usb@401c0000 { + compatible = "generic-ehci"; + reg = <0x0 0x401c0000 0x0 0x1000>; + interrupts = ; + clocks = <&clk HUSBH1_GATE>; + phys = <&usb_phy 1>; + phy-names = "usb"; + companion = <&ohci1>; + status = "disabled"; + }; + + ohci0: usb@40150000 { + compatible = "generic-ohci"; + reg = <0x0 0x40150000 0x0 0x1000>; + interrupts = ; + clocks = <&clk HUSBH0_GATE>; + phys = <&usb_phy 0>; + phy-names = "usb"; + status = "disabled"; + }; + + ohci1: usb@401d0000 { + compatible = "generic-ohci"; + reg = <0x0 0x401d0000 0x0 0x1000>; + interrupts = ; + clocks = <&clk HUSBH1_GATE>; + phys = <&usb_phy 1>; + phy-names = "usb"; + status = "disabled"; + }; }; }; -- 2.43.0