[v2,17/21] dt-bindings: ipmi: Convert ASPEED KCS binding to schema

Message ID 20210319062752.145730-17-andrew@aj.id.au
State New
Headers show
Series
  • Untitled series #112632
Related show

Commit Message

Andrew Jeffery March 19, 2021, 6:27 a.m.
Given the deprecated binding, improve the ability to detect issues in
the platform devicetrees. Further, a subsequent patch will introduce a
new interrupts property for specifying SerIRQ behaviour, so convert
before we do any further additions.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
---
 .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 92 +++++++++++++++++++
 .../bindings/ipmi/aspeed-kcs-bmc.txt          | 33 -------
 2 files changed, 92 insertions(+), 33 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
 delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt

Comments

Rob Herring March 26, 2021, 1:48 a.m. | #1
On Fri, 19 Mar 2021 16:57:48 +1030, Andrew Jeffery wrote:
> Given the deprecated binding, improve the ability to detect issues in
> the platform devicetrees. Further, a subsequent patch will introduce a
> new interrupts property for specifying SerIRQ behaviour, so convert
> before we do any further additions.
> 
> Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
> ---
>  .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 92 +++++++++++++++++++
>  .../bindings/ipmi/aspeed-kcs-bmc.txt          | 33 -------
>  2 files changed, 92 insertions(+), 33 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
>  delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt
> 

Reviewed-by: Rob Herring <robh@kernel.org>
Zev Weiss April 9, 2021, 5:15 a.m. | #2
On Fri, Mar 19, 2021 at 01:27:48AM CDT, Andrew Jeffery wrote:
>Given the deprecated binding, improve the ability to detect issues in

>the platform devicetrees. Further, a subsequent patch will introduce a

>new interrupts property for specifying SerIRQ behaviour, so convert

>before we do any further additions.

>

>Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

>---

> .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 92 +++++++++++++++++++

> .../bindings/ipmi/aspeed-kcs-bmc.txt          | 33 -------

> 2 files changed, 92 insertions(+), 33 deletions(-)

> create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

> delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt

>

>diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>new file mode 100644

>index 000000000000..697ca575454f

>--- /dev/null

>+++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>@@ -0,0 +1,92 @@

>+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

>+%YAML 1.2

>+---

>+$id: http://devicetree.org/schemas/ipmi/aspeed,ast2400-kcs-bmc.yaml

>+$schema: http://devicetree.org/meta-schemas/core.yaml

>+

>+title: ASPEED BMC KCS Devices

>+

>+maintainers:

>+  - Andrew Jeffery <andrew@aj.id.au>

>+

>+description: |

>+  The Aspeed BMC SoCs typically use the Keyboard-Controller-Style (KCS)

>+  interfaces on the LPC bus for in-band IPMI communication with their host.

>+

>+properties:

>+  compatible:

>+    oneOf:

>+      - description: Channel ID derived from reg

>+        items:

>+          enum:

>+            - aspeed,ast2400-kcs-bmc-v2

>+            - aspeed,ast2500-kcs-bmc-v2

>+            - aspeed,ast2600-kcs-bmc


Should this have a "-v2" suffix?

>+

>+      - description: Old-style with explicit channel ID, no reg

>+        deprecated: true

>+        items:

>+          enum:

>+            - aspeed,ast2400-kcs-bmc

>+            - aspeed,ast2500-kcs-bmc

>+

>+  interrupts:

>+    maxItems: 1

>+

>+  reg:

>+    # maxItems: 3

>+    items:

>+      - description: IDR register

>+      - description: ODR register

>+      - description: STR register

>+

>+  aspeed,lpc-io-reg:

>+    $ref: '/schemas/types.yaml#/definitions/uint32-array'

>+    minItems: 1

>+    maxItems: 2

>+    description: |

>+      The host CPU LPC IO data and status addresses for the device. For most

>+      channels the status address is derived from the data address, but the

>+      status address may be optionally provided.

>+

>+  kcs_chan:

>+    deprecated: true

>+    $ref: '/schemas/types.yaml#/definitions/uint32'

>+    description: The LPC channel number in the controller

>+

>+  kcs_addr:

>+    deprecated: true

>+    $ref: '/schemas/types.yaml#/definitions/uint32'

>+    description: The host CPU IO map address

>+

>+required:

>+  - compatible

>+  - interrupts

>+

>+additionalProperties: false

>+

>+allOf:

>+  - if:

>+      properties:

>+        compatible:

>+          contains:

>+            enum:

>+              - aspeed,ast2400-kcs-bmc

>+              - aspeed,ast2500-kcs-bmc

>+    then:

>+      required:

>+        - kcs_chan

>+        - kcs_addr

>+    else:

>+      required:

>+        - reg

>+        - aspeed,lpc-io-reg

>+

>+examples:

>+  - |

>+    kcs3: kcs@24 {

>+        compatible = "aspeed,ast2600-kcs-bmc";


And likewise here.

>+        reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;

>+        aspeed,lpc-io-reg = <0xca2>;

>+        interrupts = <8>;

>+    };

>diff --git a/Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt b/Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt

>deleted file mode 100644

>index 193e71ca96b0..000000000000

>--- a/Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt

>+++ /dev/null

>@@ -1,33 +0,0 @@

>-# Aspeed KCS (Keyboard Controller Style) IPMI interface

>-

>-The Aspeed SOCs (AST2400 and AST2500) are commonly used as BMCs

>-(Baseboard Management Controllers) and the KCS interface can be

>-used to perform in-band IPMI communication with their host.

>-

>-## v1

>-Required properties:

>-- compatible : should be one of

>-    "aspeed,ast2400-kcs-bmc"

>-    "aspeed,ast2500-kcs-bmc"

>-- interrupts : interrupt generated by the controller

>-- kcs_chan : The LPC channel number in the controller

>-- kcs_addr : The host CPU IO map address

>-

>-## v2

>-Required properties:

>-- compatible : should be one of

>-    "aspeed,ast2400-kcs-bmc-v2"

>-    "aspeed,ast2500-kcs-bmc-v2"

>-- reg : The address and size of the IDR, ODR and STR registers

>-- interrupts : interrupt generated by the controller

>-- aspeed,lpc-io-reg : The host CPU LPC IO address for the device

>-

>-Example:

>-

>-    kcs3: kcs@24 {

>-        compatible = "aspeed,ast2500-kcs-bmc-v2";

>-        reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;

>-        aspeed,lpc-reg = <0xca2>;

>-        interrupts = <8>;

>-        status = "okay";

>-    };

>-- 

>2.27.0

>
Andrew Jeffery April 9, 2021, 5:33 a.m. | #3
On Fri, 9 Apr 2021, at 14:45, Zev Weiss wrote:
> On Fri, Mar 19, 2021 at 01:27:48AM CDT, Andrew Jeffery wrote:
> >Given the deprecated binding, improve the ability to detect issues in
> >the platform devicetrees. Further, a subsequent patch will introduce a
> >new interrupts property for specifying SerIRQ behaviour, so convert
> >before we do any further additions.
> >
> >Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
> >---
> > .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 92 +++++++++++++++++++
> > .../bindings/ipmi/aspeed-kcs-bmc.txt          | 33 -------
> > 2 files changed, 92 insertions(+), 33 deletions(-)
> > create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
> > delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt
> >
> >diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
> >new file mode 100644
> >index 000000000000..697ca575454f
> >--- /dev/null
> >+++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
> >@@ -0,0 +1,92 @@
> >+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> >+%YAML 1.2
> >+---
> >+$id: http://devicetree.org/schemas/ipmi/aspeed,ast2400-kcs-bmc.yaml
> >+$schema: http://devicetree.org/meta-schemas/core.yaml
> >+
> >+title: ASPEED BMC KCS Devices
> >+
> >+maintainers:
> >+  - Andrew Jeffery <andrew@aj.id.au>
> >+
> >+description: |
> >+  The Aspeed BMC SoCs typically use the Keyboard-Controller-Style (KCS)
> >+  interfaces on the LPC bus for in-band IPMI communication with their host.
> >+
> >+properties:
> >+  compatible:
> >+    oneOf:
> >+      - description: Channel ID derived from reg
> >+        items:
> >+          enum:
> >+            - aspeed,ast2400-kcs-bmc-v2
> >+            - aspeed,ast2500-kcs-bmc-v2
> >+            - aspeed,ast2600-kcs-bmc
> 
> Should this have a "-v2" suffix?

Well, that was kind of a matter of perspective. The 2600 compatible was 
added after we'd done the v2 of the binding for the 2400 and 2500 so it 
never needed correcting. But it is a case of "don't use the deprecated 
properties with the 2600 compatible".

I don't think a change is necessary?

Cheers,

Andrew
Zev Weiss April 9, 2021, 5:44 a.m. | #4
On Fri, Apr 09, 2021 at 12:33:10AM CDT, Andrew Jeffery wrote:
>

>

>On Fri, 9 Apr 2021, at 14:45, Zev Weiss wrote:

>> On Fri, Mar 19, 2021 at 01:27:48AM CDT, Andrew Jeffery wrote:

>> >Given the deprecated binding, improve the ability to detect issues in

