diff mbox series

[RFC] dt-bindings: net: nxp,tja11xx: add compatible support

Message ID 20200504082617.11326-1-o.rempel@pengutronix.de
State Changes Requested, archived
Headers show
Series [RFC] dt-bindings: net: nxp,tja11xx: add compatible support | expand

Checks

Context Check Description
robh/checkpatch success

Commit Message

Oleksij Rempel May 4, 2020, 8:26 a.m. UTC
... and correct SPDX-License-Identifier.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
 .../devicetree/bindings/net/nxp,tja11xx.yaml  | 51 ++++++++++++-------
 1 file changed, 32 insertions(+), 19 deletions(-)

Comments

Oleksij Rempel May 4, 2020, 8:44 a.m. UTC | #1
Hi all,

here is first attempt to rework this binding. So far I have following
questions and/or issues:
- currently this PHY is identified by ID, not by compatible. Should it
  be probed by compatible?
  Theoretically I can use:
  	compatible = "nxp,tja1102", "ethernet-phy-ieee802.3-c22";

  But till now this was used only for nodes with not clear support state
  and seems to be not a welcome solution (at least till now).

- matching by node name patter seems to trigger warning by different
  (not related) bindings. What is a best practice to avoid it?

Regards,
Oleksij

On Mon, May 04, 2020 at 10:26:17AM +0200, Oleksij Rempel wrote:
> ... and correct SPDX-License-Identifier.
> 
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> ---
>  .../devicetree/bindings/net/nxp,tja11xx.yaml  | 51 ++++++++++++-------
>  1 file changed, 32 insertions(+), 19 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml b/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml
> index 42be0255512b3..e4ae8257f3258 100644
> --- a/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml
> +++ b/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml
> @@ -1,4 +1,4 @@
> -# SPDX-License-Identifier: GPL-2.0+
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>  %YAML 1.2
>  ---
>  $id: http://devicetree.org/schemas/net/nxp,tja11xx.yaml#
> @@ -14,25 +14,36 @@ maintainers:
>  description:
>    Bindings for NXP TJA11xx automotive PHYs
>  
> -allOf:
> -  - $ref: ethernet-phy.yaml#
> +properties:
> +  compatible:
> +    oneOf:
> +      - items:
> +        - enum:
> +          - nxp,tja1102
> +        - const: ethernet-phy-ieee802.3-c22
>  
> -patternProperties:
> -  "^ethernet-phy@[0-9a-f]+$":
> -    type: object
> -    description: |
> -      Some packages have multiple PHYs. Secondary PHY should be defines as
> -      subnode of the first (parent) PHY.
> +  $nodename:
> +    pattern: "^ethernet-phy(@[a-f0-9]+)?$"
>  
> -    properties:
> -      reg:
> -        minimum: 0
> -        maximum: 31
> -        description:
> -          The ID number for the child PHY. Should be +1 of parent PHY.
> +  reg:
> +    minimum: 0
> +    maximum: 31
> +    description:
> +      The ID number for the child PHY. Should be +1 of parent PHY.
>  
> -    required:
> -      - reg
> +  '#address-cells':
> +    description: number of address cells for the MDIO bus
> +    const: 1
> +
> +  '#size-cells':
> +    description: number of size cells on the MDIO bus
> +    const: 0
> +
> +required:
> +  - compatible
> +  - reg
> +  - '#address-cells'
> +  - '#size-cells'
>  
>  examples:
>    - |
> @@ -40,8 +51,9 @@ examples:
>          #address-cells = <1>;
>          #size-cells = <0>;
>  
> -        tja1101_phy0: ethernet-phy@4 {
> -            reg = <0x4>;
> +        tja1101_phy0: ethernet-phy@1 {
> +            compatible = "nxp,tja1101", "ethernet-phy-ieee802.3-c22";
> +            reg = <0x1>;
>          };
>      };
>    - |
> @@ -50,6 +62,7 @@ examples:
>          #size-cells = <0>;
>  
>          tja1102_phy0: ethernet-phy@4 {
> +            compatible = "nxp,tja1102", "ethernet-phy-ieee802.3-c22";
>              reg = <0x4>;
>              #address-cells = <1>;
>              #size-cells = <0>;
> -- 
> 2.26.2
> 
>
Andrew Lunn May 4, 2020, 1:40 p.m. UTC | #2
On Mon, May 04, 2020 at 10:44:12AM +0200, Oleksij Rempel wrote:
> Hi all,
> 
> here is first attempt to rework this binding. So far I have following
> questions and/or issues:
> - currently this PHY is identified by ID, not by compatible. Should it
>   be probed by compatible?
>   Theoretically I can use:
>   	compatible = "nxp,tja1102", "ethernet-phy-ieee802.3-c22";

Hi Oleksij

This will not work, in the current framework. PHYs probe via the ID
registers, or ethernet-phy-id0141.0e90 like compatible strings. MDIO
devices, which means devices like Ethernet switches, probe via
compatible strings. There are a few old DT blobs which do have a
compatible for the PHY, but they are white listed and ignored. See
of_mdio.c, whitelist_phys and of_mdiobus_child_is_phy().

If the DT validation code is wrongly forcing you to have a compatible,
i think your best bet is to use the ethernet-phy-id with the correct
ID values.

   Andrew
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml b/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml
index 42be0255512b3..e4ae8257f3258 100644
--- a/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml
+++ b/Documentation/devicetree/bindings/net/nxp,tja11xx.yaml
@@ -1,4 +1,4 @@ 
-# SPDX-License-Identifier: GPL-2.0+
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
 $id: http://devicetree.org/schemas/net/nxp,tja11xx.yaml#
@@ -14,25 +14,36 @@  maintainers:
 description:
   Bindings for NXP TJA11xx automotive PHYs
 
-allOf:
-  - $ref: ethernet-phy.yaml#
+properties:
+  compatible:
+    oneOf:
+      - items:
+        - enum:
+          - nxp,tja1102
+        - const: ethernet-phy-ieee802.3-c22
 
-patternProperties:
-  "^ethernet-phy@[0-9a-f]+$":
-    type: object
-    description: |
-      Some packages have multiple PHYs. Secondary PHY should be defines as
-      subnode of the first (parent) PHY.
+  $nodename:
+    pattern: "^ethernet-phy(@[a-f0-9]+)?$"
 
-    properties:
-      reg:
-        minimum: 0
-        maximum: 31
-        description:
-          The ID number for the child PHY. Should be +1 of parent PHY.
+  reg:
+    minimum: 0
+    maximum: 31
+    description:
+      The ID number for the child PHY. Should be +1 of parent PHY.
 
-    required:
-      - reg
+  '#address-cells':
+    description: number of address cells for the MDIO bus
+    const: 1
+
+  '#size-cells':
+    description: number of size cells on the MDIO bus
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - '#address-cells'
+  - '#size-cells'
 
 examples:
   - |
@@ -40,8 +51,9 @@  examples:
         #address-cells = <1>;
         #size-cells = <0>;
 
-        tja1101_phy0: ethernet-phy@4 {
-            reg = <0x4>;
+        tja1101_phy0: ethernet-phy@1 {
+            compatible = "nxp,tja1101", "ethernet-phy-ieee802.3-c22";
+            reg = <0x1>;
         };
     };
   - |
@@ -50,6 +62,7 @@  examples:
         #size-cells = <0>;
 
         tja1102_phy0: ethernet-phy@4 {
+            compatible = "nxp,tja1102", "ethernet-phy-ieee802.3-c22";
             reg = <0x4>;
             #address-cells = <1>;
             #size-cells = <0>;