Message ID | 20200806161645.9437-1-steve@sk2.org (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | hwmon/pmbus: use simple i2c probe function | expand |
On Thu, 6 Aug 2020 12:15:55 -0700, Guenter Roeck <linux@roeck-us.net> wrote: > On 8/6/20 9:16 AM, Stephen Kitt wrote: > > pmbus_do_probe doesn't use the id information provided in its second > > argument, so this can be removed, which then allows using the > > single-parameter i2c probe function ("probe_new") for probes which > > don't use the id information either. > > > > This avoids scanning the identifier tables during probes. > > > > Additionally, in cases where the id information (driver_data) isn't > > used, the corresponding declarations are removed from the id_table, > > and .name is specified explicitly. > > > > The ultimate idea seems to be to remove the "old" i2c probe function > entirely. This means we'll have to touch the various drivers again > to make that happen if they are not converted to probe_new. > > With that in mind, since we are at it, why not use probe_new() in > every driver and call i2c_match_id() in cases where it is actually > needed/used ? Yes, I was planning on doing that in a second phase, but I can do it right now (perhaps as a patch series) if that would be better. > Also, I am not convinced that replacements such as > > - { "ipsps1", 0 }, > + { .name = "ipsps1" }, > > are an improvement. I would suggest to leave that alone for > consistency (and to make it easier to add more devices to the > various drivers if that happens in the future). From reading through all the drivers using id_table, it seems to me that we could do away with driver_data altogether and move all that to driver-local structures, in many cases covering more than just an id. By only initialising the elements of the structure that are really needed, I was hoping to (a) make it more obvious that driver_data isn’t used, and (b) allow removing it without touching all the code again. Regards, Stephen
On 8/6/20 1:12 PM, Stephen Kitt wrote: > On Thu, 6 Aug 2020 12:15:55 -0700, Guenter Roeck <linux@roeck-us.net> wrote: >> On 8/6/20 9:16 AM, Stephen Kitt wrote: >>> pmbus_do_probe doesn't use the id information provided in its second >>> argument, so this can be removed, which then allows using the >>> single-parameter i2c probe function ("probe_new") for probes which >>> don't use the id information either. >>> >>> This avoids scanning the identifier tables during probes. >>> >>> Additionally, in cases where the id information (driver_data) isn't >>> used, the corresponding declarations are removed from the id_table, >>> and .name is specified explicitly. >>> >> >> The ultimate idea seems to be to remove the "old" i2c probe function >> entirely. This means we'll have to touch the various drivers again >> to make that happen if they are not converted to probe_new. >> >> With that in mind, since we are at it, why not use probe_new() in >> every driver and call i2c_match_id() in cases where it is actually >> needed/used ? > > Yes, I was planning on doing that in a second phase, but I can do it right > now (perhaps as a patch series) if that would be better. > >> Also, I am not convinced that replacements such as >> >> - { "ipsps1", 0 }, >> + { .name = "ipsps1" }, >> >> are an improvement. I would suggest to leave that alone for >> consistency (and to make it easier to add more devices to the >> various drivers if that happens in the future). > > From reading through all the drivers using id_table, it seems to me that we > could do away with driver_data altogether and move all that to driver-local > structures, in many cases covering more than just an id. By only initialising > the elements of the structure that are really needed, I was hoping to (a) > make it more obvious that driver_data isn’t used, and (b) allow removing it > without touching all the code again. > I don't see it as an improvement to replace a common data structure with per-driver data structures. That sounds too much like "let's re-invent the wheel over and over again". If that is where things are going, I'd rather have it implemented everywhere else first. I am ok with the other changes, but not with this. Guenter
Hi Stephen,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on bcf876870b95592b52519ed4aafcf9d95999bc9c]
url: https://github.com/0day-ci/linux/commits/Stephen-Kitt/hwmon-pmbus-use-simple-i2c-probe-function/20200807-024648
base: bcf876870b95592b52519ed4aafcf9d95999bc9c
config: x86_64-randconfig-a013-20200806 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 076b120bebfd727b502208601012a44ab2e1028e)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/hwmon/pmbus/adm1275.c:794:36: error: too many arguments to function call, expected 2, have 3
return pmbus_do_probe(client, id, info);
~~~~~~~~~~~~~~ ^~~~
drivers/hwmon/pmbus/pmbus.h:479:5: note: 'pmbus_do_probe' declared here
int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info);
^
1 error generated.
vim +794 drivers/hwmon/pmbus/adm1275.c
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 464
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 465 static int adm1275_probe(struct i2c_client *client,
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 466 const struct i2c_device_id *id)
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 467 {
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 468 s32 (*config_read_fn)(const struct i2c_client *client, u8 reg);
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 469 u8 block_buffer[I2C_SMBUS_BLOCK_MAX + 1];
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 470 int config, device_config;
3b33ca41227a54 drivers/hwmon/adm1275.c Guenter Roeck 2011-06-30 471 int ret;
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 472 struct pmbus_driver_info *info;
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 473 struct adm1275_data *data;
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 474 const struct i2c_device_id *mid;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 475 const struct coefficients *coefficients;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 476 int vindex = -1, voindex = -1, cindex = -1, pindex = -1;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 477 int tindex = -1;
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 478 u32 shunt;
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 479
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 480 if (!i2c_check_functionality(client->adapter,
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 481 I2C_FUNC_SMBUS_READ_BYTE_DATA
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 482 | I2C_FUNC_SMBUS_BLOCK_DATA))
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 483 return -ENODEV;
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 484
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 485 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, block_buffer);
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 486 if (ret < 0) {
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 487 dev_err(&client->dev, "Failed to read Manufacturer ID\n");
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 488 return ret;
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 489 }
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 490 if (ret != 3 || strncmp(block_buffer, "ADI", 3)) {
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 491 dev_err(&client->dev, "Unsupported Manufacturer ID\n");
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 492 return -ENODEV;
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 493 }
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 494
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 495 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, block_buffer);
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 496 if (ret < 0) {
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 497 dev_err(&client->dev, "Failed to read Manufacturer Model\n");
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 498 return ret;
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 499 }
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 500 for (mid = adm1275_id; mid->name[0]; mid++) {
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 501 if (!strncasecmp(mid->name, block_buffer, strlen(mid->name)))
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 502 break;
3b33ca41227a54 drivers/hwmon/adm1275.c Guenter Roeck 2011-06-30 503 }
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 504 if (!mid->name[0]) {
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 505 dev_err(&client->dev, "Unsupported device\n");
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 506 return -ENODEV;
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 507 }
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 508
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 509 if (id->driver_data != mid->driver_data)
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 510 dev_notice(&client->dev,
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 511 "Device mismatch: Configured %s, detected %s\n",
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 512 id->name, mid->name);
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 513
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 514 if (mid->driver_data == adm1272 || mid->driver_data == adm1278 ||
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 515 mid->driver_data == adm1293 || mid->driver_data == adm1294)
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 516 config_read_fn = i2c_smbus_read_word_data;
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 517 else
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 518 config_read_fn = i2c_smbus_read_byte_data;
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 519 config = config_read_fn(client, ADM1275_PMON_CONFIG);
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 520 if (config < 0)
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 521 return config;
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 522
6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 523 device_config = config_read_fn(client, ADM1275_DEVICE_CONFIG);
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 524 if (device_config < 0)
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 525 return device_config;
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 526
8b313ca7f1b982 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-22 527 data = devm_kzalloc(&client->dev, sizeof(struct adm1275_data),
8b313ca7f1b982 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-22 528 GFP_KERNEL);
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 529 if (!data)
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 530 return -ENOMEM;
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 531
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 532 if (of_property_read_u32(client->dev.of_node,
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 533 "shunt-resistor-micro-ohms", &shunt))
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 534 shunt = 1000; /* 1 mOhm if not set via DT */
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 535
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 536 if (shunt == 0)
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 537 return -EINVAL;
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 538
87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 539 data->id = mid->driver_data;
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 540
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 541 info = &data->info;
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 542
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 543 info->pages = 1;
1061d8518f8bde drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-06-25 544 info->format[PSC_VOLTAGE_IN] = direct;
1061d8518f8bde drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-06-25 545 info->format[PSC_VOLTAGE_OUT] = direct;
1061d8518f8bde drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-06-25 546 info->format[PSC_CURRENT_OUT] = direct;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 547 info->format[PSC_POWER] = direct;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 548 info->format[PSC_TEMPERATURE] = direct;
c83529c17e1204 drivers/hwmon/pmbus/adm1275.c Adamski, Krzysztof (Nokia - PL/Wroclaw 2019-05-29 549) info->func[0] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
c83529c17e1204 drivers/hwmon/pmbus/adm1275.c Adamski, Krzysztof (Nokia - PL/Wroclaw 2019-05-29 550) PMBUS_HAVE_SAMPLES;
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 551
c576e30cd0c981 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-09 552 info->read_word_data = adm1275_read_word_data;
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 553 info->read_byte_data = adm1275_read_byte_data;
c576e30cd0c981 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-09 554 info->write_word_data = adm1275_write_word_data;
c576e30cd0c981 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-09 555
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 556 switch (data->id) {
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 557 case adm1075:
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 558 if (device_config & ADM1275_IOUT_WARN2_SELECT)
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 559 data->have_oc_fault = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 560 else
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 561 data->have_uc_fault = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 562 data->have_pin_max = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 563 data->have_vaux_status = true;
c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 564
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 565 coefficients = adm1075_coefficients;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 566 vindex = 0;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 567 switch (config & ADM1075_IRANGE_MASK) {
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 568 case ADM1075_IRANGE_25:
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 569 cindex = 1;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 570 pindex = 3;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 571 break;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 572 case ADM1075_IRANGE_50:
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 573 cindex = 2;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 574 pindex = 4;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 575 break;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 576 default:
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 577 dev_err(&client->dev, "Invalid input current range");
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 578 break;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 579 }
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 580
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 581 info->func[0] |= PMBUS_HAVE_VIN | PMBUS_HAVE_PIN
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 582 | PMBUS_HAVE_STATUS_INPUT;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 583 if (config & ADM1275_VIN_VOUT_SELECT)
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 584 info->func[0] |=
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 585 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 586 break;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 587 case adm1272:
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 588 data->have_vout = true;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 589 data->have_pin_max = true;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 590 data->have_temp_max = true;
7d45deb31bec39 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2019-06-12 591 data->have_power_sampling = true;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 592
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 593 coefficients = adm1272_coefficients;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 594 vindex = (config & ADM1275_VRANGE) ? 1 : 0;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 595 cindex = (config & ADM1272_IRANGE) ? 3 : 2;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 596 /* pindex depends on the combination of the above */
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 597 switch (config & (ADM1275_VRANGE | ADM1272_IRANGE)) {
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 598 case 0:
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 599 default:
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 600 pindex = 4;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 601 break;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 602 case ADM1275_VRANGE:
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 603 pindex = 5;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 604 break;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 605 case ADM1272_IRANGE:
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 606 pindex = 6;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 607 break;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 608 case ADM1275_VRANGE | ADM1272_IRANGE:
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 609 pindex = 7;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 610 break;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 611 }
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 612 tindex = 8;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 613
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 614 info->func[0] |= PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT |
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 615 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 616
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 617 /* Enable VOUT if not enabled (it is disabled by default) */
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 618 if (!(config & ADM1278_VOUT_EN)) {
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 619 config |= ADM1278_VOUT_EN;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 620 ret = i2c_smbus_write_byte_data(client,
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 621 ADM1275_PMON_CONFIG,
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 622 config);
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 623 if (ret < 0) {
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 624 dev_err(&client->dev,
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 625 "Failed to enable VOUT monitoring\n");
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 626 return -ENODEV;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 627 }
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 628 }
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 629
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 630 if (config & ADM1278_TEMP1_EN)
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 631 info->func[0] |=
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 632 PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 633 if (config & ADM1278_VIN_EN)
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 634 info->func[0] |= PMBUS_HAVE_VIN;
4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 635 break;
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 636 case adm1275:
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 637 if (device_config & ADM1275_IOUT_WARN2_SELECT)
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 638 data->have_oc_fault = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 639 else
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 640 data->have_uc_fault = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 641 data->have_vout = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 642
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 643 coefficients = adm1275_coefficients;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 644 vindex = (config & ADM1275_VRANGE) ? 0 : 1;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 645 cindex = 2;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 646
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 647 if (config & ADM1275_VIN_VOUT_SELECT)
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 648 info->func[0] |=
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 649 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 650 else
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 651 info->func[0] |=
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 652 PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT;
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 653 break;
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 654 case adm1276:
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 655 if (device_config & ADM1275_IOUT_WARN2_SELECT)
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 656 data->have_oc_fault = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 657 else
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 658 data->have_uc_fault = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 659 data->have_vout = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 660 data->have_pin_max = true;
9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 661
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 662 coefficients = adm1276_coefficients;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 663 vindex = (config & ADM1275_VRANGE) ? 0 : 1;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 664 cindex = 2;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 665 pindex = (config & ADM1275_VRANGE) ? 3 : 4;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 666
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 667 info->func[0] |= PMBUS_HAVE_VIN | PMBUS_HAVE_PIN
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 668 | PMBUS_HAVE_STATUS_INPUT;
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 669 if (config & ADM1275_VIN_VOUT_SELECT)
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 670 info->func[0] |=
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 671 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 672 break;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 673 case adm1278:
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 674 data->have_vout = true;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 675 data->have_pin_max = true;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 676 data->have_temp_max = true;
7d45deb31bec39 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2019-06-12 677 data->have_power_sampling = true;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 678
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 679 coefficients = adm1278_coefficients;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 680 vindex = 0;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 681 cindex = 1;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 682 pindex = 2;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 683 tindex = 3;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 684
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 685 info->func[0] |= PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT |
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 686 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 687
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 688 /* Enable VOUT if not enabled (it is disabled by default) */
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 689 if (!(config & ADM1278_VOUT_EN)) {
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 690 config |= ADM1278_VOUT_EN;
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 691 ret = i2c_smbus_write_byte_data(client,
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 692 ADM1275_PMON_CONFIG,
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 693 config);
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 694 if (ret < 0) {
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 695 dev_err(&client->dev,
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 696 "Failed to enable VOUT monitoring\n");
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 697 return -ENODEV;
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 698 }
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 699 }
2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 700
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 701 if (config & ADM1278_TEMP1_EN)
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 702 info->func[0] |=
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 703 PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 704 if (config & ADM1278_VIN_EN)
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 705 info->func[0] |= PMBUS_HAVE_VIN;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 706 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 707 case adm1293:
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 708 case adm1294:
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 709 data->have_iout_min = true;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 710 data->have_pin_min = true;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 711 data->have_pin_max = true;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 712 data->have_mfr_vaux_status = true;
7d45deb31bec39 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2019-06-12 713 data->have_power_sampling = true;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 714
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 715 coefficients = adm1293_coefficients;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 716
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 717 voindex = 0;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 718 switch (config & ADM1293_VIN_SEL_MASK) {
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 719 case ADM1293_VIN_SEL_012: /* 1.2V */
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 720 vindex = 0;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 721 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 722 case ADM1293_VIN_SEL_074: /* 7.4V */
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 723 vindex = 1;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 724 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 725 case ADM1293_VIN_SEL_210: /* 21V */
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 726 vindex = 2;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 727 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 728 default: /* disabled */
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 729 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 730 }
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 731
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 732 switch (config & ADM1293_IRANGE_MASK) {
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 733 case ADM1293_IRANGE_25:
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 734 cindex = 3;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 735 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 736 case ADM1293_IRANGE_50:
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 737 cindex = 4;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 738 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 739 case ADM1293_IRANGE_100:
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 740 cindex = 5;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 741 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 742 case ADM1293_IRANGE_200:
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 743 cindex = 6;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 744 break;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 745 }
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 746
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 747 if (vindex >= 0)
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 748 pindex = 7 + vindex * 4 + (cindex - 3);
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 749
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 750 if (config & ADM1293_VAUX_EN)
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 751 info->func[0] |=
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 752 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 753
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 754 info->func[0] |= PMBUS_HAVE_PIN |
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 755 PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 756
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 757 break;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 758 default:
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 759 dev_err(&client->dev, "Unsupported device\n");
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 760 return -ENODEV;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 761 }
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 762
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 763 if (voindex < 0)
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 764 voindex = vindex;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 765 if (vindex >= 0) {
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 766 info->m[PSC_VOLTAGE_IN] = coefficients[vindex].m;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 767 info->b[PSC_VOLTAGE_IN] = coefficients[vindex].b;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 768 info->R[PSC_VOLTAGE_IN] = coefficients[vindex].R;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 769 }
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 770 if (voindex >= 0) {
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 771 info->m[PSC_VOLTAGE_OUT] = coefficients[voindex].m;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 772 info->b[PSC_VOLTAGE_OUT] = coefficients[voindex].b;
68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 773 info->R[PSC_VOLTAGE_OUT] = coefficients[voindex].R;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 774 }
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 775 if (cindex >= 0) {
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 776 /* Scale current with sense resistor value */
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 777 info->m[PSC_CURRENT_OUT] =
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 778 coefficients[cindex].m * shunt / 1000;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 779 info->b[PSC_CURRENT_OUT] = coefficients[cindex].b;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 780 info->R[PSC_CURRENT_OUT] = coefficients[cindex].R;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 781 }
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 782 if (pindex >= 0) {
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 783 info->m[PSC_POWER] =
6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 784 coefficients[pindex].m * shunt / 1000;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 785 info->b[PSC_POWER] = coefficients[pindex].b;
904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 786 info->R[PSC_POWER] = coefficients[pindex].R;
5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 787 }
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 788 if (tindex >= 0) {
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 789 info->m[PSC_TEMPERATURE] = coefficients[tindex].m;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 790 info->b[PSC_TEMPERATURE] = coefficients[tindex].b;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 791 info->R[PSC_TEMPERATURE] = coefficients[tindex].R;
709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 792 }
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 793
8b313ca7f1b982 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-22 @794 return pmbus_do_probe(client, id, info);
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 795 }
83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 796
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Stephen, Thank you for the patch! Yet something to improve: [auto build test ERROR on bcf876870b95592b52519ed4aafcf9d95999bc9c] url: https://github.com/0day-ci/linux/commits/Stephen-Kitt/hwmon-pmbus-use-simple-i2c-probe-function/20200807-024648 base: bcf876870b95592b52519ed4aafcf9d95999bc9c config: m68k-randconfig-r032-20200805 (attached as .config) compiler: m68k-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/hwmon/pmbus/adm1275.c: In function 'adm1275_probe': >> drivers/hwmon/pmbus/adm1275.c:794:32: error: passing argument 2 of 'pmbus_do_probe' from incompatible pointer type [-Werror=incompatible-pointer-types] 794 | return pmbus_do_probe(client, id, info); | ^~ | | | const struct i2c_device_id * In file included from drivers/hwmon/pmbus/adm1275.c:19: drivers/hwmon/pmbus/pmbus.h:479:73: note: expected 'struct pmbus_driver_info *' but argument is of type 'const struct i2c_device_id *' 479 | int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info); | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ >> drivers/hwmon/pmbus/adm1275.c:794:9: error: too many arguments to function 'pmbus_do_probe' 794 | return pmbus_do_probe(client, id, info); | ^~~~~~~~~~~~~~ In file included from drivers/hwmon/pmbus/adm1275.c:19: drivers/hwmon/pmbus/pmbus.h:479:5: note: declared here 479 | int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info); | ^~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/pmbus_do_probe +794 drivers/hwmon/pmbus/adm1275.c 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 464 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 465 static int adm1275_probe(struct i2c_client *client, 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 466 const struct i2c_device_id *id) 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 467 { 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 468 s32 (*config_read_fn)(const struct i2c_client *client, u8 reg); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 469 u8 block_buffer[I2C_SMBUS_BLOCK_MAX + 1]; c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 470 int config, device_config; 3b33ca41227a54 drivers/hwmon/adm1275.c Guenter Roeck 2011-06-30 471 int ret; 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 472 struct pmbus_driver_info *info; c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 473 struct adm1275_data *data; 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 474 const struct i2c_device_id *mid; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 475 const struct coefficients *coefficients; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 476 int vindex = -1, voindex = -1, cindex = -1, pindex = -1; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 477 int tindex = -1; 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 478 u32 shunt; 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 479 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 480 if (!i2c_check_functionality(client->adapter, 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 481 I2C_FUNC_SMBUS_READ_BYTE_DATA 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 482 | I2C_FUNC_SMBUS_BLOCK_DATA)) 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 483 return -ENODEV; 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 484 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 485 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_ID, block_buffer); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 486 if (ret < 0) { 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 487 dev_err(&client->dev, "Failed to read Manufacturer ID\n"); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 488 return ret; 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 489 } 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 490 if (ret != 3 || strncmp(block_buffer, "ADI", 3)) { 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 491 dev_err(&client->dev, "Unsupported Manufacturer ID\n"); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 492 return -ENODEV; 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 493 } 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 494 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 495 ret = i2c_smbus_read_block_data(client, PMBUS_MFR_MODEL, block_buffer); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 496 if (ret < 0) { 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 497 dev_err(&client->dev, "Failed to read Manufacturer Model\n"); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 498 return ret; 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 499 } 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 500 for (mid = adm1275_id; mid->name[0]; mid++) { 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 501 if (!strncasecmp(mid->name, block_buffer, strlen(mid->name))) 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 502 break; 3b33ca41227a54 drivers/hwmon/adm1275.c Guenter Roeck 2011-06-30 503 } 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 504 if (!mid->name[0]) { 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 505 dev_err(&client->dev, "Unsupported device\n"); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 506 return -ENODEV; 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 507 } 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 508 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 509 if (id->driver_data != mid->driver_data) 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 510 dev_notice(&client->dev, 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 511 "Device mismatch: Configured %s, detected %s\n", 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 512 id->name, mid->name); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 513 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 514 if (mid->driver_data == adm1272 || mid->driver_data == adm1278 || 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 515 mid->driver_data == adm1293 || mid->driver_data == adm1294) 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 516 config_read_fn = i2c_smbus_read_word_data; 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 517 else 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 518 config_read_fn = i2c_smbus_read_byte_data; 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 519 config = config_read_fn(client, ADM1275_PMON_CONFIG); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 520 if (config < 0) 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 521 return config; 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 522 6d1d41c075a1a5 drivers/hwmon/pmbus/adm1275.c Chu Lin 2020-07-09 523 device_config = config_read_fn(client, ADM1275_DEVICE_CONFIG); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 524 if (device_config < 0) 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 525 return device_config; 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 526 8b313ca7f1b982 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-22 527 data = devm_kzalloc(&client->dev, sizeof(struct adm1275_data), 8b313ca7f1b982 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-22 528 GFP_KERNEL); 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 529 if (!data) 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 530 return -ENOMEM; 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 531 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 532 if (of_property_read_u32(client->dev.of_node, 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 533 "shunt-resistor-micro-ohms", &shunt)) 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 534 shunt = 1000; /* 1 mOhm if not set via DT */ 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 535 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 536 if (shunt == 0) 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 537 return -EINVAL; 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 538 87102808d03948 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-09-30 539 data->id = mid->driver_data; c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 540 c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 541 info = &data->info; c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 542 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 543 info->pages = 1; 1061d8518f8bde drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-06-25 544 info->format[PSC_VOLTAGE_IN] = direct; 1061d8518f8bde drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-06-25 545 info->format[PSC_VOLTAGE_OUT] = direct; 1061d8518f8bde drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-06-25 546 info->format[PSC_CURRENT_OUT] = direct; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 547 info->format[PSC_POWER] = direct; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 548 info->format[PSC_TEMPERATURE] = direct; c83529c17e1204 drivers/hwmon/pmbus/adm1275.c Adamski, Krzysztof (Nokia - PL/Wroclaw 2019-05-29 549) info->func[0] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | c83529c17e1204 drivers/hwmon/pmbus/adm1275.c Adamski, Krzysztof (Nokia - PL/Wroclaw 2019-05-29 550) PMBUS_HAVE_SAMPLES; 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 551 c576e30cd0c981 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-09 552 info->read_word_data = adm1275_read_word_data; c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 553 info->read_byte_data = adm1275_read_byte_data; c576e30cd0c981 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-09 554 info->write_word_data = adm1275_write_word_data; c576e30cd0c981 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-09 555 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 556 switch (data->id) { 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 557 case adm1075: c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 558 if (device_config & ADM1275_IOUT_WARN2_SELECT) c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 559 data->have_oc_fault = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 560 else 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 561 data->have_uc_fault = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 562 data->have_pin_max = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 563 data->have_vaux_status = true; c5e6763667ffc9 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-08-02 564 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 565 coefficients = adm1075_coefficients; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 566 vindex = 0; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 567 switch (config & ADM1075_IRANGE_MASK) { 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 568 case ADM1075_IRANGE_25: 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 569 cindex = 1; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 570 pindex = 3; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 571 break; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 572 case ADM1075_IRANGE_50: 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 573 cindex = 2; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 574 pindex = 4; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 575 break; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 576 default: 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 577 dev_err(&client->dev, "Invalid input current range"); 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 578 break; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 579 } 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 580 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 581 info->func[0] |= PMBUS_HAVE_VIN | PMBUS_HAVE_PIN 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 582 | PMBUS_HAVE_STATUS_INPUT; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 583 if (config & ADM1275_VIN_VOUT_SELECT) 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 584 info->func[0] |= 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 585 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; 927112696654f4 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-24 586 break; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 587 case adm1272: 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 588 data->have_vout = true; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 589 data->have_pin_max = true; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 590 data->have_temp_max = true; 7d45deb31bec39 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2019-06-12 591 data->have_power_sampling = true; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 592 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 593 coefficients = adm1272_coefficients; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 594 vindex = (config & ADM1275_VRANGE) ? 1 : 0; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 595 cindex = (config & ADM1272_IRANGE) ? 3 : 2; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 596 /* pindex depends on the combination of the above */ 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 597 switch (config & (ADM1275_VRANGE | ADM1272_IRANGE)) { 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 598 case 0: 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 599 default: 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 600 pindex = 4; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 601 break; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 602 case ADM1275_VRANGE: 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 603 pindex = 5; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 604 break; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 605 case ADM1272_IRANGE: 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 606 pindex = 6; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 607 break; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 608 case ADM1275_VRANGE | ADM1272_IRANGE: 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 609 pindex = 7; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 610 break; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 611 } 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 612 tindex = 8; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 613 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 614 info->func[0] |= PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT | 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 615 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 616 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 617 /* Enable VOUT if not enabled (it is disabled by default) */ 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 618 if (!(config & ADM1278_VOUT_EN)) { 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 619 config |= ADM1278_VOUT_EN; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 620 ret = i2c_smbus_write_byte_data(client, 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 621 ADM1275_PMON_CONFIG, 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 622 config); 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 623 if (ret < 0) { 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 624 dev_err(&client->dev, 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 625 "Failed to enable VOUT monitoring\n"); 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 626 return -ENODEV; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 627 } 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 628 } 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 629 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 630 if (config & ADM1278_TEMP1_EN) 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 631 info->func[0] |= 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 632 PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 633 if (config & ADM1278_VIN_EN) 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 634 info->func[0] |= PMBUS_HAVE_VIN; 4ff0ce227a1e65 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2018-03-10 635 break; 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 636 case adm1275: 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 637 if (device_config & ADM1275_IOUT_WARN2_SELECT) 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 638 data->have_oc_fault = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 639 else 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 640 data->have_uc_fault = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 641 data->have_vout = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 642 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 643 coefficients = adm1275_coefficients; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 644 vindex = (config & ADM1275_VRANGE) ? 0 : 1; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 645 cindex = 2; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 646 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 647 if (config & ADM1275_VIN_VOUT_SELECT) 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 648 info->func[0] |= 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 649 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 650 else 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 651 info->func[0] |= 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 652 PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT; 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 653 break; 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 654 case adm1276: 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 655 if (device_config & ADM1275_IOUT_WARN2_SELECT) 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 656 data->have_oc_fault = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 657 else 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 658 data->have_uc_fault = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 659 data->have_vout = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 660 data->have_pin_max = true; 9048539b7cd6ca drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 661 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 662 coefficients = adm1276_coefficients; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 663 vindex = (config & ADM1275_VRANGE) ? 0 : 1; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 664 cindex = 2; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 665 pindex = (config & ADM1275_VRANGE) ? 3 : 4; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 666 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 667 info->func[0] |= PMBUS_HAVE_VIN | PMBUS_HAVE_PIN 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 668 | PMBUS_HAVE_STATUS_INPUT; 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 669 if (config & ADM1275_VIN_VOUT_SELECT) 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 670 info->func[0] |= 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 671 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 672 break; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 673 case adm1278: 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 674 data->have_vout = true; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 675 data->have_pin_max = true; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 676 data->have_temp_max = true; 7d45deb31bec39 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2019-06-12 677 data->have_power_sampling = true; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 678 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 679 coefficients = adm1278_coefficients; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 680 vindex = 0; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 681 cindex = 1; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 682 pindex = 2; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 683 tindex = 3; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 684 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 685 info->func[0] |= PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT | 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 686 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 687 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 688 /* Enable VOUT if not enabled (it is disabled by default) */ 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 689 if (!(config & ADM1278_VOUT_EN)) { 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 690 config |= ADM1278_VOUT_EN; 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 691 ret = i2c_smbus_write_byte_data(client, 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 692 ADM1275_PMON_CONFIG, 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 693 config); 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 694 if (ret < 0) { 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 695 dev_err(&client->dev, 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 696 "Failed to enable VOUT monitoring\n"); 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 697 return -ENODEV; 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 698 } 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 699 } 2b3d0c19537c1b drivers/hwmon/pmbus/adm1275.c Yi Li 2016-10-17 700 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 701 if (config & ADM1278_TEMP1_EN) 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 702 info->func[0] |= 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 703 PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 704 if (config & ADM1278_VIN_EN) 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 705 info->func[0] |= PMBUS_HAVE_VIN; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 706 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 707 case adm1293: 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 708 case adm1294: 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 709 data->have_iout_min = true; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 710 data->have_pin_min = true; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 711 data->have_pin_max = true; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 712 data->have_mfr_vaux_status = true; 7d45deb31bec39 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2019-06-12 713 data->have_power_sampling = true; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 714 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 715 coefficients = adm1293_coefficients; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 716 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 717 voindex = 0; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 718 switch (config & ADM1293_VIN_SEL_MASK) { 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 719 case ADM1293_VIN_SEL_012: /* 1.2V */ 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 720 vindex = 0; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 721 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 722 case ADM1293_VIN_SEL_074: /* 7.4V */ 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 723 vindex = 1; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 724 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 725 case ADM1293_VIN_SEL_210: /* 21V */ 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 726 vindex = 2; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 727 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 728 default: /* disabled */ 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 729 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 730 } 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 731 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 732 switch (config & ADM1293_IRANGE_MASK) { 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 733 case ADM1293_IRANGE_25: 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 734 cindex = 3; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 735 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 736 case ADM1293_IRANGE_50: 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 737 cindex = 4; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 738 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 739 case ADM1293_IRANGE_100: 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 740 cindex = 5; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 741 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 742 case ADM1293_IRANGE_200: 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 743 cindex = 6; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 744 break; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 745 } 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 746 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 747 if (vindex >= 0) 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 748 pindex = 7 + vindex * 4 + (cindex - 3); 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 749 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 750 if (config & ADM1293_VAUX_EN) 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 751 info->func[0] |= 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 752 PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 753 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 754 info->func[0] |= PMBUS_HAVE_PIN | 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 755 PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 756 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 757 break; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 758 default: 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 759 dev_err(&client->dev, "Unsupported device\n"); 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 760 return -ENODEV; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 761 } 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 762 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 763 if (voindex < 0) 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 764 voindex = vindex; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 765 if (vindex >= 0) { 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 766 info->m[PSC_VOLTAGE_IN] = coefficients[vindex].m; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 767 info->b[PSC_VOLTAGE_IN] = coefficients[vindex].b; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 768 info->R[PSC_VOLTAGE_IN] = coefficients[vindex].R; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 769 } 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 770 if (voindex >= 0) { 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 771 info->m[PSC_VOLTAGE_OUT] = coefficients[voindex].m; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 772 info->b[PSC_VOLTAGE_OUT] = coefficients[voindex].b; 68a403823600fc drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-03-17 773 info->R[PSC_VOLTAGE_OUT] = coefficients[voindex].R; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 774 } 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 775 if (cindex >= 0) { 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 776 /* Scale current with sense resistor value */ 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 777 info->m[PSC_CURRENT_OUT] = 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 778 coefficients[cindex].m * shunt / 1000; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 779 info->b[PSC_CURRENT_OUT] = coefficients[cindex].b; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 780 info->R[PSC_CURRENT_OUT] = coefficients[cindex].R; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 781 } 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 782 if (pindex >= 0) { 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 783 info->m[PSC_POWER] = 6e5c06ad94115e drivers/hwmon/pmbus/adm1275.c Kun Yi 2018-10-17 784 coefficients[pindex].m * shunt / 1000; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 785 info->b[PSC_POWER] = coefficients[pindex].b; 904b296f308dc7 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-04 786 info->R[PSC_POWER] = coefficients[pindex].R; 5cf231a346fb80 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2011-07-14 787 } 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 788 if (tindex >= 0) { 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 789 info->m[PSC_TEMPERATURE] = coefficients[tindex].m; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 790 info->b[PSC_TEMPERATURE] = coefficients[tindex].b; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 791 info->R[PSC_TEMPERATURE] = coefficients[tindex].R; 709066acdd12c3 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2015-07-05 792 } 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 793 8b313ca7f1b982 drivers/hwmon/pmbus/adm1275.c Guenter Roeck 2012-02-22 @794 return pmbus_do_probe(client, id, info); 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 795 } 83f7649c52871d drivers/hwmon/adm1275.c Guenter Roeck 2011-03-17 796 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Thu, 6 Aug 2020 14:48:58 -0700, Guenter Roeck <linux@roeck-us.net> wrote: > On 8/6/20 1:12 PM, Stephen Kitt wrote: > > On Thu, 6 Aug 2020 12:15:55 -0700, Guenter Roeck <linux@roeck-us.net> > > wrote: > >> On 8/6/20 9:16 AM, Stephen Kitt wrote: [...] > >> Also, I am not convinced that replacements such as > >> > >> - { "ipsps1", 0 }, > >> + { .name = "ipsps1" }, > >> > >> are an improvement. I would suggest to leave that alone for > >> consistency (and to make it easier to add more devices to the > >> various drivers if that happens in the future). > > > > From reading through all the drivers using id_table, it seems to me that > > we could do away with driver_data altogether and move all that to > > driver-local structures, in many cases covering more than just an id. By > > only initialising the elements of the structure that are really needed, I > > was hoping to (a) make it more obvious that driver_data isn’t used, and > > (b) allow removing it without touching all the code again. > > > > I don't see it as an improvement to replace a common data structure with > per-driver data structures. That sounds too much like "let's re-invent > the wheel over and over again". If that is where things are going, I'd > rather have it implemented everywhere else first. I am ok with the other > changes, but not with this. I agree, and I wasn’t intending on encouraging re-inventing the wheel in each driver. Let’s focus on probe_new for now... What did you mean by “to make it easier to add more devices to the various drivers if that happens in the future”? There are already many drivers with multiple devices but no driver_data, dropping the explicit driver_data initialisation doesn’t necessarily make it harder to add devices, does it? Regards, Stephen
On 8/6/20 11:23 PM, Stephen Kitt wrote: > On Thu, 6 Aug 2020 14:48:58 -0700, Guenter Roeck <linux@roeck-us.net> wrote: >> On 8/6/20 1:12 PM, Stephen Kitt wrote: >>> On Thu, 6 Aug 2020 12:15:55 -0700, Guenter Roeck <linux@roeck-us.net> >>> wrote: >>>> On 8/6/20 9:16 AM, Stephen Kitt wrote: > [...] >>>> Also, I am not convinced that replacements such as >>>> >>>> - { "ipsps1", 0 }, >>>> + { .name = "ipsps1" }, >>>> >>>> are an improvement. I would suggest to leave that alone for >>>> consistency (and to make it easier to add more devices to the >>>> various drivers if that happens in the future). >>> >>> From reading through all the drivers using id_table, it seems to me that >>> we could do away with driver_data altogether and move all that to >>> driver-local structures, in many cases covering more than just an id. By >>> only initialising the elements of the structure that are really needed, I >>> was hoping to (a) make it more obvious that driver_data isn’t used, and >>> (b) allow removing it without touching all the code again. >>> >> >> I don't see it as an improvement to replace a common data structure with >> per-driver data structures. That sounds too much like "let's re-invent >> the wheel over and over again". If that is where things are going, I'd >> rather have it implemented everywhere else first. I am ok with the other >> changes, but not with this. > > I agree, and I wasn’t intending on encouraging re-inventing the wheel in each > driver. Let’s focus on probe_new for now... > > What did you mean by “to make it easier to add more devices to the various > drivers if that happens in the future”? There are already many drivers with > multiple devices but no driver_data, dropping the explicit driver_data > initialisation doesn’t necessarily make it harder to add devices, does it? > There is an existing mechanism to identify devices based on the device ID, should that be necessary. I am not inclined to let people invent a separate per-driver mechanism unless the kernel community decides that this is the way to go. Thanks, Guenter
diff --git a/drivers/hwmon/pmbus/bel-pfe.c b/drivers/hwmon/pmbus/bel-pfe.c index f236e18f45a5..240d86043d75 100644 --- a/drivers/hwmon/pmbus/bel-pfe.c +++ b/drivers/hwmon/pmbus/bel-pfe.c @@ -104,7 +104,7 @@ static int pfe_pmbus_probe(struct i2c_client *client, i2c_smbus_write_byte_data(client, PMBUS_PAGE, 0); } - return pmbus_do_probe(client, id, &pfe_driver_info[model]); + return pmbus_do_probe(client, &pfe_driver_info[model]); } static const struct i2c_device_id pfe_device_id[] = { diff --git a/drivers/hwmon/pmbus/ibm-cffps.c b/drivers/hwmon/pmbus/ibm-cffps.c index 7d300f2f338d..0215e792ec7e 100644 --- a/drivers/hwmon/pmbus/ibm-cffps.c +++ b/drivers/hwmon/pmbus/ibm-cffps.c @@ -519,7 +519,7 @@ static int ibm_cffps_probe(struct i2c_client *client, } client->dev.platform_data = &ibm_cffps_pdata; - rc = pmbus_do_probe(client, id, &ibm_cffps_info[vs]); + rc = pmbus_do_probe(client, &ibm_cffps_info[vs]); if (rc) return rc; diff --git a/drivers/hwmon/pmbus/inspur-ipsps.c b/drivers/hwmon/pmbus/inspur-ipsps.c index 42e01549184a..b97848e05ae2 100644 --- a/drivers/hwmon/pmbus/inspur-ipsps.c +++ b/drivers/hwmon/pmbus/inspur-ipsps.c @@ -190,15 +190,14 @@ static struct pmbus_platform_data ipsps_pdata = { .flags = PMBUS_SKIP_STATUS_CHECK, }; -static int ipsps_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int ipsps_probe(struct i2c_client *client) { client->dev.platform_data = &ipsps_pdata; - return pmbus_do_probe(client, id, &ipsps_info); + return pmbus_do_probe(client, &ipsps_info); } static const struct i2c_device_id ipsps_id[] = { - { "ipsps1", 0 }, + { .name = "ipsps1" }, {} }; MODULE_DEVICE_TABLE(i2c, ipsps_id); @@ -216,7 +215,7 @@ static struct i2c_driver ipsps_driver = { .name = "inspur-ipsps", .of_match_table = of_match_ptr(ipsps_of_match), }, - .probe = ipsps_probe, + .probe_new = ipsps_probe, .remove = pmbus_do_remove, .id_table = ipsps_id, }; diff --git a/drivers/hwmon/pmbus/ir35221.c b/drivers/hwmon/pmbus/ir35221.c index 3eea3e006a96..e7fabafca2f1 100644 --- a/drivers/hwmon/pmbus/ir35221.c +++ b/drivers/hwmon/pmbus/ir35221.c @@ -67,8 +67,7 @@ static int ir35221_read_word_data(struct i2c_client *client, int page, return ret; } -static int ir35221_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int ir35221_probe(struct i2c_client *client) { struct pmbus_driver_info *info; u8 buf[I2C_SMBUS_BLOCK_MAX]; @@ -123,11 +122,11 @@ static int ir35221_probe(struct i2c_client *client, | PMBUS_HAVE_STATUS_INPUT | PMBUS_HAVE_STATUS_TEMP; info->func[1] = info->func[0]; - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct i2c_device_id ir35221_id[] = { - {"ir35221", 0}, + { .name = "ir35221" }, {} }; @@ -137,7 +136,7 @@ static struct i2c_driver ir35221_driver = { .driver = { .name = "ir35221", }, - .probe = ir35221_probe, + .probe_new = ir35221_probe, .remove = pmbus_do_remove, .id_table = ir35221_id, }; diff --git a/drivers/hwmon/pmbus/ir38064.c b/drivers/hwmon/pmbus/ir38064.c index 1820f5077f66..a36ab6cc21d7 100644 --- a/drivers/hwmon/pmbus/ir38064.c +++ b/drivers/hwmon/pmbus/ir38064.c @@ -35,14 +35,13 @@ static struct pmbus_driver_info ir38064_info = { | PMBUS_HAVE_POUT, }; -static int ir38064_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int ir38064_probe(struct i2c_client *client) { - return pmbus_do_probe(client, id, &ir38064_info); + return pmbus_do_probe(client, &ir38064_info); } static const struct i2c_device_id ir38064_id[] = { - {"ir38064", 0}, + { .name = "ir38064" }, {} }; @@ -53,7 +52,7 @@ static struct i2c_driver ir38064_driver = { .driver = { .name = "ir38064", }, - .probe = ir38064_probe, + .probe_new = ir38064_probe, .remove = pmbus_do_remove, .id_table = ir38064_id, }; diff --git a/drivers/hwmon/pmbus/irps5401.c b/drivers/hwmon/pmbus/irps5401.c index d37daa001fb3..828b91567137 100644 --- a/drivers/hwmon/pmbus/irps5401.c +++ b/drivers/hwmon/pmbus/irps5401.c @@ -38,14 +38,13 @@ static struct pmbus_driver_info irps5401_info = { .func[4] = IRPS5401_LDO_FUNC, }; -static int irps5401_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int irps5401_probe(struct i2c_client *client) { - return pmbus_do_probe(client, id, &irps5401_info); + return pmbus_do_probe(client, &irps5401_info); } static const struct i2c_device_id irps5401_id[] = { - {"irps5401", 0}, + { .name = "irps5401" }, {} }; @@ -55,7 +54,7 @@ static struct i2c_driver irps5401_driver = { .driver = { .name = "irps5401", }, - .probe = irps5401_probe, + .probe_new = irps5401_probe, .remove = pmbus_do_remove, .id_table = irps5401_id, }; diff --git a/drivers/hwmon/pmbus/isl68137.c b/drivers/hwmon/pmbus/isl68137.c index 0c622711ef7e..2d626ccbc11d 100644 --- a/drivers/hwmon/pmbus/isl68137.c +++ b/drivers/hwmon/pmbus/isl68137.c @@ -262,7 +262,7 @@ static int isl68137_probe(struct i2c_client *client, return -ENODEV; } - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct i2c_device_id raa_dmpvr_id[] = { diff --git a/drivers/hwmon/pmbus/lm25066.c b/drivers/hwmon/pmbus/lm25066.c index 9e4cf0800186..2d28cddc365f 100644 --- a/drivers/hwmon/pmbus/lm25066.c +++ b/drivers/hwmon/pmbus/lm25066.c @@ -487,7 +487,7 @@ static int lm25066_probe(struct i2c_client *client, info->b[PSC_POWER] = coeff[PSC_POWER].b; } - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct i2c_device_id lm25066_id[] = { diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c index 7b0e6b37e247..da6832094676 100644 --- a/drivers/hwmon/pmbus/ltc2978.c +++ b/drivers/hwmon/pmbus/ltc2978.c @@ -832,7 +832,7 @@ static int ltc2978_probe(struct i2c_client *client, } #endif - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } diff --git a/drivers/hwmon/pmbus/ltc3815.c b/drivers/hwmon/pmbus/ltc3815.c index 3036263e0a66..0a02fbac127a 100644 --- a/drivers/hwmon/pmbus/ltc3815.c +++ b/drivers/hwmon/pmbus/ltc3815.c @@ -143,7 +143,7 @@ static int ltc3815_write_word_data(struct i2c_client *client, int page, } static const struct i2c_device_id ltc3815_id[] = { - {"ltc3815", 0}, + { .name = "ltc3815" }, { } }; MODULE_DEVICE_TABLE(i2c, ltc3815_id); @@ -178,8 +178,7 @@ static struct pmbus_driver_info ltc3815_info = { .write_word_data = ltc3815_write_word_data, }; -static int ltc3815_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int ltc3815_probe(struct i2c_client *client) { int chip_id; @@ -193,14 +192,14 @@ static int ltc3815_probe(struct i2c_client *client, if ((chip_id & LTC3815_ID_MASK) != LTC3815_ID) return -ENODEV; - return pmbus_do_probe(client, id, <c3815_info); + return pmbus_do_probe(client, <c3815_info); } static struct i2c_driver ltc3815_driver = { .driver = { .name = "ltc3815", }, - .probe = ltc3815_probe, + .probe_new = ltc3815_probe, .remove = pmbus_do_remove, .id_table = ltc3815_id, }; diff --git a/drivers/hwmon/pmbus/max16064.c b/drivers/hwmon/pmbus/max16064.c index 288e93f74c28..e0efc7f6879d 100644 --- a/drivers/hwmon/pmbus/max16064.c +++ b/drivers/hwmon/pmbus/max16064.c @@ -85,14 +85,13 @@ static struct pmbus_driver_info max16064_info = { .write_word_data = max16064_write_word_data, }; -static int max16064_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int max16064_probe(struct i2c_client *client) { - return pmbus_do_probe(client, id, &max16064_info); + return pmbus_do_probe(client, &max16064_info); } static const struct i2c_device_id max16064_id[] = { - {"max16064", 0}, + { .name = "max16064" }, {} }; @@ -103,7 +102,7 @@ static struct i2c_driver max16064_driver = { .driver = { .name = "max16064", }, - .probe = max16064_probe, + .probe_new = max16064_probe, .remove = pmbus_do_remove, .id_table = max16064_id, }; diff --git a/drivers/hwmon/pmbus/max16601.c b/drivers/hwmon/pmbus/max16601.c index 51cdfaf9023c..0d4049c29f9c 100644 --- a/drivers/hwmon/pmbus/max16601.c +++ b/drivers/hwmon/pmbus/max16601.c @@ -239,8 +239,7 @@ static void max16601_remove(void *_data) i2c_unregister_device(data->vsa); } -static int max16601_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int max16601_probe(struct i2c_client *client) { struct device *dev = &client->dev; u8 buf[I2C_SMBUS_BLOCK_MAX + 1]; @@ -288,11 +287,11 @@ static int max16601_probe(struct i2c_client *client, data->info = max16601_info; - return pmbus_do_probe(client, id, &data->info); + return pmbus_do_probe(client, &data->info); } static const struct i2c_device_id max16601_id[] = { - {"max16601", 0}, + { .name = "max16601" }, {} }; @@ -302,7 +301,7 @@ static struct i2c_driver max16601_driver = { .driver = { .name = "max16601", }, - .probe = max16601_probe, + .probe_new = max16601_probe, .remove = pmbus_do_remove, .id_table = max16601_id, }; diff --git a/drivers/hwmon/pmbus/max20730.c b/drivers/hwmon/pmbus/max20730.c index c0bb05487e0e..0abcef2ac649 100644 --- a/drivers/hwmon/pmbus/max20730.c +++ b/drivers/hwmon/pmbus/max20730.c @@ -335,7 +335,7 @@ static int max20730_probe(struct i2c_client *client, return ret; data->mfr_devset1 = ret; - return pmbus_do_probe(client, id, &data->info); + return pmbus_do_probe(client, &data->info); } static const struct i2c_device_id max20730_id[] = { diff --git a/drivers/hwmon/pmbus/max20751.c b/drivers/hwmon/pmbus/max20751.c index da3c38cb9a5c..8ab666969a77 100644 --- a/drivers/hwmon/pmbus/max20751.c +++ b/drivers/hwmon/pmbus/max20751.c @@ -26,14 +26,13 @@ static struct pmbus_driver_info max20751_info = { PMBUS_HAVE_POUT, }; -static int max20751_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int max20751_probe(struct i2c_client *client) { - return pmbus_do_probe(client, id, &max20751_info); + return pmbus_do_probe(client, &max20751_info); } static const struct i2c_device_id max20751_id[] = { - {"max20751", 0}, + { .name = "max20751" }, {} }; @@ -43,7 +42,7 @@ static struct i2c_driver max20751_driver = { .driver = { .name = "max20751", }, - .probe = max20751_probe, + .probe_new = max20751_probe, .remove = pmbus_do_remove, .id_table = max20751_id, }; diff --git a/drivers/hwmon/pmbus/max31785.c b/drivers/hwmon/pmbus/max31785.c index d9aa5c873d21..3e77c79f3f42 100644 --- a/drivers/hwmon/pmbus/max31785.c +++ b/drivers/hwmon/pmbus/max31785.c @@ -324,8 +324,7 @@ static int max31785_configure_dual_tach(struct i2c_client *client, return 0; } -static int max31785_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int max31785_probe(struct i2c_client *client) { struct device *dev = &client->dev; struct pmbus_driver_info *info; @@ -354,7 +353,7 @@ static int max31785_probe(struct i2c_client *client, if (ret == MAX31785A) { dual_tach = true; } else if (ret == MAX31785) { - if (!strcmp("max31785a", id->name)) + if (!strcmp("max31785a", client->name)) dev_warn(dev, "Expected max3175a, found max31785: cannot provide secondary tachometer readings\n"); } else { return -ENODEV; @@ -366,12 +365,12 @@ static int max31785_probe(struct i2c_client *client, return ret; } - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct i2c_device_id max31785_id[] = { - { "max31785", 0 }, - { "max31785a", 0 }, + { .name = "max31785" }, + { .name = "max31785a" }, { }, }; @@ -390,7 +389,7 @@ static struct i2c_driver max31785_driver = { .name = "max31785", .of_match_table = max31785_of_match, }, - .probe = max31785_probe, + .probe_new = max31785_probe, .remove = pmbus_do_remove, .id_table = max31785_id, }; diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c index 18b4e071067f..0205983bd51f 100644 --- a/drivers/hwmon/pmbus/max34440.c +++ b/drivers/hwmon/pmbus/max34440.c @@ -480,7 +480,7 @@ static int max34440_probe(struct i2c_client *client, return rv; } - return pmbus_do_probe(client, id, &data->info); + return pmbus_do_probe(client, &data->info); } static const struct i2c_device_id max34440_id[] = { diff --git a/drivers/hwmon/pmbus/max8688.c b/drivers/hwmon/pmbus/max8688.c index 643ccfc05106..2efce192e6af 100644 --- a/drivers/hwmon/pmbus/max8688.c +++ b/drivers/hwmon/pmbus/max8688.c @@ -165,14 +165,13 @@ static struct pmbus_driver_info max8688_info = { .write_word_data = max8688_write_word_data, }; -static int max8688_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int max8688_probe(struct i2c_client *client) { - return pmbus_do_probe(client, id, &max8688_info); + return pmbus_do_probe(client, &max8688_info); } static const struct i2c_device_id max8688_id[] = { - {"max8688", 0}, + { .name = "max8688" }, { } }; @@ -183,7 +182,7 @@ static struct i2c_driver max8688_driver = { .driver = { .name = "max8688", }, - .probe = max8688_probe, + .probe_new = max8688_probe, .remove = pmbus_do_remove, .id_table = max8688_id, }; diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c index 6d384e8ee1db..7742ce83c99f 100644 --- a/drivers/hwmon/pmbus/pmbus.c +++ b/drivers/hwmon/pmbus/pmbus.c @@ -185,7 +185,7 @@ static int pmbus_probe(struct i2c_client *client, info->identify = pmbus_identify; dev->platform_data = pdata; - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct pmbus_device_info pmbus_info_one = { diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h index 18e06fc6c53f..1ff5314287cb 100644 --- a/drivers/hwmon/pmbus/pmbus.h +++ b/drivers/hwmon/pmbus/pmbus.h @@ -476,8 +476,7 @@ int pmbus_update_byte_data(struct i2c_client *client, int page, u8 reg, void pmbus_clear_faults(struct i2c_client *client); bool pmbus_check_byte_register(struct i2c_client *client, int page, int reg); bool pmbus_check_word_register(struct i2c_client *client, int page, int reg); -int pmbus_do_probe(struct i2c_client *client, const struct i2c_device_id *id, - struct pmbus_driver_info *info); +int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info); int pmbus_do_remove(struct i2c_client *client); const struct pmbus_driver_info *pmbus_get_driver_info(struct i2c_client *client); diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c index 2191575a448b..065a81f6545d 100644 --- a/drivers/hwmon/pmbus/pmbus_core.c +++ b/drivers/hwmon/pmbus/pmbus_core.c @@ -2492,8 +2492,7 @@ static int pmbus_init_debugfs(struct i2c_client *client, } #endif /* IS_ENABLED(CONFIG_DEBUG_FS) */ -int pmbus_do_probe(struct i2c_client *client, const struct i2c_device_id *id, - struct pmbus_driver_info *info) +int pmbus_do_probe(struct i2c_client *client, struct pmbus_driver_info *info) { struct device *dev = &client->dev; const struct pmbus_platform_data *pdata = dev_get_platdata(dev); diff --git a/drivers/hwmon/pmbus/pxe1610.c b/drivers/hwmon/pmbus/pxe1610.c index 517584cff3de..732958b2f6b7 100644 --- a/drivers/hwmon/pmbus/pxe1610.c +++ b/drivers/hwmon/pmbus/pxe1610.c @@ -78,8 +78,7 @@ static struct pmbus_driver_info pxe1610_info = { .identify = pxe1610_identify, }; -static int pxe1610_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int pxe1610_probe(struct i2c_client *client) { struct pmbus_driver_info *info; u8 buf[I2C_SMBUS_BLOCK_MAX]; @@ -115,13 +114,13 @@ static int pxe1610_probe(struct i2c_client *client, if (!info) return -ENOMEM; - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct i2c_device_id pxe1610_id[] = { - {"pxe1610", 0}, - {"pxe1110", 0}, - {"pxm1310", 0}, + { .name = "pxe1610" }, + { .name = "pxe1110" }, + { .name = "pxm1310" }, {} }; @@ -131,7 +130,7 @@ static struct i2c_driver pxe1610_driver = { .driver = { .name = "pxe1610", }, - .probe = pxe1610_probe, + .probe_new = pxe1610_probe, .remove = pmbus_do_remove, .id_table = pxe1610_id, }; diff --git a/drivers/hwmon/pmbus/tps40422.c b/drivers/hwmon/pmbus/tps40422.c index 2b83dcda964a..d265178c7689 100644 --- a/drivers/hwmon/pmbus/tps40422.c +++ b/drivers/hwmon/pmbus/tps40422.c @@ -25,14 +25,13 @@ static struct pmbus_driver_info tps40422_info = { | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT, }; -static int tps40422_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int tps40422_probe(struct i2c_client *client) { - return pmbus_do_probe(client, id, &tps40422_info); + return pmbus_do_probe(client, &tps40422_info); } static const struct i2c_device_id tps40422_id[] = { - {"tps40422", 0}, + { .name = "tps40422" }, {} }; @@ -43,7 +42,7 @@ static struct i2c_driver tps40422_driver = { .driver = { .name = "tps40422", }, - .probe = tps40422_probe, + .probe_new = tps40422_probe, .remove = pmbus_do_remove, .id_table = tps40422_id, }; diff --git a/drivers/hwmon/pmbus/tps53679.c b/drivers/hwmon/pmbus/tps53679.c index 157c99ffb52b..30832d71102f 100644 --- a/drivers/hwmon/pmbus/tps53679.c +++ b/drivers/hwmon/pmbus/tps53679.c @@ -220,7 +220,7 @@ static int tps53679_probe(struct i2c_client *client, return -ENODEV; } - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct i2c_device_id tps53679_id[] = { diff --git a/drivers/hwmon/pmbus/ucd9000.c b/drivers/hwmon/pmbus/ucd9000.c index 81f4c4f166cd..d4c74e21c9d2 100644 --- a/drivers/hwmon/pmbus/ucd9000.c +++ b/drivers/hwmon/pmbus/ucd9000.c @@ -603,7 +603,7 @@ static int ucd9000_probe(struct i2c_client *client, ucd9000_probe_gpio(client, mid, data); - ret = pmbus_do_probe(client, mid, info); + ret = pmbus_do_probe(client, info); if (ret) return ret; diff --git a/drivers/hwmon/pmbus/ucd9200.c b/drivers/hwmon/pmbus/ucd9200.c index 7c04745a9709..58633bb495fb 100644 --- a/drivers/hwmon/pmbus/ucd9200.c +++ b/drivers/hwmon/pmbus/ucd9200.c @@ -192,7 +192,7 @@ static int ucd9200_probe(struct i2c_client *client, if (mid->driver_data == ucd9240) info->func[0] |= PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12; - return pmbus_do_probe(client, mid, info); + return pmbus_do_probe(client, info); } /* This is the driver that will be inserted */ diff --git a/drivers/hwmon/pmbus/xdpe12284.c b/drivers/hwmon/pmbus/xdpe12284.c index d5103fc9e269..c05bc13552a7 100644 --- a/drivers/hwmon/pmbus/xdpe12284.c +++ b/drivers/hwmon/pmbus/xdpe12284.c @@ -127,8 +127,7 @@ static struct pmbus_driver_info xdpe122_info = { .read_word_data = xdpe122_read_word_data, }; -static int xdpe122_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int xdpe122_probe(struct i2c_client *client) { struct pmbus_driver_info *info; @@ -137,12 +136,12 @@ static int xdpe122_probe(struct i2c_client *client, if (!info) return -ENOMEM; - return pmbus_do_probe(client, id, info); + return pmbus_do_probe(client, info); } static const struct i2c_device_id xdpe122_id[] = { - {"xdpe12254", 0}, - {"xdpe12284", 0}, + { .name = "xdpe12254" }, + { .name = "xdpe12284" }, {} }; @@ -160,7 +159,7 @@ static struct i2c_driver xdpe122_driver = { .name = "xdpe12284", .of_match_table = of_match_ptr(xdpe122_of_match), }, - .probe = xdpe122_probe, + .probe_new = xdpe122_probe, .remove = pmbus_do_remove, .id_table = xdpe122_id, }; diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c index 3a827d0a881d..24b1b0f46a40 100644 --- a/drivers/hwmon/pmbus/zl6100.c +++ b/drivers/hwmon/pmbus/zl6100.c @@ -389,7 +389,7 @@ static int zl6100_probe(struct i2c_client *client, info->write_word_data = zl6100_write_word_data; info->write_byte = zl6100_write_byte; - return pmbus_do_probe(client, mid, info); + return pmbus_do_probe(client, info); } static struct i2c_driver zl6100_driver = {
pmbus_do_probe doesn't use the id information provided in its second argument, so this can be removed, which then allows using the single-parameter i2c probe function ("probe_new") for probes which don't use the id information either. This avoids scanning the identifier tables during probes. Additionally, in cases where the id information (driver_data) isn't used, the corresponding declarations are removed from the id_table, and .name is specified explicitly. Signed-off-by: Stephen Kitt <steve@sk2.org> --- drivers/hwmon/pmbus/bel-pfe.c | 2 +- drivers/hwmon/pmbus/ibm-cffps.c | 2 +- drivers/hwmon/pmbus/inspur-ipsps.c | 9 ++++----- drivers/hwmon/pmbus/ir35221.c | 9 ++++----- drivers/hwmon/pmbus/ir38064.c | 9 ++++----- drivers/hwmon/pmbus/irps5401.c | 9 ++++----- drivers/hwmon/pmbus/isl68137.c | 2 +- drivers/hwmon/pmbus/lm25066.c | 2 +- drivers/hwmon/pmbus/ltc2978.c | 2 +- drivers/hwmon/pmbus/ltc3815.c | 9 ++++----- drivers/hwmon/pmbus/max16064.c | 9 ++++----- drivers/hwmon/pmbus/max16601.c | 9 ++++----- drivers/hwmon/pmbus/max20730.c | 2 +- drivers/hwmon/pmbus/max20751.c | 9 ++++----- drivers/hwmon/pmbus/max31785.c | 13 ++++++------- drivers/hwmon/pmbus/max34440.c | 2 +- drivers/hwmon/pmbus/max8688.c | 9 ++++----- drivers/hwmon/pmbus/pmbus.c | 2 +- drivers/hwmon/pmbus/pmbus.h | 3 +-- drivers/hwmon/pmbus/pmbus_core.c | 3 +-- drivers/hwmon/pmbus/pxe1610.c | 13 ++++++------- drivers/hwmon/pmbus/tps40422.c | 9 ++++----- drivers/hwmon/pmbus/tps53679.c | 2 +- drivers/hwmon/pmbus/ucd9000.c | 2 +- drivers/hwmon/pmbus/ucd9200.c | 2 +- drivers/hwmon/pmbus/xdpe12284.c | 11 +++++------ drivers/hwmon/pmbus/zl6100.c | 2 +- 27 files changed, 71 insertions(+), 86 deletions(-) base-commit: bcf876870b95592b52519ed4aafcf9d95999bc9c