Skip to contentSkip to conversation

Add Google Tensor SoC USB controller support

PATCH Superseded Roy Luo 5 participants 16 messages Dec 5, 2025 – Dec 18, 2025

Subsystems (5)

v9 of 10 Superseded Latest is v10 →

lore
Share & tools
lore

Roy Luo

author
#0 lore raw

v9 cover Add Google Tensor SoC USB controller support

This series introduces USB controller support for the Google Tensor G5 SoC (codename: Laguna), a new generation of Google silicon first launched with Pixel 10 devices.

The Tensor G5 represents a significant architectural overhaul compared to previous Tensor generations (e.g., gs101), which were based on Samsung Exynos IP. Although the G5 still utilizes Synopsys IP for the USB components, the custom top-level integration introduces a completely new design for clock, reset scheme, register interfaces and programming sequence, necessitating new drivers and device tree bindings.

The USB subsystem on Tensor G5 integrates a Synopsys DWC3 USB 3.1 DRD-Single Port controller with hibernation support, and a custom PHY block comprising Synopsys eUSB2 and USB 3.2/DP combo PHYs. The PHY support is sent as a separate patch series.

---
Changes in v9:
- Update the Kconfig dependency to depends on ARCH_GOOGLE || COMPILE_TEST Note that ARCH_GOOGLE does not exist yet but will eventually
be there when the following patch lands
https://lore.kernel.org/r/20251111112158.3.I35b9e835ac49ab408e5ca3e0983930a1f1395814@changeid/
- Mention SoC codename Laguna in Kconfig description.
- Sort the header alphabetically.
- Add driver and binding files to the Tensor SoC MAINTAINER entry.
Link to v8: https://lore.kernel.org/r/[email protected]

Changes in v8:
- Add COMPILE_TEST to dependencies for build coverage.
- Drop redundant default n in Kconfig.
- Update Kconfig help text to explicitly state the module name.
- Use container_of_const() in the to_dwc3_google() macro for type safety. Link to v7: https://lore.kernel.org/linux-usb/[email protected]

Changes in v7:
- Follow driver naming convention and rename the driver as "dwc3-google". Link to v6: https://lore.kernel.org/linux-usb/[email protected]

Changes in v6:
- Use "lga" as SoC name instead of "gs5" to align with Tensor G5 device tree https://lore.kernel.org/lkml/[email protected]
Link to v5: https://lore.kernel.org/linux-usb/[email protected]

Changes in v5:
- Use syscon to access host_cfg and usbint_cfg MMIO space per
discussion in https://lore.kernel.org/linux-phy/[email protected]
- Make warn logs in dwc3_google_resume_irq() dev_dbg.
Link to v4: https://lore.kernel.org/linux-usb/[email protected]

Changes in v4:
- Separate controller and phy changes into two distinct patch series.
- Rename dwc3 core interrupt as "core".
- Remove u2phy_apb clk/reset (moved to PHY)
- Configure usb2only mode when usb3 phy is not present.
- Adopt pm_ptr PM macros to fix build warnings.
Link to v3: https://lore.kernel.org/linux-usb/[email protected]

Changes in v3:
- Align binding file name with the compatible string
- Simplify the compatible property in binding to a single const value.
- Add descriptive comments and use item list in binding.
- Rename binding entries for clarity and brevity.
Link to v2: https://lore.kernel.org/linux-usb/[email protected]

Changes in v2:
- Reorder patches to present bindings first.
- Update dt binding compatible strings to be SoC-specific (google,gs5-*).
- Better describe the hardware in dt binding commit messages and descriptions.
- Adjust PHY driver commit subjects to use correct prefixes ("phy:").
- Move PHY driver from a subdirectory to drivers/phy/.
Link to v1: https://lore.kernel.org/linux-usb/[email protected]/

---
Roy Luo (2):
dt-bindings: usb: dwc3: Add Google Tensor G5 DWC3
usb: dwc3: Add Google Tensor SoC DWC3 glue driver

 .../devicetree/bindings/usb/google,lga-dwc3.yaml   | 140 +++++
 MAINTAINERS                                        |   2 +
 drivers/usb/dwc3/Kconfig                           |  12 +
 drivers/usb/dwc3/Makefile                          |   1 +
 drivers/usb/dwc3/dwc3-google.c                     | 628 +++++++++++++++++++++
 5 files changed, 783 insertions(+)

