drivers: hwmon: Add On-Chip Controller driver
Subsystems (3)
v6 cover drivers: hwmon: Add On-Chip Controller driver
From: "Edward A. James" <eajames-r/[email protected]>
This patchset adds a hwmon driver to support the OCC (On-Chip Controller) on the IBM POWER8 and POWER9 processors, from a BMC (Baseboard Management Controller). The OCC is an embedded processor that provides real time power and thermal monitoring.
The driver provides an interface on a BMC to poll OCC sensor data, set user power caps, and perform some basic OCC error handling. It interfaces with userspace through hwmon.
The driver is currently functional only for the OCC on POWER8 chips. Communicating with the POWER9 OCC requries FSI support.
Edward A. James (6):
hwmon: Add core On-Chip Controller support for POWER CPUs
hwmon: occ: Add sysfs interface
hwmon: occ: Add I2C transport implementation for SCOM operations
hwmon: occ: Add callbacks for parsing P8 OCC datastructures
hwmon: occ: Add hwmon implementation for the P8 OCC
hwmon: occ: Add callbacks for parsing P9 OCC datastructures
Documentation/devicetree/bindings/hwmon/occ.txt | 13 + Documentation/hwmon/occ | 114 ++++++ MAINTAINERS | 7 + drivers/hwmon/Kconfig | 2 + drivers/hwmon/Makefile | 1 + drivers/hwmon/occ/Kconfig | 29 ++ drivers/hwmon/occ/Makefile | 2 + drivers/hwmon/occ/occ.c | 450 ++++++++++++++++++++++++ drivers/hwmon/occ/occ.h | 81 +++++ drivers/hwmon/occ/occ_p8.c | 248 +++++++++++++ drivers/hwmon/occ/occ_p8.h | 30 ++ drivers/hwmon/occ/occ_p9.c | 309 ++++++++++++++++ drivers/hwmon/occ/occ_p9.h | 30 ++ drivers/hwmon/occ/occ_scom_i2c.c | 77 ++++ drivers/hwmon/occ/occ_scom_i2c.h | 26 ++ drivers/hwmon/occ/occ_sysfs.c | 251 +++++++++++++ drivers/hwmon/occ/occ_sysfs.h | 30 ++ drivers/hwmon/occ/p8_occ_i2c.c | 104 ++++++ drivers/hwmon/occ/scom.h | 47 +++ 19 files changed, 1851 insertions(+) create mode 100644 Documentation/devicetree/bindings/hwmon/occ.txt create mode 100644 Documentation/hwmon/occ create mode 100644 drivers/hwmon/occ/Kconfig create mode 100644 drivers/hwmon/occ/Makefile create mode 100644 drivers/hwmon/occ/occ.c create mode 100644 drivers/hwmon/occ/occ.h create mode 100644 drivers/hwmon/occ/occ_p8.c create mode 100644 drivers/hwmon/occ/occ_p8.h create mode 100644 drivers/hwmon/occ/occ_p9.c create mode 100644 drivers/hwmon/occ/occ_p9.h create mode 100644 drivers/hwmon/occ/occ_scom_i2c.c create mode 100644 drivers/hwmon/occ/occ_scom_i2c.h create mode 100644 drivers/hwmon/occ/occ_sysfs.c create mode 100644 drivers/hwmon/occ/occ_sysfs.h create mode 100644 drivers/hwmon/occ/p8_occ_i2c.c create mode 100644 drivers/hwmon/occ/scom.h
Signature · 6 lines
1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v6 1/6 hwmon: Add core On-Chip Controller support for POWER CPUs
From: "Edward A. James" <[email protected]>
Add core support for polling the OCC for it's sensor data and parsing that data into sensor-specific information.
--- Documentation/hwmon/occ | 40 ++++ MAINTAINERS | 7 + drivers/hwmon/Kconfig | 2 + drivers/hwmon/Makefile | 1 + drivers/hwmon/occ/Kconfig | 15 ++ drivers/hwmon/occ/Makefile | 1 + drivers/hwmon/occ/occ.c | 450 +++++++++++++++++++++++++++++++++++++++++++++ drivers/hwmon/occ/occ.h | 81 ++++++++ drivers/hwmon/occ/scom.h | 47 +++++ 9 files changed, 644 insertions(+) create mode 100644 Documentation/hwmon/occ create mode 100644 drivers/hwmon/occ/Kconfig create mode 100644 drivers/hwmon/occ/Makefile create mode 100644 drivers/hwmon/occ/occ.c create mode 100644 drivers/hwmon/occ/occ.h create mode 100644 drivers/hwmon/occ/scom.h
Documentation/hwmon/occ new file +40 -0
@@ -0,0 +1,40 @@ +Kernel driver occ +================= + +Supported chips: + * ASPEED AST2400 + * ASPEED AST2500 + +Please note that the chip must be connected to a POWER8 or POWER9 processor +(see the BMC - Host Communications section). + +Author: Eddie James <[email protected]> + +Description +----------- + +This driver implements support for the OCC (On-Chip Controller) on the IBM +POWER8 and POWER9 processors, from a BMC (Baseboard Management Controller). The +OCC is an embedded processor that provides real time power and thermal +monitoring. + +This driver provides an interface on a BMC to poll OCC sensor data, set user +power caps, and perform some basic OCC error handling. + +Currently, all versions of the OCC support four types of sensor data: power, +temperature, frequency, and "caps," which indicate limits and thresholds used +internally on the OCC. + +BMC - Host Communications +------------------------- + +For the POWER8 application, the BMC can communicate with the P8 over I2C bus. +However, to access the OCC register space, any data transfer must use a SCOM +operation. SCOM is a procedure to initiate a data transfer, typically of 8 +bytes. SCOMs consist of writing a 32-bit command register and then +reading/writing two 32-bit data registers. This driver implements these +SCOM operations over I2C bus in order to communicate with the OCC. + +For the POWER9 application, the BMC can communicate with the P9 over FSI bus +and SBE engine. Once again, SCOM operations are required. This driver will +implement SCOM ops over FSI/SBE. This will require the FSI driver.
MAINTAINERS +7 -0
@@ -9128,6 +9128,13 @@ T: git git://linuxtv.org/media_tree.git S: Maintained F: drivers/media/i2c/ov7670.c +ON-CHIP CONTROLLER HWMON DRIVER +M: Eddie James <[email protected]> +L: [email protected] +S: Maintained +F: Documentation/hwmon/occ +F: drivers/hwmon/occ/ + ONENAND FLASH DRIVER M: Kyungmin Park <[email protected]> L: [email protected]
drivers/hwmon/Kconfig +2 -0
@@ -1240,6 +1240,8 @@ config SENSORS_NSA320 This driver can also be built as a module. If so, the module will be called nsa320-hwmon. +source drivers/hwmon/occ/Kconfig + config SENSORS_PCF8591 tristate "Philips PCF8591 ADC/DAC" depends on I2C
drivers/hwmon/Makefile +1 -0
@@ -169,6 +169,7 @@ obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o obj-$(CONFIG_SENSORS_XGENE) += xgene-hwmon.o +obj-$(CONFIG_SENSORS_PPC_OCC) += occ/ obj-$(CONFIG_PMBUS) += pmbus/ ccflags-$(CONFIG_HWMON_DEBUG_CHIP) := -DDEBUG
drivers/hwmon/occ/Kconfig new file +15 -0
@@ -0,0 +1,15 @@ +# +# On Chip Controller configuration +# + +menuconfig SENSORS_PPC_OCC + bool "PPC On-Chip Controller" + help + If you say yes here you get support to monitor Power CPU + sensors via the On-Chip Controller (OCC). + + Generally this is used by management controllers such as a BMC + on an OpenPower system. + + This driver can also be built as a module. If so, the module + will be called occ.
drivers/hwmon/occ/Makefile new file +1 -0
@@ -0,0 +1 @@ +obj-$(CONFIG_SENSORS_PPC_OCC) += occ.o
drivers/hwmon/occ/occ.c new file +450 -0
450 lines not on this page · raw message
drivers/hwmon/occ/occ.h new file +81 -0
81 lines not on this page · raw message
drivers/hwmon/occ/scom.h new file +47 -0
47 lines not on this page · raw message
Signature · 1 line
1.8.3.1
kbuild test robot
build botRe: [PATCH linux v6 1/6] hwmon: Add core On-Chip Controller support for POWER CPUs
reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree…
Hi Edward,
[auto build test WARNING on hwmon/hwmon-next]
[also build test WARNING on v4.10-rc7 next-20170206]
[cannot apply to linux/master]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/eajames-linux-vnet-ibm-com/drivers-hwmon-Add-On-Chip-Controller-driver/20170207-043353 base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next config: openrisc-allyesconfig (attached as .config) compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=openrisc
All warnings (new ones prefixed by >>):
drivers/hwmon/occ/occ.c: In function 'parse_occ_response':
>> drivers/hwmon/occ/occ.c:127:6: warning: unused variable 'rc'
vim +/rc +127 drivers/hwmon/occ/occ.c
111 struct device *dev;
112 void *bus;
113 struct occ_bus_ops bus_ops;
114 struct occ_ops ops;
115 struct occ_config config;
116 unsigned long last_updated;
117 struct mutex update_lock;
118 struct occ_response response;
119 bool valid;
120 u8 *raw_data;
121 };
122
123 static int parse_occ_response(struct occ *driver, u16 num_bytes)
124 {
125 int b;
126 int s;
> 127 int rc;
128 unsigned int offset = SENSOR_BLOCK_OFFSET;
129 int sensor_type;
130 u8 num_sensor_blocks;
131 struct sensor_data_block_header *block;
132 void *sensors;
133 struct device *dev = driver->dev;
134 u8 *data = driver->raw_data;
135 struct occ_response *resp = &driver->response;
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Re: [PATCH linux v6 1/6] hwmon: Add core On-Chip Controller support for POWER CPUs
Pushing up v7 to fix this compile warning. No other changes.
Quoted 59 lines · kbuild test robot
Hi Edward,
[auto build test WARNING on hwmon/hwmon-next]
[also build test WARNING on v4.10-rc7 next-20170206] [cannot apply to linux/master]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]url:
https://github.com/0day-ci/linux/commits/eajames-linux-vnet-ibm-com/drivers-hwmon-Add-On-Chip-Controller-driver/20170207-043353
base:
https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
hwmon-next
config: openrisc-allyesconfig (attached as .config)
compiler: or32-linux-gcc (GCC) 4.5.1-or32-1.0rc1 reproduce:
wget
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
-O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree make.cross ARCH=openriscAll warnings (new ones prefixed by >>):
drivers/hwmon/occ/occ.c: In function 'parse_occ_response':Quoted 1 line
Quoted 1 line
drivers/hwmon/occ/occ.c:127:6: warning: unused variable 'rc'vim +/rc +127
drivers/hwmon/occ/occ.c111 struct device *dev; 112 void *bus; 113 struct occ_bus_ops bus_ops; 114 struct occ_ops ops; 115 struct occ_config config; 116 unsigned long last_updated; 117 struct mutex update_lock; 118 struct occ_response response; 119 bool valid; 120 u8 *raw_data; 121 }; 122 123 static int parse_occ_response(struct occ *driver, u16 num_bytes) 124 { 125 int b; 126 int s;Quoted 1 line
127 int rc;
128 unsigned int offset = SENSOR_BLOCK_OFFSET; 129 int sensor_type; 130 u8 num_sensor_blocks; 131 struct sensor_data_block_header *block; 132 void *sensors; 133 struct device *dev = driver->dev; 134 u8 *data = driver->raw_data; 135 struct occ_response *resp = &driver->response;---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
PATCH v6 2/6 hwmon: occ: Add sysfs interface
In reply to [email protected]From: "Edward A. James" <[email protected]>
Add a generic mechanism to expose the sensors provided by the OCC in sysfs.
--- Documentation/hwmon/occ | 62 +++++++++++ drivers/hwmon/occ/Makefile | 2 +- drivers/hwmon/occ/occ_sysfs.c | 251 ++++++++++++++++++++++++++++++++++++++++++ drivers/hwmon/occ/occ_sysfs.h | 30 +++++ 4 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 drivers/hwmon/occ/occ_sysfs.c create mode 100644 drivers/hwmon/occ/occ_sysfs.h
Documentation/hwmon/occ +62 -0
@@ -25,6 +25,68 @@ Currently, all versions of the OCC support four types of sensor data: power, temperature, frequency, and "caps," which indicate limits and thresholds used internally on the OCC. +sysfs Entries +------------- + +The OCC driver uses the hwmon sysfs framework to provide data to userspace. + +The driver exports a number of sysfs files for each type of sensor. The +sensor-specific files vary depending on the processor type, though many of the +attributes are common for both the POWER8 and POWER9. + +The hwmon interface cannot define every type of sensor that may be used. +Therefore, the frequency sensor on the OCC uses the "input" type sensor defined +by the hwmon interface, rather than defining a new type of custom sensor. + +Below are detailed the names and meaning of each sensor file for both types of +processors. All sensors are read-only unless otherwise specified. <x> indicates +the hwmon index. sensor id indicates the unique internal OCC identifer. Please +see the POWER OCC specification for details on all these sensor values. + +frequency: + all processors: + in<x>_input - frequency value + in<x>_label - sensor id +temperature: + POWER8: + temp<x>_input - temperature value + temp<x>_label - sensor id + POWER9 (in addition to above): + temp<x>_type - FRU type + +power: + POWER8: + power<x>_input - power value + power<x>_label - sensor id + power<x>_average - accumulator + power<x>_average_interval - update tag (number of samples in + accumulator) + POWER9: + power<x>_input - power value + power<x>_label - sensor id + power<x>_average_min - accumulator[0] + power<x>_average_max - accumulator[1] (64 bits total) + power<x>_average_interval - update tag + power<x>_reset_history - (function_id | (apss_channel << 8) + +caps: + POWER8: + power<x>_cap - current powercap + power<x>_cap_max - max powercap + power<x>_cap_min - min powercap + power<x>_max - normal powercap + power<x>_alarm - user powercap, r/w + POWER9: + power<x>_cap_alarm - user powercap source + +The driver also provides two sysfs entries through hwmon to better +control the driver and monitor the master OCC. Though there may be multiple +OCCs present on the system, these two files are only present for the "master" +OCC. + name - read the name of the driver + update_interval - read or write the minimum interval for polling the + OCC. + BMC - Host Communications -------------------------
drivers/hwmon/occ/Makefile +1 -1
@@ -1 +1 @@ -obj-$(CONFIG_SENSORS_PPC_OCC) += occ.o +obj-$(CONFIG_SENSORS_PPC_OCC) += occ.o occ_sysfs.o
drivers/hwmon/occ/occ_sysfs.c new file +251 -0
251 lines not on this page · raw message
drivers/hwmon/occ/occ_sysfs.h new file +30 -0
@@ -0,0 +1,30 @@ +/* +* occ_sysfs.h - OCC sysfs interface +* +* This file contains the data structures and function prototypes for the OCC +* hwmon sysfs entries. +* +* Copyright 2016 IBM Corp. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +*/ + +#ifndef __OCC_SYSFS_H__ +#define __OCC_SYSFS_H__ + +struct occ ; +struct device ; +struct occ_sysfs ; + +struct occ_sysfs *occ_sysfs_start (struct device *dev,struct occ *occ, +const u32 *sensor_hwmon_configs, +const char *name); +#endif /* __OCC_SYSFS_H__ */
Signature · 1 line
1.8.3.1
PATCH v6 3/6 hwmon: occ: Add I2C transport implementation for SCOM operations
In reply to [email protected]From: "Edward A. James" <[email protected]>
Add functions to send SCOM operations over I2C bus. The BMC can communicate with the Power8 host processor over I2C, but needs to use SCOM operations in order to access the OCC register space.
--- drivers/hwmon/occ/occ_scom_i2c.c | 77 ++++++++++++++++++++++++++++++++++++++++ drivers/hwmon/occ/occ_scom_i2c.h | 26 ++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 drivers/hwmon/occ/occ_scom_i2c.c create mode 100644 drivers/hwmon/occ/occ_scom_i2c.h
drivers/hwmon/occ/occ_scom_i2c.c new file +77 -0
@@ -0,0 +1,77 @@ +/* +* occ_scom_i2c.c - hwmon OCC driver +* +* This file contains the functions for performing SCOM operations over I2C bus +* to access the OCC. +* +* Copyright 2016 IBM Corp. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +*/ + +#include <linux/i2c.h> +#include <linux/kernel.h> +#include <linux/module.h> +#include "occ_scom_i2c.h" +#include "scom.h" + +int occ_i2c_getscom (void *bus,u32 address,u64 *data) +{ +ssize_t rc; +u64 buf; +struct i2c_client *client = bus; +struct i2c_msg msgs[2 ]; + + msgs[0 ].addr = client->addr; + msgs[0 ].flags = client->flags &I2C_M_TEN ; + msgs[0 ].len =sizeof (u32); + msgs[0 ].buf = (char *)&address; + + msgs[1 ].addr = client->addr; + msgs[1 ].flags = client->flags &I2C_M_TEN ; + msgs[1 ].flags |=I2C_M_RD ; + msgs[1 ].len =sizeof (u64); + msgs[1 ].buf = (char *)&buf; + + rc =i2c_transfer (client->adapter, msgs,2 ); +if (rc <0 ) +return rc; + + *data =be64_to_cpu (buf); + +return 0 ; +} +EXPORT_SYMBOL (occ_i2c_getscom); + +int occ_i2c_putscom (void *bus,u32 address,u32 data0,u32 data1) +{ +u32 buf[3 ]; +ssize_t rc; +struct i2c_client *client = bus; + +/* send raw data, user can handle endian */ + buf[0 ] = address; + buf[1 ] = data1; + buf[2 ] = data0; + + rc =i2c_master_send (client, (const char *)buf,sizeof (u32) *3 ); +if (rc <0 ) +return rc; +else if (rc !=sizeof (u32) *3 ) +return -EIO ; + +return 0 ; +} +EXPORT_SYMBOL (occ_i2c_putscom); + +MODULE_AUTHOR ("Eddie James <[email protected]>" ); +MODULE_DESCRIPTION ("I2C OCC SCOM transport" ); +MODULE_LICENSE ("GPL" );
drivers/hwmon/occ/occ_scom_i2c.h new file +26 -0
@@ -0,0 +1,26 @@ +/* +* occ_scom_i2c.h - hwmon OCC driver +* +* This file contains function protoypes for peforming SCOM operations over I2C +* bus to access the OCC. +* +* Copyright 2016 IBM Corp. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +*/ + +#ifndef __OCC_SCOM_I2C_H__ +#define __OCC_SCOM_I2C_H__ + +int occ_i2c_getscom (void *bus,u32 address,u64 *data); +int occ_i2c_putscom (void *bus,u32 address,u32 data0,u32 data1); + +#endif /* __OCC_SCOM_I2C_H__ */
Signature · 1 line
1.8.3.1
PATCH v6 4/6 hwmon: occ: Add callbacks for parsing P8 OCC datastructures
In reply to [email protected]From: "Edward A. James" <[email protected]>
Add functions to parse the data structures that are specific to the OCC on the POWER8 processor. These are the sensor data structures, including temperature, frequency, power, and "caps."
--- Documentation/hwmon/occ | 9 ++ drivers/hwmon/occ/occ_p8.c | 248 +++++++++++++++++++++++++++++++++++++++++++++ drivers/hwmon/occ/occ_p8.h | 30 ++++++ 3 files changed, 287 insertions(+) create mode 100644 drivers/hwmon/occ/occ_p8.c create mode 100644 drivers/hwmon/occ/occ_p8.h
Documentation/hwmon/occ +9 -0
@@ -25,6 +25,15 @@ Currently, all versions of the OCC support four types of sensor data: power, temperature, frequency, and "caps," which indicate limits and thresholds used internally on the OCC. +The format for the POWER8 OCC sensor data can be found in the P8 OCC +specification: +github.com/open-power/docs/blob/master/occ/OCC_OpenPwr_FW_Interfaces.pdf +This document provides the details of the OCC sensors: power, frequency, +temperature, and caps. These sensor formats are specific to the POWER8 OCC. A +number of data structures, such as command format, response headers, and the +like, are also defined in this specification, and are common to both POWER8 and +POWER9 OCCs. + sysfs Entries -------------
drivers/hwmon/occ/occ_p8.c new file +248 -0
248 lines not on this page · raw message
drivers/hwmon/occ/occ_p8.h new file +30 -0
@@ -0,0 +1,30 @@ +/* +* occ_p8.h - OCC hwmon driver +* +* This file contains Power8-specific function prototypes +* +* Copyright 2016 IBM Corp. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +*/ + +#ifndef __OCC_P8_H__ +#define __OCC_P8_H__ + +#include "scom.h" + +struct device ; + +const u32 *p8_get_sensor_hwmon_configs (void ); +struct occ *p8_occ_start (struct device *dev,void *bus, +struct occ_bus_ops *bus_ops); + +#endif /* __OCC_P8_H__ */
Signature · 1 line
1.8.3.1
PATCH v6 5/6 hwmon: occ: Add hwmon implementation for the P8 OCC
In reply to [email protected]From: "Edward A. James" <[email protected]>
Add code to tie the hwmon sysfs code and the POWER8 OCC code together, as well as probe the entire driver from the I2C bus. I2C is the communication method between the BMC and the P8 OCC.
--- Documentation/devicetree/bindings/hwmon/occ.txt | 13 +++ drivers/hwmon/occ/Kconfig | 14 ++++ drivers/hwmon/occ/Makefile | 1 + drivers/hwmon/occ/p8_occ_i2c.c | 104 ++++++++++++++++++++++++ 4 files changed, 132 insertions(+) create mode 100644 Documentation/devicetree/bindings/hwmon/occ.txt create mode 100644 drivers/hwmon/occ/p8_occ_i2c.c
Documentation/devicetree/bindings/hwmon/occ.txt new file +13 -0
@@ -0,0 +1,13 @@ +HWMON I2C driver for IBM POWER CPU OCC (On Chip Controller) + +Required properties: + - compatible: must be "ibm,p8-occ-i2c" + - reg: physical address + +Example: +i2c3: i2c-bus@100 { + occ@50 { + compatible = "ibm,p8-occ-i2c"; + reg = <0x50>; + }; +};
drivers/hwmon/occ/Kconfig +14 -0
@@ -13,3 +13,17 @@ menuconfig SENSORS_PPC_OCC This driver can also be built as a module. If so, the module will be called occ. + +if SENSORS_PPC_OCC + +config SENSORS_PPC_OCC_P8_I2C + tristate "POWER8 OCC hwmon support" + depends on I2C + help + Provide a hwmon sysfs interface for the POWER8 On-Chip Controller, + exposing temperature, frequency and power measurements. + + This driver can also be built as a module. If so, the module will be + called p8-occ-i2c. + +endif
drivers/hwmon/occ/Makefile +1 -0
@@ -1 +1,2 @@ obj-$(CONFIG_SENSORS_PPC_OCC) += occ.o occ_sysfs.o +obj-$(CONFIG_SENSORS_PPC_OCC_P8_I2C) += occ_scom_i2c.o occ_p8.o p8_occ_i2c.o
drivers/hwmon/occ/p8_occ_i2c.c new file +104 -0
104 lines not on this page · raw message
Signature · 1 line
1.8.3.1
PATCH v6 6/6 hwmon: occ: Add callbacks for parsing P9 OCC datastructures
In reply to [email protected]From: "Edward A. James" <eajames-r/[email protected]>
Add functions to parse the data structures that are specific to the OCC on the POWER9 processor. These are the sensor data structures, including temperature, frequency, power, and "caps."
--- Documentation/hwmon/occ | 3 + drivers/hwmon/occ/occ_p9.c | 309 +++++++++++++++++++++++++++++++++++++++++++++ drivers/hwmon/occ/occ_p9.h | 30 +++++ 3 files changed, 342 insertions(+) create mode 100644 drivers/hwmon/occ/occ_p9.c create mode 100644 drivers/hwmon/occ/occ_p9.h
Documentation/hwmon/occ +3 -0
@@ -34,6 +34,9 @@ number of data structures, such as command format, response headers, and the like, are also defined in this specification, and are common to both POWER8 and POWER9 OCCs. +There is currently no public P9 OCC specification, and the data structures +defined in the POWER9 OCC driver are subject to change. + sysfs Entries -------------
drivers/hwmon/occ/occ_p9.c new file +309 -0
309 lines not on this page · raw message
drivers/hwmon/occ/occ_p9.h new file +30 -0
@@ -0,0 +1,30 @@ +/* +* occ_p9.h - OCC hwmon driver +* +* This file contains Power9-specific function prototypes +* +* Copyright 2016 IBM Corp. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +*/ + +#ifndef __OCC_P9_H__ +#define __OCC_P9_H__ + +#include "scom.h" + +struct device ; + +const u32 *p9_get_sensor_hwmon_configs (void ); +struct occ *p9_occ_start (struct device *dev,void *bus, +struct occ_bus_ops *bus_ops); + +#endif /* __OCC_P9_H__ */
Signature · 6 lines
1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html