dt-bindings: mfd: Move embedded controllers to own directory
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Mon, 25 Aug 2025 08:12:02 +0000 (10:12 +0200)
committerLee Jones <lee@kernel.org>
Wed, 1 Oct 2025 09:28:27 +0000 (10:28 +0100)
Move several embedded controller bindings (like ChromeOS EC, Gateworks
System Controller and Kontron sl28cpld Board Management) to new
subdirectory "embedded-controller" matching their purpose.

An embedded controller (EC) is a discrete component that contains a
microcontroller (i.e. a small CPU running a small firmware without
operating system) mounted into a larger computer system running
a fully fledged operating system that needs to utilize the embedded
controller as part of its operation.

So far the EC bindings were split between "mfd" and "platform"
directory.  MFD name comes from Linux, not hardware, and "platform" is a
bit too generic.

Rename Gateworks GSC and Huawei Gaokun filenames to match compatible, as
preferred for bindings.

Acked-by: Michael Walle <mwalle@kernel.org> # for sl28cpld
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: Mark Brown <broonie@kernel.org>
Reviewed-by: "Rob Herring (Arm)" <robh@kernel.org>
Link: https://lore.kernel.org/r/20250825081201.9775-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Lee Jones <lee@kernel.org>
23 files changed:
Documentation/devicetree/bindings/embedded-controller/acer,aspire1-ec.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/embedded-controller/google,cros-ec.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/embedded-controller/gw,gsc.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/embedded-controller/huawei,gaokun3-ec.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/embedded-controller/kontron,sl28cpld.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/embedded-controller/lenovo,yoga-c630-ec.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/embedded-controller/microsoft,surface-sam.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml [deleted file]
Documentation/devicetree/bindings/mfd/google,cros-ec.yaml [deleted file]
Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml [deleted file]
Documentation/devicetree/bindings/platform/acer,aspire1-ec.yaml [deleted file]
Documentation/devicetree/bindings/platform/huawei,gaokun-ec.yaml [deleted file]
Documentation/devicetree/bindings/platform/lenovo,yoga-c630-ec.yaml [deleted file]
Documentation/devicetree/bindings/platform/microsoft,surface-sam.yaml [deleted file]
Documentation/devicetree/bindings/pwm/google,cros-ec-pwm.yaml
Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
Documentation/devicetree/bindings/remoteproc/mtk,scp.yaml
Documentation/devicetree/bindings/sound/google,cros-ec-codec.yaml
Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
MAINTAINERS

