Re: [PATCH v2 3/4] dt-bindings: net: qcom,ethqos: Convert bindings to yaml

From: Bhupesh Sharma
Date: Fri Sep 30 2022 - 04:12:30 EST



On 9/29/22 12:52 PM, Krzysztof Kozlowski wrote:
On 29/09/2022 08:04, Bhupesh Sharma wrote:
Convert Qualcomm ETHQOS Ethernet devicetree binding to YAML.

While at it, also add Qualcomm Ethernet ETHQOS compatible checks
in snps,dwmac YAML binding document.

There are no checks added to snps,dwmac.

Ack.


Cc: Bjorn Andersson <andersson@xxxxxxxxxx>
Cc: Rob Herring <robh@xxxxxxxxxx>
Cc: Vinod Koul <vkoul@xxxxxxxxxx>
Cc: David Miller <davem@xxxxxxxxxxxxx>
Signed-off-by: Bhupesh Sharma <bhupesh.sharma@xxxxxxxxxx>
---
.../devicetree/bindings/net/qcom,ethqos.txt | 66 --------
.../devicetree/bindings/net/qcom,ethqos.yaml | 145 ++++++++++++++++++
2 files changed, 145 insertions(+), 66 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/net/qcom,ethqos.txt
create mode 100644 Documentation/devicetree/bindings/net/qcom,ethqos.yaml

diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.txt b/Documentation/devicetree/bindings/net/qcom,ethqos.txt
deleted file mode 100644
index 1f5746849a71..000000000000
--- a/Documentation/devicetree/bindings/net/qcom,ethqos.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-Qualcomm Ethernet ETHQOS device
-
-This documents dwmmac based ethernet device which supports Gigabit
-ethernet for version v2.3.0 onwards.
-
-This device has following properties:
-
-Required properties:
-
-- compatible: Should be one of:
- "qcom,qcs404-ethqos"
- "qcom,sm8150-ethqos"
-
-- reg: Address and length of the register set for the device
-
-- reg-names: Should contain register names "stmmaceth", "rgmii"
-
-- clocks: Should contain phandle to clocks
-
-- clock-names: Should contain clock names "stmmaceth", "pclk",
- "ptp_ref", "rgmii"
-
-- interrupts: Should contain phandle to interrupts
-
-- interrupt-names: Should contain interrupt names "macirq", "eth_lpi"
-
-Rest of the properties are defined in stmmac.txt file in same directory
-
-
-Example:
-
-ethernet: ethernet@7a80000 {
- compatible = "qcom,qcs404-ethqos";
- reg = <0x07a80000 0x10000>,
- <0x07a96000 0x100>;
- reg-names = "stmmaceth", "rgmii";
- clock-names = "stmmaceth", "pclk", "ptp_ref", "rgmii";
- clocks = <&gcc GCC_ETH_AXI_CLK>,
- <&gcc GCC_ETH_SLAVE_AHB_CLK>,
- <&gcc GCC_ETH_PTP_CLK>,
- <&gcc GCC_ETH_RGMII_CLK>;
- interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "macirq", "eth_lpi";
- snps,reset-gpio = <&tlmm 60 GPIO_ACTIVE_LOW>;
- snps,reset-active-low;
-
- snps,txpbl = <8>;
- snps,rxpbl = <2>;
- snps,aal;
- snps,tso;
-
- phy-handle = <&phy1>;
- phy-mode = "rgmii";
-
- mdio {
- #address-cells = <0x1>;
- #size-cells = <0x0>;
- compatible = "snps,dwmac-mdio";
- phy1: phy@4 {
- device_type = "ethernet-phy";
- reg = <0x4>;
- };
- };
-
-};
diff --git a/Documentation/devicetree/bindings/net/qcom,ethqos.yaml b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
new file mode 100644
index 000000000000..d3d8f6799d18
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/qcom,ethqos.yaml
@@ -0,0 +1,145 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/qcom,ethqos.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Ethernet ETHQOS device
+
+maintainers:
+ - Bhupesh Sharma <bhupesh.sharma@xxxxxxxxxx>
+
+description:
+ This binding describes the dwmmac based Qualcomm ethernet devices which
+ support Gigabit ethernet (version v2.3.0 onwards).
+
+ So, this file documents platform glue layer for dwmmac stmmac based Qualcomm
+ ethernet devices.
+
+allOf:
+ - $ref: snps,dwmac.yaml#
+
+properties:
+ compatible:
+ enum:
+ - qcom,qcs404-ethqos
+ - qcom,sm8150-ethqos
+
+ reg:
+ maxItems: 2
+
+ reg-names:
+ items:
+ - const: stmmaceth
+ - const: rgmii
+
+ interrupts:
+ items:
+ - description: Combined signal for various interrupt events
+ - description: The interrupt that occurs when Rx exits the LPI state
+
+ interrupt-names:
+ items:
+ - const: macirq
+ - const: eth_lpi
+
+ clocks:
+ maxItems: 4
+
+ clock-names:
+ items:
+ - const: stmmaceth
+ - const: pclk
+ - const: ptp_ref
+ - const: rgmii
+
+ iommus:
+ maxItems: 1
+
+ mdio:
+ $ref: mdio.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ compatible:
+ const: snps,dwmac-mdio
+
+ phy-handle:
+ maxItems: 1
+
+ phy-mode:
+ maxItems: 1
+
+ snps,reset-gpio:
+ maxItems: 1

Why is this one here? It's already in snps,dwmac.

Actually this applies to several other properties. You have
unevaluatedProperties:false, so you do not have to duplicate snps,dwmac.
You only need to constrain it, like we said about interrupts in your
previous patch.

I was actually getting errors like the following without the same:

arm64/boot/dts/qcom/qcs404-evb-1000.dtb: ethernet@7a80000: Unevaluated properties are not allowed ('snps,tso' was unexpected)
From schema: Documentation/devicetree/bindings/net/qcom,ethqos.yaml

So, its not clear to me that even though 'snps,dwmac.yaml' is referenced here, the property appears as unevaluated.

+
+ power-domains:
+ maxItems: 1
+
+ resets:
+ maxItems: 1
+
+ rx-fifo-depth:
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ tx-fifo-depth:
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ snps,tso:
+ type: boolean
+ description: Enables the TSO feature (otherwise managed by MAC HW capability register).

You add here several new properties. Mention in commit msg changes from
pure conversion with answer to "why".

Right, most of them are to avoid the make dtbs_check errors / warnings like the one mentioned above.

I will add a comment in the commit log regarding the same.

Thanks,
Bhupesh