diff options
Diffstat (limited to 'drivers/hwmon/w83795.c')
-rw-r--r-- | drivers/hwmon/w83795.c | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c index 07e8de58dcd4..a1d884bb58ad 100644 --- a/drivers/hwmon/w83795.c +++ b/drivers/hwmon/w83795.c | |||
@@ -1903,7 +1903,7 @@ static int w83795_probe(struct i2c_client *client, | |||
1903 | } | 1903 | } |
1904 | } | 1904 | } |
1905 | 1905 | ||
1906 | /* First update the voltages measured value and limits */ | 1906 | /* Read the voltage limits */ |
1907 | for (i = 0; i < ARRAY_SIZE(data->in); i++) { | 1907 | for (i = 0; i < ARRAY_SIZE(data->in); i++) { |
1908 | if (!(data->has_in & (1 << i))) | 1908 | if (!(data->has_in & (1 << i))) |
1909 | continue; | 1909 | continue; |
@@ -1911,9 +1911,6 @@ static int w83795_probe(struct i2c_client *client, | |||
1911 | w83795_read(client, W83795_REG_IN[i][IN_MAX]); | 1911 | w83795_read(client, W83795_REG_IN[i][IN_MAX]); |
1912 | data->in[i][IN_LOW] = | 1912 | data->in[i][IN_LOW] = |
1913 | w83795_read(client, W83795_REG_IN[i][IN_LOW]); | 1913 | w83795_read(client, W83795_REG_IN[i][IN_LOW]); |
1914 | tmp = w83795_read(client, W83795_REG_IN[i][IN_READ]) << 2; | ||
1915 | tmp |= w83795_read(client, W83795_REG_VRLSB) >> 6; | ||
1916 | data->in[i][IN_READ] = tmp; | ||
1917 | } | 1914 | } |
1918 | for (i = 0; i < ARRAY_SIZE(data->in_lsb); i++) { | 1915 | for (i = 0; i < ARRAY_SIZE(data->in_lsb); i++) { |
1919 | if ((i == 2 && data->chip_type == w83795adg) || | 1916 | if ((i == 2 && data->chip_type == w83795adg) || |
@@ -1926,7 +1923,7 @@ static int w83795_probe(struct i2c_client *client, | |||
1926 | } | 1923 | } |
1927 | data->has_gain = w83795_read(client, W83795_REG_VMIGB_CTRL) & 0x0f; | 1924 | data->has_gain = w83795_read(client, W83795_REG_VMIGB_CTRL) & 0x0f; |
1928 | 1925 | ||
1929 | /* First update fan and limits */ | 1926 | /* Read the fan limits */ |
1930 | for (i = 0; i < ARRAY_SIZE(data->fan); i++) { | 1927 | for (i = 0; i < ARRAY_SIZE(data->fan); i++) { |
1931 | /* Each register contains LSB for 2 fans, but we want to | 1928 | /* Each register contains LSB for 2 fans, but we want to |
1932 | * read it only once to save time */ | 1929 | * read it only once to save time */ |
@@ -1939,11 +1936,9 @@ static int w83795_probe(struct i2c_client *client, | |||
1939 | w83795_read(client, W83795_REG_FAN_MIN_HL(i)) << 4; | 1936 | w83795_read(client, W83795_REG_FAN_MIN_HL(i)) << 4; |
1940 | data->fan_min[i] |= | 1937 | data->fan_min[i] |= |
1941 | (tmp >> W83795_REG_FAN_MIN_LSB_SHIFT(i)) & 0x0F; | 1938 | (tmp >> W83795_REG_FAN_MIN_LSB_SHIFT(i)) & 0x0F; |
1942 | data->fan[i] = w83795_read(client, W83795_REG_FAN(i)) << 4; | ||
1943 | data->fan[i] |= w83795_read(client, W83795_REG_VRLSB) >> 4; | ||
1944 | } | 1939 | } |
1945 | 1940 | ||
1946 | /* temperature and limits */ | 1941 | /* Read the temperature limits */ |
1947 | for (i = 0; i < ARRAY_SIZE(data->temp); i++) { | 1942 | for (i = 0; i < ARRAY_SIZE(data->temp); i++) { |
1948 | if (!(data->has_temp & (1 << i))) | 1943 | if (!(data->has_temp & (1 << i))) |
1949 | continue; | 1944 | continue; |
@@ -1955,13 +1950,9 @@ static int w83795_probe(struct i2c_client *client, | |||
1955 | w83795_read(client, W83795_REG_TEMP[i][TEMP_WARN]); | 1950 | w83795_read(client, W83795_REG_TEMP[i][TEMP_WARN]); |
1956 | data->temp[i][TEMP_WARN_HYST] = | 1951 | data->temp[i][TEMP_WARN_HYST] = |
1957 | w83795_read(client, W83795_REG_TEMP[i][TEMP_WARN_HYST]); | 1952 | w83795_read(client, W83795_REG_TEMP[i][TEMP_WARN_HYST]); |
1958 | data->temp[i][TEMP_READ] = | ||
1959 | w83795_read(client, W83795_REG_TEMP[i][TEMP_READ]); | ||
1960 | data->temp_read_vrlsb[i] = | ||
1961 | w83795_read(client, W83795_REG_VRLSB); | ||
1962 | } | 1953 | } |
1963 | 1954 | ||
1964 | /* dts temperature and limits */ | 1955 | /* Read the DTS limits */ |
1965 | if (data->enable_dts != 0) { | 1956 | if (data->enable_dts != 0) { |
1966 | data->dts_ext[DTS_CRIT] = | 1957 | data->dts_ext[DTS_CRIT] = |
1967 | w83795_read(client, W83795_REG_DTS_EXT(DTS_CRIT)); | 1958 | w83795_read(client, W83795_REG_DTS_EXT(DTS_CRIT)); |
@@ -1971,13 +1962,6 @@ static int w83795_probe(struct i2c_client *client, | |||
1971 | w83795_read(client, W83795_REG_DTS_EXT(DTS_WARN)); | 1962 | w83795_read(client, W83795_REG_DTS_EXT(DTS_WARN)); |
1972 | data->dts_ext[DTS_WARN_HYST] = | 1963 | data->dts_ext[DTS_WARN_HYST] = |
1973 | w83795_read(client, W83795_REG_DTS_EXT(DTS_WARN_HYST)); | 1964 | w83795_read(client, W83795_REG_DTS_EXT(DTS_WARN_HYST)); |
1974 | for (i = 0; i < ARRAY_SIZE(data->dts); i++) { | ||
1975 | if (!(data->has_dts & (1 << i))) | ||
1976 | continue; | ||
1977 | data->dts[i] = w83795_read(client, W83795_REG_DTS(i)); | ||
1978 | data->dts_read_vrlsb[i] = | ||
1979 | w83795_read(client, W83795_REG_VRLSB); | ||
1980 | } | ||
1981 | } | 1965 | } |
1982 | 1966 | ||
1983 | /* First update temp source selction */ | 1967 | /* First update temp source selction */ |
@@ -1995,10 +1979,9 @@ static int w83795_probe(struct i2c_client *client, | |||
1995 | data->pwm_tfmr[i] = w83795_read(client, W83795_REG_TFMR(i)); | 1979 | data->pwm_tfmr[i] = w83795_read(client, W83795_REG_TFMR(i)); |
1996 | data->pwm_fomc = w83795_read(client, W83795_REG_FOMC); | 1980 | data->pwm_fomc = w83795_read(client, W83795_REG_FOMC); |
1997 | for (i = 0; i < data->has_pwm; i++) { | 1981 | for (i = 0; i < data->has_pwm; i++) { |
1998 | for (tmp = 0; tmp < 5; tmp++) { | 1982 | for (tmp = PWM_START; tmp <= PWM_FREQ; tmp++) |
1999 | data->pwm[i][tmp] = | 1983 | data->pwm[i][tmp] = |
2000 | w83795_read(client, W83795_REG_PWM(i, tmp)); | 1984 | w83795_read(client, W83795_REG_PWM(i, tmp)); |
2001 | } | ||
2002 | } | 1985 | } |
2003 | for (i = 0; i < 8; i++) { | 1986 | for (i = 0; i < 8; i++) { |
2004 | data->target_speed[i] = | 1987 | data->target_speed[i] = |
@@ -2033,11 +2016,9 @@ static int w83795_probe(struct i2c_client *client, | |||
2033 | w83795_read(client, W83795_REG_SETUP_PWM(i)); | 2016 | w83795_read(client, W83795_REG_SETUP_PWM(i)); |
2034 | } | 2017 | } |
2035 | 2018 | ||
2036 | /* alarm and beep */ | 2019 | /* Read beep settings */ |
2037 | for (i = 0; i < ARRAY_SIZE(data->alarms); i++) { | 2020 | for (i = 0; i < ARRAY_SIZE(data->beeps); i++) |
2038 | data->alarms[i] = w83795_read(client, W83795_REG_ALARM(i)); | ||
2039 | data->beeps[i] = w83795_read(client, W83795_REG_BEEP(i)); | 2021 | data->beeps[i] = w83795_read(client, W83795_REG_BEEP(i)); |
2040 | } | ||
2041 | 2022 | ||
2042 | err = w83795_handle_files(dev, device_create_file); | 2023 | err = w83795_handle_files(dev, device_create_file); |
2043 | if (err) | 2024 | if (err) |