diff mbox series

[v6,02/13] dt-bindings: mfd: Add bindings for sl28cpld

Message ID 20200725231834.25642-3-michael@walle.cc
State Not Applicable
Headers show
Series Add support for Kontron sl28cpld | expand

Commit Message

Michael Walle July 25, 2020, 11:18 p.m. UTC
Add a device tree bindings for the board management controller found on
the Kontron SMARC-sAL28 board.

Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Rob Herring <robh@kernel.org>
---
Changes since v5:
 - none

Changes since v4:
 - fix the regex of the unit-address

Changes since v3:
 - see cover letter

 .../bindings/gpio/kontron,sl28cpld-gpio.yaml  |  54 +++++++
 .../hwmon/kontron,sl28cpld-hwmon.yaml         |  27 ++++
 .../kontron,sl28cpld-intc.yaml                |  54 +++++++
 .../bindings/mfd/kontron,sl28cpld.yaml        | 153 ++++++++++++++++++
 .../bindings/pwm/kontron,sl28cpld-pwm.yaml    |  35 ++++
 .../watchdog/kontron,sl28cpld-wdt.yaml        |  35 ++++
 6 files changed, 358 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
 create mode 100644 Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
 create mode 100644 Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
 create mode 100644 Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml

Comments

Lee Jones July 28, 2020, 7:24 a.m. UTC | #1
On Sun, 26 Jul 2020, Michael Walle wrote:

> Add a device tree bindings for the board management controller found on
> the Kontron SMARC-sAL28 board.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> Reviewed-by: Rob Herring <robh@kernel.org>
> ---
> Changes since v5:
>  - none
> 
> Changes since v4:
>  - fix the regex of the unit-address
> 
> Changes since v3:
>  - see cover letter
> 
>  .../bindings/gpio/kontron,sl28cpld-gpio.yaml  |  54 +++++++
>  .../hwmon/kontron,sl28cpld-hwmon.yaml         |  27 ++++
>  .../kontron,sl28cpld-intc.yaml                |  54 +++++++
>  .../bindings/mfd/kontron,sl28cpld.yaml        | 153 ++++++++++++++++++
>  .../bindings/pwm/kontron,sl28cpld-pwm.yaml    |  35 ++++
>  .../watchdog/kontron,sl28cpld-wdt.yaml        |  35 ++++
>  6 files changed, 358 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>  create mode 100644 Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
>  create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
>  create mode 100644 Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
>  create mode 100644 Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
>  create mode 100644 Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
> 
> diff --git a/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
> new file mode 100644
> index 000000000000..9a63a158a796
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
> @@ -0,0 +1,54 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/gpio/kontron,sl28cpld-gpio.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: GPIO driver for the sl28cpld board management controller
> +
> +maintainers:
> +  - Michael Walle <michael@walle.cc>
> +
> +description: |
> +  This module is part of the sl28cpld multi-function device. For more
> +  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.

Paths are normally relative.

> +  There are three flavors of the GPIO controller, one full featured
> +  input/output with interrupt support (kontron,sl28cpld-gpio), one
> +  output-only (kontron,sl28-gpo) and one input-only (kontron,sl28-gpi).
> +
> +  Each controller supports 8 GPIO lines.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - kontron,sl28cpld-gpio
> +      - kontron,sl28cpld-gpi
> +      - kontron,sl28cpld-gpo
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  "#interrupt-cells":
> +    const: 2
> +
> +  interrupt-controller: true
> +
> +  "#gpio-cells":
> +    const: 2
> +
> +  gpio-controller: true
> +
> +  gpio-line-names:
> +      minItems: 1
> +      maxItems: 8
> +
> +required:
> +  - compatible
> +  - "#gpio-cells"
> +  - gpio-controller
> +
> +additionalProperties: false
> diff --git a/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
> new file mode 100644
> index 000000000000..1cebd61c6c32
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
> @@ -0,0 +1,27 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/kontron,sl28cpld-hwmon.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Hardware monitoring driver for the sl28cpld board management controller
> +
> +maintainers:
> +  - Michael Walle <michael@walle.cc>
> +
> +description: |
> +  This module is part of the sl28cpld multi-function device. For more
> +  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - kontron,sl28cpld-fan
> +
> +  reg:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +
> +additionalProperties: false
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
> new file mode 100644
> index 000000000000..4c39e9ff9aea
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
> @@ -0,0 +1,54 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/interrupt-controller/kontron,sl28cpld-intc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Interrupt controller driver for the sl28cpld board management controller
> +
> +maintainers:
> +  - Michael Walle <michael@walle.cc>
> +
> +description: |
> +  This module is part of the sl28cpld multi-function device. For more
> +  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
> +
> +  The following interrupts are available. All types and levels are fixed
> +  and handled by the board management controller.
> +
> +  ==== ============= ==================================
> +   IRQ line/device   description
> +  ==== ============= ==================================
> +    0  RTC_INT#      Interrupt line from on-board RTC
> +    1  SMB_ALERT#    Event on SMB_ALERT# line (P1)
> +    2  ESPI_ALERT0#  Event on ESPI_ALERT0# line (S43)
> +    3  ESPI_ALERT1#  Event on ESPI_ALERT1# line (S44)
> +    4  PWR_BTN#      Event on PWR_BTN# line (P128)
> +    5  SLEEP#        Event on SLEEP# line (S149)
> +    6  watchdog      Interrupt of the internal watchdog
> +    7  n/a           not used
> +  ==== ============= ==================================
> +
> +properties:
> +  compatible:
> +    enum:
> +      - kontron,sl28cpld-intc
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  "#interrupt-cells":
> +    const: 2
> +
> +  interrupt-controller: true
> +
> +required:
> +  - compatible
> +  - interrupts
> +  - "#interrupt-cells"
> +  - interrupt-controller
> +
> +additionalProperties: false
> diff --git a/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
> new file mode 100644
> index 000000000000..e3a62db678e7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
> @@ -0,0 +1,153 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Kontron's sl28cpld board management controller

