Re: [PATCH net-next 08/12] dt-bindings: net: toshiba,tc965x-dwmac: add TC956x Ethernet bridge

From: Alex Elder

Date: Mon May 04 2026 - 09:35:23 EST


On 5/4/26 6:00 AM, Krzysztof Kozlowski wrote:
On Fri, May 01, 2026 at 10:54:16AM -0500, Alex Elder wrote:
From: Daniel Thompson <daniel@xxxxxxxxxxxx>

Add devicetree bindings for the Toshiba TC956x family of Ethernet-AVB/TSN
bridges.

Signed-off-by: Daniel Thompson <daniel@xxxxxxxxxxxx>
Signed-off-by: Alex Elder <elder@xxxxxxxxxxxx>
---
.../bindings/net/toshiba,tc956x-dwmac.yaml | 111 ++++++++++++++++++
1 file changed, 111 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/toshiba,tc956x-dwmac.yaml

diff --git a/Documentation/devicetree/bindings/net/toshiba,tc956x-dwmac.yaml b/Documentation/devicetree/bindings/net/toshiba,tc956x-dwmac.yaml
new file mode 100644
index 0000000000000..d95d22a3761da
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/toshiba,tc956x-dwmac.yaml
@@ -0,0 +1,111 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/toshiba,tc956x-dwmac.yaml#

Filename and here: toshiba,tc9564-dwmac
(s/x/4/)


+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Toshiba TC956x Ethernet-AVB/TSN Controller
+
+maintainers:
+ - Alex Elder <elder@xxxxxxxxxxxx>
+ - Daniel Thompson <daniel@xxxxxxxxxxxx>
+
+description: |
+ This node provides properties for configuring the Ethernet PCI functions
+ that are attached to the internal downstream port of the TC956x's PCIe
+ switch.

Describe rather the hardware directly, not the DTS or the binding
itself.

Just say what is the hardware, what is consists of, what is less
obvious or usual (if there is such).

I understand what you're saying. We will reword this to focus
on the hardware in version 2.


+
+ TC956x are a family of Ethernet-AVB/TSN bridge chips that combine a PCIe
+ switch together with a number of Ethernet controllers. These bindings
+ cover only the Ethernet functions of these devices.

What about the rest of the hardware - a PCIe switch? Shouldn't it be
described?

It maybe should, just to provide a more complete picture. It's
a little strange, because the PCIe switch support (or at least
its power controller) was already upstreamed:

https://lore.kernel.org/all/20251101-tc9563-v9-0-de3429f7787a@xxxxxxxxxxxxxxxx/

That introduced DeviceTree bindings for a PCI device, which is
itself sort of spanning two worlds of discoverability.

That code focused on the *switch*. This series is focused on
the *Ethernet interfaces*. But the "chip" has several other
components, some of which (GPIO anyway, for now) also need to
be modeled.

I want to talk more with Daniel about this but either way we
will revisit this and will attempt to describe the hardware in
a more complete way when we send out v2.

+
+allOf:
+ - $ref: /schemas/pci/pci-bus-common.yaml#
+ - $ref: /schemas/pci/pci-device.yaml#
+
+unevaluatedProperties: false

Place both (allOf+unevaluatedProperties) after "required:".

OK.


+
+properties:
+ compatible:
+ enum:
+ - pci1179,0220 # Toshiba TC9564 (a.k.a. Qualcomm QPS615)
+
+ "#gpio-cells":
+ const: 2
+
+ gpio-controller: true
+
+ # We can't allOf reference Ethernet-controller.yaml because we end up with

s/Ethernet-controller.yaml/ethernet-controller.yaml/

OK.


+ # contradictory $nodename rules (`ethernet@` versus `pci@`). Happily only a

But which schema requires pci@ for devices? If I am not mistaken, only
dtschema/schemas/pci/pci-bus-common.yaml requires it, and it does not
apply to actual PCI device.

We'll revisit this and will simplify/clarify if possible in v2.

+ # small number of the properties are useful on TC956x so we can just reference
+ # what we need.
+ phy-connection-type:
+ $ref: ethernet-controller.yaml#/properties/phy-connection-type
+
+ phy-handle:
+ $ref: ethernet-controller.yaml#/properties/phy-handle
+
+ phy-mode:
+ $ref: ethernet-controller.yaml#/properties/phy-mode
+
+ mdio:
+ $ref: snps,dwmac.yaml#/properties/mdio
+
+required:
+ - compatible
+ - reg
+
+examples:
+ - |
+ pcie {
+ #address-cells = <3>;
+ #size-cells = <2>;
+
+ tc956x_emac0: pci@0,0 {
+ compatible = "pci1179,0220";
+ reg = <0x50000 0x0 0x0 0x0 0x0>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ device_type = "pci";
+ ranges;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ phy-mode = "10gbase-r";
+ phy-handle = <&tc956x_emac0_phy>;
+
+ mdio {
+ compatible = "snps,dwmac-mdio";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ tc956x_emac0_phy: ethernet-phy@1c {
+ compatible = "ethernet-phy-id311c.1c12";
+ reg = <0x1c>;
+ };
+ };
+ };

Keep only one example, unless you have different properties (not their
values, but their presence),

OK. Thanks a lot for your review Krzysztof.

-Alex


Best regards,
Krzysztof