---
base-commit: 43dfc13ca972988e620a6edb72956981b75ab6b0
change-id: 20251122-controller-129b0dd57a74

Best regards,

Signature · 1 line
Roy Luo <[email protected]>
author
#1 lore raw

PATCH v9 1/2 dt-bindings: usb: dwc3: Add Google Tensor G5 DWC3

Document the device tree bindings for the DWC3 USB controller found in Google Tensor SoCs, starting with the G5 generation (codename: laguna).

The Tensor G5 silicon represents a complete architectural departure from previous generations (like gs101), including entirely new clock/reset schemes, top-level wrapper and register interface. Consequently, existing Samsung/Exynos DWC3 USB bindings are incompatible, necessitating this new device tree binding.

The USB controller on Tensor G5 is based on Synopsys DWC3 IP and features Dual-Role Device single port with hibernation support.

---
 .../devicetree/bindings/usb/google,lga-dwc3.yaml   | 140 +++++++++++++++++++++
 MAINTAINERS                                        |   1 +
 2 files changed, 141 insertions(+)
Documentation/devicetree/bindings/usb/google,lga-dwc3.yaml new file +140 -0
new file mode 100644
index 0000000000000000000000000000000000000000..95be84c843f5da0e80ef5ef1ac9193019b5eb2a0
@@ -0,0 +1,140 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright (c) 2025, Google LLC
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/google,lga-dwc3.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Google Tensor Series G5 (Laguna) DWC3 USB SoC Controller
+
+maintainers:
+  - Roy Luo <[email protected]>
+
+description:
+  Describes the DWC3 USB controller block implemented on Google Tensor SoCs,
+  starting with the G5 generation (laguna). Based on Synopsys DWC3 IP, the
+  controller features Dual-Role Device single port with hibernation add-on.
+
+properties:
+  compatible:
+    const: google,lga-dwc3
+
+  reg:
+    items:
+      - description: Core DWC3 IP registers.
+
+  interrupts:
+    items:
+      - description: Core DWC3 interrupt.
+      - description: High speed power management event for remote wakeup.
+      - description: Super speed power management event for remote wakeup.
+
+  interrupt-names:
+    items:
+      - const: core
+      - const: hs_pme
+      - const: ss_pme
+
+  clocks:
+    items:
+      - description: Non-sticky module clock.
+      - description: Sticky module clock.
+
+  clock-names:
+    items:
+      - const: non_sticky
+      - const: sticky
+
+  resets:
+    items:
+      - description: Non-sticky module reset.
+      - description: Sticky module reset.
+      - description: DRD bus reset.
+      - description: Top-level reset.
+
+  reset-names:
+    items:
+      - const: non_sticky
+      - const: sticky
+      - const: drd_bus
+      - const: top
+
+  power-domains:
+    items:
+      - description: Power switchable domain, the child of top domain.
+          Turning it on puts the controller into full power state,
+          turning it off puts the controller into power gated state.
+      - description: Top domain, the parent of power switchable domain.
+          Turning it on puts the controller into power gated state,
+          turning it off completely shuts off the controller.
+
+  power-domain-names:
+    items:
+      - const: psw
+      - const: top
+
+  iommus:
+    maxItems: 1
+
+  google,usb-cfg-csr:
+    description:
+      A phandle to a syscon node used to access the USB configuration
+      registers. These registers are the top-level wrapper of the USB
+      subsystem and provide control and status for the integrated USB
+      controller and USB PHY.
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - items:
+          - description: phandle to the syscon node.
+          - description: USB host controller configuration register offset.
+          - description: USB custom interrrupts control register offset.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+  - power-domains
+  - power-domain-names
+  - google,usb-cfg-csr
+
+allOf:
+  - $ref: snps,dwc3-common.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        usb@c400000 {
+            compatible = "google,lga-dwc3";
+            reg = <0 0x0c400000  0 0xd060>;
+            interrupts = <GIC_SPI 580 IRQ_TYPE_LEVEL_HIGH 0>,
+                         <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH 0>,
+                         <GIC_SPI 598 IRQ_TYPE_LEVEL_HIGH 0>;
+            interrupt-names = "core", "hs_pme", "ss_pme";
+            clocks = <&hsion_usbc_non_sticky_clk>,  <&hsion_usbc_sticky_clk>;
+            clock-names = "non_sticky", "sticky";
+            resets = <&hsion_resets_usbc_non_sticky>, <&hsion_resets_usbc_sticky>,
+                     <&hsion_resets_usb_drd_bus>, <&hsion_resets_usb_top>;
+            reset-names = "non_sticky", "sticky", "drd_bus", "top";
+            power-domains = <&hsio_n_usb_psw>, <&hsio_n_usb>;
+            power-domain-names = "psw", "top";
+            phys = <&usb_phy 0>;
+            phy-names = "usb2-phy";
+            snps,quirk-frame-length-adjustment = <0x20>;
+            snps,gfladj-refclk-lpm-sel-quirk;
+            snps,incr-burst-type-adjustment = <4>;
+            google,usb-cfg-csr = <&usb_cfg_csr 0x0 0x20>;
+        };
+    };
+...
MAINTAINERS +1 -0
index 772af0072fff0921000c6fe27c018666c1579e48..61f5768b31ae31cd72f4c2a3b74398f9473e192b 100644
@@ -10662,6 +10662,7 @@ P:	Documentation/process/maintainer-soc-clean-dts.rst
 C:	irc://irc.oftc.net/pixel6-kernel-dev
 F:	Documentation/devicetree/bindings/clock/google,gs101-clock.yaml
 F:	Documentation/devicetree/bindings/soc/google/google,gs101-pmu-intr-gen.yaml