"S128CPLD" ?

"Board Management Controller (BMC)" ?

> +maintainers:
> +  - Michael Walle <michael@walle.cc>
> +
> +description: |
> +  The board management controller may contain different IP blocks like
> +  watchdog, fan monitoring, PWM controller, interrupt controller and a
> +  GPIO controller.
> +
> +properties:
> +  compatible:
> +    const: kontron,sl28cpld-r1

We don't usually code revision numbers in compatible strings.

Is there any way to pull this from the H/W?

> +  reg:
> +    description:
> +      I2C device address.
> +    maxItems: 1
> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 0
> +
> +  "#interrupt-cells":
> +    const: 2
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  interrupt-controller: true
> +
> +patternProperties:
> +  "^gpio(@[0-9a-f]+)?$":
> +    $ref: ../gpio/kontron,sl28cpld-gpio.yaml
> +
> +  "^hwmon(@[0-9a-f]+)?$":
> +    $ref: ../hwmon/kontron,sl28cpld-hwmon.yaml
> +
> +  "^interrupt-controller(@[0-9a-f]+)?$":
> +    $ref: ../interrupt-controller/kontron,sl28cpld-intc.yaml
> +
> +  "^pwm(@[0-9a-f]+)?$":
> +    $ref: ../pwm/kontron,sl28cpld-pwm.yaml
> +
> +  "^watchdog(@[0-9a-f]+)?$":
> +    $ref: ../watchdog/kontron,sl28cpld-wdt.yaml
> +
> +required:
> +  - "#address-cells"
> +  - "#size-cells"
> +  - compatible
> +  - reg
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        sl28cpld@4a {
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +            compatible = "kontron,sl28cpld-r1";
> +            reg = <0x4a>;

Nit: Could you put the 'reg' and 'compatible' at the top please?

Same for all nodes.

> +            watchdog@4 {
> +                compatible = "kontron,sl28cpld-wdt";
> +                reg = <0x4>;
> +                kontron,assert-wdt-timeout-pin;
> +            };
> +
> +            hwmon@b {
> +                compatible = "kontron,sl28cpld-fan";
> +                reg = <0xb>;
> +            };
> +
> +            pwm@c {
> +                #pwm-cells = <2>;
> +                compatible = "kontron,sl28cpld-pwm";
> +                reg = <0xc>;
> +            };
> +
> +            pwm@e {
> +                #pwm-cells = <2>;
> +                compatible = "kontron,sl28cpld-pwm";
> +                reg = <0xe>;
> +            };
> +
> +            gpio@10 {
> +                compatible = "kontron,sl28cpld-gpio";
> +                reg = <0x10>;
> +                interrupts-extended = <&gpio2 6
> +                               IRQ_TYPE_EDGE_FALLING>;
> +
> +                gpio-controller;
> +                #gpio-cells = <2>;
> +                gpio-line-names = "a", "b", "c";
> +
> +                interrupt-controller;
> +                #interrupt-cells = <2>;
> +            };
> +
> +            gpio@15 {
> +                compatible = "kontron,sl28cpld-gpio";
> +                reg = <0x15>;
> +                interrupts-extended = <&gpio2 6
> +                               IRQ_TYPE_EDGE_FALLING>;
> +
> +                gpio-controller;
> +                #gpio-cells = <2>;
> +
> +                interrupt-controller;
> +                #interrupt-cells = <2>;
> +            };
> +
> +            gpio@1a {
> +                compatible = "kontron,sl28cpld-gpo";
> +                reg = <0x1a>;
> +
> +                gpio-controller;
> +                #gpio-cells = <2>;
> +            };
> +
> +            gpio@1b {
> +                compatible = "kontron,sl28cpld-gpi";
> +                reg = <0x1b>;
> +
> +                gpio-controller;
> +                #gpio-cells = <2>;
> +            };
> +
> +            interrupt-controller@1c {
> +                compatible = "kontron,sl28cpld-intc";
> +                reg = <0x1c>;
> +                interrupts-extended = <&gpio2 6
> +                               IRQ_TYPE_EDGE_FALLING>;
> +
> +                interrupt-controller;
> +                #interrupt-cells = <2>;
> +            };
> +        };
> +    };
Michael Walle July 28, 2020, 7:57 a.m. UTC | #2
Am 2020-07-28 09:24, schrieb Lee Jones:
> On Sun, 26 Jul 2020, Michael Walle wrote:
> 
>> Add a device tree bindings for the board management controller found 
>> on
>> the Kontron SMARC-sAL28 board.
>> 
>> Signed-off-by: Michael Walle <michael@walle.cc>
>> Reviewed-by: Rob Herring <robh@kernel.org>
>> ---
>> Changes since v5:
>>  - none
>> 
>> Changes since v4:
>>  - fix the regex of the unit-address
>> 
>> Changes since v3:
>>  - see cover letter
>> 
>>  .../bindings/gpio/kontron,sl28cpld-gpio.yaml  |  54 +++++++
>>  .../hwmon/kontron,sl28cpld-hwmon.yaml         |  27 ++++
>>  .../kontron,sl28cpld-intc.yaml                |  54 +++++++
>>  .../bindings/mfd/kontron,sl28cpld.yaml        | 153 
>> ++++++++++++++++++
>>  .../bindings/pwm/kontron,sl28cpld-pwm.yaml    |  35 ++++
>>  .../watchdog/kontron,sl28cpld-wdt.yaml        |  35 ++++
>>  6 files changed, 358 insertions(+)
>>  create mode 100644 
>> Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>>  create mode 100644 
>> Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
>>  create mode 100644 
>> Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
>>  create mode 100644 
>> Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
>>  create mode 100644 
>> Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
>>  create mode 100644 
>> Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
>> 
>> diff --git 
>> a/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml 
>> b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>> new file mode 100644
>> index 000000000000..9a63a158a796
>> --- /dev/null
>> +++ 
>> b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>> @@ -0,0 +1,54 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/gpio/kontron,sl28cpld-gpio.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: GPIO driver for the sl28cpld board management controller
>> +
>> +maintainers:
>> +  - Michael Walle <michael@walle.cc>
>> +
>> +description: |
>> +  This module is part of the sl28cpld multi-function device. For more
>> +  details see 
>> Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
> 
> Paths are normally relative.

