Re: [PATCH net-next v3 1/2] dt-bindings: net: pse-pd: Add bindings for LTC4266 PSE Controller

From: Kory Maincent

Date: Tue Oct 13 2026 - 15:23:30 EST




On 10/10/26 09:30, Kyle Swenson wrote:
Hello Rob,

On Wed, Oct 07, 2026 at 04:04:54PM -0500, Rob Herring wrote:
On Sun, Sep 27, 2026 at 09:29:48PM +0000, Kyle Swenson wrote:
Add the LTC4266 Power Sourcing Equipment controller device tree bindings
documentation.

Signed-off-by: Kyle Swenson <kyle.swenson@xxxxxxxx>
---
.../bindings/net/pse-pd/lltc,ltc4266.yaml | 180 ++++++++++++++++++
1 file changed, 180 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.yaml

diff --git a/Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.yaml b/Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.yaml
new file mode 100644
index 000000000000..e11c9d601eee
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.yaml
@@ -0,0 +1,180 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/pse-pd/lltc,ltc4266.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Linear Technology LTC4266 Power Sourcing Equipment controller
+
+maintainers:
+ - Kyle Swenson <kyle.swenson@xxxxxxxx>
+
+allOf:
+ - $ref: pse-controller.yaml#
+
+properties:
+ compatible:
+ enum:
+ - lltc,ltc4266
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ channels:
+ type: object
+ additionalProperties: false
+ description:
+ Defines the 4 physical delivery channels on the controller that can be
+ referenced by PSE PIs through their "pairsets" property. The actual port
+ matrix mapping is created when PSE PIs reference these channels in their
+ pairsets.
+
+ properties:
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+ patternProperties:
+ '^channel@[0-3]$':
+ type: object
+ additionalProperties: false
+
+ properties:
+ reg:
+ maxItems: 1
+
+ sense-resistor-micro-ohms:
+ description: Sense resistor connected to the channel's MOSFET, used
+ for current measurement and for overcurrent detection. The I_CUT
+ and I_LIM register encodings depend on which value is fitted, so
+ a wrong value programs the wrong thresholds.
+ enum: [250000, 500000]
+
+ required:
+ - reg
+ - sense-resistor-micro-ohms
+
+ required:
+ - '#address-cells'
+ - '#size-cells'
+
+ pse-pis:
+ type: object
+ additionalProperties: false
+
+ properties:
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+ patternProperties:
+ '^pse-pi@[0-3]$':
+ type: object
+ additionalProperties: true

This cannot be true. That allows adding any property.


So my intent with the additionalProperties: true was to avoid
replicating the entire pse-pis node from pse-controller.yaml.
Conceptually, my goal was to inherit everything from the
pse-controller.yaml binding, except limit the maxItems to 1 (since the
LTC4266 only supports power over a single PI).

Is there a better way to express this?

I think you can do something like this:
patternProperties:
'^pse-pi@[0-3]$':
type: object
$ref: pse-controller.yaml#/properties/pse-pis/patternProperties/^pse-pi@[0-9a-f]+$
unevaluatedProperties: false
properties:
pairsets:
description: The LTC4266 delivers power to a PI over a single
pairset, driven by one of the controller's four channels. There
is no 4-pair mode spreading a PI over two channels, so exactly
one channel phandle is expected.
maxItems: 1
pairset-names:
maxItems: 1

+ properties:
+ pairsets:
+ description: The LTC4266 delivers power to a PI over a single
+ pairset, driven by one of the controller's four channels. There
+ is no 4-pair mode spreading a PI over two channels, so exactly
+ one channel phandle is expected.
+ maxItems: 1
+ pairset-names:
+ maxItems: 1

An empty node is valid? Needs 'required'.

I thought the 'required' comes from the pse-controller.yaml binding.
If I adjust the example dts in the binding with something like

pse_pi2: pse-pi@2 {
- reg = <2>;
- #pse-cells = <0>;
- pairset-names = "alternative-a";
- pairsets = <&phys2>;
- polarity-supported = "MDI";
- vpwr-supply = <&vreg_pse>;
};

Then make dt_binding_check will fail with

DTEX Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.example.dts
DTC [C] Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.example.dtb
Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.example.dts:83.33-84.17: Warning (unit_address_vs_reg): /example-0/i2c/ethernet-pse@2f/pse-pis/pse-pi@2: node has a unit name, but no reg or ranges property
Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.example.dtb: ethernet-pse@2f (lltc,ltc4266): pse-pis:pse-pi@2: 'reg' is a required property
from schema $id: http://devicetree.org/schemas/net/pse-pd/lltc,ltc4266.yaml
Documentation/devicetree/bindings/net/pse-pd/lltc,ltc4266.example.dtb: ethernet-pse@2f (lltc,ltc4266): pse-pis:pse-pi@2: '#pse-cells' is a required property
from schema $id:
http://devicetree.org/schemas/net/pse-pd/lltc,ltc4266.yaml

But I'm probably missing something obvious, so please don't hesitate to
point it out or point me to docs.
You are right on this, it should not be needed.

Regards,
--
Köry Maincent, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com