diff mbox series

dt-bindings: media: convert Mediatek consumer IR to the json-schema

Message ID 20240124095230.25704-1-zajec5@gmail.com (mailing list archive)
State New, archived
Headers show
Series dt-bindings: media: convert Mediatek consumer IR to the json-schema | expand

Commit Message

Rafał Miłecki Jan. 24, 2024, 9:52 a.m. UTC
From: Rafał Miłecki <rafal@milecki.pl>

This helps validating DTS files. Introduced changes:
1. Reworded title
2. Added required #include-s and adjusted "reg" in example

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../bindings/media/mediatek,mt7622-cir.yaml   | 81 +++++++++++++++++++
 .../devicetree/bindings/media/mtk-cir.txt     | 28 -------
 2 files changed, 81 insertions(+), 28 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml
 delete mode 100644 Documentation/devicetree/bindings/media/mtk-cir.txt

Comments

AngeloGioacchino Del Regno Jan. 24, 2024, 12:33 p.m. UTC | #1
Il 24/01/24 10:52, Rafał Miłecki ha scritto:
> From: Rafał Miłecki <rafal@milecki.pl>
> 
> This helps validating DTS files. Introduced changes:
> 1. Reworded title
> 2. Added required #include-s and adjusted "reg" in example
> 
> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> ---
>   .../bindings/media/mediatek,mt7622-cir.yaml   | 81 +++++++++++++++++++
>   .../devicetree/bindings/media/mtk-cir.txt     | 28 -------
>   2 files changed, 81 insertions(+), 28 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml
>   delete mode 100644 Documentation/devicetree/bindings/media/mtk-cir.txt
> 
> diff --git a/Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml b/Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml
> new file mode 100644
> index 000000000000..a2d0eed33292
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml
> @@ -0,0 +1,81 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/mediatek,mt7622-cir.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Mediatek consumer IR on-SoC controller

title: MediaTek Consumer Infrared Receiver on-SoC Controller

> +
> +maintainers:
> +  - Sean Wang <sean.wang@mediatek.com>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - mediatek,mt7622-cir
> +      - mediatek,mt7623-cir
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    minItems: 1
> +    maxItems: 2
> +
> +  clock-names:
> +    minItems: 1
> +    items:
> +      - const: clk
> +      - const: bus

The driver says:

	ir->bus = devm_clk_get(dev, "bus");
	if (IS_ERR(ir->bus)) {
		/*
		 * For compatibility with older device trees try unnamed
		 * ir->bus uses the same clock as ir->clock.
		 */
		ir->bus = ir->clk;
	}

This makes me think that requiring *one* clock on MT7623 would be a mistake
and the devicetree should use clk, bus - CLK_INFRA_IRRX_PD, CLK_TOP_F10M_REF_SEL.

Seen that - I'm sure that setting maxItems: 1 on mediatek,mt7623-cir would as
well be a mistake.

> +
> +required:
> +  - reg
> +  - interrupts
> +  - clocks
> +  - clock-names
> +
> +allOf:
> +  - $ref: rc.yaml#
> +  - if:

The solution would be to simply delete those if branches and, to keep compatibility
with the already present mt7623.dtsi file, keep min/max items to 1 and 2 (of course
in the case of clock-names, maxItems shall not be declared, as it's dictated by the
consts).

