1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2*4882a593Smuzhiyun%YAML 1.2 3*4882a593Smuzhiyun--- 4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/mfd/gateworks-gsc.yaml# 5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuntitle: Gateworks System Controller 8*4882a593Smuzhiyun 9*4882a593Smuzhiyundescription: | 10*4882a593Smuzhiyun The Gateworks System Controller (GSC) is a device present across various 11*4882a593Smuzhiyun Gateworks product families that provides a set of system related features 12*4882a593Smuzhiyun such as the following (refer to the board hardware user manuals to see what 13*4882a593Smuzhiyun features are present) 14*4882a593Smuzhiyun - Watchdog Timer 15*4882a593Smuzhiyun - GPIO 16*4882a593Smuzhiyun - Pushbutton controller 17*4882a593Smuzhiyun - Hardware monitor with ADC's for temperature and voltage rails and 18*4882a593Smuzhiyun fan controller 19*4882a593Smuzhiyun 20*4882a593Smuzhiyunmaintainers: 21*4882a593Smuzhiyun - Tim Harvey <tharvey@gateworks.com> 22*4882a593Smuzhiyun - Robert Jones <rjones@gateworks.com> 23*4882a593Smuzhiyun 24*4882a593Smuzhiyunproperties: 25*4882a593Smuzhiyun $nodename: 26*4882a593Smuzhiyun pattern: "gsc@[0-9a-f]{1,2}" 27*4882a593Smuzhiyun compatible: 28*4882a593Smuzhiyun const: gw,gsc 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun reg: 31*4882a593Smuzhiyun description: I2C device address 32*4882a593Smuzhiyun maxItems: 1 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun interrupts: 35*4882a593Smuzhiyun maxItems: 1 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun interrupt-controller: true 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun "#interrupt-cells": 40*4882a593Smuzhiyun const: 1 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun "#address-cells": 43*4882a593Smuzhiyun const: 1 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun "#size-cells": 46*4882a593Smuzhiyun const: 0 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun adc: 49*4882a593Smuzhiyun type: object 50*4882a593Smuzhiyun description: Optional hardware monitoring module 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun properties: 53*4882a593Smuzhiyun compatible: 54*4882a593Smuzhiyun const: gw,gsc-adc 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun "#address-cells": 57*4882a593Smuzhiyun const: 1 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun "#size-cells": 60*4882a593Smuzhiyun const: 0 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun patternProperties: 63*4882a593Smuzhiyun "^channel@[0-9]+$": 64*4882a593Smuzhiyun type: object 65*4882a593Smuzhiyun description: | 66*4882a593Smuzhiyun Properties for a single ADC which can report cooked values 67*4882a593Smuzhiyun (i.e. temperature sensor based on thermister), raw values 68*4882a593Smuzhiyun (i.e. voltage rail with a pre-scaling resistor divider). 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun properties: 71*4882a593Smuzhiyun reg: 72*4882a593Smuzhiyun description: Register of the ADC 73*4882a593Smuzhiyun maxItems: 1 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun label: 76*4882a593Smuzhiyun description: Name of the ADC input 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun gw,mode: 79*4882a593Smuzhiyun description: | 80*4882a593Smuzhiyun conversion mode: 81*4882a593Smuzhiyun 0 - temperature, in C*10 82*4882a593Smuzhiyun 1 - pre-scaled 24-bit voltage value 83*4882a593Smuzhiyun 2 - scaled voltage based on an optional resistor divider 84*4882a593Smuzhiyun and optional offset 85*4882a593Smuzhiyun 3 - pre-scaled 16-bit voltage value 86*4882a593Smuzhiyun $ref: /schemas/types.yaml#/definitions/uint32 87*4882a593Smuzhiyun enum: [0, 1, 2, 3] 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun gw,voltage-divider-ohms: 90*4882a593Smuzhiyun description: Values of resistors for divider on raw ADC input 91*4882a593Smuzhiyun maxItems: 2 92*4882a593Smuzhiyun items: 93*4882a593Smuzhiyun minimum: 1000 94*4882a593Smuzhiyun maximum: 1000000 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun gw,voltage-offset-microvolt: 97*4882a593Smuzhiyun description: | 98*4882a593Smuzhiyun A positive voltage offset to apply to a raw ADC 99*4882a593Smuzhiyun (i.e. to compensate for a diode drop). 100*4882a593Smuzhiyun minimum: 0 101*4882a593Smuzhiyun maximum: 1000000 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun required: 104*4882a593Smuzhiyun - gw,mode 105*4882a593Smuzhiyun - reg 106*4882a593Smuzhiyun - label 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun required: 109*4882a593Smuzhiyun - compatible 110*4882a593Smuzhiyun - "#address-cells" 111*4882a593Smuzhiyun - "#size-cells" 112*4882a593Smuzhiyun 113*4882a593SmuzhiyunpatternProperties: 114*4882a593Smuzhiyun "^fan-controller@[0-9a-f]+$": 115*4882a593Smuzhiyun type: object 116*4882a593Smuzhiyun description: Optional fan controller 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun properties: 119*4882a593Smuzhiyun compatible: 120*4882a593Smuzhiyun const: gw,gsc-fan 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun "#address-cells": 123*4882a593Smuzhiyun const: 1 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun "#size-cells": 126*4882a593Smuzhiyun const: 0 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun reg: 129*4882a593Smuzhiyun description: The fan controller base address 130*4882a593Smuzhiyun maxItems: 1 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun required: 133*4882a593Smuzhiyun - compatible 134*4882a593Smuzhiyun - reg 135*4882a593Smuzhiyun - "#address-cells" 136*4882a593Smuzhiyun - "#size-cells" 137*4882a593Smuzhiyun 138*4882a593Smuzhiyunrequired: 139*4882a593Smuzhiyun - compatible 140*4882a593Smuzhiyun - reg 141*4882a593Smuzhiyun - interrupts 142*4882a593Smuzhiyun - interrupt-controller 143*4882a593Smuzhiyun - "#interrupt-cells" 144*4882a593Smuzhiyun - "#address-cells" 145*4882a593Smuzhiyun - "#size-cells" 146*4882a593Smuzhiyun 147*4882a593SmuzhiyunadditionalProperties: false 148*4882a593Smuzhiyun 149*4882a593Smuzhiyunexamples: 150*4882a593Smuzhiyun - | 151*4882a593Smuzhiyun #include <dt-bindings/gpio/gpio.h> 152*4882a593Smuzhiyun #include <dt-bindings/interrupt-controller/irq.h> 153*4882a593Smuzhiyun i2c { 154*4882a593Smuzhiyun #address-cells = <1>; 155*4882a593Smuzhiyun #size-cells = <0>; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun gsc@20 { 158*4882a593Smuzhiyun compatible = "gw,gsc"; 159*4882a593Smuzhiyun reg = <0x20>; 160*4882a593Smuzhiyun interrupt-parent = <&gpio1>; 161*4882a593Smuzhiyun interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 162*4882a593Smuzhiyun interrupt-controller; 163*4882a593Smuzhiyun #interrupt-cells = <1>; 164*4882a593Smuzhiyun #address-cells = <1>; 165*4882a593Smuzhiyun #size-cells = <0>; 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun adc { 168*4882a593Smuzhiyun compatible = "gw,gsc-adc"; 169*4882a593Smuzhiyun #address-cells = <1>; 170*4882a593Smuzhiyun #size-cells = <0>; 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun channel@0 { /* A0: Board Temperature */ 173*4882a593Smuzhiyun reg = <0x00>; 174*4882a593Smuzhiyun label = "temp"; 175*4882a593Smuzhiyun gw,mode = <0>; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun channel@2 { /* A1: Input Voltage (raw ADC) */ 179*4882a593Smuzhiyun reg = <0x02>; 180*4882a593Smuzhiyun label = "vdd_vin"; 181*4882a593Smuzhiyun gw,mode = <1>; 182*4882a593Smuzhiyun gw,voltage-divider-ohms = <22100 1000>; 183*4882a593Smuzhiyun gw,voltage-offset-microvolt = <800000>; 184*4882a593Smuzhiyun }; 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun channel@b { /* A2: Battery voltage */ 187*4882a593Smuzhiyun reg = <0x0b>; 188*4882a593Smuzhiyun label = "vdd_bat"; 189*4882a593Smuzhiyun gw,mode = <1>; 190*4882a593Smuzhiyun }; 191*4882a593Smuzhiyun }; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun fan-controller@2c { 194*4882a593Smuzhiyun #address-cells = <1>; 195*4882a593Smuzhiyun #size-cells = <0>; 196*4882a593Smuzhiyun compatible = "gw,gsc-fan"; 197*4882a593Smuzhiyun reg = <0x2c>; 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun }; 201