+F:	Documentation/devicetree/bindings/usb/google,lga-dwc3.yaml
 F:	arch/arm64/boot/dts/exynos/google/
 F:	drivers/clk/samsung/clk-gs101.c
 F:	drivers/phy/samsung/phy-gs101-ufs.c
Signature · 1 line
2.52.0.223.gf5cc29aaa4-goog
#2 lore raw

Re: [PATCH v9 1/2] dt-bindings: usb: dwc3: Add Google Tensor G5 DWC3

Quoted 9 lines · Roy Luo

Document the device tree bindings for the DWC3 USB controller found in Google Tensor SoCs, starting with the G5 generation (codename: laguna).

The Tensor G5 silicon represents a complete architectural departure from previous generations (like gs101), including entirely new clock/reset schemes, top-level wrapper and register interface. Consequently, existing Samsung/Exynos DWC3 USB bindings are incompatible, necessitating this new device tree binding.

Quoted 9 lines

The USB controller on Tensor G5 is based on Synopsys DWC3 IP and features Dual-Role Device single port with hibernation support.

---
 .../devicetree/bindings/usb/google,lga-dwc3.yaml   | 140 +++++++++++++++++++++
 MAINTAINERS                                        |   1 +
 2 files changed, 141 insertions(+)

Nothing explains reason to ignore review. I am not doing same work twice, please respect maintainers' time.

<form letter>
This is a friendly reminder during the review process.

It looks like you received a tag and forgot to add it.

If you do not know the process, here is a short explanation:
Please add Acked-by/Reviewed-by/Tested-by tags when posting new versions of patchset, under or above your Signed-off-by tag, unless patch changed significantly (e.g. new properties added to the DT bindings). Tag is "received", when provided in a message replied to you on the mailing list. Tools like b4 can help here. However, there's no need to repost patches *only* to add the tags. The upstream maintainer will do that for tags received on the version they apply.

Please read:
https://elixir.bootlin.com/linux/v6.12-rc3/source/Documentation/process/submitting-patches.rst#L577

If a tag was not added on purpose, please state why and what changed. </form letter>

Best regards,
Krzysztof

maintainer Reviewed-by on v9 1/2
#3 lore raw

Re: [PATCH v9 1/2] dt-bindings: usb: dwc3: Add Google Tensor G5 DWC3

In reply to Roy Luo
Quoted 9 lines · Roy Luo

Document the device tree bindings for the DWC3 USB controller found in Google Tensor SoCs, starting with the G5 generation (codename: laguna).

The Tensor G5 silicon represents a complete architectural departure from previous generations (like gs101), including entirely new clock/reset schemes, top-level wrapper and register interface. Consequently, existing Samsung/Exynos DWC3 USB bindings are incompatible, necessitating this new device tree binding.

Quoted 8 lines

