diff options
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/asb100.c | 124 |
1 files changed, 60 insertions, 64 deletions
diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c index 3f434de1d993..db86bc113905 100644 --- a/drivers/hwmon/asb100.c +++ b/drivers/hwmon/asb100.c | |||
@@ -47,12 +47,6 @@ | |||
47 | #include <linux/mutex.h> | 47 | #include <linux/mutex.h> |
48 | #include "lm75.h" | 48 | #include "lm75.h" |
49 | 49 | ||
50 | /* | ||
51 | HISTORY: | ||
52 | 2003-12-29 1.0.0 Ported from lm_sensors project for kernel 2.6 | ||
53 | */ | ||
54 | #define ASB100_VERSION "1.0.0" | ||
55 | |||
56 | /* I2C addresses to scan */ | 50 | /* I2C addresses to scan */ |
57 | static unsigned short normal_i2c[] = { 0x2d, I2C_CLIENT_END }; | 51 | static unsigned short normal_i2c[] = { 0x2d, I2C_CLIENT_END }; |
58 | 52 | ||
@@ -344,14 +338,14 @@ static ssize_t set_fan_div(struct device *dev, const char *buf, | |||
344 | unsigned long min; | 338 | unsigned long min; |
345 | unsigned long val = simple_strtoul(buf, NULL, 10); | 339 | unsigned long val = simple_strtoul(buf, NULL, 10); |
346 | int reg; | 340 | int reg; |
347 | 341 | ||
348 | mutex_lock(&data->update_lock); | 342 | mutex_lock(&data->update_lock); |
349 | 343 | ||
350 | min = FAN_FROM_REG(data->fan_min[nr], | 344 | min = FAN_FROM_REG(data->fan_min[nr], |
351 | DIV_FROM_REG(data->fan_div[nr])); | 345 | DIV_FROM_REG(data->fan_div[nr])); |
352 | data->fan_div[nr] = DIV_TO_REG(val); | 346 | data->fan_div[nr] = DIV_TO_REG(val); |
353 | 347 | ||
354 | switch(nr) { | 348 | switch (nr) { |
355 | case 0: /* fan 1 */ | 349 | case 0: /* fan 1 */ |
356 | reg = asb100_read_value(client, ASB100_REG_VID_FANDIV); | 350 | reg = asb100_read_value(client, ASB100_REG_VID_FANDIV); |
357 | reg = (reg & 0xcf) | (data->fan_div[0] << 4); | 351 | reg = (reg & 0xcf) | (data->fan_div[0] << 4); |
@@ -429,7 +423,7 @@ static int sprintf_temp_from_reg(u16 reg, char *buf, int nr) | |||
429 | } | 423 | } |
430 | return ret; | 424 | return ret; |
431 | } | 425 | } |
432 | 426 | ||
433 | #define show_temp_reg(reg) \ | 427 | #define show_temp_reg(reg) \ |
434 | static ssize_t show_##reg(struct device *dev, char *buf, int nr) \ | 428 | static ssize_t show_##reg(struct device *dev, char *buf, int nr) \ |
435 | { \ | 429 | { \ |
@@ -502,7 +496,8 @@ sysfs_temp(3); | |||
502 | sysfs_temp(4); | 496 | sysfs_temp(4); |
503 | 497 | ||
504 | /* VID */ | 498 | /* VID */ |
505 | static ssize_t show_vid(struct device *dev, struct device_attribute *attr, char *buf) | 499 | static ssize_t show_vid(struct device *dev, struct device_attribute *attr, |
500 | char *buf) | ||
506 | { | 501 | { |
507 | struct asb100_data *data = asb100_update_device(dev); | 502 | struct asb100_data *data = asb100_update_device(dev); |
508 | return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm)); | 503 | return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm)); |
@@ -511,13 +506,15 @@ static ssize_t show_vid(struct device *dev, struct device_attribute *attr, char | |||
511 | static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL); | 506 | static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL); |
512 | 507 | ||
513 | /* VRM */ | 508 | /* VRM */ |
514 | static ssize_t show_vrm(struct device *dev, struct device_attribute *attr, char *buf) | 509 | static ssize_t show_vrm(struct device *dev, struct device_attribute *attr, |
510 | char *buf) | ||
515 | { | 511 | { |
516 | struct asb100_data *data = dev_get_drvdata(dev); | 512 | struct asb100_data *data = dev_get_drvdata(dev); |
517 | return sprintf(buf, "%d\n", data->vrm); | 513 | return sprintf(buf, "%d\n", data->vrm); |
518 | } | 514 | } |
519 | 515 | ||
520 | static ssize_t set_vrm(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | 516 | static ssize_t set_vrm(struct device *dev, struct device_attribute *attr, |
517 | const char *buf, size_t count) | ||
521 | { | 518 | { |
522 | struct asb100_data *data = dev_get_drvdata(dev); | 519 | struct asb100_data *data = dev_get_drvdata(dev); |
523 | data->vrm = simple_strtoul(buf, NULL, 10); | 520 | data->vrm = simple_strtoul(buf, NULL, 10); |
@@ -527,7 +524,8 @@ static ssize_t set_vrm(struct device *dev, struct device_attribute *attr, const | |||
527 | /* Alarms */ | 524 | /* Alarms */ |
528 | static DEVICE_ATTR(vrm, S_IRUGO | S_IWUSR, show_vrm, set_vrm); | 525 | static DEVICE_ATTR(vrm, S_IRUGO | S_IWUSR, show_vrm, set_vrm); |
529 | 526 | ||
530 | static ssize_t show_alarms(struct device *dev, struct device_attribute *attr, char *buf) | 527 | static ssize_t show_alarms(struct device *dev, struct device_attribute *attr, |
528 | char *buf) | ||
531 | { | 529 | { |
532 | struct asb100_data *data = asb100_update_device(dev); | 530 | struct asb100_data *data = asb100_update_device(dev); |
533 | return sprintf(buf, "%u\n", data->alarms); | 531 | return sprintf(buf, "%u\n", data->alarms); |
@@ -536,13 +534,15 @@ static ssize_t show_alarms(struct device *dev, struct device_attribute *attr, ch | |||
536 | static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); | 534 | static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); |
537 | 535 | ||
538 | /* 1 PWM */ | 536 | /* 1 PWM */ |
539 | static ssize_t show_pwm1(struct device *dev, struct device_attribute *attr, char *buf) | 537 | static ssize_t show_pwm1(struct device *dev, struct device_attribute *attr, |
538 | char *buf) | ||
540 | { | 539 | { |
541 | struct asb100_data *data = asb100_update_device(dev); | 540 | struct asb100_data *data = asb100_update_device(dev); |
542 | return sprintf(buf, "%d\n", ASB100_PWM_FROM_REG(data->pwm & 0x0f)); | 541 | return sprintf(buf, "%d\n", ASB100_PWM_FROM_REG(data->pwm & 0x0f)); |
543 | } | 542 | } |
544 | 543 | ||
545 | static ssize_t set_pwm1(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) | 544 | static ssize_t set_pwm1(struct device *dev, struct device_attribute *attr, |
545 | const char *buf, size_t count) | ||
546 | { | 546 | { |
547 | struct i2c_client *client = to_i2c_client(dev); | 547 | struct i2c_client *client = to_i2c_client(dev); |
548 | struct asb100_data *data = i2c_get_clientdata(client); | 548 | struct asb100_data *data = i2c_get_clientdata(client); |
@@ -556,14 +556,15 @@ static ssize_t set_pwm1(struct device *dev, struct device_attribute *attr, const | |||
556 | return count; | 556 | return count; |
557 | } | 557 | } |
558 | 558 | ||
559 | static ssize_t show_pwm_enable1(struct device *dev, struct device_attribute *attr, char *buf) | 559 | static ssize_t show_pwm_enable1(struct device *dev, |
560 | struct device_attribute *attr, char *buf) | ||
560 | { | 561 | { |
561 | struct asb100_data *data = asb100_update_device(dev); | 562 | struct asb100_data *data = asb100_update_device(dev); |
562 | return sprintf(buf, "%d\n", (data->pwm & 0x80) ? 1 : 0); | 563 | return sprintf(buf, "%d\n", (data->pwm & 0x80) ? 1 : 0); |
563 | } | 564 | } |
564 | 565 | ||
565 | static ssize_t set_pwm_enable1(struct device *dev, struct device_attribute *attr, const char *buf, | 566 | static ssize_t set_pwm_enable1(struct device *dev, |
566 | size_t count) | 567 | struct device_attribute *attr, const char *buf, size_t count) |
567 | { | 568 | { |
568 | struct i2c_client *client = to_i2c_client(dev); | 569 | struct i2c_client *client = to_i2c_client(dev); |
569 | struct asb100_data *data = i2c_get_clientdata(client); | 570 | struct asb100_data *data = i2c_get_clientdata(client); |
@@ -653,10 +654,10 @@ static int asb100_attach_adapter(struct i2c_adapter *adapter) | |||
653 | } | 654 | } |
654 | 655 | ||
655 | static int asb100_detect_subclients(struct i2c_adapter *adapter, int address, | 656 | static int asb100_detect_subclients(struct i2c_adapter *adapter, int address, |
656 | int kind, struct i2c_client *new_client) | 657 | int kind, struct i2c_client *client) |
657 | { | 658 | { |
658 | int i, id, err; | 659 | int i, id, err; |
659 | struct asb100_data *data = i2c_get_clientdata(new_client); | 660 | struct asb100_data *data = i2c_get_clientdata(client); |
660 | 661 | ||
661 | data->lm75[0] = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 662 | data->lm75[0] = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
662 | if (!(data->lm75[0])) { | 663 | if (!(data->lm75[0])) { |
@@ -676,26 +677,26 @@ static int asb100_detect_subclients(struct i2c_adapter *adapter, int address, | |||
676 | for (i = 2; i <= 3; i++) { | 677 | for (i = 2; i <= 3; i++) { |
677 | if (force_subclients[i] < 0x48 || | 678 | if (force_subclients[i] < 0x48 || |
678 | force_subclients[i] > 0x4f) { | 679 | force_subclients[i] > 0x4f) { |
679 | dev_err(&new_client->dev, "invalid subclient " | 680 | dev_err(&client->dev, "invalid subclient " |
680 | "address %d; must be 0x48-0x4f\n", | 681 | "address %d; must be 0x48-0x4f\n", |
681 | force_subclients[i]); | 682 | force_subclients[i]); |
682 | err = -ENODEV; | 683 | err = -ENODEV; |
683 | goto ERROR_SC_2; | 684 | goto ERROR_SC_2; |
684 | } | 685 | } |
685 | } | 686 | } |
686 | asb100_write_value(new_client, ASB100_REG_I2C_SUBADDR, | 687 | asb100_write_value(client, ASB100_REG_I2C_SUBADDR, |
687 | (force_subclients[2] & 0x07) | | 688 | (force_subclients[2] & 0x07) | |
688 | ((force_subclients[3] & 0x07) <<4)); | 689 | ((force_subclients[3] & 0x07) << 4)); |
689 | data->lm75[0]->addr = force_subclients[2]; | 690 | data->lm75[0]->addr = force_subclients[2]; |
690 | data->lm75[1]->addr = force_subclients[3]; | 691 | data->lm75[1]->addr = force_subclients[3]; |
691 | } else { | 692 | } else { |
692 | int val = asb100_read_value(new_client, ASB100_REG_I2C_SUBADDR); | 693 | int val = asb100_read_value(client, ASB100_REG_I2C_SUBADDR); |
693 | data->lm75[0]->addr = 0x48 + (val & 0x07); | 694 | data->lm75[0]->addr = 0x48 + (val & 0x07); |
694 | data->lm75[1]->addr = 0x48 + ((val >> 4) & 0x07); | 695 | data->lm75[1]->addr = 0x48 + ((val >> 4) & 0x07); |
695 | } | 696 | } |
696 | 697 | ||
697 | if(data->lm75[0]->addr == data->lm75[1]->addr) { | 698 | if (data->lm75[0]->addr == data->lm75[1]->addr) { |
698 | dev_err(&new_client->dev, "duplicate addresses 0x%x " | 699 | dev_err(&client->dev, "duplicate addresses 0x%x " |
699 | "for subclients\n", data->lm75[0]->addr); | 700 | "for subclients\n", data->lm75[0]->addr); |
700 | err = -ENODEV; | 701 | err = -ENODEV; |
701 | goto ERROR_SC_2; | 702 | goto ERROR_SC_2; |
@@ -705,18 +706,17 @@ static int asb100_detect_subclients(struct i2c_adapter *adapter, int address, | |||
705 | i2c_set_clientdata(data->lm75[i], NULL); | 706 | i2c_set_clientdata(data->lm75[i], NULL); |
706 | data->lm75[i]->adapter = adapter; | 707 | data->lm75[i]->adapter = adapter; |
707 | data->lm75[i]->driver = &asb100_driver; | 708 | data->lm75[i]->driver = &asb100_driver; |
708 | data->lm75[i]->flags = 0; | ||
709 | strlcpy(data->lm75[i]->name, "asb100 subclient", I2C_NAME_SIZE); | 709 | strlcpy(data->lm75[i]->name, "asb100 subclient", I2C_NAME_SIZE); |
710 | } | 710 | } |
711 | 711 | ||
712 | if ((err = i2c_attach_client(data->lm75[0]))) { | 712 | if ((err = i2c_attach_client(data->lm75[0]))) { |
713 | dev_err(&new_client->dev, "subclient %d registration " | 713 | dev_err(&client->dev, "subclient %d registration " |
714 | "at address 0x%x failed.\n", i, data->lm75[0]->addr); | 714 | "at address 0x%x failed.\n", i, data->lm75[0]->addr); |
715 | goto ERROR_SC_2; | 715 | goto ERROR_SC_2; |
716 | } | 716 | } |
717 | 717 | ||
718 | if ((err = i2c_attach_client(data->lm75[1]))) { | 718 | if ((err = i2c_attach_client(data->lm75[1]))) { |
719 | dev_err(&new_client->dev, "subclient %d registration " | 719 | dev_err(&client->dev, "subclient %d registration " |
720 | "at address 0x%x failed.\n", i, data->lm75[1]->addr); | 720 | "at address 0x%x failed.\n", i, data->lm75[1]->addr); |
721 | goto ERROR_SC_3; | 721 | goto ERROR_SC_3; |
722 | } | 722 | } |
@@ -737,7 +737,7 @@ ERROR_SC_0: | |||
737 | static int asb100_detect(struct i2c_adapter *adapter, int address, int kind) | 737 | static int asb100_detect(struct i2c_adapter *adapter, int address, int kind) |
738 | { | 738 | { |
739 | int err; | 739 | int err; |
740 | struct i2c_client *new_client; | 740 | struct i2c_client *client; |
741 | struct asb100_data *data; | 741 | struct asb100_data *data; |
742 | 742 | ||
743 | if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) { | 743 | if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) { |
@@ -757,13 +757,12 @@ static int asb100_detect(struct i2c_adapter *adapter, int address, int kind) | |||
757 | goto ERROR0; | 757 | goto ERROR0; |
758 | } | 758 | } |
759 | 759 | ||
760 | new_client = &data->client; | 760 | client = &data->client; |
761 | mutex_init(&data->lock); | 761 | mutex_init(&data->lock); |
762 | i2c_set_clientdata(new_client, data); | 762 | i2c_set_clientdata(client, data); |
763 | new_client->addr = address; | 763 | client->addr = address; |
764 | new_client->adapter = adapter; | 764 | client->adapter = adapter; |
765 | new_client->driver = &asb100_driver; | 765 | client->driver = &asb100_driver; |
766 | new_client->flags = 0; | ||
767 | 766 | ||
768 | /* Now, we do the remaining detection. */ | 767 | /* Now, we do the remaining detection. */ |
769 | 768 | ||
@@ -773,15 +772,15 @@ static int asb100_detect(struct i2c_adapter *adapter, int address, int kind) | |||
773 | bank. */ | 772 | bank. */ |
774 | if (kind < 0) { | 773 | if (kind < 0) { |
775 | 774 | ||
776 | int val1 = asb100_read_value(new_client, ASB100_REG_BANK); | 775 | int val1 = asb100_read_value(client, ASB100_REG_BANK); |
777 | int val2 = asb100_read_value(new_client, ASB100_REG_CHIPMAN); | 776 | int val2 = asb100_read_value(client, ASB100_REG_CHIPMAN); |
778 | 777 | ||
779 | /* If we're in bank 0 */ | 778 | /* If we're in bank 0 */ |
780 | if ( (!(val1 & 0x07)) && | 779 | if ((!(val1 & 0x07)) && |
781 | /* Check for ASB100 ID (low byte) */ | 780 | /* Check for ASB100 ID (low byte) */ |
782 | ( ((!(val1 & 0x80)) && (val2 != 0x94)) || | 781 | (((!(val1 & 0x80)) && (val2 != 0x94)) || |
783 | /* Check for ASB100 ID (high byte ) */ | 782 | /* Check for ASB100 ID (high byte ) */ |
784 | ((val1 & 0x80) && (val2 != 0x06)) ) ) { | 783 | ((val1 & 0x80) && (val2 != 0x06)))) { |
785 | pr_debug("asb100.o: detect failed, " | 784 | pr_debug("asb100.o: detect failed, " |
786 | "bad chip id 0x%02x!\n", val2); | 785 | "bad chip id 0x%02x!\n", val2); |
787 | err = -ENODEV; | 786 | err = -ENODEV; |
@@ -792,19 +791,19 @@ static int asb100_detect(struct i2c_adapter *adapter, int address, int kind) | |||
792 | 791 | ||
793 | /* We have either had a force parameter, or we have already detected | 792 | /* We have either had a force parameter, or we have already detected |
794 | Winbond. Put it now into bank 0 and Vendor ID High Byte */ | 793 | Winbond. Put it now into bank 0 and Vendor ID High Byte */ |
795 | asb100_write_value(new_client, ASB100_REG_BANK, | 794 | asb100_write_value(client, ASB100_REG_BANK, |
796 | (asb100_read_value(new_client, ASB100_REG_BANK) & 0x78) | 0x80); | 795 | (asb100_read_value(client, ASB100_REG_BANK) & 0x78) | 0x80); |
797 | 796 | ||
798 | /* Determine the chip type. */ | 797 | /* Determine the chip type. */ |
799 | if (kind <= 0) { | 798 | if (kind <= 0) { |
800 | int val1 = asb100_read_value(new_client, ASB100_REG_WCHIPID); | 799 | int val1 = asb100_read_value(client, ASB100_REG_WCHIPID); |
801 | int val2 = asb100_read_value(new_client, ASB100_REG_CHIPMAN); | 800 | int val2 = asb100_read_value(client, ASB100_REG_CHIPMAN); |
802 | 801 | ||
803 | if ((val1 == 0x31) && (val2 == 0x06)) | 802 | if ((val1 == 0x31) && (val2 == 0x06)) |
804 | kind = asb100; | 803 | kind = asb100; |
805 | else { | 804 | else { |
806 | if (kind == 0) | 805 | if (kind == 0) |
807 | dev_warn(&new_client->dev, "ignoring " | 806 | dev_warn(&client->dev, "ignoring " |
808 | "'force' parameter for unknown chip " | 807 | "'force' parameter for unknown chip " |
809 | "at adapter %d, address 0x%02x.\n", | 808 | "at adapter %d, address 0x%02x.\n", |
810 | i2c_adapter_id(adapter), address); | 809 | i2c_adapter_id(adapter), address); |
@@ -814,34 +813,32 @@ static int asb100_detect(struct i2c_adapter *adapter, int address, int kind) | |||
814 | } | 813 | } |
815 | 814 | ||
816 | /* Fill in remaining client fields and put it into the global list */ | 815 | /* Fill in remaining client fields and put it into the global list */ |
817 | strlcpy(new_client->name, "asb100", I2C_NAME_SIZE); | 816 | strlcpy(client->name, "asb100", I2C_NAME_SIZE); |
818 | data->type = kind; | 817 | data->type = kind; |
819 | |||
820 | data->valid = 0; | ||
821 | mutex_init(&data->update_lock); | 818 | mutex_init(&data->update_lock); |
822 | 819 | ||
823 | /* Tell the I2C layer a new client has arrived */ | 820 | /* Tell the I2C layer a new client has arrived */ |
824 | if ((err = i2c_attach_client(new_client))) | 821 | if ((err = i2c_attach_client(client))) |
825 | goto ERROR1; | 822 | goto ERROR1; |
826 | 823 | ||
827 | /* Attach secondary lm75 clients */ | 824 | /* Attach secondary lm75 clients */ |
828 | if ((err = asb100_detect_subclients(adapter, address, kind, | 825 | if ((err = asb100_detect_subclients(adapter, address, kind, |
829 | new_client))) | 826 | client))) |
830 | goto ERROR2; | 827 | goto ERROR2; |
831 | 828 | ||
832 | /* Initialize the chip */ | 829 | /* Initialize the chip */ |
833 | asb100_init_client(new_client); | 830 | asb100_init_client(client); |
834 | 831 | ||
835 | /* A few vars need to be filled upon startup */ | 832 | /* A few vars need to be filled upon startup */ |
836 | data->fan_min[0] = asb100_read_value(new_client, ASB100_REG_FAN_MIN(0)); | 833 | data->fan_min[0] = asb100_read_value(client, ASB100_REG_FAN_MIN(0)); |
837 | data->fan_min[1] = asb100_read_value(new_client, ASB100_REG_FAN_MIN(1)); | 834 | data->fan_min[1] = asb100_read_value(client, ASB100_REG_FAN_MIN(1)); |
838 | data->fan_min[2] = asb100_read_value(new_client, ASB100_REG_FAN_MIN(2)); | 835 | data->fan_min[2] = asb100_read_value(client, ASB100_REG_FAN_MIN(2)); |
839 | 836 | ||
840 | /* Register sysfs hooks */ | 837 | /* Register sysfs hooks */ |
841 | if ((err = sysfs_create_group(&new_client->dev.kobj, &asb100_group))) | 838 | if ((err = sysfs_create_group(&client->dev.kobj, &asb100_group))) |
842 | goto ERROR3; | 839 | goto ERROR3; |
843 | 840 | ||
844 | data->hwmon_dev = hwmon_device_register(&new_client->dev); | 841 | data->hwmon_dev = hwmon_device_register(&client->dev); |
845 | if (IS_ERR(data->hwmon_dev)) { | 842 | if (IS_ERR(data->hwmon_dev)) { |
846 | err = PTR_ERR(data->hwmon_dev); | 843 | err = PTR_ERR(data->hwmon_dev); |
847 | goto ERROR4; | 844 | goto ERROR4; |
@@ -850,14 +847,14 @@ static int asb100_detect(struct i2c_adapter *adapter, int address, int kind) | |||
850 | return 0; | 847 | return 0; |
851 | 848 | ||
852 | ERROR4: | 849 | ERROR4: |
853 | sysfs_remove_group(&new_client->dev.kobj, &asb100_group); | 850 | sysfs_remove_group(&client->dev.kobj, &asb100_group); |
854 | ERROR3: | 851 | ERROR3: |
855 | i2c_detach_client(data->lm75[1]); | 852 | i2c_detach_client(data->lm75[1]); |
856 | i2c_detach_client(data->lm75[0]); | 853 | i2c_detach_client(data->lm75[0]); |
857 | kfree(data->lm75[1]); | 854 | kfree(data->lm75[1]); |
858 | kfree(data->lm75[0]); | 855 | kfree(data->lm75[0]); |
859 | ERROR2: | 856 | ERROR2: |
860 | i2c_detach_client(new_client); | 857 | i2c_detach_client(client); |
861 | ERROR1: | 858 | ERROR1: |
862 | kfree(data); | 859 | kfree(data); |
863 | ERROR0: | 860 | ERROR0: |
@@ -913,17 +910,17 @@ static int asb100_read_value(struct i2c_client *client, u16 reg) | |||
913 | /* convert from ISA to LM75 I2C addresses */ | 910 | /* convert from ISA to LM75 I2C addresses */ |
914 | switch (reg & 0xff) { | 911 | switch (reg & 0xff) { |
915 | case 0x50: /* TEMP */ | 912 | case 0x50: /* TEMP */ |
916 | res = swab16(i2c_smbus_read_word_data (cl, 0)); | 913 | res = swab16(i2c_smbus_read_word_data(cl, 0)); |
917 | break; | 914 | break; |
918 | case 0x52: /* CONFIG */ | 915 | case 0x52: /* CONFIG */ |
919 | res = i2c_smbus_read_byte_data(cl, 1); | 916 | res = i2c_smbus_read_byte_data(cl, 1); |
920 | break; | 917 | break; |
921 | case 0x53: /* HYST */ | 918 | case 0x53: /* HYST */ |
922 | res = swab16(i2c_smbus_read_word_data (cl, 2)); | 919 | res = swab16(i2c_smbus_read_word_data(cl, 2)); |
923 | break; | 920 | break; |
924 | case 0x55: /* MAX */ | 921 | case 0x55: /* MAX */ |
925 | default: | 922 | default: |
926 | res = swab16(i2c_smbus_read_word_data (cl, 3)); | 923 | res = swab16(i2c_smbus_read_word_data(cl, 3)); |
927 | break; | 924 | break; |
928 | } | 925 | } |
929 | } | 926 | } |
@@ -986,7 +983,7 @@ static void asb100_init_client(struct i2c_client *client) | |||
986 | vid = vid_from_reg(vid, data->vrm); | 983 | vid = vid_from_reg(vid, data->vrm); |
987 | 984 | ||
988 | /* Start monitoring */ | 985 | /* Start monitoring */ |
989 | asb100_write_value(client, ASB100_REG_CONFIG, | 986 | asb100_write_value(client, ASB100_REG_CONFIG, |
990 | (asb100_read_value(client, ASB100_REG_CONFIG) & 0xf7) | 0x01); | 987 | (asb100_read_value(client, ASB100_REG_CONFIG) & 0xf7) | 0x01); |
991 | } | 988 | } |
992 | 989 | ||
@@ -1075,4 +1072,3 @@ MODULE_LICENSE("GPL"); | |||
1075 | 1072 | ||
1076 | module_init(asb100_init); | 1073 | module_init(asb100_init); |
1077 | module_exit(asb100_exit); | 1074 | module_exit(asb100_exit); |
1078 | |||