>> >the platform devicetrees. Further, a subsequent patch will introduce a

>> >new interrupts property for specifying SerIRQ behaviour, so convert

>> >before we do any further additions.

>> >

>> >Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

>> >---

>> > .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 92 +++++++++++++++++++

>> > .../bindings/ipmi/aspeed-kcs-bmc.txt          | 33 -------

>> > 2 files changed, 92 insertions(+), 33 deletions(-)

>> > create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>> > delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt

>> >

>> >diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>> >new file mode 100644

>> >index 000000000000..697ca575454f

>> >--- /dev/null

>> >+++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>> >@@ -0,0 +1,92 @@

>> >+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

>> >+%YAML 1.2

>> >+---

>> >+$id: http://devicetree.org/schemas/ipmi/aspeed,ast2400-kcs-bmc.yaml

>> >+$schema: http://devicetree.org/meta-schemas/core.yaml

>> >+

>> >+title: ASPEED BMC KCS Devices

>> >+

>> >+maintainers:

>> >+  - Andrew Jeffery <andrew@aj.id.au>

>> >+

>> >+description: |

>> >+  The Aspeed BMC SoCs typically use the Keyboard-Controller-Style (KCS)

>> >+  interfaces on the LPC bus for in-band IPMI communication with their host.

>> >+

>> >+properties:

>> >+  compatible:

>> >+    oneOf:

>> >+      - description: Channel ID derived from reg

>> >+        items:

>> >+          enum:

>> >+            - aspeed,ast2400-kcs-bmc-v2

>> >+            - aspeed,ast2500-kcs-bmc-v2

>> >+            - aspeed,ast2600-kcs-bmc

>>

>> Should this have a "-v2" suffix?

>

>Well, that was kind of a matter of perspective. The 2600 compatible was

>added after we'd done the v2 of the binding for the 2400 and 2500 so it

>never needed correcting. But it is a case of "don't use the deprecated

>properties with the 2600 compatible".

>

>I don't think a change is necessary?

>


It just looked inconsistent with the corresponding string in the
ast_kcs_bmc_match[] table; perhaps that should be changed instead then?


Zev
Zev Weiss April 9, 2021, 8:46 a.m. | #5
On Fri, Apr 09, 2021 at 12:44:04AM CDT, Zev Weiss wrote:
>On Fri, Apr 09, 2021 at 12:33:10AM CDT, Andrew Jeffery wrote:

>>

>>

>>On Fri, 9 Apr 2021, at 14:45, Zev Weiss wrote:

>>>On Fri, Mar 19, 2021 at 01:27:48AM CDT, Andrew Jeffery wrote:

>>>>Given the deprecated binding, improve the ability to detect issues in

>>>>the platform devicetrees. Further, a subsequent patch will introduce a

>>>>new interrupts property for specifying SerIRQ behaviour, so convert

>>>>before we do any further additions.

>>>>

>>>>Signed-off-by: Andrew Jeffery <andrew@aj.id.au>

>>>>---

>>>> .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 92 +++++++++++++++++++

>>>> .../bindings/ipmi/aspeed-kcs-bmc.txt          | 33 -------

>>>> 2 files changed, 92 insertions(+), 33 deletions(-)

>>>> create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>>>> delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt

>>>>

>>>>diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>>>>new file mode 100644

>>>>index 000000000000..697ca575454f

>>>>--- /dev/null

>>>>+++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml

>>>>@@ -0,0 +1,92 @@

>>>>+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

>>>>+%YAML 1.2

>>>>+---

>>>>+$id: http://devicetree.org/schemas/ipmi/aspeed,ast2400-kcs-bmc.yaml

>>>>+$schema: http://devicetree.org/meta-schemas/core.yaml

>>>>+

>>>>+title: ASPEED BMC KCS Devices

>>>>+

>>>>+maintainers:

>>>>+  - Andrew Jeffery <andrew@aj.id.au>

>>>>+

>>>>+description: |

>>>>+  The Aspeed BMC SoCs typically use the Keyboard-Controller-Style (KCS)

>>>>+  interfaces on the LPC bus for in-band IPMI communication with their host.

>>>>+

>>>>+properties:

>>>>+  compatible:

>>>>+    oneOf:

>>>>+      - description: Channel ID derived from reg

>>>>+        items:

>>>>+          enum:

>>>>+            - aspeed,ast2400-kcs-bmc-v2

>>>>+            - aspeed,ast2500-kcs-bmc-v2

>>>>+            - aspeed,ast2600-kcs-bmc

>>>

>>>Should this have a "-v2" suffix?

>>

>>Well, that was kind of a matter of perspective. The 2600 compatible was

