Revert "hwmon: Add Power8 OCC hwmon driver"
RFC PATCH v6 1/9 Revert "hwmon: Add Power8 OCC hwmon driver"
From: "Edward A. James" <[email protected]>
This reverts commit 7cddcb99cb42cc4a1d72f2d73a78394bb2dcb0f1.
--- .../devicetree/bindings/i2c/i2c-ibm-occ.txt | 13 - drivers/hwmon/Kconfig | 13 - drivers/hwmon/Makefile | 1 - drivers/hwmon/power8_occ_i2c.c | 1254 -------------------- 4 files changed, 1281 deletions(-) delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-ibm-occ.txt delete mode 100644 drivers/hwmon/power8_occ_i2c.c
Documentation/devicetree/bindings/i2c/i2c-ibm-occ.txt deleted +0 -13
@@ -1,13 +0,0 @@ -HWMON i2c driver for IBM POWER CPU OCC (On Chip Controller) - -Required properties: - - compatible: must be "ibm,power8-occ-i2c" - - reg: physical address - -Example: -i2c3: i2c-bus@100 { - occ@50 { - compatible = "ibm,occ-i2c"; - reg = <0x50>; - }; -};
drivers/hwmon/Kconfig +0 -13
@@ -1226,19 +1226,6 @@ config SENSORS_NSA320 This driver can also be built as a module. If so, the module will be called nsa320-hwmon. -config SENSORS_POWER8_OCC_I2C - tristate "Power8 On Chip Controller i2c driver" - depends on I2C - help - If you say yes here you get support to monitor Power8 CPU - sensors via the On Chip Controller (OCC) over the i2c bus. - - 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 power8_occ_i2c. - config SENSORS_PCF8591 tristate "Philips PCF8591 ADC/DAC" depends on I2C
drivers/hwmon/Makefile +0 -1
@@ -128,7 +128,6 @@ obj-$(CONFIG_SENSORS_NCT7802) += nct7802.o obj-$(CONFIG_SENSORS_NCT7904) += nct7904.o obj-$(CONFIG_SENSORS_NSA320) += nsa320-hwmon.o obj-$(CONFIG_SENSORS_NTC_THERMISTOR) += ntc_thermistor.o -obj-$(CONFIG_SENSORS_POWER8_OCC_I2C) += power8_occ_i2c.o obj-$(CONFIG_SENSORS_PC87360) += pc87360.o obj-$(CONFIG_SENSORS_PC87427) += pc87427.o obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
drivers/hwmon/power8_occ_i2c.c deleted +0 -1254
1,254 lines not on this page · raw message
Signature · 1 line
1.9.1
Hi Eddie,
I think Joel has mentioned this in the past: Please prepare the series for sending upstream. Usually this means basing it on a recent upstream tag - for instance v4.9 is about to be released, so that or v4.10-rc1 when it's pushed out in a couple of weeks.
Naturally this revert should not be included, as the current OCC driver does not exist upstream.
Joel can mangle things as necessary when applying your (upstream-based) patches to the OpenBMC kernel.
Cheers,
Andrew
Quoted 1,327 lines · On Tue, 2016-11-29 at 17:02 -0600, [email protected] wrote:
Quoted 1 line
From: "Edward A. James" <[email protected]>
This reverts commit
7cddcb99cb42cc4a1d72f2d73a78394bb2dcb0f1.
---
.../devicetree/bindings/i2c/i2c-ibm-occ.txt | 13 - drivers/hwmon/Kconfig | 13 - drivers/hwmon/Makefile | 1 - drivers/hwmon/power8_occ_i2c.c | 1254 --------------------4 files changed, 1281 deletions(-)delete mode 100644
Documentation/devicetree/bindings/i2c/i2c-ibm-occ.txtdelete mode 100644drivers/hwmon/power8_occ_i2c.cDocumentation/devicetree/bindings/i2c/i2c-ibm-occ.txt deleted +0
-7@@ -1,13 +0,0 @@ -HWMON i2c driver for IBM POWER CPU OCC (On Chip Controller) - -Required properties: - - compatible: must be "ibm,power8-occ-i2c" - - reg: physical address - -Example:Quoted 5 lines
Documentation/devicetree/bindings/i2c/i2c-ibm-occ.txt deleted +0
-5-i2c3: i2c-bus@100 { - occ@50 { - compatible = "ibm,occ-i2c"; - reg = <0x50>; - };Documentation/devicetree/bindings/i2c/i2c-ibm-occ.txt deleted +0
-1-};drivers/hwmon/Kconfig +0
-0@@ -1226,19 +1226,6 @@ config SENSORS_NSA320Quoted 2 lines
This driver can also be built as a module. If so, the module will be called nsa320-hwmon.
-configSENSORS_POWER8_OCC_I2Cdrivers/hwmon/Kconfig config SENSORS_NSA320 · line 1234
Quoted 5 lines
drivers/hwmon/Kconfig +0
-5- tristate "Power8 On Chip Controller i2c driver" - depends on I2C - help - If you say yes here you get support to monitor Power8 CPU - sensors via the On Chip Controller (OCC) over the i2c bus.-
drivers/hwmon/Kconfig config SENSORS_NSA320 · line 1237
Quoted 2 lines
drivers/hwmon/Kconfig +0
-2- Generally this is used by management controllers such as a BMC - on an OpenPower system.-
drivers/hwmon/Kconfig config SENSORS_NSA320 · line 1240
Quoted 2 lines
drivers/hwmon/Kconfig +0
-2- This driver can also be built as a module. If so, the module - will be called power8_occ_i2c.-
configSENSORS_PCF8591Quoted 2 lines
tristate "Philips PCF8591 ADC/DAC"
depends on I2Cdrivers/hwmon/Makefile +0
-0Quoted 8 lines
(quoted diff) +0
-0@@ -128,7 +128,6 @@ obj-$(CONFIG_SENSORS_NCT7802) += nct7802.oobj-$(CONFIG_SENSORS_NCT7904) += nct7904.o
obj-$(CONFIG_SENSORS_NSA320) += nsa320-hwmon.o
obj-$(CONFIG_SENSORS_NTC_THERMISTOR) += ntc_thermistor.o
-obj-$(CONFIG_SENSORS_POWER8_OCC_I2C) += power8_occ_i2c.o
obj-$(CONFIG_SENSORS_PC87360) += pc87360.o
obj-$(CONFIG_SENSORS_PC87427) += pc87427.o
obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.odrivers/hwmon/power8_occ_i2c.c deleted +0
-34@@ -1,1254 +0,0 @@ -/* -* OCC HWMON driver - read IBM Power8 On Chip Controller sensor data via -* i2c. -* -* Copyright 2015 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/module.h> -#include <linux/init.h> -#include <linux/slab.h> -#include <linux/jiffies.h> -#include <linux/i2c.h> -#include <linux/hwmon.h> -#include <linux/hwmon-sysfs.h> -#include <linux/err.h> -#include <linux/mutex.h> -#include <linux/of.h> -#include <linux/delay.h> -#include <linux/kernel.h> -#include <linux/device.h> - -#define OCC_I2C_ADDR 0x50 -#define OCC_I2C_NAME "occ-i2c" -Quoted 1 line
-#define
OCC_DATA_MAX4096 /* 4KB at most */-/* i2c read and write occ sensors */
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-#define I2C_READ_ERROR 1 -#define I2C_WRITE_ERROR 2drivers/hwmon/power8_occ_i2c.c deleted +0
-3- -/* Defined in POWER8 Processor Registers Specification */ -/* To generate attn to OCC */ Quoted 1 line
-#define
ATTN_DATA0x0006B035-/* For BMC to read/write SRAM */
drivers/hwmon/power8_occ_i2c.c line 47
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4-#define OCB_ADDRESS 0x0006B070 -#define OCB_DATA 0x0006B075 -#define OCB_STATUS_CONTROL_AND 0x0006B072 -#define OCB_STATUS_CONTROL_OR 0x0006B073-/* See definition in:
- * https://github.com/open-power/docs/blob/master/occ/OCC_OpenPwr_FW_Interfaces.pdf
- */drivers/hwmon/power8_occ_i2c.c line 52
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-#define OCC_COMMAND_ADDR 0xFFFF6000 -#define OCC_RESPONSE_ADDR 0xFFFF7000-
Quoted 1 line
-#define
MAX_SENSOR_ATTR_LEN32drivers/hwmon/power8_occ_i2c.c deleted +0
-2- -enum sensor_t {Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5- freq, - temp, - power, - caps, -MAX_OCC_SENSOR_TYPE drivers/hwmon/power8_occ_i2c.c deleted +0
-4-}; - -/* OCC sensor data format */ -struct occ_sensor {Quoted 2 lines
(quoted diff) +0
-2- uint16_t sensor_id; - uint16_t value;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-}; - -struct power_sensor {Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4-uint16_t sensor_id; -uint32_t update_tag; -uint32_t accumulator; -uint16_t value;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-}; - -struct caps_sensor {Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6-uint16_t curr_powercap; -uint16_t curr_powerreading; -uint16_t norm_powercap; -uint16_t max_powercap; -uint16_t min_powercap; -uint16_t user_powerlimit;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-}; - -struct sensor_data_block {Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-uint8_t sensor_type[4 ]; -uint8_t reserved0; -uint8_t sensor_format; -uint8_t sensor_length; -uint8_t sensor_num; -struct occ_sensor *sensor; -struct power_sensor *power; -struct caps_sensor *caps;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-}; - -struct occ_poll_header {Quoted 16 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-16-uint8_t status; -uint8_t ext_status; -uint8_t occs_present; -uint8_t config; -uint8_t occ_state; -uint8_t reserved0; -uint8_t reserved1; -uint8_t error_log_id; -uint32_t error_log_addr_start; -uint16_t error_log_length; -uint8_t reserved2; -uint8_t reserved3; -uint8_t occ_code_level[16 ]; -uint8_t sensor_eye_catcher[6 ]; -uint8_t sensor_block_num; -uint8_t sensor_data_version;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-}; - -struct occ_response {Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-uint8_t sequence_num; -uint8_t cmd_type; -uint8_t rtn_status; -uint16_t data_length; -struct occ_poll_header header; -struct sensor_data_block *blocks; -uint16_t chk_sum; -int sensor_block_id[MAX_OCC_SENSOR_TYPE ];drivers/hwmon/power8_occ_i2c.c deleted +0
-3-}; - -struct sensor_attr_data {Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-enum sensor_t type; -uint32_t hwmon_index; -uint32_t attr_id; -char name[MAX_SENSOR_ATTR_LEN ]; -struct device_attribute dev_attr;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-}; - -struct sensor_group {Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-char *name; -struct sensor_attr_data *sattr; -struct attribute_group group;drivers/hwmon/power8_occ_i2c.c deleted +0
-4-}; - -/* data private to each client */ -struct occ_drv_data {Quoted 11 lines
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-struct i2c_client *client; -struct device *hwmon_dev; -struct mutex update_lock; -bool valid; -unsigned long last_updated;drivers/hwmon/power8_occ_i2c.c deleted +0
-1-/* Minimum timer interval for sampling In jiffies */ Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-unsigned long update_interval; -unsigned long occ_online; -uint16_t user_powercap; -struct occ_response occ_resp; -struct sensor_group sensor_groups[MAX_OCC_SENSOR_TYPE ];drivers/hwmon/power8_occ_i2c.c deleted +0
-4-}; - -static void deinit_occ_resp_buf (struct occ_response *p) -{Review
Quoted 1 line
(quoted diff) +0
-1- int i;-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (!p) - return;-
drivers/hwmon/power8_occ_i2c.c line 164
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-if (!p->blocks) -return ;-
drivers/hwmon/power8_occ_i2c.c line 170
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-for (i =0 ; i < p->header.sensor_block_num; i++) { -kfree (p->blocks[i].sensor); -kfree (p->blocks[i].power); -kfree (p->blocks[i].caps); - }-
drivers/hwmon/power8_occ_i2c.c line 172
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-kfree (p->blocks);-
drivers/hwmon/power8_occ_i2c.c line 174
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-memset (p,0 ,sizeof (*p));-
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-for (i =0 ; i <ARRAY_SIZE (p->sensor_block_id); i++) - p->sensor_block_id[i] =-1 ;drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -static ssize_t occ_i2c_read (struct i2c_client *client,void *buf,size_t count) -{Review
Quoted 1 line
(quoted diff) +0
-1- WARN_ON(count > OCC_DATA_MAX);-
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-dev_dbg (&client->dev,"i2c_read: reading %zu bytes @0x%x.\n" , - count, client->addr); -return i2c_master_recv (client, buf, count);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static ssize_t occ_i2c_write(struct i2c_client *client, const void *buf,drivers/hwmon/power8_occ_i2c.c line 190
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- size_t count)-{
Review
Quoted 1 line
(quoted diff) +0
-1- WARN_ON(count > OCC_DATA_MAX);-
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-dev_dbg (&client->dev,"i2c_write: writing %zu bytes @0x%x.\n" , - count, client->addr); -return i2c_master_send (client, buf, count);drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -/* read 8-byte value and put into data[offset] */ -static int occ_getscomb(struct i2c_client *client, uint32_t address,drivers/hwmon/power8_occ_i2c.c line 201
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- uint8_t *data, int offset)-{
drivers/hwmon/power8_occ_i2c.c line 205
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-uint32_t ret; -char buf[8 ]; -int i;-
Review
Quoted 2 lines
(quoted diff) +0
-2- /* P8 i2c slave requires address to be shifted by 1 */ - address = address << 1;-
drivers/hwmon/power8_occ_i2c.c line 211
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- ret =occ_i2c_write (client, &address, -sizeof (address));-
drivers/hwmon/power8_occ_i2c.c line 214
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-if (ret !=sizeof (address)) -return -I2C_WRITE_ERROR ;-
drivers/hwmon/power8_occ_i2c.c line 218
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- ret =occ_i2c_read (client, buf,sizeof (buf)); -if (ret !=sizeof (buf)) -return -I2C_READ_ERROR ;-
drivers/hwmon/power8_occ_i2c.c line 221
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-for (i =0 ; i <8 ; i++) - data[offset + i] = buf[7 - i];-
Quoted 1 line
(quoted diff) +0
-1- return 0;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static int occ_putscom(struct i2c_client *client, uint32_t address,drivers/hwmon/power8_occ_i2c.c line 227
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- uint32_t data0, uint32_t data1)-{
drivers/hwmon/power8_occ_i2c.c line 230
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-uint32_t buf[3 ]; -uint32_t ret;-
Review
Quoted 2 lines
(quoted diff) +0
-2- /* P8 i2c slave requires address to be shifted by 1 */ - address = address << 1;-
drivers/hwmon/power8_occ_i2c.c line 237
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- buf[0 ] = address; - buf[1 ] = data1; - buf[2 ] = data0;-
drivers/hwmon/power8_occ_i2c.c line 241
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- ret =occ_i2c_write (client, buf,sizeof (buf)); -if (ret !=sizeof (buf)) -return I2C_WRITE_ERROR ;-
Quoted 1 line
(quoted diff) +0
-1- return 0;drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -static void *occ_get_sensor_by_type (struct occ_response *resp,enum sensor_t t) -{Review
Quoted 1 line
(quoted diff) +0
-1- void *sensor;-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (!resp->blocks) - return NULL;-
drivers/hwmon/power8_occ_i2c.c line 254
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-if (resp->sensor_block_id[t] ==-1 ) -return NULL ;-
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4-switch (t) { -case temp: -case freq: - sensor = resp->blocks[resp->sensor_block_id[t]].sensor;drivers/hwmon/power8_occ_i2c.c line 269
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10-break ; -case power: - sensor = resp->blocks[resp->sensor_block_id[t]].power; -break ; -case caps: - sensor = resp->blocks[resp->sensor_block_id[t]].caps; -break ; -default : - sensor =NULL ; - }-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return sensor;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static int occ_renew_sensor(struct occ_response *resp, uint8_t sensor_length,drivers/hwmon/power8_occ_i2c.c line 275
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- uint8_t sensor_num, enum sensor_t t, int block)-{
Review
Quoted 2 lines
(quoted diff) +0
-2- void *sensor; - int ret;-
drivers/hwmon/power8_occ_i2c.c line 280
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- sensor =occ_get_sensor_by_type (resp, t);-
drivers/hwmon/power8_occ_i2c.c line 286
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-/* empty sensor block, release older sensor data */ -if (sensor_num ==0 || sensor_length ==0 ) { -kfree (sensor); -return -1 ; - }-
Quoted 28 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-28-if (!sensor || sensor_num != - resp->blocks[resp->sensor_block_id[t]].sensor_num) { -kfree (sensor); -switch (t) { -case temp: -case freq: - resp->blocks[block].sensor = -kcalloc (sensor_num, -sizeof (struct occ_sensor ),GFP_KERNEL ); -if (!resp->blocks[block].sensor) { - ret = -ENOMEM ; - goto err; - } -break ; -case power: - resp->blocks[block].power = -kcalloc (sensor_num, -sizeof (struct power_sensor ), -GFP_KERNEL ); -if (!resp->blocks[block].power) { - ret = -ENOMEM ; - goto err; - } -break ; -case caps: - resp->blocks[block].caps = -kcalloc (sensor_num, -sizeof (struct caps_sensor ),GFP_KERNEL );drivers/hwmon/power8_occ_i2c.c line 325
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10-if (!resp->blocks[block].caps) { - ret = -ENOMEM ; - goto err; - } -break ; -default : - ret = -ENOMEM ; - goto err; - } - }-
Review
Quoted 1 line
(quoted diff) +0
-1- return 0;-err:
Quoted 2 lines
(quoted diff) +0
-2- deinit_occ_resp_buf(resp); - return ret;drivers/hwmon/power8_occ_i2c.c deleted +0
-2-} -Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-#define RESP_DATA_LENGTH 3 -#define RESP_HEADER_OFFSET 5 -#define SENSOR_STR_OFFSET 37 -#define SENSOR_BLOCK_NUM_OFFSET 43 -#define SENSOR_BLOCK_OFFSET 45drivers/hwmon/power8_occ_i2c.c deleted +0
-3- -static inline uint16_t get_occdata_length (uint8_t *data) -{Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return be16_to_cpup ((const __be16 *)&data[RESP_DATA_LENGTH ]);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static int parse_occ_response(struct i2c_client *client,drivers/hwmon/power8_occ_i2c.c line 345
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- uint8_t *data, struct occ_response *resp)-{
drivers/hwmon/power8_occ_i2c.c line 359
Quoted 13 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-13-int b; -int s; -int ret; -int dnum =SENSOR_BLOCK_OFFSET ; -struct occ_sensor *f_sensor; -struct occ_sensor *t_sensor; -struct power_sensor *p_sensor; -struct caps_sensor *c_sensor; -uint8_t sensor_block_num; -uint8_t sensor_type[4 ]; -uint8_t sensor_format; -uint8_t sensor_length; -uint8_t sensor_num;-
drivers/hwmon/power8_occ_i2c.c line 367
Quoted 7 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-7-/* check if the data is valid */ -if (strncmp (&data[SENSOR_STR_OFFSET ],"SENSOR" ,6 ) !=0 ) { -dev_dbg (&client->dev, -"ERROR: no SENSOR String in response\n" ); - ret =-1 ; - goto err; - }-
drivers/hwmon/power8_occ_i2c.c line 374
Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6- sensor_block_num = data[SENSOR_BLOCK_NUM_OFFSET ]; -if (sensor_block_num ==0 ) { -dev_dbg (&client->dev,"ERROR: SENSOR block num is 0\n" ); - ret =-1 ; - goto err; - }-
drivers/hwmon/power8_occ_i2c.c line 383
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-/* if sensor block has changed, re-malloc */ -if (sensor_block_num != resp->header.sensor_block_num) { -deinit_occ_resp_buf (resp); - resp->blocks =kcalloc (sensor_block_num, -sizeof (struct sensor_data_block ),GFP_KERNEL ); -if (!resp->blocks) -return -ENOMEM ; - }-
drivers/hwmon/power8_occ_i2c.c line 389
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-memcpy (&resp->header, &data[RESP_HEADER_OFFSET ],sizeof (resp->header)); - resp->header.error_log_addr_start = -be32_to_cpu (resp->header.error_log_addr_start); - resp->header.error_log_length = -be16_to_cpu (resp->header.error_log_length);-
drivers/hwmon/power8_occ_i2c.c line 399
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9-dev_dbg (&client->dev,"Reading %d sensor blocks\n" , - resp->header.sensor_block_num); -for (b =0 ; b < sensor_block_num; b++) { -/* 8-byte sensor block head */ -strncpy (sensor_type, &data[dnum],4 ); - sensor_format = data[dnum+5 ]; - sensor_length = data[dnum+6 ]; - sensor_num = data[dnum+7 ]; - dnum = dnum +8 ;-
drivers/hwmon/power8_occ_i2c.c line 403
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-dev_dbg (&client->dev, -"sensor block[%d]: type: %s, sensor_num: %d\n" , - b, sensor_type, sensor_num);-
drivers/hwmon/power8_occ_i2c.c line 409
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-if (strncmp (sensor_type,"FREQ" ,4 ) ==0 ) { - ret =occ_renew_sensor (resp, sensor_length, - sensor_num, freq, b); -if (ret) -continue ;-
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9- resp->sensor_block_id[freq] = b; -for (s =0 ; s < sensor_num; s++) { - f_sensor = &resp->blocks[b].sensor[s]; - f_sensor->sensor_id = -be16_to_cpup ((const __be16 *) - &data[dnum]); - f_sensor->value =be16_to_cpup ((const __be16 *) - &data[dnum+2 ]); - dev_dbg(&client->dev,drivers/hwmon/power8_occ_i2c.c line 429
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10-"sensor[%d]-[%d]: id: %u, value: %u\n" , - b, s, f_sensor->sensor_id, - f_sensor->value); - dnum = dnum + sensor_length; - } - }else if (strncmp (sensor_type,"TEMP" ,4 ) ==0 ) { - ret =occ_renew_sensor (resp, sensor_length, - sensor_num, temp, b); -if (ret) -continue ;-
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9- resp->sensor_block_id[temp] = b; -for (s =0 ; s < sensor_num; s++) { - t_sensor = &resp->blocks[b].sensor[s]; - t_sensor->sensor_id = -be16_to_cpup ((const __be16 *) - &data[dnum]); - t_sensor->value =be16_to_cpup ((const __be16 *) - &data[dnum+2 ]); - dev_dbg(&client->dev,drivers/hwmon/power8_occ_i2c.c line 449
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10-"sensor[%d]-[%d]: id: %u, value: %u\n" , - b, s, t_sensor->sensor_id, - t_sensor->value); - dnum = dnum + sensor_length; - } - }else if (strncmp (sensor_type,"POWR" ,4 ) ==0 ) { - ret =occ_renew_sensor (resp, sensor_length, - sensor_num, power, b); -if (ret) -continue ;-
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4- resp->sensor_block_id[power] = b; -for (s =0 ; s < sensor_num; s++) { - p_sensor = &resp->blocks[b].power[s]; - p_sensor->sensor_id =drivers/hwmon/power8_occ_i2c.c line 464
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10-be16_to_cpup ((const __be16 *) - &data[dnum]); - p_sensor->update_tag = -be32_to_cpup ((const __be32 *) - &data[dnum+2 ]); - p_sensor->accumulator = -be32_to_cpup ((const __be32 *) - &data[dnum+6 ]); - p_sensor->value =be16_to_cpup ((const __be16 *) - &data[dnum+10 ]);-
drivers/hwmon/power8_occ_i2c.c line 469
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4-dev_dbg (&client->dev, -"sensor[%d]-[%d]: id: %u, value: %u\n" , - b, s, p_sensor->sensor_id, - p_sensor->value);-
drivers/hwmon/power8_occ_i2c.c line 477
Quoted 7 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-7- dnum = dnum + sensor_length; - } - }else if (strncmp (sensor_type,"CAPS" ,4 ) ==0 ) { - ret =occ_renew_sensor (resp, sensor_length, - sensor_num, caps, b); -if (ret) -continue ;-
Quoted 11 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-11- resp->sensor_block_id[caps] = b; -for (s =0 ; s < sensor_num; s++) { - c_sensor = &resp->blocks[b].caps[s]; - c_sensor->curr_powercap = -be16_to_cpup ((const __be16 *) - &data[dnum]); - c_sensor->curr_powerreading = -be16_to_cpup ((const __be16 *) - &data[dnum+2 ]); - c_sensor->norm_powercap = - be16_to_cpup((const __be16 *)drivers/hwmon/power8_occ_i2c.c line 499
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10- &data[dnum+4]); - c_sensor->max_powercap = -be16_to_cpup ((const __be16 *) - &data[dnum+6 ]); - c_sensor->min_powercap = -be16_to_cpup ((const __be16 *) - &data[dnum+8 ]); - c_sensor->user_powerlimit = -be16_to_cpup ((const __be16 *) - &data[dnum+10 ]);-
Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6- dnum = dnum + sensor_length; -dev_dbg (&client->dev,"CAPS sensor #%d:\n" , s); -dev_dbg (&client->dev,"curr_powercap is %x\n" , - c_sensor->curr_powercap); - dev_dbg(&client->dev, - "curr_powerreading is %x\n",drivers/hwmon/power8_occ_i2c.c line 516
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10- c_sensor->curr_powerreading); -dev_dbg (&client->dev,"norm_powercap is %x\n" , - c_sensor->norm_powercap); -dev_dbg (&client->dev,"max_powercap is %x\n" , - c_sensor->max_powercap); -dev_dbg (&client->dev,"min_powercap is %x\n" , - c_sensor->min_powercap); -dev_dbg (&client->dev,"user_powerlimit is %x\n" , - c_sensor->user_powerlimit); - }-
drivers/hwmon/power8_occ_i2c.c line 524
Quoted 7 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-7- }else { -dev_dbg (&client->dev, -"ERROR: sensor type %s not supported\n" , - resp->blocks[b].sensor_type); - ret =-1 ; - goto err; - }-
drivers/hwmon/power8_occ_i2c.c line 530
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-strncpy (resp->blocks[b].sensor_type, sensor_type,4 ); - resp->blocks[b].sensor_format = sensor_format; - resp->blocks[b].sensor_length = sensor_length; - resp->blocks[b].sensor_num = sensor_num; - }-
Review
Quoted 1 line
(quoted diff) +0
-1- return 0;-err:
Quoted 2 lines
(quoted diff) +0
-2- deinit_occ_resp_buf(resp); - return ret;drivers/hwmon/power8_occ_i2c.c deleted +0
-7-} - - -/* Refer to OCC interface document for OCC command format -* https://github.com/open-power/docs/blob/master/occ/OCC_OpenPwr_FW_Interfaces.pdf -*/ -static uint8_t occ_send_cmd(struct i2c_client *client, uint8_t seq,drivers/hwmon/power8_occ_i2c.c line 543
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- uint8_t type, uint16_t length, uint8_t *data, uint8_t *resp)-{
drivers/hwmon/power8_occ_i2c.c line 547
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-uint32_t cmd1, cmd2; -uint16_t checksum; -int i;-
drivers/hwmon/power8_occ_i2c.c line 552
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4- length =cpu_to_le16 (length); - cmd1 = (seq <<24 ) | (type <<16 ) | length; -memcpy (&cmd2, data, length); - cmd2 <<= ((4 - length) *8 );-
drivers/hwmon/power8_occ_i2c.c line 560
Quoted 7 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-7-/* checksum: sum of every bytes of cmd1, cmd2 */ - checksum =0 ; -for (i =0 ; i <4 ; i++) - checksum += (cmd1 >> (i *8 )) &0xFF ; -for (i =0 ; i <4 ; i++) - checksum += (cmd2 >> (i *8 )) &0xFF ; - cmd2 |= checksum << ((2 - length) *8 );-
drivers/hwmon/power8_occ_i2c.c line 564
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-/* Init OCB */ - occ_putscom(client, OCB_STATUS_CONTROL_OR, 0x08000000, 0x00000000); -occ_putscom (client,OCB_STATUS_CONTROL_AND ,0xFBFFFFFF ,0xFFFFFFFF );-
drivers/hwmon/power8_occ_i2c.c line 569
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4-/* Send command */ -occ_putscom (client,OCB_ADDRESS ,OCC_COMMAND_ADDR ,0x00000000 ); -occ_putscom (client,OCB_ADDRESS ,OCC_COMMAND_ADDR ,0x00000000 ); -occ_putscom (client,OCB_DATA , cmd1, cmd2);-
drivers/hwmon/power8_occ_i2c.c line 572
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-/* Trigger attention */ -occ_putscom (client,ATTN_DATA ,0x01010000 ,0x00000000 );-
drivers/hwmon/power8_occ_i2c.c line 576
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-/* Get response data */ -occ_putscom (client,OCB_ADDRESS ,OCC_RESPONSE_ADDR ,0x00000000 ); -occ_getscomb (client,OCB_DATA , resp,0 );-
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-/* return status */ -return resp[2 ];drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -static int occ_get_all (struct i2c_client *client,struct occ_response *occ_resp) -{drivers/hwmon/power8_occ_i2c.c line 588
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-uint8_t *occ_data; -uint16_t num_bytes; -int i; -int ret; -uint8_t poll_cmd_data;-
drivers/hwmon/power8_occ_i2c.c line 590
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- poll_cmd_data =0x10 ;-
drivers/hwmon/power8_occ_i2c.c line 596
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-/* -* TODO: fetch header, and then allocate the rest of the buffer based -* on the header size. Assuming the OCC has a fixed sized header -*/ - occ_data =devm_kzalloc (&client->dev,OCC_DATA_MAX ,GFP_KERNEL );-
drivers/hwmon/power8_occ_i2c.c line 603
Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6- ret =occ_send_cmd (client,0 ,0 ,1 , &poll_cmd_data, occ_data); -if (ret) { -dev_err (&client->dev,"ERROR: OCC Poll: 0x%x\n" , ret); - ret = -EINVAL ; - goto out; - }-
drivers/hwmon/power8_occ_i2c.c line 605
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- num_bytes =get_occdata_length (occ_data);-
drivers/hwmon/power8_occ_i2c.c line 607
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-dev_dbg (&client->dev,"OCC data length: %d\n" , num_bytes);-
drivers/hwmon/power8_occ_i2c.c line 613
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-if (num_bytes >OCC_DATA_MAX ) { -dev_dbg (&client->dev,"ERROR: OCC data length must be < 4KB\n" ); - ret = -EINVAL ; - goto out; - }-
drivers/hwmon/power8_occ_i2c.c line 619
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-if (num_bytes <=0 ) { -dev_dbg (&client->dev,"ERROR: OCC data length is zero\n" ); - ret = -EINVAL ; - goto out; - }-
drivers/hwmon/power8_occ_i2c.c line 623
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-/* read remaining data */ -for (i =8 ; i < num_bytes +8 ; i = i +8 ) -occ_getscomb (client,OCB_DATA , occ_data, i);-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- ret =parse_occ_response (client, occ_data, occ_resp);drivers/hwmon/power8_occ_i2c.c deleted +0
-2- -out:Quoted 2 lines
(quoted diff) +0
-2- devm_kfree(&client->dev, occ_data); - return ret;drivers/hwmon/power8_occ_i2c.c deleted +0
-5-} - - -static int occ_update_device (struct device *dev) -{drivers/hwmon/power8_occ_i2c.c line 637
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-struct occ_drv_data *data =dev_get_drvdata (dev); -struct i2c_client *client = data->client; -int ret =0 ;-
drivers/hwmon/power8_occ_i2c.c line 639
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-mutex_lock (&data->update_lock);-
drivers/hwmon/power8_occ_i2c.c line 649
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9-if (time_after (jiffies, data->last_updated + data->update_interval) - || !data->valid) { - data->valid =1 ; - ret =occ_get_all (client, &data->occ_resp); -if (ret) - data->valid =0 ; - data->last_updated = jiffies; - } -mutex_unlock (&data->update_lock);-
Quoted 1 line
(quoted diff) +0
-1- return ret;drivers/hwmon/power8_occ_i2c.c deleted +0
-5-} - - -static void *occ_get_sensor (struct device *hwmon_dev,enum sensor_t t) -{drivers/hwmon/power8_occ_i2c.c line 659
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-struct device *dev = hwmon_dev->parent; -struct occ_drv_data *data =dev_get_drvdata (dev); -int ret;-
drivers/hwmon/power8_occ_i2c.c line 665
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5- ret =occ_update_device (dev); -if (ret !=0 ) { -dev_dbg (dev,"ERROR: cannot get occ sensor data: %d\n" , ret); -return NULL ; - }-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return occ_get_sensor_by_type (&data->occ_resp, t);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static int occ_get_sensor_value(struct device *hwmon_dev, enum sensor_t t,Review
Quoted 1 line
(quoted diff) +0
-1- int index)-{
Review
Quoted 1 line
(quoted diff) +0
-1- void *sensor;-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (t == caps) - return -1;-
Review
Quoted 1 line
(quoted diff) +0
-1- sensor = occ_get_sensor(hwmon_dev, t);-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (!sensor) - return -1;-
drivers/hwmon/power8_occ_i2c.c line 684
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-if (t == power) -return ((struct power_sensor *)sensor)[index].value;-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return ((struct occ_sensor *)sensor)[index].value;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static int occ_get_sensor_id(struct device *hwmon_dev, enum sensor_t t,Review
Quoted 1 line
(quoted diff) +0
-1- int index)-{
Review
Quoted 1 line
(quoted diff) +0
-1- void *sensor;-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (t == caps) - return -1;-
Review
Quoted 1 line
(quoted diff) +0
-1- sensor = occ_get_sensor(hwmon_dev, t);-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (!sensor) - return -1;-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (t == power) - return ((struct power_sensor *)sensor)[index].sensor_id;-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return ((struct occ_sensor *)sensor)[index].sensor_id;drivers/hwmon/power8_occ_i2c.c deleted +0
-5-} - -/* sysfs attributes for occ hwmon device */ - -static ssize_t show_input(struct device *hwmon_dev,Review
Quoted 1 line
(quoted diff) +0
-1- struct device_attribute *da, char *buf)-{
drivers/hwmon/power8_occ_i2c.c line 715
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-struct sensor_attr_data *sdata =container_of (da, - struct sensor_attr_data, dev_attr); -int val;-
drivers/hwmon/power8_occ_i2c.c line 721
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5- val =occ_get_sensor_value (hwmon_dev, sdata->type, - sdata->hwmon_index -1 ); -if (sdata->type == temp) -/* in millidegree Celsius */ - val *=1000 ;-
Quoted 1 line
(quoted diff) +0
-1- return snprintf(buf, PAGE_SIZE - 1, "%d\n", val);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static ssize_t show_label(struct device *hwmon_dev,Review
Quoted 1 line
(quoted diff) +0
-1- struct device_attribute *da, char *buf)-{
drivers/hwmon/power8_occ_i2c.c line 715
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-struct sensor_attr_data *sdata =container_of (da, - struct sensor_attr_data, dev_attr); -int val;-
drivers/hwmon/power8_occ_i2c.c line 734
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- val =occ_get_sensor_id (hwmon_dev, sdata->type, - sdata->hwmon_index -1 );-
Quoted 1 line
(quoted diff) +0
-1- return snprintf(buf, PAGE_SIZE - 1, "%d\n", val);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static ssize_t show_caps(struct device *hwmon_dev,Review
Quoted 1 line
(quoted diff) +0
-1- struct device_attribute *da, char *buf)-{
drivers/hwmon/power8_occ_i2c.c line 747
Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6-struct sensor_attr_data *sdata =container_of (da, - struct sensor_attr_data, dev_attr); -int nr = sdata->attr_id; -int n = sdata->hwmon_index -1 ; -struct caps_sensor *sensor; -int val;-
drivers/hwmon/power8_occ_i2c.c line 753
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5- sensor =occ_get_sensor (hwmon_dev, caps); -if (!sensor) { - val =-1 ; -return snprintf (buf,PAGE_SIZE -1 ,"%d\n" , val); - }-
Quoted 12 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-12-switch (nr) { -case 0 : - val = sensor[n].curr_powercap; -break ; -case 1 : - val = sensor[n].curr_powerreading; -break ; -case 2 : - val = sensor[n].norm_powercap; -break ; -case 3 : - val = sensor[n].max_powercap;drivers/hwmon/power8_occ_i2c.c line 776
Quoted 10 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-10-break ; -case 4 : - val = sensor[n].min_powercap; -break ; -case 5 : - val = sensor[n].user_powerlimit; -break ; -default : - val =-1 ; - }-
Quoted 1 line
(quoted diff) +0
-1- return snprintf(buf, PAGE_SIZE - 1, "%d\n", val);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static ssize_t show_update_interval(struct device *hwmon_dev,Review
Quoted 1 line
(quoted diff) +0
-1- struct device_attribute *attr, char *buf)-{
Review
Quoted 2 lines
(quoted diff) +0
-2- struct device *dev = hwmon_dev->parent; - struct occ_drv_data *data = dev_get_drvdata(dev);-
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-return snprintf (buf,PAGE_SIZE -1 ,"%u\n" , -jiffies_to_msecs (data->update_interval));drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static ssize_t set_update_interval(struct device *hwmon_dev,Review
Quoted 2 lines
(quoted diff) +0
-2- struct device_attribute *attr, - const char *buf, size_t count)-{
drivers/hwmon/power8_occ_i2c.c line 798
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4-struct device *dev = hwmon_dev->parent; -struct occ_drv_data *data =dev_get_drvdata (dev); -unsigned long val; -int err;-
drivers/hwmon/power8_occ_i2c.c line 802
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- err =kstrtoul (buf,10 , &val); -if (err) -return err;-
Quoted 2 lines
(quoted diff) +0
-2- data->update_interval = msecs_to_jiffies(val); - return count;drivers/hwmon/power8_occ_i2c.c deleted +0
-2-} -static DEVICE_ATTR(update_interval, S_IWUSR | S_IRUGO,Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- show_update_interval, set_update_interval);drivers/hwmon/power8_occ_i2c.c deleted +0
-2- -static ssize_t show_name(struct device *hwmon_dev,Review
Quoted 1 line
(quoted diff) +0
-1- struct device_attribute *attr, char *buf)-{
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return snprintf (buf,PAGE_SIZE -1 ,"%s\n" ,OCC_I2C_NAME );drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} -static DEVICE_ATTR(name, S_IRUGO, show_name, NULL); - -static ssize_t show_user_powercap(struct device *hwmon_dev,Review
Quoted 1 line
(quoted diff) +0
-1- struct device_attribute *attr, char *buf)-{
Review
Quoted 2 lines
(quoted diff) +0
-2- struct device *dev = hwmon_dev->parent; - struct occ_drv_data *data = dev_get_drvdata(dev);-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return snprintf (buf,PAGE_SIZE -1 ,"%u\n" , data->user_powercap);drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - - -static ssize_t set_user_powercap(struct device *hwmon_dev,Review
Quoted 2 lines
(quoted diff) +0
-2- struct device_attribute *attr, - const char *buf, size_t count)-{
drivers/hwmon/power8_occ_i2c.c line 836
Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6-struct device *dev = hwmon_dev->parent; -struct occ_drv_data *data =dev_get_drvdata (dev); -struct i2c_client *client = data->client; -uint16_t val; -uint8_t resp[8 ]; -int err;-
drivers/hwmon/power8_occ_i2c.c line 840
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- err =kstrtou16 (buf,10 , &val); -if (err) -return err;-
Quoted 14 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-14-dev_dbg (dev,"set user powercap to: %u\n" , val); - val =cpu_to_le16 (val); - err =occ_send_cmd (client,0 ,0x22 ,2 , (uint8_t *)&val, resp); -if (err !=0 ) { -dev_dbg (dev, -"ERROR: Set User Powercap: wrong return status: %x\n" , - err); -if (err ==0x13 ) -dev_info (dev, -"ERROR: set invalid powercap value: %x\n" , val); -return -EINVAL ; - } - data->user_powercap = val; -return count;drivers/hwmon/power8_occ_i2c.c deleted +0
-2-} -static DEVICE_ATTR(user_powercap, S_IWUSR | S_IRUGO,Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- show_user_powercap, set_user_powercap);drivers/hwmon/power8_occ_i2c.c deleted +0
-2- -static void deinit_sensor_groups(struct device *hwmon_dev,drivers/hwmon/power8_occ_i2c.c line 861
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- struct sensor_group *sensor_groups)-{
Review
Quoted 1 line
(quoted diff) +0
-1- int cnt;-
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-for (cnt =0 ; cnt <MAX_OCC_SENSOR_TYPE ; cnt++) { -if (sensor_groups[cnt].group.attrs) -devm_kfree (hwmon_dev, sensor_groups[cnt].group.attrs); -if (sensor_groups[cnt].sattr) -devm_kfree (hwmon_dev, sensor_groups[cnt].sattr); - sensor_groups[cnt].group.attrs =NULL ; - sensor_groups[cnt].sattr =NULL ; - }drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -static void occ_remove_hwmon_attrs (struct device *hwmon_dev) -{drivers/hwmon/power8_occ_i2c.c line 879
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-struct occ_drv_data *data =dev_get_drvdata (hwmon_dev->parent); -struct sensor_group *sensor_groups = data->sensor_groups; -int i;-
drivers/hwmon/power8_occ_i2c.c line 882
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-if (!hwmon_dev) -return ;-
drivers/hwmon/power8_occ_i2c.c line 886
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-device_remove_file (hwmon_dev, &dev_attr_update_interval); -device_remove_file (hwmon_dev, &dev_attr_name); -device_remove_file (hwmon_dev, &dev_attr_user_powercap);-
drivers/hwmon/power8_occ_i2c.c line 889
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-for (i =0 ; i <MAX_OCC_SENSOR_TYPE ; i++) -sysfs_remove_group (&hwmon_dev->kobj, &sensor_groups[i].group);-
Quoted 1 line
(quoted diff) +0
-1- deinit_sensor_groups(hwmon_dev, sensor_groups);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static void sensor_attr_init(struct sensor_attr_data *sdata,drivers/hwmon/power8_occ_i2c.c line 899
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-char *sensor_group_name, - char *attr_name, - ssize_t (*show)(struct device *dev, -struct device_attribute *attr, - char *buf))-{
Review
Quoted 1 line
(quoted diff) +0
-1- sysfs_attr_init(&sdata->dev_attr.attr);-
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-snprintf (sdata->name,MAX_SENSOR_ATTR_LEN ,"%s%d_%s" , - sensor_group_name, sdata->hwmon_index, attr_name); - sdata->dev_attr.attr.name = sdata->name; - sdata->dev_attr.attr.mode =S_IRUGO ; - sdata->dev_attr.show = show;drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -/* create hwmon sensor sysfs attributes */ -static int create_sensor_group(struct device *hwmon_dev, enum sensor_t type,drivers/hwmon/power8_occ_i2c.c line 912
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- int sensor_num)-{
drivers/hwmon/power8_occ_i2c.c line 918
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-struct occ_drv_data *data =dev_get_drvdata (hwmon_dev->parent); -struct sensor_group *sensor_groups = data->sensor_groups; -struct sensor_attr_data *sdata; -int ret; -int cnt;-
drivers/hwmon/power8_occ_i2c.c line 927
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-/* each sensor has 'label' and 'input' attributes */ - sensor_groups[type].group.attrs =devm_kzalloc (hwmon_dev, -sizeof (struct attribute *) * - sensor_num *2 +1 ,GFP_KERNEL ); -if (!sensor_groups[type].group.attrs) { - ret = -ENOMEM ; - goto err; - }-
drivers/hwmon/power8_occ_i2c.c line 935
Quoted 7 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-7- sensor_groups[type].sattr =devm_kzalloc (hwmon_dev, -sizeof (struct sensor_attr_data ) * - sensor_num *2 ,GFP_KERNEL ); -if (!sensor_groups[type].sattr) { - ret = -ENOMEM ; - goto err; - }-
drivers/hwmon/power8_occ_i2c.c line 944
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-for (cnt =0 ; cnt < sensor_num; cnt++) { - sdata = &sensor_groups[type].sattr[cnt]; -/* hwomon attributes index starts from 1 */ - sdata->hwmon_index = cnt +1 ; - sdata->type = type; -sensor_attr_init (sdata, sensor_groups[type].name,"input" , - show_input); - sensor_groups[type].group.attrs[cnt] = &sdata->dev_attr.attr;-
drivers/hwmon/power8_occ_i2c.c line 953
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8- sdata = &sensor_groups[type].sattr[cnt + sensor_num]; - sdata->hwmon_index = cnt +1 ; - sdata->type = type; -sensor_attr_init (sdata, sensor_groups[type].name,"label" , - show_label); - sensor_groups[type].group.attrs[cnt + sensor_num] = - &sdata->dev_attr.attr; - }-
drivers/hwmon/power8_occ_i2c.c line 957
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- ret =sysfs_create_group (&hwmon_dev->kobj, &sensor_groups[type].group); -if (ret) - goto err;-
Review
Quoted 1 line
(quoted diff) +0
-1- return ret;-err:
Quoted 2 lines
(quoted diff) +0
-2- deinit_sensor_groups(hwmon_dev, sensor_groups); - return ret;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static void caps_sensor_attr_init(struct sensor_attr_data *sdata,drivers/hwmon/power8_occ_i2c.c line 967
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- char *attr_name, uint32_t hwmon_index, - uint32_t attr_id)-{
drivers/hwmon/power8_occ_i2c.c line 971
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- sdata->type = caps; - sdata->hwmon_index = hwmon_index; - sdata->attr_id = attr_id;-
drivers/hwmon/power8_occ_i2c.c line 981
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9-/* FIXME, to be compatible with user space app, we do not -* generate caps1_* attributes. -*/ -if (sdata->hwmon_index ==1 ) -snprintf (sdata->name,MAX_SENSOR_ATTR_LEN ,"%s_%s" , -"caps" , attr_name); -else -snprintf (sdata->name,MAX_SENSOR_ATTR_LEN ,"%s%d_%s" , -"caps" , sdata->hwmon_index, attr_name);-
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4-sysfs_attr_init (&sdata->dev_attr.attr); - sdata->dev_attr.attr.name = sdata->name; - sdata->dev_attr.attr.mode =S_IRUGO ; - sdata->dev_attr.show = show_caps;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static char *caps_sensor_name[] = {Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6-"curr_powercap" , -"curr_powerreading" , -"norm_powercap" , -"max_powercap" , -"min_powercap" , - "user_powerlimit",drivers/hwmon/power8_occ_i2c.c deleted +0
-4-}; - -static int create_caps_sensor_group (struct device *hwmon_dev,int sensor_num) -{drivers/hwmon/power8_occ_i2c.c line 1006
Quoted 7 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-7-struct occ_drv_data *data =dev_get_drvdata (hwmon_dev->parent); -struct sensor_group *sensor_groups = data->sensor_groups; -int field_num =ARRAY_SIZE (caps_sensor_name); -struct sensor_attr_data *sdata; -int ret; -int cnt; -int i;-
drivers/hwmon/power8_occ_i2c.c line 1015
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8- sensor_groups[caps].group.attrs =devm_kzalloc (hwmon_dev, -sizeof (struct attribute *) * - sensor_num * field_num +1 , -GFP_KERNEL ); -if (!sensor_groups[caps].group.attrs) { - ret = -ENOMEM ; - goto err; - }-
drivers/hwmon/power8_occ_i2c.c line 1024
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8- sensor_groups[caps].sattr =devm_kzalloc (hwmon_dev, -sizeof (struct sensor_attr_data ) * - sensor_num * field_num, -GFP_KERNEL ); -if (!sensor_groups[caps].sattr) { - ret = -ENOMEM ; - goto err; - }-
drivers/hwmon/power8_occ_i2c.c line 1034
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9-for (cnt =0 ; cnt < sensor_num; cnt++) { -for (i =0 ; i < field_num; i++) { - sdata = &sensor_groups[caps].sattr[cnt * field_num + i]; -caps_sensor_attr_init (sdata, caps_sensor_name[i], - cnt +1 , i); - sensor_groups[caps].group.attrs[cnt * field_num + i] = - &sdata->dev_attr.attr; - } - }-
drivers/hwmon/power8_occ_i2c.c line 1038
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- ret =sysfs_create_group (&hwmon_dev->kobj, &sensor_groups[caps].group); -if (ret) - goto err;-
Review
Quoted 1 line
(quoted diff) +0
-1- return ret;-err:
Quoted 2 lines
(quoted diff) +0
-2- deinit_sensor_groups(hwmon_dev, sensor_groups); - return ret;drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -static int occ_create_hwmon_attrs (struct device *dev) -{drivers/hwmon/power8_occ_i2c.c line 1055
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-struct occ_drv_data *drv_data =dev_get_drvdata (dev); -struct device *hwmon_dev = drv_data->hwmon_dev; -struct sensor_group *sensor_groups = drv_data->sensor_groups; -int i; -int sensor_num; -int ret; -struct occ_response *rsp; -enum sensor_t t;-
drivers/hwmon/power8_occ_i2c.c line 1057
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- rsp = &drv_data->occ_resp;-
drivers/hwmon/power8_occ_i2c.c line 1060
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-for (i =0 ; i <ARRAY_SIZE (rsp->sensor_block_id); i++) - rsp->sensor_block_id[i] =-1 ;-
drivers/hwmon/power8_occ_i2c.c line 1069
Quoted 8 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-8-/* read sensor data from occ. */ - ret =occ_update_device (dev); -if (ret !=0 ) { -dev_dbg (dev,"ERROR: cannot get occ sensor data: %d\n" , ret); -return ret; - } -if (!rsp->blocks) -return -1 ;-
drivers/hwmon/power8_occ_i2c.c line 1073
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- ret =device_create_file (hwmon_dev, &dev_attr_name); -if (ret) - goto error;-
drivers/hwmon/power8_occ_i2c.c line 1077
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- ret =device_create_file (hwmon_dev, &dev_attr_update_interval); -if (ret) - goto error;-
drivers/hwmon/power8_occ_i2c.c line 1084
Quoted 6 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-6-if (rsp->sensor_block_id[caps] >=0 ) { -/* user powercap: only for master OCC */ - ret =device_create_file (hwmon_dev, &dev_attr_user_powercap); -if (ret) - goto error; - }-
drivers/hwmon/power8_occ_i2c.c line 1089
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4- sensor_groups[freq].name ="freq" ; - sensor_groups[temp].name ="temp" ; - sensor_groups[power].name ="power" ; - sensor_groups[caps].name = "caps";-
drivers/hwmon/power8_occ_i2c.c line 1093
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-for (t =0 ; t <MAX_OCC_SENSOR_TYPE ; t++) { -if (rsp->sensor_block_id[t] <0 ) -continue ;-
drivers/hwmon/power8_occ_i2c.c line 1103
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9- sensor_num = - rsp->blocks[rsp->sensor_block_id[t]].sensor_num; -if (t == caps) - ret =create_caps_sensor_group (hwmon_dev, sensor_num); -else - ret =create_sensor_group (hwmon_dev, t, sensor_num); -if (ret) - goto error; - }-
Review
Quoted 1 line
(quoted diff) +0
-1- return 0;-error:
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-dev_err (dev,"ERROR: cannot create hwmon attributes\n" ); -occ_remove_hwmon_attrs (drv_data->hwmon_dev); -return ret;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static ssize_t show_occ_online(struct device *dev,Review
Quoted 1 line
(quoted diff) +0
-1- struct device_attribute *attr, char *buf)-{
Review
Quoted 1 line
(quoted diff) +0
-1- struct occ_drv_data *data = dev_get_drvdata(dev);-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-return snprintf (buf,PAGE_SIZE -1 ,"%lu\n" , data->occ_online);drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static ssize_t set_occ_online(struct device *dev,Review
Quoted 2 lines
(quoted diff) +0
-2- struct device_attribute *attr, - const char *buf, size_t count)-{
drivers/hwmon/power8_occ_i2c.c line 798
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-struct occ_drv_data *data =dev_get_drvdata (dev); -unsigned long val; -int err;-
drivers/hwmon/power8_occ_i2c.c line 802
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- err =kstrtoul (buf,10 , &val); -if (err) -return err;-
drivers/hwmon/power8_occ_i2c.c line 1134
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-if (val ==1 ) { -if (data->occ_online ==1 ) -return count;-
drivers/hwmon/power8_occ_i2c.c line 1137
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-/* populate hwmon sysfs attr using sensor data */ -dev_dbg (dev,"occ register hwmon @0x%x\n" , data->client->addr);-
drivers/hwmon/power8_occ_i2c.c line 1141
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- data->hwmon_dev =hwmon_device_register (dev); -if (IS_ERR (data->hwmon_dev)) -return PTR_ERR (data->hwmon_dev);-
drivers/hwmon/power8_occ_i2c.c line 1151
Quoted 9 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-9- err =occ_create_hwmon_attrs (dev); -if (err) { -hwmon_device_unregister (data->hwmon_dev); -return err; - } - data->hwmon_dev->parent = dev; - }else if (val ==0 ) { -if (data->occ_online ==0 ) -return count;-
drivers/hwmon/power8_occ_i2c.c line 1157
Quoted 5 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-5-occ_remove_hwmon_attrs (data->hwmon_dev); -hwmon_device_unregister (data->hwmon_dev); - data->hwmon_dev =NULL ; - }else -return -EINVAL ;-
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- data->occ_online = val; -return count;drivers/hwmon/power8_occ_i2c.c deleted +0
-3-} - -static DEVICE_ATTR(online, S_IWUSR | S_IRUGO,Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- show_occ_online, set_occ_online);drivers/hwmon/power8_occ_i2c.c deleted +0
-3- -static int occ_create_i2c_sysfs_attr (struct device *dev) -{Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-/* create an i2c sysfs attribute, to indicate whether OCC is active */ -return device_create_file (dev, &dev_attr_online);drivers/hwmon/power8_occ_i2c.c deleted +0
-6-} - - -/* device probe and removal */ - -enum occ_type {Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- occ_id,drivers/hwmon/power8_occ_i2c.c deleted +0
-4-}; - -static int occ_probe (struct i2c_client *client,const struct i2c_device_id *id) -{drivers/hwmon/power8_occ_i2c.c line 1182
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-struct device *dev = &client->dev; -struct occ_drv_data *data;-
drivers/hwmon/power8_occ_i2c.c line 1186
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3- data =devm_kzalloc (dev,sizeof (struct occ_drv_data ),GFP_KERNEL ); -if (!data) -return -ENOMEM ;-
drivers/hwmon/power8_occ_i2c.c line 1191
Quoted 4 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-4- data->client = client; -i2c_set_clientdata (client, data); -mutex_init (&data->update_lock); - data->update_interval =HZ ;-
drivers/hwmon/power8_occ_i2c.c line 1193
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-occ_create_i2c_sysfs_attr (dev);-
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c line 1195
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-dev_info (dev,"occ i2c driver ready: i2c addr@0x%x\n" , client->addr);-
Quoted 1 line
(quoted diff) +0
-1- return 0;drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -static int occ_remove (struct i2c_client *client) -{drivers/hwmon/power8_occ_i2c.c line 1202
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-struct occ_drv_data *data =i2c_get_clientdata (client);-
drivers/hwmon/power8_occ_i2c.c line 1205
Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-/* free allocated sensor memory */ -deinit_occ_resp_buf (&data->occ_resp);-
drivers/hwmon/power8_occ_i2c.c line 1207
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1-device_remove_file (&client->dev, &dev_attr_online);-
Review
Quoted 2 lines
(quoted diff) +0
-2- if (!data->hwmon_dev) - return 0;-
Quoted 3 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-3-occ_remove_hwmon_attrs (data->hwmon_dev); -hwmon_device_unregister (data->hwmon_dev); -return 0 ;drivers/hwmon/power8_occ_i2c.c deleted +0
-4-} - -/* used by old-style board info. */ -static const struct i2c_device_id occ_ids[] = {Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- { OCC_I2C_NAME, occ_id, }, - { /* LIST END */ }drivers/hwmon/power8_occ_i2c.c deleted +0
-5-}; -MODULE_DEVICE_TABLE (i2c, occ_ids); - -/* use by device table */ -static const struct of_device_id i2c_occ_of_match[] = {Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- {.compatible = "ibm,occ-i2c"}, - {},drivers/hwmon/power8_occ_i2c.c deleted +0
-10-}; -MODULE_DEVICE_TABLE (of, i2c_occ_of_match); - -/* i2c-core uses i2c-detect() to detect device in bellow address list. -* If exists, address will be assigned to client. -* It is also possible to read address from device table. -*/ -static const unsigned short normal_i2c[] = {0x50 ,0x51 ,I2C_CLIENT_END }; - -static struct i2c_driver occ_driver = {Quoted 10 lines
Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- .class = I2C_CLASS_HWMON,drivers/hwmon/power8_occ_i2c.c deleted +0
-1- .driver = {Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- .name = OCC_I2C_NAME, - .pm = NULL,drivers/hwmon/power8_occ_i2c.c deleted +0
-2- .of_match_table = i2c_occ_of_match, - },Quoted 2 lines
drivers/hwmon/power8_occ_i2c.c deleted +0
-2- .probe = occ_probe, - .remove = occ_remove,drivers/hwmon/power8_occ_i2c.c deleted +0
-1- .id_table = occ_ids,Quoted 1 line
drivers/hwmon/power8_occ_i2c.c deleted +0
-1- .address_list = normal_i2c,drivers/hwmon/power8_occ_i2c.c deleted +0
-4-}; - -module_i2c_driver (occ_driver); -Quoted 1 line
-MODULE_AUTHOR("Li Yi <[email protected]>");
drivers/hwmon/power8_occ_i2c.c deleted +0
-2-MODULE_DESCRIPTION ("BMC OCC hwmon driver" ); -MODULE_LICENSE ("GPL" );