Commit 2cfa6aedb32c9c1226094ed383dc3c9b3e2ecddb

Authored by Guenter Roeck
1 parent b4ce237b7f

hwmon: (pmbus) Expand scope of device specific get_status function

Some devices use non-standard registers to access various functionality.
This does not only affect status registers, but other registers as well.
Rename local get_status function to get_byte_data to reflect this requirement.

Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
Reviewed-by: Tom Grennan <tom.grennan@ericsson.com>

Showing 4 changed files with 27 additions and 22 deletions Side-by-side Diff

drivers/hwmon/max34440.c
... ... @@ -32,7 +32,7 @@
32 32 #define MAX34440_STATUS_OT_FAULT (1 << 5)
33 33 #define MAX34440_STATUS_OT_WARN (1 << 6)
34 34  
35   -static int max34440_get_status(struct i2c_client *client, int page, int reg)
  35 +static int max34440_read_byte_data(struct i2c_client *client, int page, int reg)
36 36 {
37 37 int ret;
38 38 int mfg_status;
... ... @@ -108,7 +108,7 @@
108 108 .func[11] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
109 109 .func[12] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
110 110 .func[13] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
111   - .get_status = max34440_get_status,
  111 + .read_byte_data = max34440_read_byte_data,
112 112 },
113 113 [max34441] = {
114 114 .pages = 12,
... ... @@ -149,7 +149,7 @@
149 149 .func[9] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
150 150 .func[10] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
151 151 .func[11] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP,
152   - .get_status = max34440_get_status,
  152 + .read_byte_data = max34440_read_byte_data,
153 153 },
154 154 };
155 155  
drivers/hwmon/max8688.c
... ... @@ -37,7 +37,7 @@
37 37 #define MAX8688_STATUS_OT_FAULT (1 << 13)
38 38 #define MAX8688_STATUS_OT_WARNING (1 << 14)
39 39  
40   -static int max8688_get_status(struct i2c_client *client, int page, int reg)
  40 +static int max8688_read_byte_data(struct i2c_client *client, int page, int reg)
41 41 {
42 42 int ret = 0;
43 43 int mfg_status;
... ... @@ -110,7 +110,7 @@
110 110 .func[0] = PMBUS_HAVE_VOUT | PMBUS_HAVE_IOUT | PMBUS_HAVE_TEMP
111 111 | PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_STATUS_IOUT
112 112 | PMBUS_HAVE_STATUS_TEMP,
113   - .get_status = max8688_get_status,
  113 + .read_byte_data = max8688_read_byte_data,
114 114 };
115 115  
116 116 static int max8688_probe(struct i2c_client *client,
drivers/hwmon/pmbus.h
... ... @@ -281,13 +281,11 @@
281 281  
282 282 u32 func[PMBUS_PAGES]; /* Functionality, per page */
283 283 /*
284   - * The get_status function maps manufacturing specific status values
285   - * into PMBus standard status values.
286   - * This function is optional and only necessary if chip specific status
287   - * register values have to be mapped into standard PMBus status register
288   - * values.
  284 + * The following functions map manufacturing specific register values
  285 + * to PMBus standard register values. Specify only if mapping is
  286 + * necessary.
289 287 */
290   - int (*get_status)(struct i2c_client *client, int page, int reg);
  288 + int (*read_byte_data)(struct i2c_client *client, int page, int reg);
291 289 /*
292 290 * The identify function determines supported PMBus functionality.
293 291 * This function is only necessary if a chip driver supports multiple
drivers/hwmon/pmbus_core.c
... ... @@ -270,18 +270,22 @@
270 270 }
271 271 EXPORT_SYMBOL_GPL(pmbus_get_driver_info);
272 272  
273   -static int pmbus_get_status(struct i2c_client *client, int page, int reg)
  273 +/*
  274 + * _pmbus_read_byte_data() is similar to pmbus_read_byte_data(), but checks if
  275 + * a device specific mapping funcion exists and calls it if necessary.
  276 + */
  277 +static int _pmbus_read_byte_data(struct i2c_client *client, int page, int reg)
274 278 {
275 279 struct pmbus_data *data = i2c_get_clientdata(client);
276 280 const struct pmbus_driver_info *info = data->info;
277 281 int status;
278 282  
279   - if (info->get_status) {
280   - status = info->get_status(client, page, reg);
  283 + if (info->read_byte_data) {
  284 + status = info->read_byte_data(client, page, reg);
281 285 if (status != -ENODATA)
282 286 return status;
283 287 }
284   - return pmbus_read_byte_data(client, page, reg);
  288 + return pmbus_read_byte_data(client, page, reg);
285 289 }
286 290  
287 291 static struct pmbus_data *pmbus_update_device(struct device *dev)
288 292  
289 293  
290 294  
291 295  
292 296  
... ... @@ -302,38 +306,41 @@
302 306 if (!(info->func[i] & PMBUS_HAVE_STATUS_VOUT))
303 307 continue;
304 308 data->status[PB_STATUS_VOUT_BASE + i]
305   - = pmbus_get_status(client, i, PMBUS_STATUS_VOUT);
  309 + = _pmbus_read_byte_data(client, i, PMBUS_STATUS_VOUT);
306 310 }
307 311 for (i = 0; i < info->pages; i++) {
308 312 if (!(info->func[i] & PMBUS_HAVE_STATUS_IOUT))
309 313 continue;
310 314 data->status[PB_STATUS_IOUT_BASE + i]
311   - = pmbus_get_status(client, i, PMBUS_STATUS_IOUT);
  315 + = _pmbus_read_byte_data(client, i, PMBUS_STATUS_IOUT);
312 316 }
313 317 for (i = 0; i < info->pages; i++) {
314 318 if (!(info->func[i] & PMBUS_HAVE_STATUS_TEMP))
315 319 continue;
316 320 data->status[PB_STATUS_TEMP_BASE + i]
317   - = pmbus_get_status(client, i,
318   - PMBUS_STATUS_TEMPERATURE);
  321 + = _pmbus_read_byte_data(client, i,
  322 + PMBUS_STATUS_TEMPERATURE);
319 323 }
320 324 for (i = 0; i < info->pages; i++) {
321 325 if (!(info->func[i] & PMBUS_HAVE_STATUS_FAN12))
322 326 continue;
323 327 data->status[PB_STATUS_FAN_BASE + i]
324   - = pmbus_get_status(client, i, PMBUS_STATUS_FAN_12);
  328 + = _pmbus_read_byte_data(client, i,
  329 + PMBUS_STATUS_FAN_12);
325 330 }
326 331  
327 332 for (i = 0; i < info->pages; i++) {
328 333 if (!(info->func[i] & PMBUS_HAVE_STATUS_FAN34))
329 334 continue;
330 335 data->status[PB_STATUS_FAN34_BASE + i]
331   - = pmbus_get_status(client, i, PMBUS_STATUS_FAN_34);
  336 + = _pmbus_read_byte_data(client, i,
  337 + PMBUS_STATUS_FAN_34);
332 338 }
333 339  
334 340 if (info->func[0] & PMBUS_HAVE_STATUS_INPUT)
335 341 data->status[PB_STATUS_INPUT_BASE]
336   - = pmbus_get_status(client, 0, PMBUS_STATUS_INPUT);
  342 + = _pmbus_read_byte_data(client, 0,
  343 + PMBUS_STATUS_INPUT);
337 344  
338 345 for (i = 0; i < data->num_sensors; i++) {
339 346 struct pmbus_sensor *sensor = &data->sensors[i];