The USB controller on Tensor G5 is based on Synopsys DWC3 IP and features Dual-Role Device single port with hibernation support.

---
 .../devicetree/bindings/usb/google,lga-dwc3.yaml   | 140 +++++++++++++++++++++
 MAINTAINERS                                        |   1 +
 2 files changed, 141 insertions(+)

Best regards,
Krzysztof

author
#4 lore raw

PATCH v9 2/2 usb: dwc3: Add Google Tensor SoC DWC3 glue driver

In reply to Roy Luo

Add support for the DWC3 USB controller found on Google Tensor G5 (codename: laguna). The controller features dual-role functionality and hibernation.

The primary focus is implementing hibernation support in host mode, enabling the controller to enter a low-power state (D3). This is particularly relevant during system power state transition and runtime power management for power efficiency. Highlights:
- Align suspend callback with dwc3_suspend_common() for deciding between a full teardown and hibernation in host mode.
- Integration with psw (power switchable) and top power domains, managing their states and device links to support hibernation.
- A notifier callback dwc3_google_usb_psw_pd_notifier() for psw power domain events to manage controller state transitions to/from D3.
- Coordination of the non_sticky reset during power state transitions, asserting it on D3 entry and deasserting on D0 entry in hibernation scenario.
- Handling of high-speed and super-speed PME interrupts that are generated by remote wakeup during hibernation.

---
 MAINTAINERS                    |   1 +
 drivers/usb/dwc3/Kconfig       |  12 +
 drivers/usb/dwc3/Makefile      |   1 +
 drivers/usb/dwc3/dwc3-google.c | 628 +++++++++++++++++++++++++++++++++++++++++
 4 files changed, 642 insertions(+)
MAINTAINERS +1 -0
index 61f5768b31ae31cd72f4c2a3b74398f9473e192b..0659847b980128801b63014de96294c07abca3a0 100644
@@ -10666,6 +10666,7 @@ F:	Documentation/devicetree/bindings/usb/google,lga-dwc3.yaml
 F:	arch/arm64/boot/dts/exynos/google/
 F:	drivers/clk/samsung/clk-gs101.c
 F:	drivers/phy/samsung/phy-gs101-ufs.c
+F:	drivers/usb/dwc3/dwc3-google.c
 F:	include/dt-bindings/clock/google,gs101.h
 K:	[gG]oogle.?[tT]ensor
 
drivers/usb/dwc3/Kconfig +12 -0
index 4925d15084f816d3ff92059b476ebcc799b56b51..05e4b7e1d98b1c03c8887c50dfff7e39d365f2a3 100644
@@ -200,4 +200,16 @@ config USB_DWC3_GENERIC_PLAT
 	  the dwc3 child node in the device tree.
 	  Say 'Y' or 'M' here if your platform integrates DWC3 in a similar way.
 
+config USB_DWC3_GOOGLE
+	tristate "Google Platform"
+	depends on ARCH_GOOGLE || COMPILE_TEST
+	help
+	  Support the DesignWare Core USB3 IP found on Google Tensor SoCs,
+	  starting with the G5 generation (Laguna). This driver includes
+	  support for hibernation in host mode.
+	  Say 'Y' or 'M' if you have one such device.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called dwc3-google.ko.
+
 endif
drivers/usb/dwc3/Makefile +1 -0
index 96469e48ff9d189cc8d0b65e65424eae2158bcfe..cf1cd408d938b3ac26d58b9be7fcc5af3ee82660 100644
@@ -58,3 +58,4 @@ obj-$(CONFIG_USB_DWC3_XILINX)		+= dwc3-xilinx.o
 obj-$(CONFIG_USB_DWC3_OCTEON)		+= dwc3-octeon.o
 obj-$(CONFIG_USB_DWC3_RTK)		+= dwc3-rtk.o
 obj-$(CONFIG_USB_DWC3_GENERIC_PLAT)	+= dwc3-generic-plat.o
+obj-$(CONFIG_USB_DWC3_GOOGLE)		+= dwc3-google.o
drivers/usb/dwc3/dwc3-google.c new file +628 -0

628 lines not on this page · raw message

Signature · 1 line
2.52.0.223.gf5cc29aaa4-goog
#5 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+	tristate "Google Platform"
+	depends on ARCH_GOOGLE || COMPILE_TEST

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

