13e6cae8eSTim Harvey# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
23e6cae8eSTim Harvey%YAML 1.2
33e6cae8eSTim Harvey---
43e6cae8eSTim Harvey$id: http://devicetree.org/schemas/mfd/gateworks-gsc.yaml#
53e6cae8eSTim Harvey$schema: http://devicetree.org/meta-schemas/core.yaml#
63e6cae8eSTim Harvey
73e6cae8eSTim Harveytitle: Gateworks System Controller
83e6cae8eSTim Harvey
93e6cae8eSTim Harveydescription: |
103e6cae8eSTim Harvey  The Gateworks System Controller (GSC) is a device present across various
113e6cae8eSTim Harvey  Gateworks product families that provides a set of system related features
123e6cae8eSTim Harvey  such as the following (refer to the board hardware user manuals to see what
133e6cae8eSTim Harvey  features are present)
143e6cae8eSTim Harvey   - Watchdog Timer
153e6cae8eSTim Harvey   - GPIO
163e6cae8eSTim Harvey   - Pushbutton controller
173e6cae8eSTim Harvey   - Hardware monitor with ADC's for temperature and voltage rails and
183e6cae8eSTim Harvey     fan controller
193e6cae8eSTim Harvey
203e6cae8eSTim Harveymaintainers:
213e6cae8eSTim Harvey  - Tim Harvey <tharvey@gateworks.com>
223e6cae8eSTim Harvey
233e6cae8eSTim Harveyproperties:
243e6cae8eSTim Harvey  $nodename:
253e6cae8eSTim Harvey    pattern: "gsc@[0-9a-f]{1,2}"
263e6cae8eSTim Harvey  compatible:
273e6cae8eSTim Harvey    const: gw,gsc
283e6cae8eSTim Harvey
293e6cae8eSTim Harvey  reg:
303e6cae8eSTim Harvey    description: I2C device address
313e6cae8eSTim Harvey    maxItems: 1
323e6cae8eSTim Harvey
333e6cae8eSTim Harvey  interrupts:
343e6cae8eSTim Harvey    maxItems: 1
353e6cae8eSTim Harvey
363e6cae8eSTim Harvey  interrupt-controller: true
373e6cae8eSTim Harvey
383e6cae8eSTim Harvey  "#interrupt-cells":
393e6cae8eSTim Harvey    const: 1
403e6cae8eSTim Harvey
413e6cae8eSTim Harvey  "#address-cells":
423e6cae8eSTim Harvey    const: 1
433e6cae8eSTim Harvey
443e6cae8eSTim Harvey  "#size-cells":
453e6cae8eSTim Harvey    const: 0
463e6cae8eSTim Harvey
473e6cae8eSTim Harvey  adc:
483e6cae8eSTim Harvey    type: object
49*42839dcaSRob Herring    additionalProperties: false
503e6cae8eSTim Harvey    description: Optional hardware monitoring module
513e6cae8eSTim Harvey
523e6cae8eSTim Harvey    properties:
533e6cae8eSTim Harvey      compatible:
543e6cae8eSTim Harvey        const: gw,gsc-adc
553e6cae8eSTim Harvey
563e6cae8eSTim Harvey      "#address-cells":
573e6cae8eSTim Harvey        const: 1
583e6cae8eSTim Harvey
593e6cae8eSTim Harvey      "#size-cells":
603e6cae8eSTim Harvey        const: 0
613e6cae8eSTim Harvey
623e6cae8eSTim Harvey    patternProperties:
63*42839dcaSRob Herring      "^channel@[0-9a-f]+$":
643e6cae8eSTim Harvey        type: object
65*42839dcaSRob Herring        additionalProperties: false
663e6cae8eSTim Harvey        description: |
673e6cae8eSTim Harvey          Properties for a single ADC which can report cooked values
683e6cae8eSTim Harvey          (i.e. temperature sensor based on thermister), raw values
693e6cae8eSTim Harvey          (i.e. voltage rail with a pre-scaling resistor divider).
703e6cae8eSTim Harvey
713e6cae8eSTim Harvey        properties:
723e6cae8eSTim Harvey          reg:
733e6cae8eSTim Harvey            description: Register of the ADC
743e6cae8eSTim Harvey            maxItems: 1
753e6cae8eSTim Harvey
763e6cae8eSTim Harvey          label:
773e6cae8eSTim Harvey            description: Name of the ADC input
783e6cae8eSTim Harvey
793e6cae8eSTim Harvey          gw,mode:
803e6cae8eSTim Harvey            description: |
813e6cae8eSTim Harvey              conversion mode:
823e6cae8eSTim Harvey                0 - temperature, in C*10
83ad738dddSTim Harvey                1 - pre-scaled 24-bit voltage value
843e6cae8eSTim Harvey                2 - scaled voltage based on an optional resistor divider
853e6cae8eSTim Harvey                    and optional offset
86ad738dddSTim Harvey                3 - pre-scaled 16-bit voltage value
87c239fea1STim Harvey                4 - fan tach input to report RPM's
883e6cae8eSTim Harvey            $ref: /schemas/types.yaml#/definitions/uint32
89c239fea1STim Harvey            enum: [0, 1, 2, 3, 4]
903e6cae8eSTim Harvey
913e6cae8eSTim Harvey          gw,voltage-divider-ohms:
923e6cae8eSTim Harvey            description: Values of resistors for divider on raw ADC input
933e6cae8eSTim Harvey            maxItems: 2
943e6cae8eSTim Harvey            items:
953e6cae8eSTim Harvey              minimum: 1000
963e6cae8eSTim Harvey              maximum: 1000000
973e6cae8eSTim Harvey
983e6cae8eSTim Harvey          gw,voltage-offset-microvolt:
993e6cae8eSTim Harvey            description: |
1003e6cae8eSTim Harvey              A positive voltage offset to apply to a raw ADC
1013e6cae8eSTim Harvey              (i.e. to compensate for a diode drop).
1023e6cae8eSTim Harvey            minimum: 0
1033e6cae8eSTim Harvey            maximum: 1000000
1043e6cae8eSTim Harvey
1053e6cae8eSTim Harvey        required:
1063e6cae8eSTim Harvey          - gw,mode
1073e6cae8eSTim Harvey          - reg
1083e6cae8eSTim Harvey          - label
1093e6cae8eSTim Harvey
1103e6cae8eSTim Harvey    required:
1113e6cae8eSTim Harvey      - compatible
1123e6cae8eSTim Harvey      - "#address-cells"
1133e6cae8eSTim Harvey      - "#size-cells"
1143e6cae8eSTim Harvey
1153e6cae8eSTim HarveypatternProperties:
1163e6cae8eSTim Harvey  "^fan-controller@[0-9a-f]+$":
1173e6cae8eSTim Harvey    type: object
118*42839dcaSRob Herring    additionalProperties: false
1193e6cae8eSTim Harvey    description: Optional fan controller
1203e6cae8eSTim Harvey
1213e6cae8eSTim Harvey    properties:
1223e6cae8eSTim Harvey      compatible:
1233e6cae8eSTim Harvey        const: gw,gsc-fan
1243e6cae8eSTim Harvey
1253e6cae8eSTim Harvey      reg:
1263e6cae8eSTim Harvey        description: The fan controller base address
1273e6cae8eSTim Harvey        maxItems: 1
1283e6cae8eSTim Harvey
1293e6cae8eSTim Harvey    required:
1303e6cae8eSTim Harvey      - compatible
1313e6cae8eSTim Harvey      - reg
1323e6cae8eSTim Harvey
1333e6cae8eSTim Harveyrequired:
1343e6cae8eSTim Harvey  - compatible
1353e6cae8eSTim Harvey  - reg
1363e6cae8eSTim Harvey  - interrupts
1373e6cae8eSTim Harvey  - interrupt-controller
1383e6cae8eSTim Harvey  - "#interrupt-cells"
1393e6cae8eSTim Harvey  - "#address-cells"
1403e6cae8eSTim Harvey  - "#size-cells"
1413e6cae8eSTim Harvey
1425be478f9SRob HerringadditionalProperties: false
1435be478f9SRob Herring
1443e6cae8eSTim Harveyexamples:
1453e6cae8eSTim Harvey  - |
1463e6cae8eSTim Harvey    #include <dt-bindings/gpio/gpio.h>
147b727db94SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/irq.h>
1483e6cae8eSTim Harvey    i2c {
1493e6cae8eSTim Harvey        #address-cells = <1>;
1503e6cae8eSTim Harvey        #size-cells = <0>;
1513e6cae8eSTim Harvey
1523e6cae8eSTim Harvey        gsc@20 {
1533e6cae8eSTim Harvey            compatible = "gw,gsc";
1543e6cae8eSTim Harvey            reg = <0x20>;
1553e6cae8eSTim Harvey            interrupt-parent = <&gpio1>;
156b727db94SKrzysztof Kozlowski            interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
1573e6cae8eSTim Harvey            interrupt-controller;
1583e6cae8eSTim Harvey            #interrupt-cells = <1>;
1593e6cae8eSTim Harvey            #address-cells = <1>;
1603e6cae8eSTim Harvey            #size-cells = <0>;
1613e6cae8eSTim Harvey
1623e6cae8eSTim Harvey            adc {
1633e6cae8eSTim Harvey                compatible = "gw,gsc-adc";
1643e6cae8eSTim Harvey                #address-cells = <1>;
1653e6cae8eSTim Harvey                #size-cells = <0>;
1663e6cae8eSTim Harvey
1673e6cae8eSTim Harvey                channel@0 { /* A0: Board Temperature */
1683e6cae8eSTim Harvey                    reg = <0x00>;
1693e6cae8eSTim Harvey                    label = "temp";
1703e6cae8eSTim Harvey                    gw,mode = <0>;
1713e6cae8eSTim Harvey                };
1723e6cae8eSTim Harvey
1733e6cae8eSTim Harvey                channel@2 { /* A1: Input Voltage (raw ADC) */
1743e6cae8eSTim Harvey                    reg = <0x02>;
1753e6cae8eSTim Harvey                    label = "vdd_vin";
1763e6cae8eSTim Harvey                    gw,mode = <1>;
1773e6cae8eSTim Harvey                    gw,voltage-divider-ohms = <22100 1000>;
1783e6cae8eSTim Harvey                    gw,voltage-offset-microvolt = <800000>;
1793e6cae8eSTim Harvey                };
1803e6cae8eSTim Harvey
1813e6cae8eSTim Harvey                channel@b { /* A2: Battery voltage */
1823e6cae8eSTim Harvey                    reg = <0x0b>;
1833e6cae8eSTim Harvey                    label = "vdd_bat";
1843e6cae8eSTim Harvey                    gw,mode = <1>;
1853e6cae8eSTim Harvey                };
1863e6cae8eSTim Harvey            };
1873e6cae8eSTim Harvey
1883e6cae8eSTim Harvey            fan-controller@2c {
1893e6cae8eSTim Harvey                compatible = "gw,gsc-fan";
1903e6cae8eSTim Harvey                reg = <0x2c>;
1913e6cae8eSTim Harvey            };
1923e6cae8eSTim Harvey        };
1933e6cae8eSTim Harvey    };
194