Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hwmon: (adm1021) Avoid forward declaration

Reorder functions to avoid forward declaration.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>

authored by

Axel Lin and committed by
Guenter Roeck
48995bc4 d1b9c3f5

+83 -92
+83 -92
drivers/hwmon/adm1021.c
··· 98 98 u8 remote_temp_offset_prec; 99 99 }; 100 100 101 - static int adm1021_probe(struct i2c_client *client, 102 - const struct i2c_device_id *id); 103 - static int adm1021_detect(struct i2c_client *client, 104 - struct i2c_board_info *info); 105 - static void adm1021_init_client(struct i2c_client *client); 106 - static struct adm1021_data *adm1021_update_device(struct device *dev); 107 - 108 101 /* (amalysh) read only mode, otherwise any limit's writing confuse BIOS */ 109 102 static bool read_only; 110 103 104 + static struct adm1021_data *adm1021_update_device(struct device *dev) 105 + { 106 + struct adm1021_data *data = dev_get_drvdata(dev); 107 + struct i2c_client *client = data->client; 111 108 112 - static const struct i2c_device_id adm1021_id[] = { 113 - { "adm1021", adm1021 }, 114 - { "adm1023", adm1023 }, 115 - { "max1617", max1617 }, 116 - { "max1617a", max1617a }, 117 - { "thmc10", thmc10 }, 118 - { "lm84", lm84 }, 119 - { "gl523sm", gl523sm }, 120 - { "mc1066", mc1066 }, 121 - { } 122 - }; 123 - MODULE_DEVICE_TABLE(i2c, adm1021_id); 109 + mutex_lock(&data->update_lock); 124 110 125 - /* This is the driver that will be inserted */ 126 - static struct i2c_driver adm1021_driver = { 127 - .class = I2C_CLASS_HWMON, 128 - .driver = { 129 - .name = "adm1021", 130 - }, 131 - .probe = adm1021_probe, 132 - .id_table = adm1021_id, 133 - .detect = adm1021_detect, 134 - .address_list = normal_i2c, 135 - }; 111 + if (time_after(jiffies, data->last_updated + HZ + HZ / 2) 112 + || !data->valid) { 113 + int i; 114 + 115 + dev_dbg(dev, "Starting adm1021 update\n"); 116 + 117 + for (i = 0; i < 2; i++) { 118 + data->temp[i] = 1000 * 119 + (s8) i2c_smbus_read_byte_data( 120 + client, ADM1021_REG_TEMP(i)); 121 + data->temp_max[i] = 1000 * 122 + (s8) i2c_smbus_read_byte_data( 123 + client, ADM1021_REG_TOS_R(i)); 124 + if (data->type != lm84) { 125 + data->temp_min[i] = 1000 * 126 + (s8) i2c_smbus_read_byte_data(client, 127 + ADM1021_REG_THYST_R(i)); 128 + } 129 + } 130 + data->alarms = i2c_smbus_read_byte_data(client, 131 + ADM1021_REG_STATUS) & 0x7c; 132 + if (data->type == adm1023) { 133 + /* 134 + * The ADM1023 provides 3 extra bits of precision for 135 + * the remote sensor in extra registers. 136 + */ 137 + data->temp[1] += 125 * (i2c_smbus_read_byte_data( 138 + client, ADM1023_REG_REM_TEMP_PREC) >> 5); 139 + data->temp_max[1] += 125 * (i2c_smbus_read_byte_data( 140 + client, ADM1023_REG_REM_TOS_PREC) >> 5); 141 + data->temp_min[1] += 125 * (i2c_smbus_read_byte_data( 142 + client, ADM1023_REG_REM_THYST_PREC) >> 5); 143 + data->remote_temp_offset = 144 + i2c_smbus_read_byte_data(client, 145 + ADM1023_REG_REM_OFFSET); 146 + data->remote_temp_offset_prec = 147 + i2c_smbus_read_byte_data(client, 148 + ADM1023_REG_REM_OFFSET_PREC); 149 + } 150 + data->last_updated = jiffies; 151 + data->valid = 1; 152 + } 153 + 154 + mutex_unlock(&data->update_lock); 155 + 156 + return data; 157 + } 136 158 137 159 static ssize_t show_temp(struct device *dev, 138 160 struct device_attribute *devattr, char *buf) ··· 433 411 return 0; 434 412 } 435 413 414 + static void adm1021_init_client(struct i2c_client *client) 415 + { 416 + /* Enable ADC and disable suspend mode */ 417 + i2c_smbus_write_byte_data(client, ADM1021_REG_CONFIG_W, 418 + i2c_smbus_read_byte_data(client, ADM1021_REG_CONFIG_R) & 0xBF); 419 + /* Set Conversion rate to 1/sec (this can be tinkered with) */ 420 + i2c_smbus_write_byte_data(client, ADM1021_REG_CONV_RATE_W, 0x04); 421 + } 422 + 436 423 static int adm1021_probe(struct i2c_client *client, 437 424 const struct i2c_device_id *id) 438 425 { ··· 471 440 return PTR_ERR_OR_ZERO(hwmon_dev); 472 441 } 473 442 474 - static void adm1021_init_client(struct i2c_client *client) 475 - { 476 - /* Enable ADC and disable suspend mode */ 477 - i2c_smbus_write_byte_data(client, ADM1021_REG_CONFIG_W, 478 - i2c_smbus_read_byte_data(client, ADM1021_REG_CONFIG_R) & 0xBF); 479 - /* Set Conversion rate to 1/sec (this can be tinkered with) */ 480 - i2c_smbus_write_byte_data(client, ADM1021_REG_CONV_RATE_W, 0x04); 481 - } 443 + static const struct i2c_device_id adm1021_id[] = { 444 + { "adm1021", adm1021 }, 445 + { "adm1023", adm1023 }, 446 + { "max1617", max1617 }, 447 + { "max1617a", max1617a }, 448 + { "thmc10", thmc10 }, 449 + { "lm84", lm84 }, 450 + { "gl523sm", gl523sm }, 451 + { "mc1066", mc1066 }, 452 + { } 453 + }; 454 + MODULE_DEVICE_TABLE(i2c, adm1021_id); 482 455 483 - static struct adm1021_data *adm1021_update_device(struct device *dev) 484 - { 485 - struct adm1021_data *data = dev_get_drvdata(dev); 486 - struct i2c_client *client = data->client; 487 - 488 - mutex_lock(&data->update_lock); 489 - 490 - if (time_after(jiffies, data->last_updated + HZ + HZ / 2) 491 - || !data->valid) { 492 - int i; 493 - 494 - dev_dbg(dev, "Starting adm1021 update\n"); 495 - 496 - for (i = 0; i < 2; i++) { 497 - data->temp[i] = 1000 * 498 - (s8) i2c_smbus_read_byte_data( 499 - client, ADM1021_REG_TEMP(i)); 500 - data->temp_max[i] = 1000 * 501 - (s8) i2c_smbus_read_byte_data( 502 - client, ADM1021_REG_TOS_R(i)); 503 - if (data->type != lm84) { 504 - data->temp_min[i] = 1000 * 505 - (s8) i2c_smbus_read_byte_data(client, 506 - ADM1021_REG_THYST_R(i)); 507 - } 508 - } 509 - data->alarms = i2c_smbus_read_byte_data(client, 510 - ADM1021_REG_STATUS) & 0x7c; 511 - if (data->type == adm1023) { 512 - /* 513 - * The ADM1023 provides 3 extra bits of precision for 514 - * the remote sensor in extra registers. 515 - */ 516 - data->temp[1] += 125 * (i2c_smbus_read_byte_data( 517 - client, ADM1023_REG_REM_TEMP_PREC) >> 5); 518 - data->temp_max[1] += 125 * (i2c_smbus_read_byte_data( 519 - client, ADM1023_REG_REM_TOS_PREC) >> 5); 520 - data->temp_min[1] += 125 * (i2c_smbus_read_byte_data( 521 - client, ADM1023_REG_REM_THYST_PREC) >> 5); 522 - data->remote_temp_offset = 523 - i2c_smbus_read_byte_data(client, 524 - ADM1023_REG_REM_OFFSET); 525 - data->remote_temp_offset_prec = 526 - i2c_smbus_read_byte_data(client, 527 - ADM1023_REG_REM_OFFSET_PREC); 528 - } 529 - data->last_updated = jiffies; 530 - data->valid = 1; 531 - } 532 - 533 - mutex_unlock(&data->update_lock); 534 - 535 - return data; 536 - } 456 + static struct i2c_driver adm1021_driver = { 457 + .class = I2C_CLASS_HWMON, 458 + .driver = { 459 + .name = "adm1021", 460 + }, 461 + .probe = adm1021_probe, 462 + .id_table = adm1021_id, 463 + .detect = adm1021_detect, 464 + .address_list = normal_i2c, 465 + }; 537 466 538 467 module_i2c_driver(adm1021_driver); 539 468