diff --git a/Documentation/devicetree/bindings/embedded-controller/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/embedded-controller/acer,aspire1-ec.yaml
new file mode 100644 (file)
index 0000000..01ee617
--- /dev/null
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/embedded-controller/acer,aspire1-ec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Acer Aspire 1 Embedded Controller
+
+maintainers:
+  - Nikita Travkin <nikita@trvn.ru>
+
+description:
+  The Acer Aspire 1 laptop uses an embedded controller to control battery
+  and charging as well as to provide a set of misc features such as the
+  laptop lid status and HPD events for the USB Type-C DP alt mode.
+
+properties:
+  compatible:
+    const: acer,aspire1-ec
+
+  reg:
+    const: 0x76
+
+  interrupts:
+    maxItems: 1
+
+  connector:
+    $ref: /schemas/connector/usb-connector.yaml#
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        embedded-controller@76 {
+            compatible = "acer,aspire1-ec";
+            reg = <0x76>;
+
+            interrupts-extended = <&tlmm 30 IRQ_TYPE_LEVEL_LOW>;
+
+            connector {
+                compatible = "usb-c-connector";
+
+                port {
+                    ec_dp_in: endpoint {
+                        remote-endpoint = <&mdss_dp_out>;
+                    };
+                };
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/embedded-controller/google,cros-ec.yaml b/Documentation/devicetree/bindings/embedded-controller/google,cros-ec.yaml
new file mode 100644 (file)
index 0000000..3ab5737
--- /dev/null
@@ -0,0 +1,326 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/embedded-controller/google,cros-ec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ChromeOS Embedded Controller
+
+maintainers:
+  - Benson Leung <bleung@chromium.org>
+  - Guenter Roeck <groeck@chromium.org>
+
+description:
+  Google's ChromeOS EC is a microcontroller which talks to the AP and
+  implements various functions such as keyboard and battery charging.
+  The EC can be connected through various interfaces (I2C, SPI, and others)
+  and the compatible string specifies which interface is being used.
+
+properties:
+  compatible:
+    oneOf:
+      - description:
+          For implementations of the EC connected through I2C.
+        const: google,cros-ec-i2c
+      - description:
+          For implementations of the EC connected through SPI.
+        const: google,cros-ec-spi
+      - description:
+          For implementations of the FPMCU connected through SPI.
+        items:
+          - const: google,cros-ec-fp
+          - const: google,cros-ec-spi
+      - description:
+          For implementations of the EC connected through RPMSG.
+        const: google,cros-ec-rpmsg
+      - description:
+          For implementations of the EC connected through UART.
+        const: google,cros-ec-uart
+
+  controller-data: true
+
+  google,cros-ec-spi-pre-delay:
+    description:
+      This property specifies the delay in usecs between the
+      assertion of the CS and the first clock pulse.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+  google,cros-ec-spi-msg-delay:
+    description:
+      This property specifies the delay in usecs between messages.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+
+  google,has-vbc-nvram:
+    description:
+      Some implementations of the EC include a small nvram space used to
+      store verified boot context data. This boolean flag is used to specify
+      whether this nvram is present or not.
+    type: boolean
+
+  mediatek,rpmsg-name:
+    description:
+      Must be defined if the cros-ec is a rpmsg device for a Mediatek
+      ARM Cortex M4 Co-processor. Contains the name of the rpmsg
+      device. Used to match the subnode to the rpmsg device announced by
+      the SCP.
+    $ref: /schemas/types.yaml#/definitions/string
+
+  spi-max-frequency: true
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  reset-gpios:
+    maxItems: 1
+
+  boot0-gpios:
+    maxItems: 1
+    description: Assert for bootloader mode.
+
+  vdd-supply: true
+
+  wakeup-source:
+    description: Button can wake-up the system.
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  '#gpio-cells':
+    const: 2
+
+  gpio-controller: true
+
+  typec:
+    $ref: /schemas/chrome/google,cros-ec-typec.yaml#
+
+  ec-pwm:
+    $ref: /schemas/pwm/google,cros-ec-pwm.yaml#
+    deprecated: true
+
+  pwm:
+    $ref: /schemas/pwm/google,cros-ec-pwm.yaml#
+
+  keyboard-controller:
+    $ref: /schemas/input/google,cros-ec-keyb.yaml#
+
+  proximity:
+    $ref: /schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#
+
+  codecs:
+    type: object
+    additionalProperties: false
+
+    properties:
+      '#address-cells':
+        const: 2
+
+      '#size-cells':
+        const: 1
+
+    patternProperties:
+      "^ec-codec@[a-f0-9]+$":
+        type: object
+        $ref: /schemas/sound/google,cros-ec-codec.yaml#
+
+    required:
+      - "#address-cells"
+      - "#size-cells"
+
+  cbas:
+    type: object
+
+    description:
+      This device is used to signal when a detachable base is attached
+      to a Chrome OS tablet. This device cannot be detected at runtime.
+
+    properties:
+      compatible:
+        const: google,cros-cbas
+
+    required:
+      - compatible
+
+    additionalProperties: false
+
+patternProperties:
+  "^i2c-tunnel[0-9]*$":
+    type: object
+    $ref: /schemas/i2c/google,cros-ec-i2c-tunnel.yaml#
+
+  "^regulator@[0-9]+$":
+    type: object
+    $ref: /schemas/regulator/google,cros-ec-regulator.yaml#
+
+  "^extcon[0-9]*$":
+    type: object
+    $ref: /schemas/extcon/extcon-usbc-cros-ec.yaml#
+
+required:
+  - compatible
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          not:
+            contains:
+              const: google,cros-ec-spi
+    then:
+      properties:
+        controller-data: false
+        google,cros-ec-spi-pre-delay: false
+        google,cros-ec-spi-msg-delay: false
+        spi-max-frequency: false
+    else:
+      $ref: /schemas/spi/spi-peripheral-props.yaml
+
+  - if:
+      properties:
+        compatible:
+          not:
+            contains:
+              const: google,cros-ec-rpmsg
+    then:
+      properties:
+        mediatek,rpmsg-name: false
+
+  - if:
+      properties:
+        compatible:
+          not:
+            contains:
+              enum:
+                - google,cros-ec-rpmsg
+                - google,cros-ec-uart
+    then:
+      required:
+        - reg
+        - interrupts
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: google,cros-ec-fp
+    then:
+      properties:
+        '#address-cells': false
+        '#size-cells': false
+        typec: false
+        ec-pwm: false
+        kbd-led-backlight: false
+        keyboard-controller: false
+        proximity: false
+        codecs: false
+        cbas: false
+
+      patternProperties:
+        "^i2c-tunnel[0-9]*$": false
+        "^regulator@[0-9]+$": false
+        "^extcon[0-9]*$": false
+
+      # Using additionalProperties: false here and
+      # listing true properties doesn't work
+
+      required:
+        - reset-gpios
+        - boot0-gpios
+        - vdd-supply
+    else:
+      properties:
+        reset-gpios: false
+        boot0-gpios: false
+        vdd-supply: false
+
+additionalProperties: false
+
+examples:
+  # Example for I2C
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        cros-ec@1e {
+            compatible = "google,cros-ec-i2c";
+            reg = <0x1e>;
+            interrupts = <6 0>;
+            interrupt-parent = <&gpio0>;
+        };
+    };
+
+  # Example for SPI
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        cros-ec@0 {
+            compatible = "google,cros-ec-spi";
+            reg = <0x0>;
+            google,cros-ec-spi-msg-delay = <30>;
+            google,cros-ec-spi-pre-delay = <10>;
+            interrupts = <99 0>;
+            interrupt-parent = <&gpio7>;
+            spi-max-frequency = <5000000>;
+            #gpio-cells = <2>;
+            gpio-controller;
+
+            proximity {
+                compatible = "google,cros-ec-mkbp-proximity";
+            };
+
+            cbas {
+                compatible = "google,cros-cbas";
+            };
+        };
+    };
+
+  # Example for RPMSG
+  - |
+    scp0 {
+        cros-ec {
+            compatible = "google,cros-ec-rpmsg";
+        };
+    };
+
+  # Example for FPMCU
+  - |
+    spi {
+      #address-cells = <0x1>;
+      #size-cells = <0x0>;
+
+      ec@0 {
+        compatible = "google,cros-ec-fp", "google,cros-ec-spi";
+        reg = <0x0>;
+        interrupt-parent = <&gpio_controller>;
+        interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+        spi-max-frequency = <3000000>;
+        reset-gpios = <&gpio_controller 5 GPIO_ACTIVE_LOW>;
+        boot0-gpios = <&gpio_controller 10 GPIO_ACTIVE_HIGH>;
+        vdd-supply = <&pp3300_fp_mcu>;
+      };
+    };
+
+  # Example for UART
+  - |
+    serial {
+        cros-ec {
+            compatible = "google,cros-ec-uart";
+        };
+    };
+...
diff --git a/Documentation/devicetree/bindings/embedded-controller/gw,gsc.yaml b/Documentation/devicetree/bindings/embedded-controller/gw,gsc.yaml
new file mode 100644 (file)
index 0000000..82d4b2d
--- /dev/null
@@ -0,0 +1,193 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/embedded-controller/gw,gsc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Gateworks System Controller
+
+description: |
+  The Gateworks System Controller (GSC) is a device present across various
+  Gateworks product families that provides a set of system related features
+  such as the following (refer to the board hardware user manuals to see what
+  features are present)
+   - Watchdog Timer
+   - GPIO
+   - Pushbutton controller
+   - Hardware monitor with ADC's for temperature and voltage rails and
+     fan controller
+
+maintainers:
+  - Tim Harvey <tharvey@gateworks.com>
+
+properties:
+  $nodename:
+    pattern: "gsc@[0-9a-f]{1,2}"
+  compatible:
+    const: gw,gsc
+
+  reg:
+    description: I2C device address
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+  adc:
+    type: object
+    additionalProperties: false
+    description: Optional hardware monitoring module
+
+    properties:
+      compatible:
+        const: gw,gsc-adc
+
+      "#address-cells":
+        const: 1
+
+      "#size-cells":
+        const: 0
+
+    patternProperties:
+      "^channel@[0-9a-f]+$":
+        type: object
+        additionalProperties: false
+        description: |
+          Properties for a single ADC which can report cooked values
+          (i.e. temperature sensor based on thermister), raw values
+          (i.e. voltage rail with a pre-scaling resistor divider).
+
+        properties:
+          reg:
+            description: Register of the ADC
+            maxItems: 1
+
+          label:
+            description: Name of the ADC input
+
+          gw,mode:
+            description: |
+              conversion mode:
+                0 - temperature, in C*10
+                1 - pre-scaled 24-bit voltage value
+                2 - scaled voltage based on an optional resistor divider
+                    and optional offset
+                3 - pre-scaled 16-bit voltage value
+                4 - fan tach input to report RPM's
+            $ref: /schemas/types.yaml#/definitions/uint32
+            enum: [0, 1, 2, 3, 4]
+
+          gw,voltage-divider-ohms:
+            description: Values of resistors for divider on raw ADC input
+            maxItems: 2
+            items:
+              minimum: 1000
+              maximum: 1000000
+
+          gw,voltage-offset-microvolt:
+            description: |
+              A positive voltage offset to apply to a raw ADC
+              (i.e. to compensate for a diode drop).
+            minimum: 0
+            maximum: 1000000
+
+        required:
+          - gw,mode
+          - reg
+          - label
+
+    required:
+      - compatible
+      - "#address-cells"
+      - "#size-cells"
+
+patternProperties:
+  "^fan-controller@[0-9a-f]+$":
+    type: object
+    additionalProperties: false
+    description: Optional fan controller
+
+    properties:
+      compatible:
+        const: gw,gsc-fan
+
+      reg:
+        description: The fan controller base address
+        maxItems: 1
+
+    required:
+      - compatible
+      - reg
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - "#interrupt-cells"
+  - "#address-cells"
+  - "#size-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        gsc@20 {
+            compatible = "gw,gsc";
+            reg = <0x20>;
+            interrupt-parent = <&gpio1>;
+            interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+            interrupt-controller;
+            #interrupt-cells = <1>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            adc {
+                compatible = "gw,gsc-adc";
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                channel@0 { /* A0: Board Temperature */
+                    reg = <0x00>;
+                    label = "temp";
+                    gw,mode = <0>;
+                };
+
+                channel@2 { /* A1: Input Voltage (raw ADC) */
+                    reg = <0x02>;
+                    label = "vdd_vin";
+                    gw,mode = <1>;
+                    gw,voltage-divider-ohms = <22100 1000>;
+                    gw,voltage-offset-microvolt = <800000>;
+                };
+
+                channel@b { /* A2: Battery voltage */
+                    reg = <0x0b>;
+                    label = "vdd_bat";
+                    gw,mode = <1>;
+                };
+            };
+
+            fan-controller@2c {
+                compatible = "gw,gsc-fan";
+                reg = <0x2c>;
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/embedded-controller/huawei,gaokun3-ec.yaml b/Documentation/devicetree/bindings/embedded-controller/huawei,gaokun3-ec.yaml
new file mode 100644 (file)
index 0000000..cd9e65b
--- /dev/null
@@ -0,0 +1,124 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/embedded-controller/huawei,gaokun3-ec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Huawei Matebook E Go Embedded Controller
+
+maintainers:
+  - Pengyu Luo <mitltlatltl@gmail.com>
+
+description:
+  Different from other Qualcomm Snapdragon sc8180x and sc8280xp-based
+  machines, the Huawei Matebook E Go tablets use embedded controllers
+  while others use a system called PMIC GLink which handles battery,
+  UCSI, USB Type-C DP Alt Mode. In addition, Huawei's implementation
+  also handles additional features, such as charging thresholds, FN
+  lock, smart charging, tablet lid status, thermal sensors, and more.
+
+properties:
+  compatible:
+    enum:
+      - huawei,gaokun3-ec
+
+  reg:
+    const: 0x38
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  interrupts:
+    maxItems: 1
+
+patternProperties:
+  '^connector@[01]$':
+    $ref: /schemas/connector/usb-connector.yaml#
+
+    properties:
+      reg:
+        maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        embedded-controller@38 {
+            compatible = "huawei,gaokun3-ec";
+            reg = <0x38>;
+
+            interrupts-extended = <&tlmm 107 IRQ_TYPE_LEVEL_LOW>;
+
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            connector@0 {
+                compatible = "usb-c-connector";
+                reg = <0>;
+                power-role = "dual";
+                data-role = "dual";
+
+                ports {
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    port@0 {
+                        reg = <0>;
+
+                        ucsi0_ss_in: endpoint {
+                            remote-endpoint = <&usb_0_qmpphy_out>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        ucsi0_sbu: endpoint {
+                            remote-endpoint = <&usb0_sbu_mux>;
+                        };
+                    };
+                };
+            };
+
+            connector@1 {
+                compatible = "usb-c-connector";
+                reg = <1>;
+                power-role = "dual";
+                data-role = "dual";
+
+                ports {
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    port@0 {
+                        reg = <0>;
+
+                        ucsi1_ss_in: endpoint {
+                            remote-endpoint = <&usb_1_qmpphy_out>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        ucsi1_sbu: endpoint {
+                            remote-endpoint = <&usb1_sbu_mux>;
+                        };
+                    };
+                };
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/embedded-controller/kontron,sl28cpld.yaml b/Documentation/devicetree/bindings/embedded-controller/kontron,sl28cpld.yaml
new file mode 100644 (file)
index 0000000..0b752f3
--- /dev/null
@@ -0,0 +1,153 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/embedded-controller/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
+
+  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: /schemas/gpio/kontron,sl28cpld-gpio.yaml
+
+  "^hwmon(@[0-9a-f]+)?$":
+    $ref: /schemas/hwmon/kontron,sl28cpld-hwmon.yaml
+
+  "^interrupt-controller(@[0-9a-f]+)?$":
+    $ref: /schemas/interrupt-controller/kontron,sl28cpld-intc.yaml
+
+  "^pwm(@[0-9a-f]+)?$":
+    $ref: /schemas/pwm/kontron,sl28cpld-pwm.yaml
+
+  "^watchdog(@[0-9a-f]+)?$":
+    $ref: /schemas/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 {
+            compatible = "kontron,sl28cpld";
+            reg = <0x4a>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            watchdog@4 {
+                compatible = "kontron,sl28cpld-wdt";
+                reg = <0x4>;
+                kontron,assert-wdt-timeout-pin;
+            };
+
+            hwmon@b {
+                compatible = "kontron,sl28cpld-fan";
+                reg = <0xb>;
+            };
+
+            pwm@c {
+                compatible = "kontron,sl28cpld-pwm";
+                reg = <0xc>;
+                #pwm-cells = <2>;
+            };
+
+            pwm@e {
+                compatible = "kontron,sl28cpld-pwm";
+                reg = <0xe>;
+                #pwm-cells = <2>;
+            };
+
+            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/embedded-controller/lenovo,yoga-c630-ec.yaml b/Documentation/devicetree/bindings/embedded-controller/lenovo,yoga-c630-ec.yaml
new file mode 100644 (file)
index 0000000..a029b38
--- /dev/null
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/embedded-controller/lenovo,yoga-c630-ec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Lenovo Yoga C630 Embedded Controller.
+
+maintainers:
+  - Bjorn Andersson <andersson@kernel.org>
+
+description:
+  The Qualcomm Snapdragon-based Lenovo Yoga C630 has an Embedded Controller
+  (EC) which handles things such as battery and USB Type-C. This binding
+  describes the interface, on an I2C bus, to this EC.
+
+properties:
+  compatible:
+    const: lenovo,yoga-c630-ec
+
+  reg:
+    const: 0x70
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  interrupts:
+    maxItems: 1
+
+patternProperties:
+  '^connector@[01]$':
+    $ref: /schemas/connector/usb-connector.yaml#
+
+    properties:
+      reg:
+        maxItems: 1
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |+
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c1 {
+        clock-frequency = <400000>;
+
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        embedded-controller@70 {
+            compatible = "lenovo,yoga-c630-ec";
+            reg = <0x70>;
+
+            interrupts-extended = <&tlmm 20 IRQ_TYPE_LEVEL_HIGH>;
+
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            connector@0 {
+                compatible = "usb-c-connector";
+                reg = <0>;
+                power-role = "source";
+                data-role = "host";
+            };
+
+            connector@1 {
+                compatible = "usb-c-connector";
+                reg = <1>;
+                power-role = "source";
+                data-role = "host";
+            };
+        };
+    };
+...
diff --git a/Documentation/devicetree/bindings/embedded-controller/microsoft,surface-sam.yaml b/Documentation/devicetree/bindings/embedded-controller/microsoft,surface-sam.yaml
new file mode 100644 (file)
index 0000000..9202cfc
--- /dev/null
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/embedded-controller/microsoft,surface-sam.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Surface System Aggregator Module (SAM, SSAM)
+
+maintainers:
+  - Konrad Dybcio <konradybcio@kernel.org>
+
+description: |
+  Surface devices use a standardized embedded controller to let the
+  operating system interface with various hardware functions. The
+  specific functionalities are modeled as subdevices and matched on
+  five levels: domain, category, target, instance and function.
+
+properties:
+  compatible:
+    const: microsoft,surface-sam
+
+  interrupts:
+    maxItems: 1
+
+  current-speed: true
+
+required:
+  - compatible
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    uart {
+        embedded-controller {
+            compatible = "microsoft,surface-sam";
+
+            interrupts-extended = <&tlmm 91 IRQ_TYPE_EDGE_RISING>;
+
+            pinctrl-0 = <&ssam_state>;
+            pinctrl-names = "default";
+
+            current-speed = <4000000>;
+        };
+    };
index b032471..02663d6 100644 (file)
@@ -11,7 +11,7 @@ maintainers:
 
 description: |
   This module is part of the sl28cpld multi-function device. For more
-  details see ../mfd/kontron,sl28cpld.yaml.
+  details see ../embedded-controller/kontron,sl28cpld.yaml.
 
   There are three flavors of the GPIO controller, one full featured
   input/output with interrupt support (kontron,sl28cpld-gpio), one
index 010333c..5803a17 100644 (file)
@@ -11,7 +11,7 @@ maintainers:
 
 description: |
   This module is part of the sl28cpld multi-function device. For more
-  details see ../mfd/kontron,sl28cpld.yaml.
+  details see ../embedded-controller/kontron,sl28cpld.yaml.
 
 properties:
   compatible:
index e8dfa65..87df07b 100644 (file)
@@ -11,7 +11,7 @@ maintainers:
 
 description: |
   This module is part of the sl28cpld multi-function device. For more
-  details see ../mfd/kontron,sl28cpld.yaml.
+  details see ../embedded-controller/kontron,sl28cpld.yaml.
 
   The following interrupts are available. All types and levels are fixed
   and handled by the board management controller.
diff --git a/Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml b/Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml
deleted file mode 100644 (file)
index dc379f3..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/mfd/gateworks-gsc.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Gateworks System Controller
-
-description: |
-  The Gateworks System Controller (GSC) is a device present across various
-  Gateworks product families that provides a set of system related features
-  such as the following (refer to the board hardware user manuals to see what
-  features are present)
-   - Watchdog Timer
-   - GPIO
-   - Pushbutton controller
-   - Hardware monitor with ADC's for temperature and voltage rails and
-     fan controller
-
-maintainers:
-  - Tim Harvey <tharvey@gateworks.com>
-
-properties:
-  $nodename:
-    pattern: "gsc@[0-9a-f]{1,2}"
-  compatible:
-    const: gw,gsc
-
-  reg:
-    description: I2C device address
-    maxItems: 1
-
-  interrupts:
-    maxItems: 1
-
-  interrupt-controller: true
-
-  "#interrupt-cells":
-    const: 1
-
-  "#address-cells":
-    const: 1
-
-  "#size-cells":
-    const: 0
-
-  adc:
-    type: object
-    additionalProperties: false
-    description: Optional hardware monitoring module
-
-    properties:
-      compatible:
-        const: gw,gsc-adc
-
-      "#address-cells":
-        const: 1
-
-      "#size-cells":
-        const: 0
-
-    patternProperties:
-      "^channel@[0-9a-f]+$":
-        type: object
-        additionalProperties: false
-        description: |
-          Properties for a single ADC which can report cooked values
-          (i.e. temperature sensor based on thermister), raw values
-          (i.e. voltage rail with a pre-scaling resistor divider).
-
-        properties:
-          reg:
-            description: Register of the ADC
-            maxItems: 1
-
-          label:
-            description: Name of the ADC input
-
-          gw,mode:
-            description: |
-              conversion mode:
-                0 - temperature, in C*10
-                1 - pre-scaled 24-bit voltage value
-                2 - scaled voltage based on an optional resistor divider
-                    and optional offset
-                3 - pre-scaled 16-bit voltage value
-                4 - fan tach input to report RPM's
-            $ref: /schemas/types.yaml#/definitions/uint32
-            enum: [0, 1, 2, 3, 4]
-
-          gw,voltage-divider-ohms:
-            description: Values of resistors for divider on raw ADC input
-            maxItems: 2
-            items:
-              minimum: 1000
-              maximum: 1000000
-
-          gw,voltage-offset-microvolt:
-            description: |
-              A positive voltage offset to apply to a raw ADC
-              (i.e. to compensate for a diode drop).
-            minimum: 0
-            maximum: 1000000
-
-        required:
-          - gw,mode
-          - reg
-          - label
-
-    required:
-      - compatible
-      - "#address-cells"
-      - "#size-cells"
-
-patternProperties:
-  "^fan-controller@[0-9a-f]+$":
-    type: object
-    additionalProperties: false
-    description: Optional fan controller
-
-    properties:
-      compatible:
-        const: gw,gsc-fan
-
-      reg:
-        description: The fan controller base address
-        maxItems: 1
-
-    required:
-      - compatible
-      - reg
-
-required:
-  - compatible
-  - reg
-  - interrupts
-  - interrupt-controller
-  - "#interrupt-cells"
-  - "#address-cells"
-  - "#size-cells"
-
-additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/gpio/gpio.h>
-    #include <dt-bindings/interrupt-controller/irq.h>
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        gsc@20 {
-            compatible = "gw,gsc";
-            reg = <0x20>;
-            interrupt-parent = <&gpio1>;
-            interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
-            interrupt-controller;
-            #interrupt-cells = <1>;
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            adc {
-                compatible = "gw,gsc-adc";
-                #address-cells = <1>;
-                #size-cells = <0>;
-
-                channel@0 { /* A0: Board Temperature */
-                    reg = <0x00>;
-                    label = "temp";
-                    gw,mode = <0>;
-                };
-
-                channel@2 { /* A1: Input Voltage (raw ADC) */
-                    reg = <0x02>;
-                    label = "vdd_vin";
-                    gw,mode = <1>;
-                    gw,voltage-divider-ohms = <22100 1000>;
-                    gw,voltage-offset-microvolt = <800000>;
-                };
-
-                channel@b { /* A2: Battery voltage */
-                    reg = <0x0b>;
-                    label = "vdd_bat";
-                    gw,mode = <1>;
-                };
-            };
-
-            fan-controller@2c {
-                compatible = "gw,gsc-fan";
-                reg = <0x2c>;
-            };
-        };
-    };
diff --git a/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml b/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
deleted file mode 100644 (file)
index 50f4570..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/mfd/google,cros-ec.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: ChromeOS Embedded Controller
-
-maintainers:
-  - Benson Leung <bleung@chromium.org>
-  - Guenter Roeck <groeck@chromium.org>
-
-description:
-  Google's ChromeOS EC is a microcontroller which talks to the AP and
-  implements various functions such as keyboard and battery charging.
-  The EC can be connected through various interfaces (I2C, SPI, and others)
-  and the compatible string specifies which interface is being used.
-
-properties:
-  compatible:
-    oneOf:
-      - description:
-          For implementations of the EC connected through I2C.
-        const: google,cros-ec-i2c
-      - description:
-          For implementations of the EC connected through SPI.
-        const: google,cros-ec-spi
-      - description:
-          For implementations of the FPMCU connected through SPI.
-        items:
-          - const: google,cros-ec-fp
-          - const: google,cros-ec-spi
-      - description:
-          For implementations of the EC connected through RPMSG.
-        const: google,cros-ec-rpmsg
-      - description:
-          For implementations of the EC connected through UART.
-        const: google,cros-ec-uart
-
-  controller-data: true
-
-  google,cros-ec-spi-pre-delay:
-    description:
-      This property specifies the delay in usecs between the
-      assertion of the CS and the first clock pulse.
-    $ref: /schemas/types.yaml#/definitions/uint32
-    default: 0
-
-  google,cros-ec-spi-msg-delay:
-    description:
-      This property specifies the delay in usecs between messages.
-    $ref: /schemas/types.yaml#/definitions/uint32
-    default: 0
-
-  google,has-vbc-nvram:
-    description:
-      Some implementations of the EC include a small nvram space used to
-      store verified boot context data. This boolean flag is used to specify
-      whether this nvram is present or not.
-    type: boolean
-
-  mediatek,rpmsg-name:
-    description:
-      Must be defined if the cros-ec is a rpmsg device for a Mediatek
-      ARM Cortex M4 Co-processor. Contains the name of the rpmsg
-      device. Used to match the subnode to the rpmsg device announced by
-      the SCP.
-    $ref: /schemas/types.yaml#/definitions/string
-
-  spi-max-frequency: true
-
-  reg:
-    maxItems: 1
-
-  interrupts:
-    maxItems: 1
-
-  reset-gpios:
-    maxItems: 1
-
-  boot0-gpios:
-    maxItems: 1
-    description: Assert for bootloader mode.
-
-  vdd-supply: true
-
-  wakeup-source:
-    description: Button can wake-up the system.
-
-  '#address-cells':
-    const: 1
-
-  '#size-cells':
-    const: 0
-
-  '#gpio-cells':
-    const: 2
-
-  gpio-controller: true
-
-  typec:
-    $ref: /schemas/chrome/google,cros-ec-typec.yaml#
-
-  ec-pwm:
-    $ref: /schemas/pwm/google,cros-ec-pwm.yaml#
-    deprecated: true
-
-  pwm:
-    $ref: /schemas/pwm/google,cros-ec-pwm.yaml#
-
-  keyboard-controller:
-    $ref: /schemas/input/google,cros-ec-keyb.yaml#
-
-  proximity:
-    $ref: /schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#
-
-  codecs:
-    type: object
-    additionalProperties: false
-
-    properties:
-      '#address-cells':
-        const: 2
-
-      '#size-cells':
-        const: 1
-
-    patternProperties:
-      "^ec-codec@[a-f0-9]+$":
-        type: object
-        $ref: /schemas/sound/google,cros-ec-codec.yaml#
-
-    required:
-      - "#address-cells"
-      - "#size-cells"
-
-  cbas:
-    type: object
-
-    description:
-      This device is used to signal when a detachable base is attached
-      to a Chrome OS tablet. This device cannot be detected at runtime.
-
-    properties:
-      compatible:
-        const: google,cros-cbas
-
-    required:
-      - compatible
-
-    additionalProperties: false
-
-patternProperties:
-  "^i2c-tunnel[0-9]*$":
-    type: object
-    $ref: /schemas/i2c/google,cros-ec-i2c-tunnel.yaml#
-
-  "^regulator@[0-9]+$":
-    type: object
-    $ref: /schemas/regulator/google,cros-ec-regulator.yaml#
-
-  "^extcon[0-9]*$":
-    type: object
-    $ref: /schemas/extcon/extcon-usbc-cros-ec.yaml#
-
-required:
-  - compatible
-
-allOf:
-  - if:
-      properties:
-        compatible:
-          not:
-            contains:
-              const: google,cros-ec-spi
-    then:
-      properties:
-        controller-data: false
-        google,cros-ec-spi-pre-delay: false
-        google,cros-ec-spi-msg-delay: false
-        spi-max-frequency: false
-    else:
-      $ref: /schemas/spi/spi-peripheral-props.yaml
-
-  - if:
-      properties:
-        compatible:
-          not:
-            contains:
-              const: google,cros-ec-rpmsg
-    then:
-      properties:
-        mediatek,rpmsg-name: false
-
-  - if:
-      properties:
-        compatible:
-          not:
-            contains:
-              enum:
-                - google,cros-ec-rpmsg
-                - google,cros-ec-uart
-    then:
-      required:
-        - reg
-        - interrupts
-
-  - if:
-      properties:
-        compatible:
-          contains:
-            const: google,cros-ec-fp
-    then:
-      properties:
-        '#address-cells': false
-        '#size-cells': false
-        typec: false
-        ec-pwm: false
-        kbd-led-backlight: false
-        keyboard-controller: false
-        proximity: false
-        codecs: false
-        cbas: false
-
-      patternProperties:
-        "^i2c-tunnel[0-9]*$": false
-        "^regulator@[0-9]+$": false
-        "^extcon[0-9]*$": false
-
-      # Using additionalProperties: false here and
-      # listing true properties doesn't work
-
-      required:
-        - reset-gpios
-        - boot0-gpios
-        - vdd-supply
-    else:
-      properties:
-        reset-gpios: false
-        boot0-gpios: false
-        vdd-supply: false
-
-additionalProperties: false
-
-examples:
-  # Example for I2C
-  - |
-    #include <dt-bindings/gpio/gpio.h>
-    #include <dt-bindings/interrupt-controller/irq.h>
-
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        cros-ec@1e {
-            compatible = "google,cros-ec-i2c";
-            reg = <0x1e>;
-            interrupts = <6 0>;
-            interrupt-parent = <&gpio0>;
-        };
-    };
-
-  # Example for SPI
-  - |
-    #include <dt-bindings/gpio/gpio.h>
-    #include <dt-bindings/interrupt-controller/irq.h>
-
-    spi {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        cros-ec@0 {
-            compatible = "google,cros-ec-spi";
-            reg = <0x0>;
-            google,cros-ec-spi-msg-delay = <30>;
-            google,cros-ec-spi-pre-delay = <10>;
-            interrupts = <99 0>;
-            interrupt-parent = <&gpio7>;
-            spi-max-frequency = <5000000>;
-            #gpio-cells = <2>;
-            gpio-controller;
-
-            proximity {
-                compatible = "google,cros-ec-mkbp-proximity";
-            };
-
-            cbas {
-                compatible = "google,cros-cbas";
-            };
-        };
-    };
-
-  # Example for RPMSG
-  - |
-    scp0 {
-        cros-ec {
-            compatible = "google,cros-ec-rpmsg";
-        };
-    };
-
-  # Example for FPMCU
-  - |
-    spi {
-      #address-cells = <0x1>;
-      #size-cells = <0x0>;
-
-      ec@0 {
-        compatible = "google,cros-ec-fp", "google,cros-ec-spi";
-        reg = <0x0>;
-        interrupt-parent = <&gpio_controller>;
-        interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
-        spi-max-frequency = <3000000>;
-        reset-gpios = <&gpio_controller 5 GPIO_ACTIVE_LOW>;
-        boot0-gpios = <&gpio_controller 10 GPIO_ACTIVE_HIGH>;
-        vdd-supply = <&pp3300_fp_mcu>;
-      };
-    };
-
-  # Example for UART
-  - |
-    serial {
-        cros-ec {
-            compatible = "google,cros-ec-uart";
-        };
-    };
-...
diff --git a/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml b/Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
deleted file mode 100644 (file)
index 37207a9..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-# 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
-
-  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: /schemas/gpio/kontron,sl28cpld-gpio.yaml
-
-  "^hwmon(@[0-9a-f]+)?$":
-    $ref: /schemas/hwmon/kontron,sl28cpld-hwmon.yaml
-
-  "^interrupt-controller(@[0-9a-f]+)?$":
-    $ref: /schemas/interrupt-controller/kontron,sl28cpld-intc.yaml
-
-  "^pwm(@[0-9a-f]+)?$":
-    $ref: /schemas/pwm/kontron,sl28cpld-pwm.yaml
-
-  "^watchdog(@[0-9a-f]+)?$":
-    $ref: /schemas/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 {
-            compatible = "kontron,sl28cpld";
-            reg = <0x4a>;
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            watchdog@4 {
-                compatible = "kontron,sl28cpld-wdt";
-                reg = <0x4>;
-                kontron,assert-wdt-timeout-pin;
-            };
-
-            hwmon@b {
-                compatible = "kontron,sl28cpld-fan";
-                reg = <0xb>;
-            };
-
-            pwm@c {
-                compatible = "kontron,sl28cpld-pwm";
-                reg = <0xc>;
-                #pwm-cells = <2>;
-            };
-
-            pwm@e {
-                compatible = "kontron,sl28cpld-pwm";
-                reg = <0xe>;
-                #pwm-cells = <2>;
-            };
-
-            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/platform/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/platform/acer,aspire1-ec.yaml
deleted file mode 100644 (file)
index 7cb0134..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/platform/acer,aspire1-ec.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Acer Aspire 1 Embedded Controller
-
-maintainers:
-  - Nikita Travkin <nikita@trvn.ru>
-
-description:
-  The Acer Aspire 1 laptop uses an embedded controller to control battery
-  and charging as well as to provide a set of misc features such as the
-  laptop lid status and HPD events for the USB Type-C DP alt mode.
-
-properties:
-  compatible:
-    const: acer,aspire1-ec
-
-  reg:
-    const: 0x76
-
-  interrupts:
-    maxItems: 1
-
-  connector:
-    $ref: /schemas/connector/usb-connector.yaml#
-
-required:
-  - compatible
-  - reg
-  - interrupts
-
-additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/interrupt-controller/irq.h>
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        embedded-controller@76 {
-            compatible = "acer,aspire1-ec";
-            reg = <0x76>;
-
-            interrupts-extended = <&tlmm 30 IRQ_TYPE_LEVEL_LOW>;
-
-            connector {
-                compatible = "usb-c-connector";
-
-                port {
-                    ec_dp_in: endpoint {
-                        remote-endpoint = <&mdss_dp_out>;
-                    };
-                };
-            };
-        };
-    };
diff --git a/Documentation/devicetree/bindings/platform/huawei,gaokun-ec.yaml b/Documentation/devicetree/bindings/platform/huawei,gaokun-ec.yaml
deleted file mode 100644 (file)
index 4a03b0e..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/platform/huawei,gaokun-ec.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Huawei Matebook E Go Embedded Controller
-
-maintainers:
-  - Pengyu Luo <mitltlatltl@gmail.com>
-
-description:
-  Different from other Qualcomm Snapdragon sc8180x and sc8280xp-based
-  machines, the Huawei Matebook E Go tablets use embedded controllers
-  while others use a system called PMIC GLink which handles battery,
-  UCSI, USB Type-C DP Alt Mode. In addition, Huawei's implementation
-  also handles additional features, such as charging thresholds, FN
-  lock, smart charging, tablet lid status, thermal sensors, and more.
-
-properties:
-  compatible:
-    enum:
-      - huawei,gaokun3-ec
-
-  reg:
-    const: 0x38
-
-  '#address-cells':
-    const: 1
-
-  '#size-cells':
-    const: 0
-
-  interrupts:
-    maxItems: 1
-
-patternProperties:
-  '^connector@[01]$':
-    $ref: /schemas/connector/usb-connector.yaml#
-
-    properties:
-      reg:
-        maxItems: 1
-
-required:
-  - compatible
-  - reg
-  - interrupts
-
-additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/interrupt-controller/irq.h>
-    i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        embedded-controller@38 {
-            compatible = "huawei,gaokun3-ec";
-            reg = <0x38>;
-
-            interrupts-extended = <&tlmm 107 IRQ_TYPE_LEVEL_LOW>;
-
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            connector@0 {
-                compatible = "usb-c-connector";
-                reg = <0>;
-                power-role = "dual";
-                data-role = "dual";
-
-                ports {
-                    #address-cells = <1>;
-                    #size-cells = <0>;
-
-                    port@0 {
-                        reg = <0>;
-
-                        ucsi0_ss_in: endpoint {
-                            remote-endpoint = <&usb_0_qmpphy_out>;
-                        };
-                    };
-
-                    port@1 {
-                        reg = <1>;
-
-                        ucsi0_sbu: endpoint {
-                            remote-endpoint = <&usb0_sbu_mux>;
-                        };
-                    };
-                };
-            };
-
-            connector@1 {
-                compatible = "usb-c-connector";
-                reg = <1>;
-                power-role = "dual";
-                data-role = "dual";
-
-                ports {
-                    #address-cells = <1>;
-                    #size-cells = <0>;
-
-                    port@0 {
-                        reg = <0>;
-
-                        ucsi1_ss_in: endpoint {
-                            remote-endpoint = <&usb_1_qmpphy_out>;
-                        };
-                    };
-
-                    port@1 {
-                        reg = <1>;
-
-                        ucsi1_sbu: endpoint {
-                            remote-endpoint = <&usb1_sbu_mux>;
-                        };
-                    };
-                };
-            };
-        };
-    };
diff --git a/Documentation/devicetree/bindings/platform/lenovo,yoga-c630-ec.yaml b/Documentation/devicetree/bindings/platform/lenovo,yoga-c630-ec.yaml
deleted file mode 100644 (file)
index 3180ce1..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/platform/lenovo,yoga-c630-ec.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Lenovo Yoga C630 Embedded Controller.
-
-maintainers:
-  - Bjorn Andersson <andersson@kernel.org>
-
-description:
-  The Qualcomm Snapdragon-based Lenovo Yoga C630 has an Embedded Controller
-  (EC) which handles things such as battery and USB Type-C. This binding
-  describes the interface, on an I2C bus, to this EC.
-
-properties:
-  compatible:
-    const: lenovo,yoga-c630-ec
-
-  reg:
-    const: 0x70
-
-  '#address-cells':
-    const: 1
-
-  '#size-cells':
-    const: 0
-
-  interrupts:
-    maxItems: 1
-
-patternProperties:
-  '^connector@[01]$':
-    $ref: /schemas/connector/usb-connector.yaml#
-
-    properties:
-      reg:
-        maxItems: 1
-
-    unevaluatedProperties: false
-
-required:
-  - compatible
-  - reg
-  - interrupts
-
-additionalProperties: false
-
-examples:
-  - |+
-    #include <dt-bindings/interrupt-controller/irq.h>
-    i2c1 {
-        clock-frequency = <400000>;
-
-        #address-cells = <1>;
-        #size-cells = <0>;
-
-        embedded-controller@70 {
-            compatible = "lenovo,yoga-c630-ec";
-            reg = <0x70>;
-
-            interrupts-extended = <&tlmm 20 IRQ_TYPE_LEVEL_HIGH>;
-
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            connector@0 {
-                compatible = "usb-c-connector";
-                reg = <0>;
-                power-role = "source";
-                data-role = "host";
-            };
-
-            connector@1 {
-                compatible = "usb-c-connector";
-                reg = <1>;
-                power-role = "source";
-                data-role = "host";
-            };
-        };
-    };
-...
diff --git a/Documentation/devicetree/bindings/platform/microsoft,surface-sam.yaml b/Documentation/devicetree/bindings/platform/microsoft,surface-sam.yaml
deleted file mode 100644 (file)
index b33d26f..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/platform/microsoft,surface-sam.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Surface System Aggregator Module (SAM, SSAM)
-
-maintainers:
-  - Konrad Dybcio <konradybcio@kernel.org>
-
-description: |
-  Surface devices use a standardized embedded controller to let the
-  operating system interface with various hardware functions. The
-  specific functionalities are modeled as subdevices and matched on
-  five levels: domain, category, target, instance and function.
-
-properties:
-  compatible:
-    const: microsoft,surface-sam
-
-  interrupts:
-    maxItems: 1
-
-  current-speed: true
-
-required:
-  - compatible
-  - interrupts
-
-additionalProperties: false
-
-examples:
-  - |
-    #include <dt-bindings/interrupt-controller/irq.h>
-    uart {
-        embedded-controller {
-            compatible = "microsoft,surface-sam";
-
-            interrupts-extended = <&tlmm 91 IRQ_TYPE_EDGE_RISING>;
-
-            pinctrl-0 = <&ssam_state>;
-            pinctrl-names = "default";
-
-            current-speed = <4000000>;
-        };
-    };
index f7bc84b..8f5a468 100644 (file)
@@ -14,7 +14,7 @@ description: |
   Google's ChromeOS EC PWM is a simple PWM attached to the Embedded Controller
   (EC) and controlled via a host-command interface.
   An EC PWM node should be only found as a sub-node of the EC node (see
-  Documentation/devicetree/bindings/mfd/google,cros-ec.yaml).
+  Documentation/devicetree/bindings/embedded-controller/google,cros-ec.yaml).
 
 allOf:
   - $ref: pwm.yaml#
index 981cfec..19a9d2e 100644 (file)
@@ -11,7 +11,7 @@ maintainers:
 
 description: |
   This module is part of the sl28cpld multi-function device. For more
-  details see ../mfd/kontron,sl28cpld.yaml.
+  details see ../embedded-controller/kontron,sl28cpld.yaml.
 
   The controller supports one PWM channel and supports only four distinct
   frequencies (250Hz, 500Hz, 1kHz, 2kHz).
index adc6b3f..179c98b 100644 (file)
@@ -58,7 +58,7 @@ properties:
     maxItems: 1
 
   cros-ec-rpmsg:
-    $ref: /schemas/mfd/google,cros-ec.yaml
+    $ref: /schemas/embedded-controller/google,cros-ec.yaml
     description:
       This subnode represents the rpmsg device. The properties
       of this node are defined by the individual bindings for
@@ -126,7 +126,7 @@ patternProperties:
         maxItems: 1
 
       cros-ec-rpmsg:
-        $ref: /schemas/mfd/google,cros-ec.yaml
+        $ref: /schemas/embedded-controller/google,cros-ec.yaml
         description:
           This subnode represents the rpmsg device. The properties
           of this node are defined by the individual bindings for
index 1434f44..dd51e8c 100644 (file)
@@ -15,7 +15,7 @@ description: |
   Embedded Controller (EC) and is controlled via a host-command
   interface.  An EC codec node should only be found inside the "codecs"
   subnode of a cros-ec node.
-  (see Documentation/devicetree/bindings/mfd/google,cros-ec.yaml).
+  (see Documentation/devicetree/bindings/embedded-controller/google,cros-ec.yaml).
 
 allOf:
   - $ref: dai-common.yaml#
index 179272f..872a847 100644 (file)
@@ -11,7 +11,7 @@ maintainers:
 
 description: |
   This module is part of the sl28cpld multi-function device. For more
-  details see ../mfd/kontron,sl28cpld.yaml.
+  details see ../embedded-controller/kontron,sl28cpld.yaml.
 
 allOf:
   - $ref: watchdog.yaml#
index cf2f097..6e39615 100644 (file)
@@ -10128,7 +10128,7 @@ F:      drivers/media/i2c/gc2145.c
 GATEWORKS SYSTEM CONTROLLER (GSC) DRIVER
 M:     Tim Harvey <tharvey@gateworks.com>
 S:     Maintained
-F:     Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml
+F:     Documentation/devicetree/bindings/embedded-controller/gw,gsc.yaml
 F:     Documentation/hwmon/gsc-hwmon.rst
 F:     drivers/hwmon/gsc-hwmon.c
 F:     drivers/mfd/gateworks-gsc.c
@@ -11299,7 +11299,7 @@ F:      drivers/net/ethernet/huawei/hinic3/
 HUAWEI MATEBOOK E GO EMBEDDED CONTROLLER DRIVER
 M:     Pengyu Luo <mitltlatltl@gmail.com>
 S:     Maintained
-F:     Documentation/devicetree/bindings/platform/huawei,gaokun-ec.yaml
+F:     Documentation/devicetree/bindings/embedded-controller/huawei,gaokun3-ec.yaml
 F:     drivers/platform/arm64/huawei-gaokun-ec.c
 F:     drivers/power/supply/huawei-gaokun-battery.c
 F:     drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
@@ -23210,10 +23210,10 @@ F:    drivers/usb/misc/sisusbvga/
 SL28 CPLD MFD DRIVER
 M:     Michael Walle <mwalle@kernel.org>
 S:     Maintained
+F:     Documentation/devicetree/bindings/embedded-controller/kontron,sl28cpld.yaml
 F:     Documentation/devicetree/bindings/gpio/kontron,sl28cpld-gpio.yaml
 F:     Documentation/devicetree/bindings/hwmon/kontron,sl28cpld-hwmon.yaml
 F:     Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.yaml
-F:     Documentation/devicetree/bindings/mfd/kontron,sl28cpld.yaml
 F:     Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
 F:     Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
 F:     drivers/gpio/gpio-sl28cpld.c