Add support for the Gateworks System Controller
Subsystems (5)
Tim Harvey
maintainerv11 cover Add support for the Gateworks System Controller
This series adds support for the Gateworks System Controller used on Gateworks Laguna, Ventana, and Newport product families.
The GSC is an MSP430 I2C slave controller whose firmware embeds the following features:
- I/O expander (16 GPIO's emulating a PCA955x)
- EEPROM (enumating AT24)
- RTC (enumating DS1672)
- HWMON
- Interrupt controller with tamper detect, user pushbotton
- Watchdog controller capable of full board power-cycle
- Power Control capable of full board power-cycle
see http://trac.gateworks.com/wiki/gsc for more details
v11:
- mfd: fix compile error
v10:
- mfd: fix typo and gramatical errors in Kconfig and comment block
- mfd: drop unused i2c device-id table
- mfd: added Lee's ack in s-o-b
v9:
- rebase against 5.7-rc2
- dt-binding: remove allOf: see https://lkml.org/lkml/2020/4/15/1930
- dt-binding: encorporate Lee's review comments for item descriptions
- dt-binding: added Reviewed-by: Rob Herring <[email protected]>
- mfd: cleanup gsc_powerdown() by using BIT(), put_unaligned_le32(), and avoid unnecessary assignments
- mfd: rename GSC_CTRL_1 SLEEP related defines to simplify
- mfd: add better description and sub-module info to driver description
- mfd: whitespace changes per review
- mfd: remove unused irq_data pointer in ddata
- mfd: remove unnecesary i2c_set_clientdata
- mfd: use devm_i2c_new_dummy_device to avoid need of free's
- mfd: change regsiter definitions to enum
- mfd: export gsc_{read,write} instead of sharing them via ddata
- hwmon: use exported gsc_{read,write}
- hwmon: added Reviewed-by: Guenter Roeck <[email protected]>
v8:
- mfd: whitespace fixes
- mfd: describe sub-devices in Kconfig
- mfd: add error print for invalid command
- mfd: update copyright
- mfd: use devm_of_platform_populate
- mfd: use probe_new
- mfd: move hwmon's regmap init to hwmon
- hwmon: move hwmon's regmap init to hwmon
- dt-bindings: add register to fan-controller node name
v7:
- dt-bindings: change divider from mili-ohms to ohms
- dt-bindings: add constraints for voltage divider and offset
- dt-bindings: remove unnecessary ref for offset
- dt-bindings: renamed fan to fan-controller and changed base prop to reg
- mfd: remove irq from private data struct
- hwmon: fix whitespace in Kconfig
- hwmon: remove unnecessary device pointer in private data
- hwmon: change divider from mili-ohms to ohms
- hwmon: move fan base property to reg
v6:
- hwmon: fix size of info field
- hwmon: improve pwm output control documentation
- hwmon: include unit suffix in divider and offset
- hwmon: change subnode name to gsc-adc
- hwmon: change to fan subnode
- hwmon: fix voltage offset
- dt-bindings: fix commit message typo
- dt-bindings: drop invalid description from #interrupt-cells property
- dt-bindings: fix adc pattern property
- dt-bindings: add unit suffix
- dt-bindings: replace hwmon/adc with adc/channel
- dt-bindings: changed adc type to gw,mode
- dt-bindings: add unit suffix and drop ref for voltage-divider
- dt-bindings: add unit suffix for voltage-offset
- dt-bindings: moved fan to its own subnode with base register
v5:
- fix checkpatch issues
- fix dt_binding_check issues
- address feedback from v4
v4:
- hwmon: move to using pwm<n>_auto_point<m>_{pwm,temp} for FAN PWM
- hwmon: remove unncessary resolution/scaling properties for ADCs
- bindings: update to yaml Documentation
- removed watchdog driver
v3:
- removed unnecessary input driver
- added wdt driver
- bindings: encorporated feedback from mailng list
- hwmon:
- encoroprated feedback from mailng list
- added support for raw ADC voltage input used in newer GSC firmware
v2:
- change license comment block style
- remove COMPILE_TEST
- fixed whitespace issues
- replaced a printk with dev_err
- remove DEBUG
- simplify regmap_bulk_read err check
- remove break after returns in switch statement
- fix fan setpoint buffer address
- remove unnecessary parens
- consistently use struct device *dev pointer
- add validation for hwmon child node props
- move parsing of of to own function
- use strlcpy to ensure null termination
- fix static array sizes and removed unnecessary initializers
- dynamically allocate channels
- fix fan input label
- support platform data
Tim Harvey (3):
dt-bindings: mfd: Add Gateworks System Controller bindings
mfd: add Gateworks System Controller core driver
hwmon: add Gateworks System Controller support
.../devicetree/bindings/mfd/gateworks-gsc.yaml | 196 +++++++++++ Documentation/hwmon/gsc-hwmon.rst | 53 +++ Documentation/hwmon/index.rst | 1 + MAINTAINERS | 11 + drivers/hwmon/Kconfig | 9 + drivers/hwmon/Makefile | 1 + drivers/hwmon/gsc-hwmon.c | 390 +++++++++++++++++++++ drivers/mfd/Kconfig | 15 + drivers/mfd/Makefile | 1 + drivers/mfd/gateworks-gsc.c | 277 +++++++++++++++ include/linux/mfd/gsc.h | 76 ++++ include/linux/platform_data/gsc_hwmon.h | 44 +++ 12 files changed, 1074 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml create mode 100644 Documentation/hwmon/gsc-hwmon.rst create mode 100644 drivers/hwmon/gsc-hwmon.c create mode 100644 drivers/mfd/gateworks-gsc.c create mode 100644 include/linux/mfd/gsc.h create mode 100644 include/linux/platform_data/gsc_hwmon.h
Signature · 1 line
2.7.4
Tim Harvey
maintainerPATCH v11 1/3 dt-bindings: mfd: Add Gateworks System Controller bindings
This patch adds documentation of device-tree bindings for the Gateworks System Controller (GSC).
---
v11:
- no change
v10:
- no change
v9:
- added Reviewed-by: Rob Herring <[email protected]>
- remove allOf: see https://lkml.org/lkml/2020/4/15/1930
- encorporate Lee's review comments for item descriptions
v8:
- add register to fan-controller node name
v7:
- change divider from mili-ohms to ohms
- add constraints for voltage divider and offset
- remove unnecessary ref for offset
- renamed fan to fan-controller and changed base prop to reg
v6:
- fix typo
- drop invalid description from #interrupt-cells property
- fix adc pattern property
- add unit suffix
- replace hwmon/adc with adc/channel
- changed adc type to mode and enum int
- add unit suffix and drop ref for voltage-divider
- moved fan to its own subnode with base register
v5:
- resolve dt_binding_check issues
v4:
- move to using pwm<n>_auto_point<m>_{pwm,temp} for FAN PWM
- remove unncessary resolution/scaling properties for ADCs
- update to yaml
- remove watchdog
v3:
- replaced _ with -
- remove input bindings
- added full description of hwmon
- fix unit address of hwmon child nodes
--- .../devicetree/bindings/mfd/gateworks-gsc.yaml | 196 +++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml
Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml new file +196 -0
@@ -0,0 +1,196 @@ +# 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 <[email protected]> + - Robert Jones <[email protected]> + +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>; + }; + }; + };
Signature · 1 line
2.7.4
Lee Jones
AppliedRe: [PATCH v11 1/3] dt-bindings: mfd: Add Gateworks System Controller bindings
Quoted 50 lines · Tim Harvey
This patch adds documentation of device-tree bindings for the Gateworks System Controller (GSC).
Signed-off-by Tim Harvey <[email protected]>Reviewed-by Rob Herring <[email protected]>---
v11:
- no changev10:
- no changev9:
- added Reviewed-by: Rob Herring <[email protected]>
- remove allOf: see https://lkml.org/lkml/2020/4/15/1930
- encorporate Lee's review comments for item descriptionsv8:
- add register to fan-controller node namev7:
- change divider from mili-ohms to ohms
- add constraints for voltage divider and offset
- remove unnecessary ref for offset
- renamed fan to fan-controller and changed base prop to regv6:
- fix typo
- drop invalid description from #interrupt-cells property
- fix adc pattern property
- add unit suffix
- replace hwmon/adc with adc/channel
- changed adc type to mode and enum int
- add unit suffix and drop ref for voltage-divider
- moved fan to its own subnode with base registerv5:
- resolvedt_binding_checkissuesv4:
- move to using pwm<n>_auto_point<m>_{pwm,temp} for FAN PWM
- remove unncessary resolution/scaling properties for ADCs
- update to yaml
- remove watchdogv3:
- replaced _ with -
- remove input bindings
- added full description of hwmon
- fix unit address of hwmon child nodes
Quoted 4 lines
--- .../devicetree/bindings/mfd/gateworks-gsc.yaml | 196 +++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml
Applied, thanks.
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Tim Harvey
maintainerPATCH v11 2/3 mfd: add Gateworks System Controller core driver
In reply to Tim HarveyThe Gateworks System Controller (GSC) is an I2C slave controller implemented with an MSP430 micro-controller whose firmware embeds the following features:
- I/O expander (16 GPIO's) using PCA955x protocol
- Real Time Clock using DS1672 protocol
- User EEPROM using AT24 protocol
- HWMON using custom protocol
- Interrupt controller with tamper detect, user pushbotton
- Watchdog controller capable of full board power-cycle
- Power Control capable of full board power-cycle
see http://trac.gateworks.com/wiki/gsc for more details
---
v11:
- fix compile error
v10:
- fix typo and gramatical errors in Kconfig and comment block
- drop unused i2c device-id table
- added Lee's ack in s-o-b
v9:
- rebase against 5.7-rc2
- cleanup gsc_powerdown() by using BIT(), put_unaligned_le32(), and avoid unnecessary assignments
- rename GSC_CTRL_1 SLEEP related defines to simplify
- add better description and sub-module info to driver description
- whitespace changes per review
- remove unused irq_data pointer in ddata
- remove unnecesary i2c_set_clientdata
- use devm_i2c_new_dummy_device to avoid need of free's
- change regsiter definitions to enum
- export gsc_{read,write} instead of sharing them via ddata
v8:
- whitespace fixes
- describe sub-devices in Kconfig
- add error print for invalid command
- update copyright
- use devm_of_platform_populate
- use probe_new
- move hwmon's regmap init to hwmon
v7:
- remove irq from private data struct
v6:
- remove duplicate signature and fix commit log
v5:
- simplify powerdown function
v4:
- remove hwmon max reg check/define
- fix powerdown function
v3:
- rename gsc->gateworks-gsc
- remove uncecessary include for linux/mfd/core.h
- upercase I2C in comments
- remove i2c debug
- remove uncecessary comments
- don't use KBUILD_MODNAME for name
- remove unnecessary v1/v2/v3 tracking
- unregister hwmon i2c adapter on remove
v2:
- change license comment block style
- remove COMPILE_TEST (Randy)
- fixed whitespace issues
- replaced a printk with dev_err
--- MAINTAINERS | 8 ++ drivers/mfd/Kconfig | 15 +++ drivers/mfd/Makefile | 1 + drivers/mfd/gateworks-gsc.c | 277 ++++++++++++++++++++++++++++++++++++++++++++ include/linux/mfd/gsc.h | 76 ++++++++++++ 5 files changed, 377 insertions(+) create mode 100644 drivers/mfd/gateworks-gsc.c create mode 100644 include/linux/mfd/gsc.h
MAINTAINERS +8 -0
@@ -7028,6 +7028,14 @@ F: kernel/futex.c F: tools/perf/bench/futex* F: tools/testing/selftests/futex/ +GATEWORKS SYSTEM CONTROLLER (GSC) DRIVER +M: Tim Harvey <[email protected]> +M: Robert Jones <[email protected]> +S: Maintained +F: Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml +F: drivers/mfd/gateworks-gsc.c +F: include/linux/mfd/gsc.h + GASKET DRIVER FRAMEWORK M: Rob Springer <[email protected]> M: Todd Poynor <[email protected]>
drivers/mfd/Kconfig +15 -0
@@ -407,6 +407,21 @@ config MFD_EXYNOS_LPASS Select this option to enable support for Samsung Exynos Low Power Audio Subsystem. +config MFD_GATEWORKS_GSC + tristate "Gateworks System Controller" + depends on (I2C && OF) + select MFD_CORE + select REGMAP_I2C + select REGMAP_IRQ + help + Enable support for the Gateworks System Controller (GSC) found + on Gateworks Single Board Computers supporting system functions + such as push-button monitor, multiple ADC's for voltage and + temperature monitoring, fan controller and watchdog monitor. + This driver provides common support for accessing the device. + Additional drivers must be enabled in order to use the + functionality of the device. + config MFD_MC13XXX tristate depends on (SPI_MASTER || I2C)
drivers/mfd/Makefile +1 -0
@@ -15,6 +15,7 @@ obj-$(CONFIG_MFD_BCM590XX) += bcm590xx.o obj-$(CONFIG_MFD_BD9571MWV) += bd9571mwv.o obj-$(CONFIG_MFD_CROS_EC_DEV) += cros_ec_dev.o obj-$(CONFIG_MFD_EXYNOS_LPASS) += exynos-lpass.o +obj-$(CONFIG_MFD_GATEWORKS_GSC) += gateworks-gsc.o obj-$(CONFIG_HTC_PASIC3) += htc-pasic3.o obj-$(CONFIG_HTC_I2CPLD) += htc-i2cpld.o
drivers/mfd/gateworks-gsc.c new file +277 -0
277 lines not on this page · raw message
include/linux/mfd/gsc.h new file +76 -0
76 lines not on this page · raw message
Signature · 1 line
2.7.4
Lee Jones
AppliedRe: [PATCH v11 2/3] mfd: add Gateworks System Controller core driver
Quoted 74 lines · Tim Harvey
The Gateworks System Controller (GSC) is an I2C slave controller implemented with an MSP430 micro-controller whose firmware embeds the following features:
- I/O expander (16 GPIO's) using PCA955x protocol
- Real Time Clock using DS1672 protocol
- User EEPROM using AT24 protocol
- HWMON using custom protocol
- Interrupt controller with tamper detect, user pushbotton
- Watchdog controller capable of full board power-cycle
- Power Control capable of full board power-cyclesee http://trac.gateworks.com/wiki/gsc for more details
Signed-off-by Tim Harvey <[email protected]>Acked-for-MFD-by Lee Jones <[email protected]>---
v11:
- fix compile errorv10:
- fix typo and gramatical errors inKconfigand comment block
- drop unused i2c device-id table
- added Lee's ack in s-o-bv9:
- rebase against 5.7-rc2
- cleanupgsc_powerdown()by usingBIT(),put_unaligned_le32(), and avoid unnecessary assignments
- renameGSC_CTRL_1SLEEP related defines to simplify
- add better description and sub-module info to driver description
- whitespace changes per review
- remove unusedirq_datapointer in ddata
- remove unnecesaryi2c_set_clientdata
- usedevm_i2c_new_dummy_deviceto avoid need of free's
- change regsiter definitions to enum
- export gsc_{read,write} instead of sharing them via ddatav8:
- whitespace fixes
- describe sub-devices inKconfig
- add error print for invalid command
- update copyright
- usedevm_of_platform_populate
- useprobe_new
- move hwmon's regmap init to hwmonv7:
- remove irq from private data structv6:
- remove duplicate signature and fix commit logv5:
- simplify powerdown functionv4:
- remove hwmon max reg check/define
- fix powerdown functionv3:
- rename gsc->gateworks-gsc
- remove uncecessary include forlinux/mfd/core.h
- upercase I2C in comments
- remove i2c debug
- remove uncecessary comments
- don't useKBUILD_MODNAMEfor name
- remove unnecessary v1/v2/v3 tracking
- unregister hwmon i2c adapter on removev2:
- change license comment block style
- removeCOMPILE_TEST(Randy)
- fixed whitespace issues
- replaced a printk withdev_err
Quoted 9 lines
--- MAINTAINERS | 8 ++ drivers/mfd/Kconfig | 15 +++ drivers/mfd/Makefile | 1 + drivers/mfd/gateworks-gsc.c | 277 ++++++++++++++++++++++++++++++++++++++++++++ include/linux/mfd/gsc.h | 76 ++++++++++++ 5 files changed, 377 insertions(+) create mode 100644 drivers/mfd/gateworks-gsc.c create mode 100644 include/linux/mfd/gsc.h
Applied, thanks.
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Tim Harvey
maintainerPATCH v11 3/3 hwmon: add Gateworks System Controller support
In reply to Tim HarveyThe Gateworks System Controller has a hwmon sub-component that exposes up to 16 ADC's, some of which are temperature sensors, others which are voltage inputs. The ADC configuration (register mapping and name) is configured via device-tree and varies board to board.
---
v11:
- no change
v10:
- no change
v9:
- use exported gsc_{read,write}
- added Reviewed-by: Guenter Roeck <[email protected]>
v8:
- move regmap init to hwmon
v7:
- fix whitespace in Kconfig
- remove unnecessary device pointer in private data
- change divider from mili-ohms to ohms
- move fan base property to reg
v6:
- fix size of info field
- improve pwm output control documentation
- include unit suffix in divider and offset
- change subnode name to gsc-adc
- change to fan subnode
- fix voltage offset
v5:
- fix various checkpatch issues
- correct gsc-hwmon.rst in MAINTAINERS
- encorporate Gunter's feedback:
- switch to SENSOR_DEVICE_ATTR_{RW,RO}
- use tmp value to avoid excessive pointer deference
- simplify shift operation
- scale voffset once
- simplify is_visible function
- remove empty line at end of file
v4:
- adjust for uV offset from device-tree
- remove unnecessary optional write function
- remove register range check
- change dev_err prints to use gsc dev
- hard-code resolution/scaling for raw adcs
- describe units of ADC resolution
- move to using pwm<n>_auto_point<m>_{pwm,temp} for FAN PWM
- ensure space before/after operators
- remove unnecessary parens
- remove more debugging
- add default case and comment for type_voltage
- remove unnecessary index bounds checks for channel
- remove unnecessary clearing of struct fields
- added Documentation/hwmon/gsc-hwmon.rst
v3:
- add voltage_raw input type and supporting fields
- add channel validation to is_visible function
- remove unnecessary channel validation from read/write functions
v2:
- change license comment style
- remove DEBUG
- simplify regmap_bulk_read err check
- remove break after returns in switch statement
- fix fan setpoint buffer address
- remove unnecessary parens
- consistently use struct device *dev pointer
- change license/comment block
- add validation for hwmon child node props
- move parsing of of to own function
- use strlcpy to ensure null termination
- fix static array sizes and removed unnecessary initializers
- dynamically allocate channels
- fix fan input label
- support platform data
- fixed whitespace issues
--- Documentation/hwmon/gsc-hwmon.rst | 53 +++++ Documentation/hwmon/index.rst | 1 + MAINTAINERS | 3 + drivers/hwmon/Kconfig | 9 + drivers/hwmon/Makefile | 1 + drivers/hwmon/gsc-hwmon.c | 390 ++++++++++++++++++++++++++++++++ include/linux/platform_data/gsc_hwmon.h | 44 ++++ 7 files changed, 501 insertions(+) create mode 100644 Documentation/hwmon/gsc-hwmon.rst create mode 100644 drivers/hwmon/gsc-hwmon.c create mode 100644 include/linux/platform_data/gsc_hwmon.h
Documentation/hwmon/gsc-hwmon.rst new file +53 -0
@@ -0,0 +1,53 @@ +.. SPDX-License-Identifier: GPL-2.0 + +Kernel driver gsc-hwmon +======================= + +Supported chips: Gateworks GSC +Datasheet: http://trac.gateworks.com/wiki/gsc +Author: Tim Harvey <[email protected]> + +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. +
Documentation/hwmon/index.rst +1 -0
@@ -60,6 +60,7 @@ Hardware Monitoring Kernel Drivers ftsteutates g760a g762 + gsc-hwmon gl518sm hih6130 ibmaem
MAINTAINERS +3 -0
@@ -7035,6 +7035,9 @@ 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 <[email protected]>
drivers/hwmon/Kconfig +9 -0
@@ -523,6 +523,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
drivers/hwmon/Makefile +1 -0
@@ -74,6 +74,7 @@ obj-$(CONFIG_SENSORS_G760A) += g760a.o obj-$(CONFIG_SENSORS_G762) += g762.o obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o +obj-$(CONFIG_SENSORS_GSC) += gsc-hwmon.o obj-$(CONFIG_SENSORS_GPIO_FAN) += gpio-fan.o obj-$(CONFIG_SENSORS_HIH6130) += hih6130.o obj-$(CONFIG_SENSORS_ULTRA45) += ultra45_env.o
drivers/hwmon/gsc-hwmon.c new file +390 -0
390 lines not on this page · raw message
include/linux/platform_data/gsc_hwmon.h new file +44 -0
44 lines not on this page · raw message
Signature · 1 line
2.7.4
Lee Jones
AppliedRe: [PATCH 3/3] hwmon: add Gateworks System Controller support
Quoted 84 lines · Tim Harvey
The Gateworks System Controller has a hwmon sub-component that exposes up to 16 ADC's, some of which are temperature sensors, others which are voltage inputs. The ADC configuration (register mapping and name) is configured via device-tree and varies board to board.
Signed-off-by Tim Harvey <[email protected]>Reviewed-by Guenter Roeck <[email protected]>---
v11:
- no changev10:
- no changev9:
- use exported gsc_{read,write}
- added Reviewed-by: Guenter Roeck <[email protected]>v8:
- move regmap init to hwmonv7:
- fix whitespace inKconfig
- remove unnecessary device pointer in private data
- change divider from mili-ohms to ohms
- move fan base property to regv6:
- fix size of info field
- improve pwm output control documentation
- include unit suffix in divider and offset
- change subnode name to gsc-adc
- change to fan subnode
- fix voltage offsetv5:
- fix various checkpatch issues
- correctgsc-hwmon.rstinMAINTAINERS
- encorporate Gunter's feedback:
- switch to SENSOR_DEVICE_ATTR_{RW,RO}
- use tmp value to avoid excessive pointer deference
- simplify shift operation
- scale voffset once
- simplifyis_visiblefunction
- remove empty line at end of filev4:
- adjust for uV offset from device-tree
- remove unnecessary optional write function
- remove register range check
- changedev_errprints to use gsc dev
- hard-code resolution/scaling for raw adcs
- describe units of ADC resolution
- move to using pwm<n>_auto_point<m>_{pwm,temp} for FAN PWM
- ensure space before/after operators
- remove unnecessary parens
- remove more debugging
- add default case and comment fortype_voltage
- remove unnecessary index bounds checks for channel
- remove unnecessary clearing of struct fields
- addedDocumentation/hwmon/gsc-hwmon.rstv3:
- addvoltage_rawinput type and supporting fields
- add channel validation tois_visiblefunction
- remove unnecessary channel validation from read/write functionsv2:
- change license comment style
- remove DEBUG
- simplifyregmap_bulk_readerr check
- remove break after returns in switch statement
- fix fan setpoint buffer address
- remove unnecessary parens
- consistently use struct device *dev pointer
- change license/comment block
- add validation for hwmon child node props
- move parsing of of to own function
- use strlcpy to ensure null termination
- fix static array sizes and removed unnecessary initializers
- dynamically allocate channels
- fix fan input label
- support platform data
- fixed whitespace issues
Quoted 12 lines
--- Documentation/hwmon/gsc-hwmon.rst | 53 +++++ Documentation/hwmon/index.rst | 1 + MAINTAINERS | 3 + drivers/hwmon/Kconfig | 9 + drivers/hwmon/Makefile | 1 + drivers/hwmon/gsc-hwmon.c | 390 ++++++++++++++++++++++++++++++++ include/linux/platform_data/gsc_hwmon.h | 44 ++++ 7 files changed, 501 insertions(+) create mode 100644 Documentation/hwmon/gsc-hwmon.rst create mode 100644 drivers/hwmon/gsc-hwmon.c create mode 100644 include/linux/platform_data/gsc_hwmon.h
Applied, thanks.
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
[GIT PULL] Immutable branch between MFD and HWMON due for the v5.8 merge window
In reply to Tim HarveyEnjoy!
The following changes since commit 8f3d9f354286745c751374f5f1fcafee6b3f3136:
Linux 5.7-rc1 (2020-04-12 12:35:55 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git ib-mfd-hwmon-v5.8
for you to fetch changes up to 3bce5377ef66a8700dcf7a9cb89b7aeb99326cb7:
hwmon: Add Gateworks System Controller support (2020-05-20 10:29:17 +0100)
----------------------------------------------------------------
Immutable branch between MFD and HWMON due for the v5.8 merge window
----------------------------------------------------------------
Tim Harvey (3):
dt-bindings: mfd: Add Gateworks System Controller bindings
mfd: Add Gateworks System Controller core driver
hwmon: Add Gateworks System Controller support
.../devicetree/bindings/mfd/gateworks-gsc.yaml | 196 +++++++++++ Documentation/hwmon/gsc-hwmon.rst | 53 +++ Documentation/hwmon/index.rst | 1 + MAINTAINERS | 11 + drivers/hwmon/Kconfig | 9 + drivers/hwmon/Makefile | 1 + drivers/hwmon/gsc-hwmon.c | 390 +++++++++++++++++++++ drivers/mfd/Kconfig | 15 + drivers/mfd/Makefile | 1 + drivers/mfd/gateworks-gsc.c | 277 +++++++++++++++ include/linux/mfd/gsc.h | 76 ++++ include/linux/platform_data/gsc_hwmon.h | 44 +++ 12 files changed, 1074 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml create mode 100644 Documentation/hwmon/gsc-hwmon.rst create mode 100644 drivers/hwmon/gsc-hwmon.c create mode 100644 drivers/mfd/gateworks-gsc.c create mode 100644 include/linux/mfd/gsc.h create mode 100644 include/linux/platform_data/gsc_hwmon.h
Signature · 4 lines
Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog