diff options
Diffstat (limited to 'drivers/hwmon')
| -rw-r--r-- | drivers/hwmon/nct6775.c | 72 | ||||
| -rw-r--r-- | drivers/hwmon/raspberrypi-hwmon.c | 1 |
2 files changed, 50 insertions, 23 deletions
diff --git a/drivers/hwmon/nct6775.c b/drivers/hwmon/nct6775.c index 944f5b63aecd..78603b78cf41 100644 --- a/drivers/hwmon/nct6775.c +++ b/drivers/hwmon/nct6775.c | |||
| @@ -207,8 +207,6 @@ superio_exit(int ioreg) | |||
| 207 | 207 | ||
| 208 | #define NUM_FAN 7 | 208 | #define NUM_FAN 7 |
| 209 | 209 | ||
| 210 | #define TEMP_SOURCE_VIRTUAL 0x1f | ||
| 211 | |||
| 212 | /* Common and NCT6775 specific data */ | 210 | /* Common and NCT6775 specific data */ |
| 213 | 211 | ||
| 214 | /* Voltage min/max registers for nr=7..14 are in bank 5 */ | 212 | /* Voltage min/max registers for nr=7..14 are in bank 5 */ |
| @@ -299,8 +297,9 @@ static const u16 NCT6775_REG_PWM_READ[] = { | |||
| 299 | 297 | ||
| 300 | static const u16 NCT6775_REG_FAN[] = { 0x630, 0x632, 0x634, 0x636, 0x638 }; | 298 | static const u16 NCT6775_REG_FAN[] = { 0x630, 0x632, 0x634, 0x636, 0x638 }; |
| 301 | static const u16 NCT6775_REG_FAN_MIN[] = { 0x3b, 0x3c, 0x3d }; | 299 | static const u16 NCT6775_REG_FAN_MIN[] = { 0x3b, 0x3c, 0x3d }; |
| 302 | static const u16 NCT6775_REG_FAN_PULSES[] = { 0x641, 0x642, 0x643, 0x644, 0 }; | 300 | static const u16 NCT6775_REG_FAN_PULSES[NUM_FAN] = { |
| 303 | static const u16 NCT6775_FAN_PULSE_SHIFT[] = { 0, 0, 0, 0, 0, 0 }; | 301 | 0x641, 0x642, 0x643, 0x644 }; |
| 302 | static const u16 NCT6775_FAN_PULSE_SHIFT[NUM_FAN] = { }; | ||
| 304 | 303 | ||
| 305 | static const u16 NCT6775_REG_TEMP[] = { | 304 | static const u16 NCT6775_REG_TEMP[] = { |
| 306 | 0x27, 0x150, 0x250, 0x62b, 0x62c, 0x62d }; | 305 | 0x27, 0x150, 0x250, 0x62b, 0x62c, 0x62d }; |
| @@ -373,6 +372,7 @@ static const char *const nct6775_temp_label[] = { | |||
| 373 | }; | 372 | }; |
| 374 | 373 | ||
| 375 | #define NCT6775_TEMP_MASK 0x001ffffe | 374 | #define NCT6775_TEMP_MASK 0x001ffffe |
| 375 | #define NCT6775_VIRT_TEMP_MASK 0x00000000 | ||
| 376 | 376 | ||
| 377 | static const u16 NCT6775_REG_TEMP_ALTERNATE[32] = { | 377 | static const u16 NCT6775_REG_TEMP_ALTERNATE[32] = { |
| 378 | [13] = 0x661, | 378 | [13] = 0x661, |
| @@ -425,8 +425,8 @@ static const u8 NCT6776_PWM_MODE_MASK[] = { 0x01, 0, 0, 0, 0, 0 }; | |||
| 425 | 425 | ||
| 426 | static const u16 NCT6776_REG_FAN_MIN[] = { | 426 | static const u16 NCT6776_REG_FAN_MIN[] = { |
| 427 | 0x63a, 0x63c, 0x63e, 0x640, 0x642, 0x64a, 0x64c }; | 427 | 0x63a, 0x63c, 0x63e, 0x640, 0x642, 0x64a, 0x64c }; |
| 428 | static const u16 NCT6776_REG_FAN_PULSES[] = { | 428 | static const u16 NCT6776_REG_FAN_PULSES[NUM_FAN] = { |
| 429 | 0x644, 0x645, 0x646, 0x647, 0x648, 0x649, 0 }; | 429 | 0x644, 0x645, 0x646, 0x647, 0x648, 0x649 }; |
| 430 | 430 | ||
| 431 | static const u16 NCT6776_REG_WEIGHT_DUTY_BASE[] = { | 431 | static const u16 NCT6776_REG_WEIGHT_DUTY_BASE[] = { |
| 432 | 0x13e, 0x23e, 0x33e, 0x83e, 0x93e, 0xa3e }; | 432 | 0x13e, 0x23e, 0x33e, 0x83e, 0x93e, 0xa3e }; |
| @@ -461,6 +461,7 @@ static const char *const nct6776_temp_label[] = { | |||
| 461 | }; | 461 | }; |
| 462 | 462 | ||
| 463 | #define NCT6776_TEMP_MASK 0x007ffffe | 463 | #define NCT6776_TEMP_MASK 0x007ffffe |
| 464 | #define NCT6776_VIRT_TEMP_MASK 0x00000000 | ||
| 464 | 465 | ||
| 465 | static const u16 NCT6776_REG_TEMP_ALTERNATE[32] = { | 466 | static const u16 NCT6776_REG_TEMP_ALTERNATE[32] = { |
| 466 | [14] = 0x401, | 467 | [14] = 0x401, |
| @@ -501,9 +502,9 @@ static const s8 NCT6779_BEEP_BITS[] = { | |||
| 501 | 30, 31 }; /* intrusion0, intrusion1 */ | 502 | 30, 31 }; /* intrusion0, intrusion1 */ |
| 502 | 503 | ||
| 503 | static const u16 NCT6779_REG_FAN[] = { | 504 | static const u16 NCT6779_REG_FAN[] = { |
| 504 | 0x4b0, 0x4b2, 0x4b4, 0x4b6, 0x4b8, 0x4ba, 0x660 }; | 505 | 0x4c0, 0x4c2, 0x4c4, 0x4c6, 0x4c8, 0x4ca, 0x4ce }; |
| 505 | static const u16 NCT6779_REG_FAN_PULSES[] = { | 506 | static const u16 NCT6779_REG_FAN_PULSES[NUM_FAN] = { |
| 506 | 0x644, 0x645, 0x646, 0x647, 0x648, 0x649, 0 }; | 507 | 0x644, 0x645, 0x646, 0x647, 0x648, 0x649 }; |
| 507 | 508 | ||
| 508 | static const u16 NCT6779_REG_CRITICAL_PWM_ENABLE[] = { | 509 | static const u16 NCT6779_REG_CRITICAL_PWM_ENABLE[] = { |
| 509 | 0x136, 0x236, 0x336, 0x836, 0x936, 0xa36, 0xb36 }; | 510 | 0x136, 0x236, 0x336, 0x836, 0x936, 0xa36, 0xb36 }; |
| @@ -559,7 +560,9 @@ static const char *const nct6779_temp_label[] = { | |||
| 559 | }; | 560 | }; |
| 560 | 561 | ||
| 561 | #define NCT6779_TEMP_MASK 0x07ffff7e | 562 | #define NCT6779_TEMP_MASK 0x07ffff7e |
| 563 | #define NCT6779_VIRT_TEMP_MASK 0x00000000 | ||
| 562 | #define NCT6791_TEMP_MASK 0x87ffff7e | 564 | #define NCT6791_TEMP_MASK 0x87ffff7e |
| 565 | #define NCT6791_VIRT_TEMP_MASK 0x80000000 | ||
| 563 | 566 | ||
| 564 | static const u16 NCT6779_REG_TEMP_ALTERNATE[32] | 567 | static const u16 NCT6779_REG_TEMP_ALTERNATE[32] |
| 565 | = { 0x490, 0x491, 0x492, 0x493, 0x494, 0x495, 0, 0, | 568 | = { 0x490, 0x491, 0x492, 0x493, 0x494, 0x495, 0, 0, |
| @@ -638,6 +641,7 @@ static const char *const nct6792_temp_label[] = { | |||
| 638 | }; | 641 | }; |
| 639 | 642 | ||
| 640 | #define NCT6792_TEMP_MASK 0x9fffff7e | 643 | #define NCT6792_TEMP_MASK 0x9fffff7e |
| 644 | #define NCT6792_VIRT_TEMP_MASK 0x80000000 | ||
| 641 | 645 | ||
| 642 | static const char *const nct6793_temp_label[] = { | 646 | static const char *const nct6793_temp_label[] = { |
| 643 | "", | 647 | "", |
| @@ -675,6 +679,7 @@ static const char *const nct6793_temp_label[] = { | |||
| 675 | }; | 679 | }; |
| 676 | 680 | ||
| 677 | #define NCT6793_TEMP_MASK 0xbfff037e | 681 | #define NCT6793_TEMP_MASK 0xbfff037e |
| 682 | #define NCT6793_VIRT_TEMP_MASK 0x80000000 | ||
| 678 | 683 | ||
| 679 | static const char *const nct6795_temp_label[] = { | 684 | static const char *const nct6795_temp_label[] = { |
| 680 | "", | 685 | "", |
| @@ -712,6 +717,7 @@ static const char *const nct6795_temp_label[] = { | |||
| 712 | }; | 717 | }; |
| 713 | 718 | ||
| 714 | #define NCT6795_TEMP_MASK 0xbfffff7e | 719 | #define NCT6795_TEMP_MASK 0xbfffff7e |
| 720 | #define NCT6795_VIRT_TEMP_MASK 0x80000000 | ||
| 715 | 721 | ||
| 716 | static const char *const nct6796_temp_label[] = { | 722 | static const char *const nct6796_temp_label[] = { |
| 717 | "", | 723 | "", |
| @@ -724,8 +730,8 @@ static const char *const nct6796_temp_label[] = { | |||
| 724 | "AUXTIN4", | 730 | "AUXTIN4", |
| 725 | "SMBUSMASTER 0", | 731 | "SMBUSMASTER 0", |
| 726 | "SMBUSMASTER 1", | 732 | "SMBUSMASTER 1", |
| 727 | "", | 733 | "Virtual_TEMP", |
| 728 | "", | 734 | "Virtual_TEMP", |
| 729 | "", | 735 | "", |
| 730 | "", | 736 | "", |
| 731 | "", | 737 | "", |
| @@ -748,7 +754,8 @@ static const char *const nct6796_temp_label[] = { | |||
| 748 | "Virtual_TEMP" | 754 | "Virtual_TEMP" |
| 749 | }; | 755 | }; |
| 750 | 756 | ||
| 751 | #define NCT6796_TEMP_MASK 0xbfff03fe | 757 | #define NCT6796_TEMP_MASK 0xbfff0ffe |
| 758 | #define NCT6796_VIRT_TEMP_MASK 0x80000c00 | ||
| 752 | 759 | ||
| 753 | /* NCT6102D/NCT6106D specific data */ | 760 | /* NCT6102D/NCT6106D specific data */ |
| 754 | 761 | ||
| @@ -779,8 +786,8 @@ static const u16 NCT6106_REG_TEMP_CONFIG[] = { | |||
| 779 | 786 | ||
| 780 | static const u16 NCT6106_REG_FAN[] = { 0x20, 0x22, 0x24 }; | 787 | static const u16 NCT6106_REG_FAN[] = { 0x20, 0x22, 0x24 }; |
| 781 | static const u16 NCT6106_REG_FAN_MIN[] = { 0xe0, 0xe2, 0xe4 }; | 788 | static const u16 NCT6106_REG_FAN_MIN[] = { 0xe0, 0xe2, 0xe4 }; |
| 782 | static const u16 NCT6106_REG_FAN_PULSES[] = { 0xf6, 0xf6, 0xf6, 0, 0 }; | 789 | static const u16 NCT6106_REG_FAN_PULSES[] = { 0xf6, 0xf6, 0xf6 }; |
| 783 | static const u16 NCT6106_FAN_PULSE_SHIFT[] = { 0, 2, 4, 0, 0 }; | 790 | static const u16 NCT6106_FAN_PULSE_SHIFT[] = { 0, 2, 4 }; |
| 784 | 791 | ||
| 785 | static const u8 NCT6106_REG_PWM_MODE[] = { 0xf3, 0xf3, 0xf3 }; | 792 | static const u8 NCT6106_REG_PWM_MODE[] = { 0xf3, 0xf3, 0xf3 }; |
| 786 | static const u8 NCT6106_PWM_MODE_MASK[] = { 0x01, 0x02, 0x04 }; | 793 | static const u8 NCT6106_PWM_MODE_MASK[] = { 0x01, 0x02, 0x04 }; |
| @@ -917,6 +924,11 @@ static unsigned int fan_from_reg16(u16 reg, unsigned int divreg) | |||
| 917 | return 1350000U / (reg << divreg); | 924 | return 1350000U / (reg << divreg); |
| 918 | } | 925 | } |
| 919 | 926 | ||
| 927 | static unsigned int fan_from_reg_rpm(u16 reg, unsigned int divreg) | ||
| 928 | { | ||
| 929 | return reg; | ||
| 930 | } | ||
| 931 | |||
| 920 | static u16 fan_to_reg(u32 fan, unsigned int divreg) | 932 | static u16 fan_to_reg(u32 fan, unsigned int divreg) |
| 921 | { | 933 | { |
| 922 | if (!fan) | 934 | if (!fan) |
| @@ -969,6 +981,7 @@ struct nct6775_data { | |||
| 969 | u16 reg_temp_config[NUM_TEMP]; | 981 | u16 reg_temp_config[NUM_TEMP]; |
| 970 | const char * const *temp_label; | 982 | const char * const *temp_label; |
| 971 | u32 temp_mask; | 983 | u32 temp_mask; |
| 984 | u32 virt_temp_mask; | ||
| 972 | 985 | ||
| 973 | u16 REG_CONFIG; | 986 | u16 REG_CONFIG; |
| 974 | u16 REG_VBAT; | 987 | u16 REG_VBAT; |
| @@ -1276,11 +1289,11 @@ static bool is_word_sized(struct nct6775_data *data, u16 reg) | |||
| 1276 | case nct6795: | 1289 | case nct6795: |
| 1277 | case nct6796: | 1290 | case nct6796: |
| 1278 | return reg == 0x150 || reg == 0x153 || reg == 0x155 || | 1291 | return reg == 0x150 || reg == 0x153 || reg == 0x155 || |
| 1279 | ((reg & 0xfff0) == 0x4b0 && (reg & 0x000f) < 0x0b) || | 1292 | (reg & 0xfff0) == 0x4c0 || |
| 1280 | reg == 0x402 || | 1293 | reg == 0x402 || |
| 1281 | reg == 0x63a || reg == 0x63c || reg == 0x63e || | 1294 | reg == 0x63a || reg == 0x63c || reg == 0x63e || |
| 1282 | reg == 0x640 || reg == 0x642 || reg == 0x64a || | 1295 | reg == 0x640 || reg == 0x642 || reg == 0x64a || |
| 1283 | reg == 0x64c || reg == 0x660 || | 1296 | reg == 0x64c || |
| 1284 | reg == 0x73 || reg == 0x75 || reg == 0x77 || reg == 0x79 || | 1297 | reg == 0x73 || reg == 0x75 || reg == 0x77 || reg == 0x79 || |
| 1285 | reg == 0x7b || reg == 0x7d; | 1298 | reg == 0x7b || reg == 0x7d; |
| 1286 | } | 1299 | } |
| @@ -1558,7 +1571,7 @@ static void nct6775_update_pwm(struct device *dev) | |||
| 1558 | reg = nct6775_read_value(data, data->REG_WEIGHT_TEMP_SEL[i]); | 1571 | reg = nct6775_read_value(data, data->REG_WEIGHT_TEMP_SEL[i]); |
| 1559 | data->pwm_weight_temp_sel[i] = reg & 0x1f; | 1572 | data->pwm_weight_temp_sel[i] = reg & 0x1f; |
| 1560 | /* If weight is disabled, report weight source as 0 */ | 1573 | /* If weight is disabled, report weight source as 0 */ |
| 1561 | if (j == 1 && !(reg & 0x80)) | 1574 | if (!(reg & 0x80)) |
| 1562 | data->pwm_weight_temp_sel[i] = 0; | 1575 | data->pwm_weight_temp_sel[i] = 0; |
| 1563 | 1576 | ||
| 1564 | /* Weight temp data */ | 1577 | /* Weight temp data */ |
| @@ -1682,9 +1695,13 @@ static struct nct6775_data *nct6775_update_device(struct device *dev) | |||
| 1682 | if (data->has_fan_min & BIT(i)) | 1695 | if (data->has_fan_min & BIT(i)) |
| 1683 | data->fan_min[i] = nct6775_read_value(data, | 1696 | data->fan_min[i] = nct6775_read_value(data, |
| 1684 | data->REG_FAN_MIN[i]); | 1697 | data->REG_FAN_MIN[i]); |
| 1685 | data->fan_pulses[i] = | 1698 | |
| 1686 | (nct6775_read_value(data, data->REG_FAN_PULSES[i]) | 1699 | if (data->REG_FAN_PULSES[i]) { |
| 1687 | >> data->FAN_PULSE_SHIFT[i]) & 0x03; | 1700 | data->fan_pulses[i] = |
| 1701 | (nct6775_read_value(data, | ||
| 1702 | data->REG_FAN_PULSES[i]) | ||
| 1703 | >> data->FAN_PULSE_SHIFT[i]) & 0x03; | ||
| 1704 | } | ||
| 1688 | 1705 | ||
| 1689 | nct6775_select_fan_div(dev, data, i, reg); | 1706 | nct6775_select_fan_div(dev, data, i, reg); |
| 1690 | } | 1707 | } |
| @@ -3639,6 +3656,7 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 3639 | 3656 | ||
| 3640 | data->temp_label = nct6776_temp_label; | 3657 | data->temp_label = nct6776_temp_label; |
| 3641 | data->temp_mask = NCT6776_TEMP_MASK; | 3658 | data->temp_mask = NCT6776_TEMP_MASK; |
| 3659 | data->virt_temp_mask = NCT6776_VIRT_TEMP_MASK; | ||
| 3642 | 3660 | ||
| 3643 | data->REG_VBAT = NCT6106_REG_VBAT; | 3661 | data->REG_VBAT = NCT6106_REG_VBAT; |
| 3644 | data->REG_DIODE = NCT6106_REG_DIODE; | 3662 | data->REG_DIODE = NCT6106_REG_DIODE; |
| @@ -3717,6 +3735,7 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 3717 | 3735 | ||
| 3718 | data->temp_label = nct6775_temp_label; | 3736 | data->temp_label = nct6775_temp_label; |
| 3719 | data->temp_mask = NCT6775_TEMP_MASK; | 3737 | data->temp_mask = NCT6775_TEMP_MASK; |
| 3738 | data->virt_temp_mask = NCT6775_VIRT_TEMP_MASK; | ||
| 3720 | 3739 | ||
| 3721 | data->REG_CONFIG = NCT6775_REG_CONFIG; | 3740 | data->REG_CONFIG = NCT6775_REG_CONFIG; |
| 3722 | data->REG_VBAT = NCT6775_REG_VBAT; | 3741 | data->REG_VBAT = NCT6775_REG_VBAT; |
| @@ -3789,6 +3808,7 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 3789 | 3808 | ||
| 3790 | data->temp_label = nct6776_temp_label; | 3809 | data->temp_label = nct6776_temp_label; |
| 3791 | data->temp_mask = NCT6776_TEMP_MASK; | 3810 | data->temp_mask = NCT6776_TEMP_MASK; |
| 3811 | data->virt_temp_mask = NCT6776_VIRT_TEMP_MASK; | ||
| 3792 | 3812 | ||
| 3793 | data->REG_CONFIG = NCT6775_REG_CONFIG; | 3813 | data->REG_CONFIG = NCT6775_REG_CONFIG; |
| 3794 | data->REG_VBAT = NCT6775_REG_VBAT; | 3814 | data->REG_VBAT = NCT6775_REG_VBAT; |
| @@ -3853,7 +3873,7 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 3853 | data->ALARM_BITS = NCT6779_ALARM_BITS; | 3873 | data->ALARM_BITS = NCT6779_ALARM_BITS; |
| 3854 | data->BEEP_BITS = NCT6779_BEEP_BITS; | 3874 | data->BEEP_BITS = NCT6779_BEEP_BITS; |
| 3855 | 3875 | ||
| 3856 | data->fan_from_reg = fan_from_reg13; | 3876 | data->fan_from_reg = fan_from_reg_rpm; |
| 3857 | data->fan_from_reg_min = fan_from_reg13; | 3877 | data->fan_from_reg_min = fan_from_reg13; |
| 3858 | data->target_temp_mask = 0xff; | 3878 | data->target_temp_mask = 0xff; |
| 3859 | data->tolerance_mask = 0x07; | 3879 | data->tolerance_mask = 0x07; |
| @@ -3861,6 +3881,7 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 3861 | 3881 | ||
| 3862 | data->temp_label = nct6779_temp_label; | 3882 | data->temp_label = nct6779_temp_label; |
| 3863 | data->temp_mask = NCT6779_TEMP_MASK; | 3883 | data->temp_mask = NCT6779_TEMP_MASK; |
| 3884 | data->virt_temp_mask = NCT6779_VIRT_TEMP_MASK; | ||
| 3864 | 3885 | ||
| 3865 | data->REG_CONFIG = NCT6775_REG_CONFIG; | 3886 | data->REG_CONFIG = NCT6775_REG_CONFIG; |
| 3866 | data->REG_VBAT = NCT6775_REG_VBAT; | 3887 | data->REG_VBAT = NCT6775_REG_VBAT; |
| @@ -3933,7 +3954,7 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 3933 | data->ALARM_BITS = NCT6791_ALARM_BITS; | 3954 | data->ALARM_BITS = NCT6791_ALARM_BITS; |
| 3934 | data->BEEP_BITS = NCT6779_BEEP_BITS; | 3955 | data->BEEP_BITS = NCT6779_BEEP_BITS; |
| 3935 | 3956 | ||
| 3936 | data->fan_from_reg = fan_from_reg13; | 3957 | data->fan_from_reg = fan_from_reg_rpm; |
| 3937 | data->fan_from_reg_min = fan_from_reg13; | 3958 | data->fan_from_reg_min = fan_from_reg13; |
| 3938 | data->target_temp_mask = 0xff; | 3959 | data->target_temp_mask = 0xff; |
| 3939 | data->tolerance_mask = 0x07; | 3960 | data->tolerance_mask = 0x07; |
| @@ -3944,22 +3965,27 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 3944 | case nct6791: | 3965 | case nct6791: |
| 3945 | data->temp_label = nct6779_temp_label; | 3966 | data->temp_label = nct6779_temp_label; |
| 3946 | data->temp_mask = NCT6791_TEMP_MASK; | 3967 | data->temp_mask = NCT6791_TEMP_MASK; |
| 3968 | data->virt_temp_mask = NCT6791_VIRT_TEMP_MASK; | ||
| 3947 | break; | 3969 | break; |
| 3948 | case nct6792: | 3970 | case nct6792: |
| 3949 | data->temp_label = nct6792_temp_label; | 3971 | data->temp_label = nct6792_temp_label; |
| 3950 | data->temp_mask = NCT6792_TEMP_MASK; | 3972 | data->temp_mask = NCT6792_TEMP_MASK; |
| 3973 | data->virt_temp_mask = NCT6792_VIRT_TEMP_MASK; | ||
| 3951 | break; | 3974 | break; |
| 3952 | case nct6793: | 3975 | case nct6793: |
| 3953 | data->temp_label = nct6793_temp_label; | 3976 | data->temp_label = nct6793_temp_label; |
| 3954 | data->temp_mask = NCT6793_TEMP_MASK; | 3977 | data->temp_mask = NCT6793_TEMP_MASK; |
| 3978 | data->virt_temp_mask = NCT6793_VIRT_TEMP_MASK; | ||
| 3955 | break; | 3979 | break; |
| 3956 | case nct6795: | 3980 | case nct6795: |
| 3957 | data->temp_label = nct6795_temp_label; | 3981 | data->temp_label = nct6795_temp_label; |
| 3958 | data->temp_mask = NCT6795_TEMP_MASK; | 3982 | data->temp_mask = NCT6795_TEMP_MASK; |
| 3983 | data->virt_temp_mask = NCT6795_VIRT_TEMP_MASK; | ||
| 3959 | break; | 3984 | break; |
| 3960 | case nct6796: | 3985 | case nct6796: |
| 3961 | data->temp_label = nct6796_temp_label; | 3986 | data->temp_label = nct6796_temp_label; |
| 3962 | data->temp_mask = NCT6796_TEMP_MASK; | 3987 | data->temp_mask = NCT6796_TEMP_MASK; |
| 3988 | data->virt_temp_mask = NCT6796_VIRT_TEMP_MASK; | ||
| 3963 | break; | 3989 | break; |
| 3964 | } | 3990 | } |
| 3965 | 3991 | ||
| @@ -4143,7 +4169,7 @@ static int nct6775_probe(struct platform_device *pdev) | |||
| 4143 | * for each fan reflects a different temperature, and there | 4169 | * for each fan reflects a different temperature, and there |
| 4144 | * are no duplicates. | 4170 | * are no duplicates. |
| 4145 | */ | 4171 | */ |
| 4146 | if (src != TEMP_SOURCE_VIRTUAL) { | 4172 | if (!(data->virt_temp_mask & BIT(src))) { |
| 4147 | if (mask & BIT(src)) | 4173 | if (mask & BIT(src)) |
| 4148 | continue; | 4174 | continue; |
| 4149 | mask |= BIT(src); | 4175 | mask |= BIT(src); |
diff --git a/drivers/hwmon/raspberrypi-hwmon.c b/drivers/hwmon/raspberrypi-hwmon.c index fb4e4a6bb1f6..be5ba4690895 100644 --- a/drivers/hwmon/raspberrypi-hwmon.c +++ b/drivers/hwmon/raspberrypi-hwmon.c | |||
| @@ -164,3 +164,4 @@ module_platform_driver(rpi_hwmon_driver); | |||
| 164 | MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>"); | 164 | MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>"); |
| 165 | MODULE_DESCRIPTION("Raspberry Pi voltage sensor driver"); | 165 | MODULE_DESCRIPTION("Raspberry Pi voltage sensor driver"); |
| 166 | MODULE_LICENSE("GPL v2"); | 166 | MODULE_LICENSE("GPL v2"); |
| 167 | MODULE_ALIAS("platform:raspberrypi-hwmon"); | ||
