Commit 2cfa6aedb32c9c1226094ed383dc3c9b3e2ecddb
1 parent
b4ce237b7f
Exists in
master
and in
7 other branches
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]; |