author
#6 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Quoted 6 lines · Greg Kroah-Hartman

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.
- Defer the whole patch series until ARCH_GOOGLE is present (I hope not).

[1] https://docs.kernel.org/kbuild/kconfig-language.html#menu-dependencies
[2] https://www.kernel.org/doc/Documentation/kbuild/kconfig.rst

Regards,
Roy Luo

maintainer
#7 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Quoted 48 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.
- Defer the whole patch series until ARCH_GOOGLE is present (I hope not).

Quoted 3 lines

[1] https://urldefense.com/v3/__https://docs.kernel.org/kbuild/kconfig-language.html*menu-dependencies__;Iw!!A4F2R9G_pg!e-y2_BsSNhXF1v5K6tBJX-OabgKJM9WVdvwyKoB6tg9ooCLVg8WiQ4UrStOF2YZQ_Zs6tC6HVh7wCpqkEfU$
[2] https://urldefense.com/v3/__https://www.kernel.org/doc/Documentation/kbuild/kconfig.rst__;!!A4F2R9G_pg!e-y2_BsSNhXF1v5K6tBJX-OabgKJM9WVdvwyKoB6tg9ooCLVg8WiQ4UrStOF2YZQ_Zs6tC6HVh7wHpoUlhY$

Hi Greg, Roy,

Just checking, are we aligned here?

BR,
Thinh

author
#8 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Quoted 54 lines · Thinh Nguyen
Quoted 48 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.
- Defer the whole patch series until ARCH_GOOGLE is present (I hope not).

Quoted 3 lines

[1] https://urldefense.com/v3/__https://docs.kernel.org/kbuild/kconfig-language.html*menu-dependencies__;Iw!!A4F2R9G_pg!e-y2_BsSNhXF1v5K6tBJX-OabgKJM9WVdvwyKoB6tg9ooCLVg8WiQ4UrStOF2YZQ_Zs6tC6HVh7wCpqkEfU$
[2] https://urldefense.com/v3/__https://www.kernel.org/doc/Documentation/kbuild/kconfig.rst__;!!A4F2R9G_pg!e-y2_BsSNhXF1v5K6tBJX-OabgKJM9WVdvwyKoB6tg9ooCLVg8WiQ4UrStOF2YZQ_Zs6tC6HVh7wHpoUlhY$

Quoted 6 lines

Hi Greg, Roy,

Just checking, are we aligned here?

BR,
Thinh

Thinh,

Thanks for checking in. I'm still waiting on Greg's reply regarding the Kconfig question.

BTW, I silently dropped your Ack-by tag in v8 due to the changes in Kconfig and MAINTAINERS files, which I should've noted in the changelog but I didn't. Sorry for the inconvenience. Could you please review the current version again and provide your tag if it looks good?

Regards,
Roy

#9 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

In reply to Roy Luo
Quoted 39 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

Quoted 6 lines

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.

Please do this. I do not want to take patches that purposfully add dependencies on config options that might, or might not, appear in the future. Please just remove all of the dependancies for now, as they are not needed, right?

thanks,

greg k-h

author
#10 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Quoted 48 lines · Greg Kroah-Hartman
Quoted 39 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

Quoted 6 lines

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.

Quoted 8 lines

Please do this. I do not want to take patches that purposfully add dependencies on config options that might, or might not, appear in the future. Please just remove all of the dependancies for now, as they are not needed, right?

thanks,

greg k-h

Greg,

Yes, we can remove ARCH_GOOGLE for now.
To clarify, we're not removing all of the dependencies, we still want to keep COMPILE_TEST for build tests, right?
Please let me know if you think otherwise.

Thanks,
Roy

#11 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Hi,

Quoted 58 lines · Roy Luo
Quoted 55 lines · Greg Kroah-Hartman
Quoted 39 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

Quoted 6 lines

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.

Please do this. I do not want to take patches that purposfully add dependencies on config options that might, or might not, appear in the future. Please just remove all of the dependancies for now, as they are not needed, right?

thanks,

Quoted 8 lines
Quoted 1 line

greg k-h

Greg,

Yes, we can remove ARCH_GOOGLE for now.
To clarify, we're not removing all of the dependencies, we still want to keep COMPILE_TEST for build tests, right?
Please let me know if you think otherwise.