> +      properties:
> +        compatible:
> +          contains:
> +            const: mediatek,mt7622-cir
> +    then:
> +      properties:
> +        clocks:
> +          minItems: 2
> +
> +        clock-names:
> +          minItems: 2
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: mediatek,mt7623-cir
> +    then:
> +      properties:
> +        clocks:
> +          maxItems: 1
> +
> +        clock-names:
> +          maxItems: 1
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/mt2701-clk.h>
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +    ir@10013000 {

Please use a common generic name, as seen in gpio-ir-receiver.yaml and in
amlogic,meson6-ir.yaml:

ir-receiver@10013000 {

Cheers,
Angelo
Rafał Miłecki Feb. 9, 2024, 7:24 a.m. UTC | #2
On 24.01.2024 13:33, AngeloGioacchino Del Regno wrote:
> The driver says:
> 
>      ir->bus = devm_clk_get(dev, "bus");
>      if (IS_ERR(ir->bus)) {
>          /*
>           * For compatibility with older device trees try unnamed
>           * ir->bus uses the same clock as ir->clock.
>           */
>          ir->bus = ir->clk;
>      }
> 
> This makes me think that requiring *one* clock on MT7623 would be a mistake
> and the devicetree should use clk, bus - CLK_INFRA_IRRX_PD, CLK_TOP_F10M_REF_SEL.

Looking at mt2701-clk.h I can see CLK_INFRA_IRRX (which I guess you
meant above).

I can't find CLK_TOP_F10M_REF_SEL however. This seems to be available on
MT7622 and MT7629 only.
Could you take another look at it, please? Can you somehow verify what
clock should be used by IR on MT7623?
AngeloGioacchino Del Regno Feb. 9, 2024, 8:40 a.m. UTC | #3
Il 09/02/24 08:24, Rafał Miłecki ha scritto:
> On 24.01.2024 13:33, AngeloGioacchino Del Regno wrote:
>> The driver says:
>>
>>      ir->bus = devm_clk_get(dev, "bus");
>>      if (IS_ERR(ir->bus)) {
>>          /*
>>           * For compatibility with older device trees try unnamed
>>           * ir->bus uses the same clock as ir->clock.
>>           */
>>          ir->bus = ir->clk;
>>      }
>>
>> This makes me think that requiring *one* clock on MT7623 would be a mistake
>> and the devicetree should use clk, bus - CLK_INFRA_IRRX_PD, CLK_TOP_F10M_REF_SEL.
> 
> Looking at mt2701-clk.h I can see CLK_INFRA_IRRX (which I guess you
> meant above).
> 
> I can't find CLK_TOP_F10M_REF_SEL however. This seems to be available on
> MT7622 and MT7629 only.
> Could you take another look at it, please? Can you somehow verify what
> clock should be used by IR on MT7623?

For MT2701/MT7623N you can use topckgen CLK_TOP_AXI_SEL as bus clock.

Cheers,
Angelo
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml b/Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml
new file mode 100644
index 000000000000..a2d0eed33292
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/mediatek,mt7622-cir.yaml
@@ -0,0 +1,81 @@ 
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/mediatek,mt7622-cir.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Mediatek consumer IR on-SoC controller
+
+maintainers:
+  - Sean Wang <sean.wang@mediatek.com>
+
+properties:
+  compatible:
+    enum:
+      - mediatek,mt7622-cir
+      - mediatek,mt7623-cir
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: clk
+      - const: bus
+
+required:
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+allOf:
+  - $ref: rc.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: mediatek,mt7622-cir
+    then:
+      properties:
+        clocks:
+          minItems: 2
+
+        clock-names:
+          minItems: 2
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: mediatek,mt7623-cir
+    then:
+      properties:
+        clocks:
+          maxItems: 1
+
+        clock-names:
+          maxItems: 1
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/mt2701-clk.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    ir@10013000 {
+        compatible = "mediatek,mt7623-cir";
+        reg = <0x10013000 0x1000>;
+        interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_LOW>;
+        clocks = <&infracfg CLK_INFRA_IRRX>;
+        clock-names = "clk";
+        linux,rc-map-name = "rc-rc6-mce";
+    };
diff --git a/Documentation/devicetree/bindings/media/mtk-cir.txt b/Documentation/devicetree/bindings/media/mtk-cir.txt
deleted file mode 100644
index 5e18087ce11f..000000000000
--- a/Documentation/devicetree/bindings/media/mtk-cir.txt
+++ /dev/null
@@ -1,28 +0,0 @@ 
-Device-Tree bindings for Mediatek consumer IR controller
-found in Mediatek SoC family
-
-Required properties:
-- compatible	    : Should be
-			"mediatek,mt7623-cir": for MT7623 SoC
-			"mediatek,mt7622-cir": for MT7622 SoC
-- clocks	    : list of clock specifiers, corresponding to
-		      entries in clock-names property;
-- clock-names	    : should contain
-			- "clk" entries: for MT7623 SoC
-			- "clk", "bus" entries: for MT7622 SoC
-- interrupts	    : should contain IR IRQ number;
-- reg		    : should contain IO map address for IR.
-
-Optional properties:
-- linux,rc-map-name : see rc.txt file in the same directory.
-
-Example:
-
-cir: cir@10013000 {
-	compatible = "mediatek,mt7623-cir";
-	reg = <0 0x10013000 0 0x1000>;
-	interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_LOW>;
-	clocks = <&infracfg CLK_INFRA_IRRX>;
-	clock-names = "clk";
-	linux,rc-map-name = "rc-rc6-mce";
-};