Commit 8054eadc authored by Guenter Roeck's avatar Guenter Roeck
Browse files

Merge tag 'ib-mfd-hwmon-v5.8' into hwmon-next

Immutable branch between MFD and HWMON due for the v5.8 merge window
parents 4e17f63e 3bce5377
Loading
Loading
Loading
Loading
+196 −0
Original line number Diff line number Diff line
# 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>
  - Robert Jones <rjones@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
    description: Optional hardware monitoring module

    properties:
      compatible:
        const: gw,gsc-adc

      "#address-cells":
        const: 1

      "#size-cells":
        const: 0

    patternProperties:
      "^channel@[0-9]+$":
        type: object
        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 voltage value
                2 - scaled voltage based on an optional resistor divider
                    and optional offset
            $ref: /schemas/types.yaml#/definitions/uint32
            enum: [0, 1, 2]

          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
    description: Optional fan controller

    properties:
      compatible:
        const: gw,gsc-fan

      "#address-cells":
        const: 1

      "#size-cells":
        const: 0

      reg:
        description: The fan controller base address
        maxItems: 1

    required:
      - compatible
      - reg
      - "#address-cells"
      - "#size-cells"

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - "#interrupt-cells"
  - "#address-cells"
  - "#size-cells"

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        gsc@20 {
            compatible = "gw,gsc";
            reg = <0x20>;
            interrupt-parent = <&gpio1>;
            interrupts = <4 GPIO_ACTIVE_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 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "gw,gsc-fan";
                reg = <0x2c>;
            };
        };
    };
+53 −0
Original line number Diff line number Diff line
.. SPDX-License-Identifier: GPL-2.0

Kernel driver gsc-hwmon
=======================

Supported chips: Gateworks GSC
Datasheet: http://trac.gateworks.com/wiki/gsc
Author: Tim Harvey <tharvey@gateworks.com>

Description:
------------

This driver supports hardware monitoring for the temperature sensor,
various ADC's connected to the GSC, and optional FAN controller available
on some boards.


Voltage Monitoring
------------------

The voltage inputs are scaled either internally or by the driver depending
on the GSC version and firmware. The values returned by the driver do not need
further scaling. The voltage input labels provide the voltage rail name:

inX_input                  Measured voltage (mV).
inX_label                  Name of voltage rail.


Temperature Monitoring
----------------------

Temperatures are measured with 12-bit or 10-bit resolution and are scaled
either internally or by the driver depending on the GSC version and firmware.
The values returned by the driver reflect millidegree Celcius:

tempX_input                Measured temperature.
tempX_label                Name of temperature input.


PWM Output Control
------------------

The GSC features 1 PWM output that operates in automatic mode where the
PWM value will be scalled depending on 6 temperature boundaries.
The tempeature boundaries are read-write and in millidegree Celcius and the
read-only PWM values range from 0 (off) to 255 (full speed).
Fan speed will be set to minimum (off) when the temperature sensor reads
less than pwm1_auto_point1_temp and maximum when the temperature sensor
equals or exceeds pwm1_auto_point6_temp.

pwm1_auto_point[1-6]_pwm       PWM value.
pwm1_auto_point[1-6]_temp      Temperature boundary.
+1 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ Hardware Monitoring Kernel Drivers
   ftsteutates
   g760a
   g762
   gsc-hwmon
   gl518sm
   hih6130
   ibmaem
+11 −0
Original line number Diff line number Diff line
@@ -7035,6 +7035,17 @@ F: kernel/futex.c
F:	tools/perf/bench/futex*
F:	tools/testing/selftests/futex/
GATEWORKS SYSTEM CONTROLLER (GSC) DRIVER
M:	Tim Harvey <tharvey@gateworks.com>
M:	Robert Jones <rjones@gateworks.com>
S:	Maintained
F:	Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml
F:	drivers/mfd/gateworks-gsc.c
F:	include/linux/mfd/gsc.h
F:	Documentation/hwmon/gsc-hwmon.rst
F:	drivers/hwmon/gsc-hwmon.c
F:	include/linux/platform_data/gsc_hwmon.h
GASKET DRIVER FRAMEWORK
M:	Rob Springer <rspringer@google.com>
M:	Todd Poynor <toddpoynor@google.com>
+9 −0
Original line number Diff line number Diff line
@@ -533,6 +533,15 @@ config SENSORS_F75375S
	  This driver can also be built as a module. If so, the module
	  will be called f75375s.

config SENSORS_GSC
	tristate "Gateworks System Controller ADC"
	depends on MFD_GATEWORKS_GSC
	help
	  Support for the Gateworks System Controller A/D converters.

	  To compile this driver as a module, choose M here:
	  the module will be called gsc-hwmon.

config SENSORS_MC13783_ADC
        tristate "Freescale MC13783/MC13892 ADC"
        depends on MFD_MC13XXX
Loading