162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/gateworks-gsc.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Gateworks System Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cidescription: | 1062306a36Sopenharmony_ci The Gateworks System Controller (GSC) is a device present across various 1162306a36Sopenharmony_ci Gateworks product families that provides a set of system related features 1262306a36Sopenharmony_ci such as the following (refer to the board hardware user manuals to see what 1362306a36Sopenharmony_ci features are present) 1462306a36Sopenharmony_ci - Watchdog Timer 1562306a36Sopenharmony_ci - GPIO 1662306a36Sopenharmony_ci - Pushbutton controller 1762306a36Sopenharmony_ci - Hardware monitor with ADC's for temperature and voltage rails and 1862306a36Sopenharmony_ci fan controller 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cimaintainers: 2162306a36Sopenharmony_ci - Tim Harvey <tharvey@gateworks.com> 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciproperties: 2462306a36Sopenharmony_ci $nodename: 2562306a36Sopenharmony_ci pattern: "gsc@[0-9a-f]{1,2}" 2662306a36Sopenharmony_ci compatible: 2762306a36Sopenharmony_ci const: gw,gsc 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci reg: 3062306a36Sopenharmony_ci description: I2C device address 3162306a36Sopenharmony_ci maxItems: 1 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci interrupts: 3462306a36Sopenharmony_ci maxItems: 1 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci interrupt-controller: true 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci "#interrupt-cells": 3962306a36Sopenharmony_ci const: 1 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci "#address-cells": 4262306a36Sopenharmony_ci const: 1 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci "#size-cells": 4562306a36Sopenharmony_ci const: 0 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci adc: 4862306a36Sopenharmony_ci type: object 4962306a36Sopenharmony_ci additionalProperties: false 5062306a36Sopenharmony_ci description: Optional hardware monitoring module 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci properties: 5362306a36Sopenharmony_ci compatible: 5462306a36Sopenharmony_ci const: gw,gsc-adc 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci "#address-cells": 5762306a36Sopenharmony_ci const: 1 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci "#size-cells": 6062306a36Sopenharmony_ci const: 0 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci patternProperties: 6362306a36Sopenharmony_ci "^channel@[0-9a-f]+$": 6462306a36Sopenharmony_ci type: object 6562306a36Sopenharmony_ci additionalProperties: false 6662306a36Sopenharmony_ci description: | 6762306a36Sopenharmony_ci Properties for a single ADC which can report cooked values 6862306a36Sopenharmony_ci (i.e. temperature sensor based on thermister), raw values 6962306a36Sopenharmony_ci (i.e. voltage rail with a pre-scaling resistor divider). 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci properties: 7262306a36Sopenharmony_ci reg: 7362306a36Sopenharmony_ci description: Register of the ADC 7462306a36Sopenharmony_ci maxItems: 1 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci label: 7762306a36Sopenharmony_ci description: Name of the ADC input 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci gw,mode: 8062306a36Sopenharmony_ci description: | 8162306a36Sopenharmony_ci conversion mode: 8262306a36Sopenharmony_ci 0 - temperature, in C*10 8362306a36Sopenharmony_ci 1 - pre-scaled 24-bit voltage value 8462306a36Sopenharmony_ci 2 - scaled voltage based on an optional resistor divider 8562306a36Sopenharmony_ci and optional offset 8662306a36Sopenharmony_ci 3 - pre-scaled 16-bit voltage value 8762306a36Sopenharmony_ci 4 - fan tach input to report RPM's 8862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 8962306a36Sopenharmony_ci enum: [0, 1, 2, 3, 4] 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci gw,voltage-divider-ohms: 9262306a36Sopenharmony_ci description: Values of resistors for divider on raw ADC input 9362306a36Sopenharmony_ci maxItems: 2 9462306a36Sopenharmony_ci items: 9562306a36Sopenharmony_ci minimum: 1000 9662306a36Sopenharmony_ci maximum: 1000000 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci gw,voltage-offset-microvolt: 9962306a36Sopenharmony_ci description: | 10062306a36Sopenharmony_ci A positive voltage offset to apply to a raw ADC 10162306a36Sopenharmony_ci (i.e. to compensate for a diode drop). 10262306a36Sopenharmony_ci minimum: 0 10362306a36Sopenharmony_ci maximum: 1000000 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci required: 10662306a36Sopenharmony_ci - gw,mode 10762306a36Sopenharmony_ci - reg 10862306a36Sopenharmony_ci - label 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci required: 11162306a36Sopenharmony_ci - compatible 11262306a36Sopenharmony_ci - "#address-cells" 11362306a36Sopenharmony_ci - "#size-cells" 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_cipatternProperties: 11662306a36Sopenharmony_ci "^fan-controller@[0-9a-f]+$": 11762306a36Sopenharmony_ci type: object 11862306a36Sopenharmony_ci additionalProperties: false 11962306a36Sopenharmony_ci description: Optional fan controller 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci properties: 12262306a36Sopenharmony_ci compatible: 12362306a36Sopenharmony_ci const: gw,gsc-fan 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci reg: 12662306a36Sopenharmony_ci description: The fan controller base address 12762306a36Sopenharmony_ci maxItems: 1 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci required: 13062306a36Sopenharmony_ci - compatible 13162306a36Sopenharmony_ci - reg 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_cirequired: 13462306a36Sopenharmony_ci - compatible 13562306a36Sopenharmony_ci - reg 13662306a36Sopenharmony_ci - interrupts 13762306a36Sopenharmony_ci - interrupt-controller 13862306a36Sopenharmony_ci - "#interrupt-cells" 13962306a36Sopenharmony_ci - "#address-cells" 14062306a36Sopenharmony_ci - "#size-cells" 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ciadditionalProperties: false 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ciexamples: 14562306a36Sopenharmony_ci - | 14662306a36Sopenharmony_ci #include <dt-bindings/gpio/gpio.h> 14762306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 14862306a36Sopenharmony_ci i2c { 14962306a36Sopenharmony_ci #address-cells = <1>; 15062306a36Sopenharmony_ci #size-cells = <0>; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci gsc@20 { 15362306a36Sopenharmony_ci compatible = "gw,gsc"; 15462306a36Sopenharmony_ci reg = <0x20>; 15562306a36Sopenharmony_ci interrupt-parent = <&gpio1>; 15662306a36Sopenharmony_ci interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 15762306a36Sopenharmony_ci interrupt-controller; 15862306a36Sopenharmony_ci #interrupt-cells = <1>; 15962306a36Sopenharmony_ci #address-cells = <1>; 16062306a36Sopenharmony_ci #size-cells = <0>; 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci adc { 16362306a36Sopenharmony_ci compatible = "gw,gsc-adc"; 16462306a36Sopenharmony_ci #address-cells = <1>; 16562306a36Sopenharmony_ci #size-cells = <0>; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci channel@0 { /* A0: Board Temperature */ 16862306a36Sopenharmony_ci reg = <0x00>; 16962306a36Sopenharmony_ci label = "temp"; 17062306a36Sopenharmony_ci gw,mode = <0>; 17162306a36Sopenharmony_ci }; 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci channel@2 { /* A1: Input Voltage (raw ADC) */ 17462306a36Sopenharmony_ci reg = <0x02>; 17562306a36Sopenharmony_ci label = "vdd_vin"; 17662306a36Sopenharmony_ci gw,mode = <1>; 17762306a36Sopenharmony_ci gw,voltage-divider-ohms = <22100 1000>; 17862306a36Sopenharmony_ci gw,voltage-offset-microvolt = <800000>; 17962306a36Sopenharmony_ci }; 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci channel@b { /* A2: Battery voltage */ 18262306a36Sopenharmony_ci reg = <0x0b>; 18362306a36Sopenharmony_ci label = "vdd_bat"; 18462306a36Sopenharmony_ci gw,mode = <1>; 18562306a36Sopenharmony_ci }; 18662306a36Sopenharmony_ci }; 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci fan-controller@2c { 18962306a36Sopenharmony_ci compatible = "gw,gsc-fan"; 19062306a36Sopenharmony_ci reg = <0x2c>; 19162306a36Sopenharmony_ci }; 19262306a36Sopenharmony_ci }; 19362306a36Sopenharmony_ci }; 194