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