I think you'd just remove all of them. Normally COMPILE_TEST just allows folks to compile stuff even when they don't want the ARCH. We can can add ARCH_GOOGLE back in later once the config exists.

-Doug

author
#12 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Quoted 71 lines · Doug Anderson

Hi,

Quoted 58 lines · Roy Luo
Quoted 55 lines · Greg Kroah-Hartman
Quoted 39 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

drivers/usb/dwc3/Kconfig config USB_DWC3_GENERIC_PLAT · line 205

Quoted 3 lines · Roy Luo
drivers/usb/dwc3/Kconfig +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

Quoted 6 lines

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.

Please do this. I do not want to take patches that purposfully add dependencies on config options that might, or might not, appear in the future. Please just remove all of the dependancies for now, as they are not needed, right?

thanks,

Quoted 8 lines
Quoted 1 line

greg k-h

Greg,

Yes, we can remove ARCH_GOOGLE for now.
To clarify, we're not removing all of the dependencies, we still want to keep COMPILE_TEST for build tests, right?
Please let me know if you think otherwise.

Quoted 5 lines

I think you'd just remove all of them. Normally COMPILE_TEST just allows folks to compile stuff even when they don't want the ARCH. We can can add ARCH_GOOGLE back in later once the config exists.

-Doug

Doug,

Thanks for chiming in. I'm hesitant to remove COMPILE_TEST because Greg specifically requested its inclusion in v7 [1]. Also it seems beneficial to get some build coverage before ARCH_GOOGLE is officially added to the tree.
Greg, could you clarify?

[1] https://lore.kernel.org/linux-usb/2025112144-claw-recolor-49c3@gregkh/

Thanks,
Roy

#13 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Quoted 78 lines · Roy Luo
Quoted 71 lines · Doug Anderson

Hi,

Quoted 58 lines · Roy Luo
Quoted 55 lines · Greg Kroah-Hartman
Quoted 39 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

Review

Quoted 3 lines · Roy Luo
(quoted diff) +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

Quoted 6 lines

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.

Please do this. I do not want to take patches that purposfully add dependencies on config options that might, or might not, appear in the future. Please just remove all of the dependancies for now, as they are not needed, right?

thanks,

Quoted 8 lines
Quoted 1 line

greg k-h

Greg,

Yes, we can remove ARCH_GOOGLE for now.
To clarify, we're not removing all of the dependencies, we still want to keep COMPILE_TEST for build tests, right?
Please let me know if you think otherwise.

Quoted 5 lines

I think you'd just remove all of them. Normally COMPILE_TEST just allows folks to compile stuff even when they don't want the ARCH. We can can add ARCH_GOOGLE back in later once the config exists.

-Doug

Quoted 7 lines

Doug,

Thanks for chiming in. I'm hesitant to remove COMPILE_TEST because Greg specifically requested its inclusion in v7 [1]. Also it seems beneficial to get some build coverage before ARCH_GOOGLE is officially added to the tree.
Greg, could you clarify?

I wanted it in because it would not build without it on a non "google" system. But now, as that option isn't there, just don't have any dependency, as it's obviously not needed.

thanks,

greg k-h

#14 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

In reply to Roy Luo
Quoted 76 lines · Roy Luo
Quoted 75 lines · Doug Anderson

Hi,

Quoted 58 lines · Roy Luo
Quoted 55 lines · Greg Kroah-Hartman
Quoted 39 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

Review

Quoted 3 lines · Roy Luo
(quoted diff) +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

Quoted 6 lines

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.

Please do this. I do not want to take patches that purposfully add dependencies on config options that might, or might not, appear in the future. Please just remove all of the dependancies for now, as they are not needed, right?

thanks,

Quoted 8 lines
Quoted 1 line

greg k-h

Greg,

Yes, we can remove ARCH_GOOGLE for now.
To clarify, we're not removing all of the dependencies, we still want to keep COMPILE_TEST for build tests, right?
Please let me know if you think otherwise.

I think you'd just remove all of them. Normally COMPILE_TEST just allows folks to compile stuff even when they don't want the ARCH. We can can add ARCH_GOOGLE back in later once the config exists.

Quoted 6 lines
Quoted 1 line

-Doug

Doug,

Thanks for chiming in. I'm hesitant to remove COMPILE_TEST because Greg specifically requested its inclusion in v7 [1].