grep Documentation/ Documentation

I know there are a lot false positives (esp in the first one)..

$ grep -r "\.\./" Documentation | wc -l
1826
$ grep -r "Documentation/" Documentation|wc -l
2862

> 
>> +  There are three flavors of the GPIO controller, one full featured
>> +  input/output with interrupt support (kontron,sl28cpld-gpio), one
>> +  output-only (kontron,sl28-gpo) and one input-only 
>> (kontron,sl28-gpi).
>> +
>> +  Each controller supports 8 GPIO lines.
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - kontron,sl28cpld-gpio
>> +      - kontron,sl28cpld-gpi
>> +      - kontron,sl28cpld-gpo
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +
>> +  "#interrupt-cells":
>> +    const: 2
>> +
>> +  interrupt-controller: true
>> +
>> +  "#gpio-cells":
>> +    const: 2
>> +
>> +  gpio-controller: true
>> +
>> +  gpio-line-names:
>> +      minItems: 1
>> +      maxItems: 8
>> +
>> +required:
>> +  - compatible
>> +  - "#gpio-cells"
>> +  - gpio-controller
>> +
>> +additionalProperties: false
>> diff --git 
>> a/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml 
>> b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
>> new file mode 100644
>> index 000000000000..1cebd61c6c32
>> --- /dev/null
>> +++ 
>> b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
>> @@ -0,0 +1,27 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/hwmon/kontron,sl28cpld-hwmon.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Hardware monitoring driver for the sl28cpld board management 
>> controller
>> +
>> +maintainers:
>> +  - Michael Walle <michael@walle.cc>
>> +
>> +description: |
>> +  This module is part of the sl28cpld multi-function device. For more
>> +  details see 
>> Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - kontron,sl28cpld-fan
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +required:
>> +  - compatible
>> +
>> +additionalProperties: false
>> diff --git 
>> a/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml 
>> b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
>> new file mode 100644
>> index 000000000000..4c39e9ff9aea
>> --- /dev/null
>> +++ 
>> b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
>> @@ -0,0 +1,54 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: 
>> http://devicetree.org/schemas/interrupt-controller/kontron,sl28cpld-intc.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Interrupt controller driver for the sl28cpld board management 
>> controller
>> +
>> +maintainers:
>> +  - Michael Walle <michael@walle.cc>
>> +
>> +description: |
>> +  This module is part of the sl28cpld multi-function device. For more
>> +  details see 
>> Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
>> +
>> +  The following interrupts are available. All types and levels are 
>> fixed
>> +  and handled by the board management controller.
>> +
>> +  ==== ============= ==================================
>> +   IRQ line/device   description
>> +  ==== ============= ==================================
>> +    0  RTC_INT#      Interrupt line from on-board RTC
>> +    1  SMB_ALERT#    Event on SMB_ALERT# line (P1)
>> +    2  ESPI_ALERT0#  Event on ESPI_ALERT0# line (S43)
>> +    3  ESPI_ALERT1#  Event on ESPI_ALERT1# line (S44)
>> +    4  PWR_BTN#      Event on PWR_BTN# line (P128)
>> +    5  SLEEP#        Event on SLEEP# line (S149)
>> +    6  watchdog      Interrupt of the internal watchdog
>> +    7  n/a           not used
>> +  ==== ============= ==================================
>> +
>> +properties:
>> +  compatible:
>> +    enum:
>> +      - kontron,sl28cpld-intc
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +
>> +  "#interrupt-cells":
>> +    const: 2
>> +
>> +  interrupt-controller: true
>> +
>> +required:
>> +  - compatible
>> +  - interrupts
>> +  - "#interrupt-cells"
>> +  - interrupt-controller
>> +
>> +additionalProperties: false
>> diff --git 
>> a/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml 
>> b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
>> new file mode 100644
>> index 000000000000..e3a62db678e7
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
>> @@ -0,0 +1,153 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Kontron's sl28cpld board management controller
> 
> "S128CPLD" ?

still not, its sl28cpld, think of a project/code name, not the product
appended with CPLD.

