Lines Matching refs:data
1120 static u8 f71882fg_read8(struct f71882fg_data *data, u8 reg) in f71882fg_read8() argument
1124 outb(reg, data->addr + ADDR_REG_OFFSET); in f71882fg_read8()
1125 val = inb(data->addr + DATA_REG_OFFSET); in f71882fg_read8()
1130 static u16 f71882fg_read16(struct f71882fg_data *data, u8 reg) in f71882fg_read16() argument
1134 val = f71882fg_read8(data, reg) << 8; in f71882fg_read16()
1135 val |= f71882fg_read8(data, reg + 1); in f71882fg_read16()
1140 static void f71882fg_write8(struct f71882fg_data *data, u8 reg, u8 val) in f71882fg_write8() argument
1142 outb(reg, data->addr + ADDR_REG_OFFSET); in f71882fg_write8()
1143 outb(val, data->addr + DATA_REG_OFFSET); in f71882fg_write8()
1146 static void f71882fg_write16(struct f71882fg_data *data, u8 reg, u16 val) in f71882fg_write16() argument
1148 f71882fg_write8(data, reg, val >> 8); in f71882fg_write16()
1149 f71882fg_write8(data, reg + 1, val & 0xff); in f71882fg_write16()
1152 static u16 f71882fg_read_temp(struct f71882fg_data *data, int nr) in f71882fg_read_temp() argument
1154 if (data->type == f71858fg) in f71882fg_read_temp()
1155 return f71882fg_read16(data, F71882FG_REG_TEMP(nr)); in f71882fg_read_temp()
1157 return f71882fg_read8(data, F71882FG_REG_TEMP(nr)); in f71882fg_read_temp()
1162 struct f71882fg_data *data = dev_get_drvdata(dev); in f71882fg_update_device() local
1163 int nr_fans = f71882fg_nr_fans[data->type]; in f71882fg_update_device()
1164 int nr_temps = f71882fg_nr_temps[data->type]; in f71882fg_update_device()
1167 mutex_lock(&data->update_lock); in f71882fg_update_device()
1170 if (time_after(jiffies, data->last_limits + 60 * HZ) || in f71882fg_update_device()
1171 !data->valid) { in f71882fg_update_device()
1172 if (f71882fg_has_in1_alarm[data->type]) { in f71882fg_update_device()
1173 data->in1_max = in f71882fg_update_device()
1174 f71882fg_read8(data, F71882FG_REG_IN1_HIGH); in f71882fg_update_device()
1175 data->in_beep = in f71882fg_update_device()
1176 f71882fg_read8(data, F71882FG_REG_IN_BEEP); in f71882fg_update_device()
1180 for (nr = data->temp_start; nr < nr_temps + data->temp_start; in f71882fg_update_device()
1182 data->temp_ovt[nr] = f71882fg_read8(data, in f71882fg_update_device()
1184 data->temp_high[nr] = f71882fg_read8(data, in f71882fg_update_device()
1188 if (data->type != f8000) { in f71882fg_update_device()
1189 data->temp_hyst[0] = f71882fg_read8(data, in f71882fg_update_device()
1191 data->temp_hyst[1] = f71882fg_read8(data, in f71882fg_update_device()
1195 if ((data->type != f71858fg) && (data->type != f8000)) { in f71882fg_update_device()
1196 reg = f71882fg_read8(data, F71882FG_REG_TEMP_TYPE); in f71882fg_update_device()
1197 data->temp_type[1] = (reg & 0x02) ? 2 : 4; in f71882fg_update_device()
1198 data->temp_type[2] = (reg & 0x04) ? 2 : 4; in f71882fg_update_device()
1199 data->temp_type[3] = (reg & 0x08) ? 2 : 4; in f71882fg_update_device()
1202 if (f71882fg_fan_has_beep[data->type]) in f71882fg_update_device()
1203 data->fan_beep = f71882fg_read8(data, in f71882fg_update_device()
1206 if (f71882fg_temp_has_beep[data->type]) in f71882fg_update_device()
1207 data->temp_beep = f71882fg_read8(data, in f71882fg_update_device()
1210 data->pwm_enable = f71882fg_read8(data, in f71882fg_update_device()
1212 data->pwm_auto_point_hyst[0] = in f71882fg_update_device()
1213 f71882fg_read8(data, F71882FG_REG_FAN_HYST(0)); in f71882fg_update_device()
1214 data->pwm_auto_point_hyst[1] = in f71882fg_update_device()
1215 f71882fg_read8(data, F71882FG_REG_FAN_HYST(1)); in f71882fg_update_device()
1218 data->pwm_auto_point_mapping[nr] = in f71882fg_update_device()
1219 f71882fg_read8(data, in f71882fg_update_device()
1222 switch (data->type) { in f71882fg_update_device()
1225 data->pwm_auto_point_pwm[nr][point] = in f71882fg_update_device()
1226 f71882fg_read8(data, in f71882fg_update_device()
1231 data->pwm_auto_point_temp[nr][point] = in f71882fg_update_device()
1232 f71882fg_read8(data, in f71882fg_update_device()
1239 data->pwm_auto_point_pwm[nr][0] = in f71882fg_update_device()
1240 f71882fg_read8(data, in f71882fg_update_device()
1244 data->pwm_auto_point_pwm[nr][1] = in f71882fg_update_device()
1245 f71882fg_read8(data, in f71882fg_update_device()
1248 data->pwm_auto_point_pwm[nr][4] = in f71882fg_update_device()
1249 f71882fg_read8(data, in f71882fg_update_device()
1252 data->pwm_auto_point_temp[nr][0] = in f71882fg_update_device()
1253 f71882fg_read8(data, in f71882fg_update_device()
1256 data->pwm_auto_point_temp[nr][3] = in f71882fg_update_device()
1257 f71882fg_read8(data, in f71882fg_update_device()
1263 data->last_limits = jiffies; in f71882fg_update_device()
1267 if (time_after(jiffies, data->last_updated + HZ) || !data->valid) { in f71882fg_update_device()
1268 data->temp_status = f71882fg_read8(data, in f71882fg_update_device()
1270 data->temp_diode_open = f71882fg_read8(data, in f71882fg_update_device()
1272 for (nr = data->temp_start; nr < nr_temps + data->temp_start; in f71882fg_update_device()
1274 data->temp[nr] = f71882fg_read_temp(data, nr); in f71882fg_update_device()
1276 data->fan_status = f71882fg_read8(data, in f71882fg_update_device()
1279 data->fan[nr] = f71882fg_read16(data, in f71882fg_update_device()
1281 data->fan_target[nr] = in f71882fg_update_device()
1282 f71882fg_read16(data, F71882FG_REG_FAN_TARGET(nr)); in f71882fg_update_device()
1283 data->fan_full_speed[nr] = in f71882fg_update_device()
1284 f71882fg_read16(data, in f71882fg_update_device()
1286 data->pwm[nr] = in f71882fg_update_device()
1287 f71882fg_read8(data, F71882FG_REG_PWM(nr)); in f71882fg_update_device()
1290 if (data->type == f71808a) { in f71882fg_update_device()
1291 data->fan[2] = f71882fg_read16(data, in f71882fg_update_device()
1293 data->pwm[2] = f71882fg_read8(data, in f71882fg_update_device()
1296 if (data->type == f8000) in f71882fg_update_device()
1297 data->fan[3] = f71882fg_read16(data, in f71882fg_update_device()
1300 if (f71882fg_has_in1_alarm[data->type]) in f71882fg_update_device()
1301 data->in_status = f71882fg_read8(data, in f71882fg_update_device()
1304 if (f71882fg_has_in[data->type][nr]) in f71882fg_update_device()
1305 data->in[nr] = f71882fg_read8(data, in f71882fg_update_device()
1308 data->last_updated = jiffies; in f71882fg_update_device()
1309 data->valid = 1; in f71882fg_update_device()
1312 mutex_unlock(&data->update_lock); in f71882fg_update_device()
1314 return data; in f71882fg_update_device()
1321 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan() local
1323 int speed = fan_from_reg(data->fan[nr]); in show_fan()
1334 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan_full_speed() local
1336 int speed = fan_from_reg(data->fan_full_speed[nr]); in show_fan_full_speed()
1344 struct f71882fg_data *data = dev_get_drvdata(dev); in store_fan_full_speed() local
1355 mutex_lock(&data->update_lock); in store_fan_full_speed()
1356 f71882fg_write16(data, F71882FG_REG_FAN_FULL_SPEED(nr), val); in store_fan_full_speed()
1357 data->fan_full_speed[nr] = val; in store_fan_full_speed()
1358 mutex_unlock(&data->update_lock); in store_fan_full_speed()
1366 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan_beep() local
1369 if (data->fan_beep & (1 << nr)) in show_fan_beep()
1378 struct f71882fg_data *data = dev_get_drvdata(dev); in store_fan_beep() local
1386 mutex_lock(&data->update_lock); in store_fan_beep()
1387 data->fan_beep = f71882fg_read8(data, F71882FG_REG_FAN_BEEP); in store_fan_beep()
1389 data->fan_beep |= 1 << nr; in store_fan_beep()
1391 data->fan_beep &= ~(1 << nr); in store_fan_beep()
1393 f71882fg_write8(data, F71882FG_REG_FAN_BEEP, data->fan_beep); in store_fan_beep()
1394 mutex_unlock(&data->update_lock); in store_fan_beep()
1402 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan_alarm() local
1405 if (data->fan_status & (1 << nr)) in show_fan_alarm()
1414 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in() local
1417 return sprintf(buf, "%d\n", data->in[nr] * 8); in show_in()
1423 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in_max() local
1425 return sprintf(buf, "%d\n", data->in1_max * 8); in show_in_max()
1431 struct f71882fg_data *data = dev_get_drvdata(dev); in store_in_max() local
1442 mutex_lock(&data->update_lock); in store_in_max()
1443 f71882fg_write8(data, F71882FG_REG_IN1_HIGH, val); in store_in_max()
1444 data->in1_max = val; in store_in_max()
1445 mutex_unlock(&data->update_lock); in store_in_max()
1453 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in_beep() local
1456 if (data->in_beep & (1 << nr)) in show_in_beep()
1465 struct f71882fg_data *data = dev_get_drvdata(dev); in store_in_beep() local
1473 mutex_lock(&data->update_lock); in store_in_beep()
1474 data->in_beep = f71882fg_read8(data, F71882FG_REG_IN_BEEP); in store_in_beep()
1476 data->in_beep |= 1 << nr; in store_in_beep()
1478 data->in_beep &= ~(1 << nr); in store_in_beep()
1480 f71882fg_write8(data, F71882FG_REG_IN_BEEP, data->in_beep); in store_in_beep()
1481 mutex_unlock(&data->update_lock); in store_in_beep()
1489 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in_alarm() local
1492 if (data->in_status & (1 << nr)) in show_in_alarm()
1501 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp() local
1505 if (data->type == f71858fg) { in show_temp()
1507 if (data->temp_config & 1) { in show_temp()
1508 sign = data->temp[nr] & 0x0001; in show_temp()
1509 temp = (data->temp[nr] >> 5) & 0x7ff; in show_temp()
1511 sign = data->temp[nr] & 0x8000; in show_temp()
1512 temp = (data->temp[nr] >> 5) & 0x3ff; in show_temp()
1518 temp = data->temp[nr] * 1000; in show_temp()
1526 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_max() local
1529 return sprintf(buf, "%d\n", data->temp_high[nr] * 1000); in show_temp_max()
1535 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_max() local
1546 mutex_lock(&data->update_lock); in store_temp_max()
1547 f71882fg_write8(data, F71882FG_REG_TEMP_HIGH(nr), val); in store_temp_max()
1548 data->temp_high[nr] = val; in store_temp_max()
1549 mutex_unlock(&data->update_lock); in store_temp_max()
1557 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_max_hyst() local
1561 mutex_lock(&data->update_lock); in show_temp_max_hyst()
1563 temp_max_hyst = data->temp_hyst[nr / 2] >> 4; in show_temp_max_hyst()
1565 temp_max_hyst = data->temp_hyst[nr / 2] & 0x0f; in show_temp_max_hyst()
1566 temp_max_hyst = (data->temp_high[nr] - temp_max_hyst) * 1000; in show_temp_max_hyst()
1567 mutex_unlock(&data->update_lock); in show_temp_max_hyst()
1575 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_max_hyst() local
1587 mutex_lock(&data->update_lock); in store_temp_max_hyst()
1590 data->temp_high[nr] = f71882fg_read8(data, F71882FG_REG_TEMP_HIGH(nr)); in store_temp_max_hyst()
1591 val = clamp_val(val, data->temp_high[nr] - 15, data->temp_high[nr]); in store_temp_max_hyst()
1592 val = data->temp_high[nr] - val; in store_temp_max_hyst()
1595 reg = f71882fg_read8(data, F71882FG_REG_TEMP_HYST(nr / 2)); in store_temp_max_hyst()
1600 f71882fg_write8(data, F71882FG_REG_TEMP_HYST(nr / 2), reg); in store_temp_max_hyst()
1601 data->temp_hyst[nr / 2] = reg; in store_temp_max_hyst()
1603 mutex_unlock(&data->update_lock); in store_temp_max_hyst()
1610 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_crit() local
1613 return sprintf(buf, "%d\n", data->temp_ovt[nr] * 1000); in show_temp_crit()
1619 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_crit() local
1630 mutex_lock(&data->update_lock); in store_temp_crit()
1631 f71882fg_write8(data, F71882FG_REG_TEMP_OVT(nr), val); in store_temp_crit()
1632 data->temp_ovt[nr] = val; in store_temp_crit()
1633 mutex_unlock(&data->update_lock); in store_temp_crit()
1641 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_crit_hyst() local
1645 mutex_lock(&data->update_lock); in show_temp_crit_hyst()
1647 temp_crit_hyst = data->temp_hyst[nr / 2] >> 4; in show_temp_crit_hyst()
1649 temp_crit_hyst = data->temp_hyst[nr / 2] & 0x0f; in show_temp_crit_hyst()
1650 temp_crit_hyst = (data->temp_ovt[nr] - temp_crit_hyst) * 1000; in show_temp_crit_hyst()
1651 mutex_unlock(&data->update_lock); in show_temp_crit_hyst()
1659 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_type() local
1662 return sprintf(buf, "%d\n", data->temp_type[nr]); in show_temp_type()
1668 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_beep() local
1671 if (data->temp_beep & (1 << nr)) in show_temp_beep()
1680 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_beep() local
1688 mutex_lock(&data->update_lock); in store_temp_beep()
1689 data->temp_beep = f71882fg_read8(data, F71882FG_REG_TEMP_BEEP); in store_temp_beep()
1691 data->temp_beep |= 1 << nr; in store_temp_beep()
1693 data->temp_beep &= ~(1 << nr); in store_temp_beep()
1695 f71882fg_write8(data, F71882FG_REG_TEMP_BEEP, data->temp_beep); in store_temp_beep()
1696 mutex_unlock(&data->update_lock); in store_temp_beep()
1704 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_alarm() local
1707 if (data->temp_status & (1 << nr)) in show_temp_alarm()
1716 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_fault() local
1719 if (data->temp_diode_open & (1 << nr)) in show_temp_fault()
1728 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm() local
1730 mutex_lock(&data->update_lock); in show_pwm()
1731 if (data->pwm_enable & (1 << (2 * nr))) in show_pwm()
1733 val = data->pwm[nr]; in show_pwm()
1736 val = 255 * fan_from_reg(data->fan_target[nr]) in show_pwm()
1737 / fan_from_reg(data->fan_full_speed[nr]); in show_pwm()
1739 mutex_unlock(&data->update_lock); in show_pwm()
1747 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm() local
1757 mutex_lock(&data->update_lock); in store_pwm()
1758 data->pwm_enable = f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in store_pwm()
1759 if ((data->type == f8000 && ((data->pwm_enable >> 2 * nr) & 3) != 2) || in store_pwm()
1760 (data->type != f8000 && !((data->pwm_enable >> 2 * nr) & 2))) { in store_pwm()
1764 if (data->pwm_enable & (1 << (2 * nr))) { in store_pwm()
1766 f71882fg_write8(data, F71882FG_REG_PWM(nr), val); in store_pwm()
1767 data->pwm[nr] = val; in store_pwm()
1771 full_speed = f71882fg_read16(data, in store_pwm()
1774 f71882fg_write16(data, F71882FG_REG_FAN_TARGET(nr), target); in store_pwm()
1775 data->fan_target[nr] = target; in store_pwm()
1776 data->fan_full_speed[nr] = full_speed; in store_pwm()
1779 mutex_unlock(&data->update_lock); in store_pwm()
1787 struct f71882fg_data *data = f71882fg_update_device(dev); in show_simple_pwm() local
1790 val = data->pwm[nr]; in show_simple_pwm()
1798 struct f71882fg_data *data = dev_get_drvdata(dev); in store_simple_pwm() local
1808 mutex_lock(&data->update_lock); in store_simple_pwm()
1809 f71882fg_write8(data, F71882FG_REG_PWM(nr), val); in store_simple_pwm()
1810 data->pwm[nr] = val; in store_simple_pwm()
1811 mutex_unlock(&data->update_lock); in store_simple_pwm()
1820 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_enable() local
1823 switch ((data->pwm_enable >> 2 * nr) & 3) { in show_pwm_enable()
1832 if (data->type == f8000) in show_pwm_enable()
1845 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_enable() local
1854 if (data->type == f8000 && nr == 2 && val != 2) in store_pwm_enable()
1857 mutex_lock(&data->update_lock); in store_pwm_enable()
1858 data->pwm_enable = f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in store_pwm_enable()
1860 if (data->type == f8000 && ((data->pwm_enable >> 2 * nr) & 1)) { in store_pwm_enable()
1863 data->pwm_enable &= ~(2 << (2 * nr)); in store_pwm_enable()
1866 data->pwm_enable |= 2 << (2 * nr); in store_pwm_enable()
1876 if (data->type == f71858fg && in store_pwm_enable()
1877 ((data->pwm_enable >> (2 * nr)) & 1)) { in store_pwm_enable()
1881 data->pwm_enable |= 2 << (2 * nr); in store_pwm_enable()
1884 data->pwm_enable &= ~(2 << (2 * nr)); in store_pwm_enable()
1891 f71882fg_write8(data, F71882FG_REG_PWM_ENABLE, data->pwm_enable); in store_pwm_enable()
1893 mutex_unlock(&data->update_lock); in store_pwm_enable()
1903 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_pwm() local
1907 mutex_lock(&data->update_lock); in show_pwm_auto_point_pwm()
1908 if (data->pwm_enable & (1 << (2 * pwm))) { in show_pwm_auto_point_pwm()
1910 result = data->pwm_auto_point_pwm[pwm][point]; in show_pwm_auto_point_pwm()
1913 result = 32 * 255 / (32 + data->pwm_auto_point_pwm[pwm][point]); in show_pwm_auto_point_pwm()
1915 mutex_unlock(&data->update_lock); in show_pwm_auto_point_pwm()
1924 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_pwm() local
1935 mutex_lock(&data->update_lock); in store_pwm_auto_point_pwm()
1936 data->pwm_enable = f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in store_pwm_auto_point_pwm()
1937 if (data->pwm_enable & (1 << (2 * pwm))) { in store_pwm_auto_point_pwm()
1946 f71882fg_write8(data, F71882FG_REG_POINT_PWM(pwm, point), val); in store_pwm_auto_point_pwm()
1947 data->pwm_auto_point_pwm[pwm][point] = val; in store_pwm_auto_point_pwm()
1948 mutex_unlock(&data->update_lock); in store_pwm_auto_point_pwm()
1958 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_temp_hyst() local
1962 mutex_lock(&data->update_lock); in show_pwm_auto_point_temp_hyst()
1964 result = data->pwm_auto_point_hyst[nr / 2] >> 4; in show_pwm_auto_point_temp_hyst()
1966 result = data->pwm_auto_point_hyst[nr / 2] & 0x0f; in show_pwm_auto_point_temp_hyst()
1967 result = 1000 * (data->pwm_auto_point_temp[nr][point] - result); in show_pwm_auto_point_temp_hyst()
1968 mutex_unlock(&data->update_lock); in show_pwm_auto_point_temp_hyst()
1977 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_temp_hyst() local
1989 mutex_lock(&data->update_lock); in store_pwm_auto_point_temp_hyst()
1990 data->pwm_auto_point_temp[nr][point] = in store_pwm_auto_point_temp_hyst()
1991 f71882fg_read8(data, F71882FG_REG_POINT_TEMP(nr, point)); in store_pwm_auto_point_temp_hyst()
1992 val = clamp_val(val, data->pwm_auto_point_temp[nr][point] - 15, in store_pwm_auto_point_temp_hyst()
1993 data->pwm_auto_point_temp[nr][point]); in store_pwm_auto_point_temp_hyst()
1994 val = data->pwm_auto_point_temp[nr][point] - val; in store_pwm_auto_point_temp_hyst()
1996 reg = f71882fg_read8(data, F71882FG_REG_FAN_HYST(nr / 2)); in store_pwm_auto_point_temp_hyst()
2002 f71882fg_write8(data, F71882FG_REG_FAN_HYST(nr / 2), reg); in store_pwm_auto_point_temp_hyst()
2003 data->pwm_auto_point_hyst[nr / 2] = reg; in store_pwm_auto_point_temp_hyst()
2004 mutex_unlock(&data->update_lock); in store_pwm_auto_point_temp_hyst()
2013 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_interpolate() local
2016 result = (data->pwm_auto_point_mapping[nr] >> 4) & 1; in show_pwm_interpolate()
2025 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_interpolate() local
2033 mutex_lock(&data->update_lock); in store_pwm_interpolate()
2034 data->pwm_auto_point_mapping[nr] = in store_pwm_interpolate()
2035 f71882fg_read8(data, F71882FG_REG_POINT_MAPPING(nr)); in store_pwm_interpolate()
2037 val = data->pwm_auto_point_mapping[nr] | (1 << 4); in store_pwm_interpolate()
2039 val = data->pwm_auto_point_mapping[nr] & (~(1 << 4)); in store_pwm_interpolate()
2040 f71882fg_write8(data, F71882FG_REG_POINT_MAPPING(nr), val); in store_pwm_interpolate()
2041 data->pwm_auto_point_mapping[nr] = val; in store_pwm_interpolate()
2042 mutex_unlock(&data->update_lock); in store_pwm_interpolate()
2052 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_channel() local
2055 result = 1 << ((data->pwm_auto_point_mapping[nr] & 3) - in show_pwm_auto_point_channel()
2056 data->temp_start); in show_pwm_auto_point_channel()
2065 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_channel() local
2086 val += data->temp_start; in store_pwm_auto_point_channel()
2087 mutex_lock(&data->update_lock); in store_pwm_auto_point_channel()
2088 data->pwm_auto_point_mapping[nr] = in store_pwm_auto_point_channel()
2089 f71882fg_read8(data, F71882FG_REG_POINT_MAPPING(nr)); in store_pwm_auto_point_channel()
2090 val = (data->pwm_auto_point_mapping[nr] & 0xfc) | val; in store_pwm_auto_point_channel()
2091 f71882fg_write8(data, F71882FG_REG_POINT_MAPPING(nr), val); in store_pwm_auto_point_channel()
2092 data->pwm_auto_point_mapping[nr] = val; in store_pwm_auto_point_channel()
2093 mutex_unlock(&data->update_lock); in store_pwm_auto_point_channel()
2103 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_temp() local
2107 result = data->pwm_auto_point_temp[pwm][point]; in show_pwm_auto_point_temp()
2115 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_temp() local
2126 if (data->auto_point_temp_signed) in store_pwm_auto_point_temp()
2131 mutex_lock(&data->update_lock); in store_pwm_auto_point_temp()
2132 f71882fg_write8(data, F71882FG_REG_POINT_TEMP(pwm, point), val); in store_pwm_auto_point_temp()
2133 data->pwm_auto_point_temp[pwm][point] = val; in store_pwm_auto_point_temp()
2134 mutex_unlock(&data->update_lock); in store_pwm_auto_point_temp()
2142 struct f71882fg_data *data = dev_get_drvdata(dev); in show_name() local
2143 return sprintf(buf, "%s\n", f71882fg_names[data->type]); in show_name()
2171 struct f71882fg_data *data = platform_get_drvdata(pdev); in f71882fg_create_fan_sysfs_files() local
2176 switch (data->type) { in f71882fg_create_fan_sysfs_files()
2178 if (((data->pwm_enable >> (idx * 2)) & 3) == 3) in f71882fg_create_fan_sysfs_files()
2182 if (((data->pwm_enable >> (idx * 2)) & 1) != 1) in f71882fg_create_fan_sysfs_files()
2187 err = data->pwm_enable & 0x20; in f71882fg_create_fan_sysfs_files()
2196 (data->pwm_enable >> (idx * 2)) & 3, idx + 1); in f71882fg_create_fan_sysfs_files()
2205 if (f71882fg_fan_has_beep[data->type]) { in f71882fg_create_fan_sysfs_files()
2214 (data->pwm_enable & (1 << (2 * idx))) ? "duty-cycle" : "RPM"); in f71882fg_create_fan_sysfs_files()
2217 switch (data->type) { in f71882fg_create_fan_sysfs_files()
2225 data->pwm_auto_point_mapping[idx] = in f71882fg_create_fan_sysfs_files()
2226 f71882fg_read8(data, F71882FG_REG_POINT_MAPPING(idx)); in f71882fg_create_fan_sysfs_files()
2227 if ((data->pwm_auto_point_mapping[idx] & 0x80) || in f71882fg_create_fan_sysfs_files()
2228 (data->pwm_auto_point_mapping[idx] & 3) == 0) { in f71882fg_create_fan_sysfs_files()
2240 switch (data->type) { in f71882fg_create_fan_sysfs_files()
2268 struct f71882fg_data *data; in f71882fg_probe() local
2275 data = devm_kzalloc(&pdev->dev, sizeof(struct f71882fg_data), in f71882fg_probe()
2277 if (!data) in f71882fg_probe()
2280 data->addr = platform_get_resource(pdev, IORESOURCE_IO, 0)->start; in f71882fg_probe()
2281 data->type = sio_data->type; in f71882fg_probe()
2282 data->temp_start = in f71882fg_probe()
2283 (data->type == f71858fg || data->type == f8000) ? 0 : 1; in f71882fg_probe()
2284 mutex_init(&data->update_lock); in f71882fg_probe()
2285 platform_set_drvdata(pdev, data); in f71882fg_probe()
2287 start_reg = f71882fg_read8(data, F71882FG_REG_START); in f71882fg_probe()
2303 switch (data->type) { in f71882fg_probe()
2305 data->temp_config = in f71882fg_probe()
2306 f71882fg_read8(data, F71882FG_REG_TEMP_CONFIG); in f71882fg_probe()
2307 if (data->temp_config & 0x10) in f71882fg_probe()
2333 if (f71882fg_temp_has_beep[data->type]) { in f71882fg_probe()
2343 if (f71882fg_has_in[data->type][i]) { in f71882fg_probe()
2350 if (f71882fg_has_in1_alarm[data->type]) { in f71882fg_probe()
2360 switch (data->type) { in f71882fg_probe()
2366 data->auto_point_temp_signed = 1; in f71882fg_probe()
2371 reg = f71882fg_read8(data, F71882FG_REG_FAN_FAULT_T); in f71882fg_probe()
2373 data->auto_point_temp_signed = 1; in f71882fg_probe()
2376 f71882fg_write8(data, F71882FG_REG_FAN_FAULT_T, reg); in f71882fg_probe()
2382 data->pwm_enable = in f71882fg_probe()
2383 f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in f71882fg_probe()
2392 switch (data->type) { in f71882fg_probe()
2410 data->hwmon_dev = hwmon_device_register(&pdev->dev); in f71882fg_probe()
2411 if (IS_ERR(data->hwmon_dev)) { in f71882fg_probe()
2412 err = PTR_ERR(data->hwmon_dev); in f71882fg_probe()
2413 data->hwmon_dev = NULL; in f71882fg_probe()
2426 struct f71882fg_data *data = platform_get_drvdata(pdev); in f71882fg_remove() local
2427 int nr_fans = f71882fg_nr_fans[data->type]; in f71882fg_remove()
2428 int nr_temps = f71882fg_nr_temps[data->type]; in f71882fg_remove()
2430 u8 start_reg = f71882fg_read8(data, F71882FG_REG_START); in f71882fg_remove()
2432 if (data->hwmon_dev) in f71882fg_remove()
2433 hwmon_device_unregister(data->hwmon_dev); in f71882fg_remove()
2438 switch (data->type) { in f71882fg_remove()
2440 if (data->temp_config & 0x10) in f71882fg_remove()
2459 if (f71882fg_temp_has_beep[data->type]) { in f71882fg_remove()
2466 if (f71882fg_has_in[data->type][i]) { in f71882fg_remove()
2471 if (f71882fg_has_in1_alarm[data->type]) { in f71882fg_remove()
2482 if (f71882fg_fan_has_beep[data->type]) { in f71882fg_remove()
2487 switch (data->type) { in f71882fg_remove()