What? No, that's not what Greg requested. Your COMPILE_TEST in current form helps nothing in build testing. It makes absolutely no sense at all.

Quoted 2 lines

Also it seems beneficial to get some build coverage before ARCH_GOOGLE is officially added to the tree.

And COMPILE_TEST like you wrote it does not give you that. Please first read how this function works.

Quoted 1 line

Greg, could you clarify?

Can you first look at Linux kernel sources to see how this is properly written?

Quoted 5 lines

[1] https://lore.kernel.org/linux-usb/2025112144-claw-recolor-49c3@gregkh/

Thanks,
Roy

Best regards,
Krzysztof

author
#15 lore raw

Re: [PATCH v9 2/2] usb: dwc3: Add Google Tensor SoC DWC3 glue driver

Quoted 101 lines · Krzysztof Kozlowski
Quoted 76 lines · Roy Luo
Quoted 75 lines · Doug Anderson

Hi,

Quoted 58 lines · Roy Luo
Quoted 55 lines · Greg Kroah-Hartman
Quoted 39 lines · Roy Luo
Quoted 6 lines · Greg Kroah-Hartman

Review

Quoted 3 lines · Roy Luo
(quoted diff) +3 -0
+config USB_DWC3_GOOGLE
+     tristate "Google Platform"
+     depends on ARCH_GOOGLE || COMPILE_TEST
Quoted 7 lines

There is no ARCH_GOOGLE in the tree now, so how is this supposed to work? Shouldn't tools that check for "invalid config options" trigger on this?

thanks,

greg k-h

Hi Greg,

The menuconfig looks like the following and it doesn't complain:

| Symbol: ARCH_GOOGLE [=ARCH_GOOGLE]
| Type  : unknown
|
| Symbol: PHY_GOOGLE_USB [=y]
| Type  : tristate
| Defined at drivers/phy/Kconfig:104
|     Prompt: Google Tensor SoC USB PHY driver
|     Depends on: ARCH_GOOGLE || COMPILE_TEST [=y]

According to Kconfig documentation [1], the unknown symbol would simply be evaluated as an "n", which is what we want. "Convert the symbol into an expression. Boolean and tristate symbols are simply converted into the respective expression values. All other symbol types result in ‘n’."

In a different Kconfig documentation, an environment variable "KCONFIG_WARN_UNKNOWN_SYMBOLS" is there to detect undefined symbols in the "config input", but I can't find one that catches undefined symbols in the Kconfig tree itself.

Quoted 6 lines

That is, the tool seems to allow this.
However, if this turns out to be a major problem. I think we can either:
- Remove ARCH_GOOGLE and leave COMPILE_TEST as
the only dependency. Then add ARCH_GOOGLE back later once it's in the tree.

Please do this. I do not want to take patches that purposfully add dependencies on config options that might, or might not, appear in the future. Please just remove all of the dependancies for now, as they are not needed, right?

thanks,

Quoted 8 lines
Quoted 1 line

greg k-h

Greg,

Yes, we can remove ARCH_GOOGLE for now.
To clarify, we're not removing all of the dependencies, we still want to keep COMPILE_TEST for build tests, right?
Please let me know if you think otherwise.

I think you'd just remove all of them. Normally COMPILE_TEST just allows folks to compile stuff even when they don't want the ARCH. We can can add ARCH_GOOGLE back in later once the config exists.

Quoted 6 lines
Quoted 1 line

-Doug

Doug,

Thanks for chiming in. I'm hesitant to remove COMPILE_TEST because Greg specifically requested its inclusion in v7 [1].

What? No, that's not what Greg requested. Your COMPILE_TEST in current form helps nothing in build testing. It makes absolutely no sense at all.

Quoted 2 lines

Also it seems beneficial to get some build coverage before ARCH_GOOGLE is officially added to the tree.

And COMPILE_TEST like you wrote it does not give you that. Please first read how this function works.

Quoted 1 line

Greg, could you clarify?

Can you first look at Linux kernel sources to see how this is properly written?

Quoted 1 line
Quoted 8 lines
Quoted 4 lines

[1] https://lore.kernel.org/linux-usb/2025112144-claw-recolor-49c3@gregkh/

Thanks,
Roy

Best regards,
Krzysztof

Greg and Krzysztof,

Thanks for the clarification.

Regards,
Roy