> "Board Management Controller (BMC)" ?

sounds like IPMI, which I wanted to avoid.

> 
>> +maintainers:
>> +  - Michael Walle <michael@walle.cc>
>> +
>> +description: |
>> +  The board management controller may contain different IP blocks 
>> like
>> +  watchdog, fan monitoring, PWM controller, interrupt controller and 
>> a
>> +  GPIO controller.
>> +
>> +properties:
>> +  compatible:
>> +    const: kontron,sl28cpld-r1
> 
> We don't usually code revision numbers in compatible strings.
> 
> Is there any way to pull this from the H/W?

No, unfortunately you can't. And I really want to keep that, in case
in the future there are some backwards incompatible changes.

>> +  reg:
>> +    description:
>> +      I2C device address.
>> +    maxItems: 1
>> +
>> +  "#address-cells":
>> +    const: 1
>> +
>> +  "#size-cells":
>> +    const: 0
>> +
>> +  "#interrupt-cells":
>> +    const: 2
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +
>> +  interrupt-controller: true
>> +
>> +patternProperties:
>> +  "^gpio(@[0-9a-f]+)?$":
>> +    $ref: ../gpio/kontron,sl28cpld-gpio.yaml
>> +
>> +  "^hwmon(@[0-9a-f]+)?$":
>> +    $ref: ../hwmon/kontron,sl28cpld-hwmon.yaml
>> +
>> +  "^interrupt-controller(@[0-9a-f]+)?$":
>> +    $ref: ../interrupt-controller/kontron,sl28cpld-intc.yaml
>> +
>> +  "^pwm(@[0-9a-f]+)?$":
>> +    $ref: ../pwm/kontron,sl28cpld-pwm.yaml
>> +
>> +  "^watchdog(@[0-9a-f]+)?$":
>> +    $ref: ../watchdog/kontron,sl28cpld-wdt.yaml
>> +
>> +required:
>> +  - "#address-cells"
>> +  - "#size-cells"
>> +  - compatible
>> +  - reg
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/interrupt-controller/irq.h>
>> +    i2c {
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +
>> +        sl28cpld@4a {
>> +            #address-cells = <1>;
>> +            #size-cells = <0>;
>> +            compatible = "kontron,sl28cpld-r1";
>> +            reg = <0x4a>;
> 
> Nit: Could you put the 'reg' and 'compatible' at the top please?
> 
> Same for all nodes.

Sure, I've looked at previous examples, but they are not
consistent, but it looked to me if the "#" properties are
listed first.

-michael
Lee Jones July 28, 2020, 8:27 a.m. UTC | #3
On Tue, 28 Jul 2020, Michael Walle wrote:

> Am 2020-07-28 09:24, schrieb Lee Jones:
> > On Sun, 26 Jul 2020, Michael Walle wrote:
> > 
> > > Add a device tree bindings for the board management controller found
> > > on
> > > the Kontron SMARC-sAL28 board.
> > > 
> > > Signed-off-by: Michael Walle <michael@walle.cc>
> > > Reviewed-by: Rob Herring <robh@kernel.org>
> > > ---
> > > Changes since v5:
> > >  - none
> > > 
> > > Changes since v4:
> > >  - fix the regex of the unit-address
> > > 
> > > Changes since v3:
> > >  - see cover letter
> > > 
> > >  .../bindings/gpio/kontron,sl28cpld-gpio.yaml  |  54 +++++++
> > >  .../hwmon/kontron,sl28cpld-hwmon.yaml         |  27 ++++
> > >  .../kontron,sl28cpld-intc.yaml                |  54 +++++++
> > >  .../bindings/mfd/kontron,sl28cpld.yaml        | 153
> > > ++++++++++++++++++
> > >  .../bindings/pwm/kontron,sl28cpld-pwm.yaml    |  35 ++++
> > >  .../watchdog/kontron,sl28cpld-wdt.yaml        |  35 ++++
> > >  6 files changed, 358 insertions(+)
> > >  create mode 100644
> > > Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
> > >  create mode 100644
> > > Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
> > >  create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
> > >  create mode 100644
> > > Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
> > >  create mode 100644
> > > Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
> > >  create mode 100644
> > > Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
> > > 
> > > diff --git
> > > a/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
> > > b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
> > > new file mode 100644
> > > index 000000000000..9a63a158a796
> > > --- /dev/null
> > > +++
> > > b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
> > > @@ -0,0 +1,54 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/gpio/kontron,sl28cpld-gpio.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: GPIO driver for the sl28cpld board management controller
> > > +
> > > +maintainers:
> > > +  - Michael Walle <michael@walle.cc>
> > > +
> > > +description: |
> > > +  This module is part of the sl28cpld multi-function device. For more
> > > +  details see
> > > Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
> > 
> > Paths are normally relative.
> 
> grep Documentation/ Documentation
> 
> I know there are a lot false positives (esp in the first one)..
> 
> $ grep -r "\.\./" Documentation | wc -l
> 1826
> $ grep -r "Documentation/" Documentation|wc -l
> 2862

I actually meant just for Device Tree bindings, but it does appear
that 'Documentation' is used a bunch there too.

My reasons for not liking full paths is that the intention was always
to move 'Documentation/devicetree' to a new location outside of the
kernel source tree.

[...]

> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Kontron's sl28cpld board management controller
> > 
> > "S128CPLD" ?
> 
> still not, its sl28cpld, think of a project/code name, not the product
> appended with CPLD.
> 
> > "Board Management Controller (BMC)" ?
> 
> sounds like IPMI, which I wanted to avoid.

Is there a datasheet?

> > > +maintainers:
> > > +  - Michael Walle <michael@walle.cc>
> > > +
> > > +description: |
> > > +  The board management controller may contain different IP blocks
> > > like
> > > +  watchdog, fan monitoring, PWM controller, interrupt controller
> > > and a
> > > +  GPIO controller.
> > > +
> > > +properties:
> > > +  compatible:
> > > +    const: kontron,sl28cpld-r1
> > 
> > We don't usually code revision numbers in compatible strings.
> > 
> > Is there any way to pull this from the H/W?
> 
> No, unfortunately you can't. And I really want to keep that, in case
> in the future there are some backwards incompatible changes.

Rob,

I know you reviewed this already, but you can give your opinion on
this specifically please?  I know that we have pushed back on this in
the past.
Michael Walle July 28, 2020, 8:38 a.m. UTC | #4
Am 2020-07-28 10:27, schrieb Lee Jones:
> On Tue, 28 Jul 2020, Michael Walle wrote:
> 
>> Am 2020-07-28 09:24, schrieb Lee Jones:
>> > On Sun, 26 Jul 2020, Michael Walle wrote:
>> >
>> > > Add a device tree bindings for the board management controller found
>> > > on
>> > > the Kontron SMARC-sAL28 board.
>> > >
>> > > Signed-off-by: Michael Walle <michael@walle.cc>
>> > > Reviewed-by: Rob Herring <robh@kernel.org>
>> > > ---
>> > > Changes since v5:
>> > >  - none
>> > >
>> > > Changes since v4:
>> > >  - fix the regex of the unit-address
>> > >
>> > > Changes since v3:
>> > >  - see cover letter
>> > >
>> > >  .../bindings/gpio/kontron,sl28cpld-gpio.yaml  |  54 +++++++
>> > >  .../hwmon/kontron,sl28cpld-hwmon.yaml         |  27 ++++
>> > >  .../kontron,sl28cpld-intc.yaml                |  54 +++++++
>> > >  .../bindings/mfd/kontron,sl28cpld.yaml        | 153
>> > > ++++++++++++++++++
>> > >  .../bindings/pwm/kontron,sl28cpld-pwm.yaml    |  35 ++++
>> > >  .../watchdog/kontron,sl28cpld-wdt.yaml        |  35 ++++
>> > >  6 files changed, 358 insertions(+)
>> > >  create mode 100644
>> > > Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>> > >  create mode 100644
>> > > Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
>> > >  create mode 100644 Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
>> > >  create mode 100644
>> > > Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
>> > >  create mode 100644
>> > > Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
>> > >  create mode 100644
>> > > Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
>> > >
>> > > diff --git
>> > > a/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>> > > b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>> > > new file mode 100644
>> > > index 000000000000..9a63a158a796
>> > > --- /dev/null
>> > > +++
>> > > b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
>> > > @@ -0,0 +1,54 @@
>> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> > > +%YAML 1.2
>> > > +---
>> > > +$id: http://devicetree.org/schemas/gpio/kontron,sl28cpld-gpio.yaml#
>> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> > > +
>> > > +title: GPIO driver for the sl28cpld board management controller
>> > > +
>> > > +maintainers:
>> > > +  - Michael Walle <michael@walle.cc>
>> > > +
>> > > +description: |
>> > > +  This module is part of the sl28cpld multi-function device. For more
>> > > +  details see
>> > > Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
>> >
>> > Paths are normally relative.
>> 
>> grep Documentation/ Documentation
>> 
>> I know there are a lot false positives (esp in the first one)..
>> 
>> $ grep -r "\.\./" Documentation | wc -l
>> 1826
>> $ grep -r "Documentation/" Documentation|wc -l
>> 2862
> 
> I actually meant just for Device Tree bindings, but it does appear
> that 'Documentation' is used a bunch there too.
> 
> My reasons for not liking full paths is that the intention was always
> to move 'Documentation/devicetree' to a new location outside of the
> kernel source tree.

I see. I'll change that.

>> > > +%YAML 1.2
>> > > +---
>> > > +$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
>> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> > > +
>> > > +title: Kontron's sl28cpld board management controller
>> >
>> > "S128CPLD" ?
>> 
>> still not, its sl28cpld, think of a project/code name, not the product
>> appended with CPLD.
>> 
>> > "Board Management Controller (BMC)" ?
>> 
>> sounds like IPMI, which I wanted to avoid.
> 
> Is there a datasheet?

No there isn't.

>> > > +maintainers:
>> > > +  - Michael Walle <michael@walle.cc>
>> > > +
>> > > +description: |
>> > > +  The board management controller may contain different IP blocks
>> > > like
>> > > +  watchdog, fan monitoring, PWM controller, interrupt controller
>> > > and a
>> > > +  GPIO controller.
>> > > +
>> > > +properties:
>> > > +  compatible:
>> > > +    const: kontron,sl28cpld-r1
>> >
>> > We don't usually code revision numbers in compatible strings.
>> >
>> > Is there any way to pull this from the H/W?
>> 
>> No, unfortunately you can't. And I really want to keep that, in case
>> in the future there are some backwards incompatible changes.
> 
> Rob,
> 
> I know you reviewed this already, but you can give your opinion on
> this specifically please?  I know that we have pushed back on this in
> the past.

Oh, come one. That is an arbitrary string. "sl28cpld-r1" is the first
implementation of this. A future "sl28cpld-r2" might look completely
different and might not suite the simple MFD at all. "sl28cpld" is
a made up name - as "sl28cpld-r1" is, too.

-michael
Lee Jones July 28, 2020, 8:56 a.m. UTC | #5
> > > > > +$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
> > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > > +
> > > > > +title: Kontron's sl28cpld board management controller
> > > >
> > > > "S128CPLD" ?
> > > 
> > > still not, its sl28cpld, think of a project/code name, not the product
> > > appended with CPLD.
> > > 
> > > > "Board Management Controller (BMC)" ?
> > > 
> > > sounds like IPMI, which I wanted to avoid.
> > 
> > Is there a datasheet?
> 
> No there isn't.

Then what are you working from?

> > > > > +maintainers:
> > > > > +  - Michael Walle <michael@walle.cc>
> > > > > +
> > > > > +description: |
> > > > > +  The board management controller may contain different IP blocks
> > > > > like
> > > > > +  watchdog, fan monitoring, PWM controller, interrupt controller
> > > > > and a
> > > > > +  GPIO controller.
> > > > > +
> > > > > +properties:
> > > > > +  compatible:
> > > > > +    const: kontron,sl28cpld-r1
> > > >
> > > > We don't usually code revision numbers in compatible strings.
> > > >
> > > > Is there any way to pull this from the H/W?
> > > 
> > > No, unfortunately you can't. And I really want to keep that, in case
> > > in the future there are some backwards incompatible changes.
> > 
> > Rob,
> > 
> > I know you reviewed this already, but you can give your opinion on
> > this specifically please?  I know that we have pushed back on this in
> > the past.
> 
> Oh, come one. That is an arbitrary string. "sl28cpld-r1" is the first
> implementation of this. A future "sl28cpld-r2" might look completely
> different and might not suite the simple MFD at all. "sl28cpld" is
> a made up name - as "sl28cpld-r1" is, too.

Well that sounds bogus for a start.  I guess that's one of the
problems with trying to support programmable H/W in S/W.
 
If it's okay with Rob, then I'll be okay with it.

Just to note, this has not been okay for others in the past, and this
use-case is not 'special'.
Michael Walle July 28, 2020, 9:06 a.m. UTC | #6
Am 2020-07-28 10:56, schrieb Lee Jones:
>> > > > > +$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
>> > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> > > > > +
>> > > > > +title: Kontron's sl28cpld board management controller
>> > > >
>> > > > "S128CPLD" ?
>> > >
>> > > still not, its sl28cpld, think of a project/code name, not the product
>> > > appended with CPLD.
>> > >
>> > > > "Board Management Controller (BMC)" ?
>> > >
>> > > sounds like IPMI, which I wanted to avoid.
>> >
>> > Is there a datasheet?
>> 
>> No there isn't.
> 
> Then what are you working from?

Ok, there is no public datasheet. If that wasn't clear before, I'm 
working
for that company that also implemented that CPLD.

>> > > > > +maintainers:
>> > > > > +  - Michael Walle <michael@walle.cc>
>> > > > > +
>> > > > > +description: |
>> > > > > +  The board management controller may contain different IP blocks
>> > > > > like
>> > > > > +  watchdog, fan monitoring, PWM controller, interrupt controller
>> > > > > and a
>> > > > > +  GPIO controller.
>> > > > > +
>> > > > > +properties:
>> > > > > +  compatible:
>> > > > > +    const: kontron,sl28cpld-r1
>> > > >
>> > > > We don't usually code revision numbers in compatible strings.
>> > > >
>> > > > Is there any way to pull this from the H/W?
>> > >
>> > > No, unfortunately you can't. And I really want to keep that, in case
>> > > in the future there are some backwards incompatible changes.
>> >
>> > Rob,
>> >
>> > I know you reviewed this already, but you can give your opinion on
>> > this specifically please?  I know that we have pushed back on this in
>> > the past.
>> 
>> Oh, come one. That is an arbitrary string. "sl28cpld-r1" is the first
>> implementation of this. A future "sl28cpld-r2" might look completely
>> different and might not suite the simple MFD at all. "sl28cpld" is
>> a made up name - as "sl28cpld-r1" is, too.
> 
> Well that sounds bogus for a start.  I guess that's one of the
> problems with trying to support programmable H/W in S/W.

What sounds bogus? That we name the implementation sl28cpld? How
is that different to like adt7411? Its just a name made up by the
vendor. So if there is a new version of the adt7411 the vendor
might name it adt7412. We name it sl28cpld-r2. So what is the
problem here?

-michael
Lee Jones July 28, 2020, 9:20 a.m. UTC | #7
On Tue, 28 Jul 2020, Michael Walle wrote:

> Am 2020-07-28 10:56, schrieb Lee Jones:
> > > > > > > +$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
> > > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > > > > +
> > > > > > > +title: Kontron's sl28cpld board management controller
> > > > > >
> > > > > > "S128CPLD" ?
> > > > >
> > > > > still not, its sl28cpld, think of a project/code name, not the product
> > > > > appended with CPLD.
> > > > >
> > > > > > "Board Management Controller (BMC)" ?
> > > > >
> > > > > sounds like IPMI, which I wanted to avoid.
> > > >
> > > > Is there a datasheet?
> > > 
> > > No there isn't.
> > 
> > Then what are you working from?
> 
> Ok, there is no public datasheet. If that wasn't clear before, I'm working
> for that company that also implemented that CPLD.

No, that wasn't clear.  You said there was no datasheet.

> > > > > > > +maintainers:
> > > > > > > +  - Michael Walle <michael@walle.cc>
> > > > > > > +
> > > > > > > +description: |
> > > > > > > +  The board management controller may contain different IP blocks
> > > > > > > like
> > > > > > > +  watchdog, fan monitoring, PWM controller, interrupt controller
> > > > > > > and a
> > > > > > > +  GPIO controller.
> > > > > > > +
> > > > > > > +properties:
> > > > > > > +  compatible:
> > > > > > > +    const: kontron,sl28cpld-r1
> > > > > >
> > > > > > We don't usually code revision numbers in compatible strings.
> > > > > >
> > > > > > Is there any way to pull this from the H/W?
> > > > >
> > > > > No, unfortunately you can't. And I really want to keep that, in case
> > > > > in the future there are some backwards incompatible changes.
> > > >
> > > > Rob,
> > > >
> > > > I know you reviewed this already, but you can give your opinion on
> > > > this specifically please?  I know that we have pushed back on this in
> > > > the past.
> > > 
> > > Oh, come one. That is an arbitrary string. "sl28cpld-r1" is the first
> > > implementation of this. A future "sl28cpld-r2" might look completely
> > > different and might not suite the simple MFD at all. "sl28cpld" is
> > > a made up name - as "sl28cpld-r1" is, too.
> > 
> > Well that sounds bogus for a start.  I guess that's one of the
> > problems with trying to support programmable H/W in S/W.
> 
> What sounds bogus? That we name the implementation sl28cpld?
> How is that different to like adt7411? Its just a name made up by
> the vendor. So if there is a new version of the adt7411 the vendor 
> might name it adt7412.

Using an arbitrary string as a compatible would be bogus.

So here 'sl28cpld' is the device name, so it's not actually
arbitrary.  That's a good start.

> We name it sl28cpld-r2. So what is the problem here?

Do you though?  So 'sl28cpld-r1' is the name of the device?  The name
that is quoted from the (private) datasheet?  Because looking at the
implementation and going by the conversation, it sounds as though
you-re only adding the '-r1' piece to the compatible string for
revision identification.  Which if true, is not usually allowed and
warrants intervention by Rob.
Michael Walle July 28, 2020, 9:39 a.m. UTC | #8
Am 2020-07-28 11:20, schrieb Lee Jones:
>> What sounds bogus? That we name the implementation sl28cpld?
>> How is that different to like adt7411? Its just a name made up by
>> the vendor. So if there is a new version of the adt7411 the vendor
>> might name it adt7412.
> 
> Using an arbitrary string as a compatible would be bogus.
> 
> So here 'sl28cpld' is the device name, so it's not actually
> arbitrary.  That's a good start.
> 
>> We name it sl28cpld-r2. So what is the problem here?
> 
> Do you though?  So 'sl28cpld-r1' is the name of the device?  The name
> that is quoted from the (private) datasheet?  Because looking at the
> implementation and going by the conversation, it sounds as though
> you-re only adding the '-r1' piece to the compatible string for
> revision identification.  Which if true, is not usually allowed and
> warrants intervention by Rob.

Revisions would imply backwards compatibility, correct? I'm not
aming for that. Yes, I appended that "-r1" (in the lack of any
better suffix) because I didn't want to tie the base name to the
simple MFD, just in case. And isn't that the whole purpose of
the compatible string? To connect a driver to a piece of
hardware?

But even here, I don't care anymore. I strip it again. So future
incarnations which aren't compatible with simple mfd will need
another name. So what.

-michael
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
new file mode 100644
index 000000000000..9a63a158a796
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
@@ -0,0 +1,54 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/kontron,sl28cpld-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GPIO driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+  There are three flavors of the GPIO controller, one full featured
+  input/output with interrupt support (kontron,sl28cpld-gpio), one
+  output-only (kontron,sl28-gpo) and one input-only (kontron,sl28-gpi).
+
+  Each controller supports 8 GPIO lines.
+
+properties:
+  compatible:
+    enum:
+      - kontron,sl28cpld-gpio
+      - kontron,sl28cpld-gpi
+      - kontron,sl28cpld-gpo
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 2
+
+  interrupt-controller: true
+
+  "#gpio-cells":
+    const: 2
+
+  gpio-controller: true
+
+  gpio-line-names:
+      minItems: 1
+      maxItems: 8
+
+required:
+  - compatible
+  - "#gpio-cells"
+  - gpio-controller
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
new file mode 100644
index 000000000000..1cebd61c6c32
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
@@ -0,0 +1,27 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/kontron,sl28cpld-hwmon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Hardware monitoring driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+properties:
+  compatible:
+    enum:
+      - kontron,sl28cpld-fan
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
new file mode 100644
index 000000000000..4c39e9ff9aea
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
@@ -0,0 +1,54 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/kontron,sl28cpld-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Interrupt controller driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+  The following interrupts are available. All types and levels are fixed
+  and handled by the board management controller.
+
+  ==== ============= ==================================
+   IRQ line/device   description
+  ==== ============= ==================================
+    0  RTC_INT#      Interrupt line from on-board RTC
+    1  SMB_ALERT#    Event on SMB_ALERT# line (P1)
+    2  ESPI_ALERT0#  Event on ESPI_ALERT0# line (S43)
+    3  ESPI_ALERT1#  Event on ESPI_ALERT1# line (S44)
+    4  PWR_BTN#      Event on PWR_BTN# line (P128)
+    5  SLEEP#        Event on SLEEP# line (S149)
+    6  watchdog      Interrupt of the internal watchdog
+    7  n/a           not used
+  ==== ============= ==================================
+
+properties:
+  compatible:
+    enum:
+      - kontron,sl28cpld-intc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 2
+
+  interrupt-controller: true
+
+required:
+  - compatible
+  - interrupts
+  - "#interrupt-cells"
+  - interrupt-controller
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
new file mode 100644
index 000000000000..e3a62db678e7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
@@ -0,0 +1,153 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/kontron,sl28cpld.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Kontron's sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  The board management controller may contain different IP blocks like
+  watchdog, fan monitoring, PWM controller, interrupt controller and a
+  GPIO controller.
+
+properties:
+  compatible:
+    const: kontron,sl28cpld-r1
+
+  reg:
+    description:
+      I2C device address.
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+  "#interrupt-cells":
+    const: 2
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+patternProperties:
+  "^gpio(@[0-9a-f]+)?$":
+    $ref: ../gpio/kontron,sl28cpld-gpio.yaml
+
+  "^hwmon(@[0-9a-f]+)?$":
+    $ref: ../hwmon/kontron,sl28cpld-hwmon.yaml
+
+  "^interrupt-controller(@[0-9a-f]+)?$":
+    $ref: ../interrupt-controller/kontron,sl28cpld-intc.yaml
+
+  "^pwm(@[0-9a-f]+)?$":
+    $ref: ../pwm/kontron,sl28cpld-pwm.yaml
+
+  "^watchdog(@[0-9a-f]+)?$":
+    $ref: ../watchdog/kontron,sl28cpld-wdt.yaml
+
+required:
+  - "#address-cells"
+  - "#size-cells"
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        sl28cpld@4a {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "kontron,sl28cpld-r1";
+            reg = <0x4a>;
+
+            watchdog@4 {
+                compatible = "kontron,sl28cpld-wdt";
+                reg = <0x4>;
+                kontron,assert-wdt-timeout-pin;
+            };
+
+            hwmon@b {
+                compatible = "kontron,sl28cpld-fan";
+                reg = <0xb>;
+            };
+
+            pwm@c {
+                #pwm-cells = <2>;
+                compatible = "kontron,sl28cpld-pwm";
+                reg = <0xc>;
+            };
+
+            pwm@e {
+                #pwm-cells = <2>;
+                compatible = "kontron,sl28cpld-pwm";
+                reg = <0xe>;
+            };
+
+            gpio@10 {
+                compatible = "kontron,sl28cpld-gpio";
+                reg = <0x10>;
+                interrupts-extended = <&gpio2 6
+                               IRQ_TYPE_EDGE_FALLING>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+                gpio-line-names = "a", "b", "c";
+
+                interrupt-controller;
+                #interrupt-cells = <2>;
+            };
+
+            gpio@15 {
+                compatible = "kontron,sl28cpld-gpio";
+                reg = <0x15>;
+                interrupts-extended = <&gpio2 6
+                               IRQ_TYPE_EDGE_FALLING>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+
+                interrupt-controller;
+                #interrupt-cells = <2>;
+            };
+
+            gpio@1a {
+                compatible = "kontron,sl28cpld-gpo";
+                reg = <0x1a>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+            };
+
+            gpio@1b {
+                compatible = "kontron,sl28cpld-gpi";
+                reg = <0x1b>;
+
+                gpio-controller;
+                #gpio-cells = <2>;
+            };
+
+            interrupt-controller@1c {
+                compatible = "kontron,sl28cpld-intc";
+                reg = <0x1c>;
+                interrupts-extended = <&gpio2 6
+                               IRQ_TYPE_EDGE_FALLING>;
+
+                interrupt-controller;
+                #interrupt-cells = <2>;
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml b/Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
new file mode 100644
index 000000000000..02fe88c30233
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
@@ -0,0 +1,35 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/kontron,sl28cpld-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: PWM driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+  The controller supports one PWM channel and supports only four distinct
+  frequencies (250Hz, 500Hz, 1kHz, 2kHz).
+
+allOf:
+  - $ref: pwm.yaml#
+
+properties:
+  compatible:
+    const: kontron,sl28cpld-pwm
+
+  reg:
+    maxItems: 1
+
+  "#pwm-cells":
+    const: 2
+
+required:
+  - compatible
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml b/Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
new file mode 100644
index 000000000000..dd6559f2973a
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
@@ -0,0 +1,35 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/watchdog/kontron,sl28cpld-wdt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Watchdog driver for the sl28cpld board management controller
+
+maintainers:
+  - Michael Walle <michael@walle.cc>
+
+description: |
+  This module is part of the sl28cpld multi-function device. For more
+  details see Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml.
+
+allOf:
+  - $ref: watchdog.yaml#
+
+properties:
+  compatible:
+    const: kontron,sl28cpld-wdt
+
+  reg:
+    maxItems: 1
+
+  kontron,assert-wdt-timeout-pin:
+    description: The SMARC standard defines a WDT_TIME_OUT# pin. If this
+      property is set, this output will be pulsed when the watchdog bites
+      and the system resets.
+    type: boolean
+
+required:
+  - compatible
+
+additionalProperties: false