>>added after we'd done the v2 of the binding for the 2400 and 2500 so it

>>never needed correcting. But it is a case of "don't use the deprecated

>>properties with the 2600 compatible".

>>

>>I don't think a change is necessary?

>>

>

>It just looked inconsistent with the corresponding string in the

>ast_kcs_bmc_match[] table; perhaps that should be changed instead then?

>


...except I realize now I only saw the 2600 v2 string in the match table
because I put it there myself in the process of resolving a conflict
when applying your series to the openbmc dev-5.10 branch for testing
purposes.  So nevermind on this.

Reviewed-by: Zev Weiss <zweiss@equinix.com>

Patch

diff --git a/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
new file mode 100644
index 000000000000..697ca575454f
--- /dev/null
+++ b/Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml
@@ -0,0 +1,92 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ipmi/aspeed,ast2400-kcs-bmc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ASPEED BMC KCS Devices
+
+maintainers:
+  - Andrew Jeffery <andrew@aj.id.au>
+
+description: |
+  The Aspeed BMC SoCs typically use the Keyboard-Controller-Style (KCS)
+  interfaces on the LPC bus for in-band IPMI communication with their host.
+
+properties:
+  compatible:
+    oneOf:
+      - description: Channel ID derived from reg
+        items:
+          enum:
+            - aspeed,ast2400-kcs-bmc-v2
+            - aspeed,ast2500-kcs-bmc-v2
+            - aspeed,ast2600-kcs-bmc
+
+      - description: Old-style with explicit channel ID, no reg
+        deprecated: true
+        items:
+          enum:
+            - aspeed,ast2400-kcs-bmc
+            - aspeed,ast2500-kcs-bmc
+
+  interrupts:
+    maxItems: 1
+
+  reg:
+    # maxItems: 3
+    items:
+      - description: IDR register
+      - description: ODR register
+      - description: STR register
+
+  aspeed,lpc-io-reg:
+    $ref: '/schemas/types.yaml#/definitions/uint32-array'
+    minItems: 1
+    maxItems: 2
+    description: |
+      The host CPU LPC IO data and status addresses for the device. For most
+      channels the status address is derived from the data address, but the
+      status address may be optionally provided.
+
+  kcs_chan:
+    deprecated: true
+    $ref: '/schemas/types.yaml#/definitions/uint32'
+    description: The LPC channel number in the controller
+
+  kcs_addr:
+    deprecated: true
+    $ref: '/schemas/types.yaml#/definitions/uint32'
+    description: The host CPU IO map address
+
+required:
+  - compatible
+  - interrupts
+
+additionalProperties: false
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - aspeed,ast2400-kcs-bmc
+              - aspeed,ast2500-kcs-bmc
+    then:
+      required:
+        - kcs_chan
+        - kcs_addr
+    else:
+      required:
+        - reg
+        - aspeed,lpc-io-reg
+
+examples:
+  - |
+    kcs3: kcs@24 {
+        compatible = "aspeed,ast2600-kcs-bmc";
+        reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;
+        aspeed,lpc-io-reg = <0xca2>;
+        interrupts = <8>;
+    };
diff --git a/Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt b/Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt
deleted file mode 100644
index 193e71ca96b0..000000000000
--- a/Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt
+++ /dev/null
@@ -1,33 +0,0 @@ 
-# Aspeed KCS (Keyboard Controller Style) IPMI interface
-
-The Aspeed SOCs (AST2400 and AST2500) are commonly used as BMCs
-(Baseboard Management Controllers) and the KCS interface can be
-used to perform in-band IPMI communication with their host.
-
-## v1
-Required properties:
-- compatible : should be one of
-    "aspeed,ast2400-kcs-bmc"
-    "aspeed,ast2500-kcs-bmc"
-- interrupts : interrupt generated by the controller
-- kcs_chan : The LPC channel number in the controller
-- kcs_addr : The host CPU IO map address
-
-## v2
-Required properties:
-- compatible : should be one of
-    "aspeed,ast2400-kcs-bmc-v2"
-    "aspeed,ast2500-kcs-bmc-v2"
-- reg : The address and size of the IDR, ODR and STR registers
-- interrupts : interrupt generated by the controller
-- aspeed,lpc-io-reg : The host CPU LPC IO address for the device
-
-Example:
-
-    kcs3: kcs@24 {
-        compatible = "aspeed,ast2500-kcs-bmc-v2";
-        reg = <0x24 0x1>, <0x30 0x1>, <0x3c 0x1>;
-        aspeed,lpc-reg = <0xca2>;
-        interrupts = <8>;
-        status = "okay";
-    };