Lines Matching refs:data

1168 static u8 f71882fg_read8(struct f71882fg_data *data, u8 reg)  in f71882fg_read8()  argument
1172 outb(reg, data->addr + ADDR_REG_OFFSET); in f71882fg_read8()
1173 val = inb(data->addr + DATA_REG_OFFSET); in f71882fg_read8()
1178 static u16 f71882fg_read16(struct f71882fg_data *data, u8 reg) in f71882fg_read16() argument
1182 val = f71882fg_read8(data, reg) << 8; in f71882fg_read16()
1183 val |= f71882fg_read8(data, reg + 1); in f71882fg_read16()
1188 static void f71882fg_write8(struct f71882fg_data *data, u8 reg, u8 val) in f71882fg_write8() argument
1190 outb(reg, data->addr + ADDR_REG_OFFSET); in f71882fg_write8()
1191 outb(val, data->addr + DATA_REG_OFFSET); in f71882fg_write8()
1194 static void f71882fg_write16(struct f71882fg_data *data, u8 reg, u16 val) in f71882fg_write16() argument
1196 f71882fg_write8(data, reg, val >> 8); in f71882fg_write16()
1197 f71882fg_write8(data, reg + 1, val & 0xff); in f71882fg_write16()
1200 static u16 f71882fg_read_temp(struct f71882fg_data *data, int nr) in f71882fg_read_temp() argument
1202 if (data->type == f71858fg) in f71882fg_read_temp()
1203 return f71882fg_read16(data, F71882FG_REG_TEMP(nr)); in f71882fg_read_temp()
1205 return f71882fg_read8(data, F71882FG_REG_TEMP(nr)); in f71882fg_read_temp()
1210 struct f71882fg_data *data = dev_get_drvdata(dev); in f71882fg_update_device() local
1211 int nr_fans = f71882fg_nr_fans[data->type]; in f71882fg_update_device()
1212 int nr_temps = f71882fg_nr_temps[data->type]; in f71882fg_update_device()
1215 mutex_lock(&data->update_lock); in f71882fg_update_device()
1218 if (time_after(jiffies, data->last_limits + 60 * HZ) || in f71882fg_update_device()
1219 !data->valid) { in f71882fg_update_device()
1220 if (f71882fg_has_in1_alarm[data->type]) { in f71882fg_update_device()
1221 if (data->type == f81866a) { in f71882fg_update_device()
1222 data->in1_max = in f71882fg_update_device()
1223 f71882fg_read8(data, in f71882fg_update_device()
1225 data->in_beep = in f71882fg_update_device()
1226 f71882fg_read8(data, in f71882fg_update_device()
1229 data->in1_max = in f71882fg_update_device()
1230 f71882fg_read8(data, in f71882fg_update_device()
1232 data->in_beep = in f71882fg_update_device()
1233 f71882fg_read8(data, in f71882fg_update_device()
1239 for (nr = data->temp_start; nr < nr_temps + data->temp_start; in f71882fg_update_device()
1241 data->temp_ovt[nr] = f71882fg_read8(data, in f71882fg_update_device()
1243 data->temp_high[nr] = f71882fg_read8(data, in f71882fg_update_device()
1247 if (data->type != f8000) { in f71882fg_update_device()
1248 data->temp_hyst[0] = f71882fg_read8(data, in f71882fg_update_device()
1250 data->temp_hyst[1] = f71882fg_read8(data, in f71882fg_update_device()
1254 if ((data->type != f71858fg) && (data->type != f8000)) { in f71882fg_update_device()
1255 reg = f71882fg_read8(data, F71882FG_REG_TEMP_TYPE); in f71882fg_update_device()
1256 data->temp_type[1] = (reg & 0x02) ? 2 : 4; in f71882fg_update_device()
1257 data->temp_type[2] = (reg & 0x04) ? 2 : 4; in f71882fg_update_device()
1258 data->temp_type[3] = (reg & 0x08) ? 2 : 4; in f71882fg_update_device()
1261 if (f71882fg_fan_has_beep[data->type]) in f71882fg_update_device()
1262 data->fan_beep = f71882fg_read8(data, in f71882fg_update_device()
1265 if (f71882fg_temp_has_beep[data->type]) in f71882fg_update_device()
1266 data->temp_beep = f71882fg_read8(data, in f71882fg_update_device()
1269 data->pwm_enable = f71882fg_read8(data, in f71882fg_update_device()
1271 data->pwm_auto_point_hyst[0] = in f71882fg_update_device()
1272 f71882fg_read8(data, F71882FG_REG_FAN_HYST(0)); in f71882fg_update_device()
1273 data->pwm_auto_point_hyst[1] = in f71882fg_update_device()
1274 f71882fg_read8(data, F71882FG_REG_FAN_HYST(1)); in f71882fg_update_device()
1277 data->pwm_auto_point_mapping[nr] = in f71882fg_update_device()
1278 f71882fg_read8(data, in f71882fg_update_device()
1281 switch (data->type) { in f71882fg_update_device()
1284 data->pwm_auto_point_pwm[nr][point] = in f71882fg_update_device()
1285 f71882fg_read8(data, in f71882fg_update_device()
1290 data->pwm_auto_point_temp[nr][point] = in f71882fg_update_device()
1291 f71882fg_read8(data, in f71882fg_update_device()
1298 data->pwm_auto_point_pwm[nr][0] = in f71882fg_update_device()
1299 f71882fg_read8(data, in f71882fg_update_device()
1303 data->pwm_auto_point_pwm[nr][1] = in f71882fg_update_device()
1304 f71882fg_read8(data, in f71882fg_update_device()
1307 data->pwm_auto_point_pwm[nr][4] = in f71882fg_update_device()
1308 f71882fg_read8(data, in f71882fg_update_device()
1311 data->pwm_auto_point_temp[nr][0] = in f71882fg_update_device()
1312 f71882fg_read8(data, in f71882fg_update_device()
1315 data->pwm_auto_point_temp[nr][3] = in f71882fg_update_device()
1316 f71882fg_read8(data, in f71882fg_update_device()
1322 data->last_limits = jiffies; in f71882fg_update_device()
1326 if (time_after(jiffies, data->last_updated + HZ) || !data->valid) { in f71882fg_update_device()
1327 data->temp_status = f71882fg_read8(data, in f71882fg_update_device()
1329 data->temp_diode_open = f71882fg_read8(data, in f71882fg_update_device()
1331 for (nr = data->temp_start; nr < nr_temps + data->temp_start; in f71882fg_update_device()
1333 data->temp[nr] = f71882fg_read_temp(data, nr); in f71882fg_update_device()
1335 data->fan_status = f71882fg_read8(data, in f71882fg_update_device()
1338 data->fan[nr] = f71882fg_read16(data, in f71882fg_update_device()
1340 data->fan_target[nr] = in f71882fg_update_device()
1341 f71882fg_read16(data, F71882FG_REG_FAN_TARGET(nr)); in f71882fg_update_device()
1342 data->fan_full_speed[nr] = in f71882fg_update_device()
1343 f71882fg_read16(data, in f71882fg_update_device()
1345 data->pwm[nr] = in f71882fg_update_device()
1346 f71882fg_read8(data, F71882FG_REG_PWM(nr)); in f71882fg_update_device()
1349 if (data->type == f71808a) { in f71882fg_update_device()
1350 data->fan[2] = f71882fg_read16(data, in f71882fg_update_device()
1352 data->pwm[2] = f71882fg_read8(data, in f71882fg_update_device()
1355 if (data->type == f8000) in f71882fg_update_device()
1356 data->fan[3] = f71882fg_read16(data, in f71882fg_update_device()
1359 if (f71882fg_has_in1_alarm[data->type]) { in f71882fg_update_device()
1360 if (data->type == f81866a) in f71882fg_update_device()
1361 data->in_status = f71882fg_read8(data, in f71882fg_update_device()
1365 data->in_status = f71882fg_read8(data, in f71882fg_update_device()
1370 if (f71882fg_has_in[data->type][nr]) in f71882fg_update_device()
1371 data->in[nr] = f71882fg_read8(data, in f71882fg_update_device()
1374 data->last_updated = jiffies; in f71882fg_update_device()
1375 data->valid = 1; in f71882fg_update_device()
1378 mutex_unlock(&data->update_lock); in f71882fg_update_device()
1380 return data; in f71882fg_update_device()
1387 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan() local
1389 int speed = fan_from_reg(data->fan[nr]); in show_fan()
1400 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan_full_speed() local
1402 int speed = fan_from_reg(data->fan_full_speed[nr]); in show_fan_full_speed()
1410 struct f71882fg_data *data = dev_get_drvdata(dev); in store_fan_full_speed() local
1421 mutex_lock(&data->update_lock); in store_fan_full_speed()
1422 f71882fg_write16(data, F71882FG_REG_FAN_FULL_SPEED(nr), val); in store_fan_full_speed()
1423 data->fan_full_speed[nr] = val; in store_fan_full_speed()
1424 mutex_unlock(&data->update_lock); in store_fan_full_speed()
1432 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan_beep() local
1435 if (data->fan_beep & (1 << nr)) in show_fan_beep()
1444 struct f71882fg_data *data = dev_get_drvdata(dev); in store_fan_beep() local
1452 mutex_lock(&data->update_lock); in store_fan_beep()
1453 data->fan_beep = f71882fg_read8(data, F71882FG_REG_FAN_BEEP); in store_fan_beep()
1455 data->fan_beep |= 1 << nr; in store_fan_beep()
1457 data->fan_beep &= ~(1 << nr); in store_fan_beep()
1459 f71882fg_write8(data, F71882FG_REG_FAN_BEEP, data->fan_beep); in store_fan_beep()
1460 mutex_unlock(&data->update_lock); in store_fan_beep()
1468 struct f71882fg_data *data = f71882fg_update_device(dev); in show_fan_alarm() local
1471 if (data->fan_status & (1 << nr)) in show_fan_alarm()
1480 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in() local
1483 return sprintf(buf, "%d\n", data->in[nr] * 8); in show_in()
1489 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in_max() local
1491 return sprintf(buf, "%d\n", data->in1_max * 8); in show_in_max()
1497 struct f71882fg_data *data = dev_get_drvdata(dev); in store_in_max() local
1508 mutex_lock(&data->update_lock); in store_in_max()
1509 if (data->type == f81866a) in store_in_max()
1510 f71882fg_write8(data, F81866_REG_IN1_HIGH, val); in store_in_max()
1512 f71882fg_write8(data, F71882FG_REG_IN1_HIGH, val); in store_in_max()
1513 data->in1_max = val; in store_in_max()
1514 mutex_unlock(&data->update_lock); in store_in_max()
1522 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in_beep() local
1525 if (data->in_beep & (1 << nr)) in show_in_beep()
1534 struct f71882fg_data *data = dev_get_drvdata(dev); in store_in_beep() local
1542 mutex_lock(&data->update_lock); in store_in_beep()
1543 if (data->type == f81866a) in store_in_beep()
1544 data->in_beep = f71882fg_read8(data, F81866_REG_IN_BEEP); in store_in_beep()
1546 data->in_beep = f71882fg_read8(data, F71882FG_REG_IN_BEEP); in store_in_beep()
1549 data->in_beep |= 1 << nr; in store_in_beep()
1551 data->in_beep &= ~(1 << nr); in store_in_beep()
1553 if (data->type == f81866a) in store_in_beep()
1554 f71882fg_write8(data, F81866_REG_IN_BEEP, data->in_beep); in store_in_beep()
1556 f71882fg_write8(data, F71882FG_REG_IN_BEEP, data->in_beep); in store_in_beep()
1557 mutex_unlock(&data->update_lock); in store_in_beep()
1565 struct f71882fg_data *data = f71882fg_update_device(dev); in show_in_alarm() local
1568 if (data->in_status & (1 << nr)) in show_in_alarm()
1577 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp() local
1581 if (data->type == f71858fg) { in show_temp()
1583 if (data->temp_config & 1) { in show_temp()
1584 sign = data->temp[nr] & 0x0001; in show_temp()
1585 temp = (data->temp[nr] >> 5) & 0x7ff; in show_temp()
1587 sign = data->temp[nr] & 0x8000; in show_temp()
1588 temp = (data->temp[nr] >> 5) & 0x3ff; in show_temp()
1594 temp = data->temp[nr] * 1000; in show_temp()
1602 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_max() local
1605 return sprintf(buf, "%d\n", data->temp_high[nr] * 1000); in show_temp_max()
1611 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_max() local
1622 mutex_lock(&data->update_lock); in store_temp_max()
1623 f71882fg_write8(data, F71882FG_REG_TEMP_HIGH(nr), val); in store_temp_max()
1624 data->temp_high[nr] = val; in store_temp_max()
1625 mutex_unlock(&data->update_lock); in store_temp_max()
1633 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_max_hyst() local
1637 mutex_lock(&data->update_lock); in show_temp_max_hyst()
1639 temp_max_hyst = data->temp_hyst[nr / 2] >> 4; in show_temp_max_hyst()
1641 temp_max_hyst = data->temp_hyst[nr / 2] & 0x0f; in show_temp_max_hyst()
1642 temp_max_hyst = (data->temp_high[nr] - temp_max_hyst) * 1000; in show_temp_max_hyst()
1643 mutex_unlock(&data->update_lock); in show_temp_max_hyst()
1651 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_max_hyst() local
1663 mutex_lock(&data->update_lock); in store_temp_max_hyst()
1666 data->temp_high[nr] = f71882fg_read8(data, F71882FG_REG_TEMP_HIGH(nr)); in store_temp_max_hyst()
1667 val = clamp_val(val, data->temp_high[nr] - 15, data->temp_high[nr]); in store_temp_max_hyst()
1668 val = data->temp_high[nr] - val; in store_temp_max_hyst()
1671 reg = f71882fg_read8(data, F71882FG_REG_TEMP_HYST(nr / 2)); in store_temp_max_hyst()
1676 f71882fg_write8(data, F71882FG_REG_TEMP_HYST(nr / 2), reg); in store_temp_max_hyst()
1677 data->temp_hyst[nr / 2] = reg; in store_temp_max_hyst()
1679 mutex_unlock(&data->update_lock); in store_temp_max_hyst()
1686 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_crit() local
1689 return sprintf(buf, "%d\n", data->temp_ovt[nr] * 1000); in show_temp_crit()
1695 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_crit() local
1706 mutex_lock(&data->update_lock); in store_temp_crit()
1707 f71882fg_write8(data, F71882FG_REG_TEMP_OVT(nr), val); in store_temp_crit()
1708 data->temp_ovt[nr] = val; in store_temp_crit()
1709 mutex_unlock(&data->update_lock); in store_temp_crit()
1717 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_crit_hyst() local
1721 mutex_lock(&data->update_lock); in show_temp_crit_hyst()
1723 temp_crit_hyst = data->temp_hyst[nr / 2] >> 4; in show_temp_crit_hyst()
1725 temp_crit_hyst = data->temp_hyst[nr / 2] & 0x0f; in show_temp_crit_hyst()
1726 temp_crit_hyst = (data->temp_ovt[nr] - temp_crit_hyst) * 1000; in show_temp_crit_hyst()
1727 mutex_unlock(&data->update_lock); in show_temp_crit_hyst()
1735 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_type() local
1738 return sprintf(buf, "%d\n", data->temp_type[nr]); in show_temp_type()
1744 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_beep() local
1747 if (data->temp_beep & (1 << nr)) in show_temp_beep()
1756 struct f71882fg_data *data = dev_get_drvdata(dev); in store_temp_beep() local
1764 mutex_lock(&data->update_lock); in store_temp_beep()
1765 data->temp_beep = f71882fg_read8(data, F71882FG_REG_TEMP_BEEP); in store_temp_beep()
1767 data->temp_beep |= 1 << nr; in store_temp_beep()
1769 data->temp_beep &= ~(1 << nr); in store_temp_beep()
1771 f71882fg_write8(data, F71882FG_REG_TEMP_BEEP, data->temp_beep); in store_temp_beep()
1772 mutex_unlock(&data->update_lock); in store_temp_beep()
1780 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_alarm() local
1783 if (data->temp_status & (1 << nr)) in show_temp_alarm()
1792 struct f71882fg_data *data = f71882fg_update_device(dev); in show_temp_fault() local
1795 if (data->temp_diode_open & (1 << nr)) in show_temp_fault()
1804 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm() local
1806 mutex_lock(&data->update_lock); in show_pwm()
1807 if (data->pwm_enable & (1 << (2 * nr))) in show_pwm()
1809 val = data->pwm[nr]; in show_pwm()
1812 val = 255 * fan_from_reg(data->fan_target[nr]) in show_pwm()
1813 / fan_from_reg(data->fan_full_speed[nr]); in show_pwm()
1815 mutex_unlock(&data->update_lock); in show_pwm()
1823 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm() local
1833 mutex_lock(&data->update_lock); in store_pwm()
1834 data->pwm_enable = f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in store_pwm()
1835 if ((data->type == f8000 && ((data->pwm_enable >> 2 * nr) & 3) != 2) || in store_pwm()
1836 (data->type != f8000 && !((data->pwm_enable >> 2 * nr) & 2))) { in store_pwm()
1840 if (data->pwm_enable & (1 << (2 * nr))) { in store_pwm()
1842 f71882fg_write8(data, F71882FG_REG_PWM(nr), val); in store_pwm()
1843 data->pwm[nr] = val; in store_pwm()
1847 full_speed = f71882fg_read16(data, in store_pwm()
1850 f71882fg_write16(data, F71882FG_REG_FAN_TARGET(nr), target); in store_pwm()
1851 data->fan_target[nr] = target; in store_pwm()
1852 data->fan_full_speed[nr] = full_speed; in store_pwm()
1855 mutex_unlock(&data->update_lock); in store_pwm()
1863 struct f71882fg_data *data = f71882fg_update_device(dev); in show_simple_pwm() local
1866 val = data->pwm[nr]; in show_simple_pwm()
1874 struct f71882fg_data *data = dev_get_drvdata(dev); in store_simple_pwm() local
1884 mutex_lock(&data->update_lock); in store_simple_pwm()
1885 f71882fg_write8(data, F71882FG_REG_PWM(nr), val); in store_simple_pwm()
1886 data->pwm[nr] = val; in store_simple_pwm()
1887 mutex_unlock(&data->update_lock); in store_simple_pwm()
1896 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_enable() local
1899 switch ((data->pwm_enable >> 2 * nr) & 3) { in show_pwm_enable()
1908 if (data->type == f8000) in show_pwm_enable()
1921 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_enable() local
1930 if (data->type == f8000 && nr == 2 && val != 2) in store_pwm_enable()
1933 mutex_lock(&data->update_lock); in store_pwm_enable()
1934 data->pwm_enable = f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in store_pwm_enable()
1936 if (data->type == f8000 && ((data->pwm_enable >> 2 * nr) & 1)) { in store_pwm_enable()
1939 data->pwm_enable &= ~(2 << (2 * nr)); in store_pwm_enable()
1942 data->pwm_enable |= 2 << (2 * nr); in store_pwm_enable()
1952 if (data->type == f71858fg && in store_pwm_enable()
1953 ((data->pwm_enable >> (2 * nr)) & 1)) { in store_pwm_enable()
1957 data->pwm_enable |= 2 << (2 * nr); in store_pwm_enable()
1960 data->pwm_enable &= ~(2 << (2 * nr)); in store_pwm_enable()
1967 f71882fg_write8(data, F71882FG_REG_PWM_ENABLE, data->pwm_enable); in store_pwm_enable()
1969 mutex_unlock(&data->update_lock); in store_pwm_enable()
1979 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_pwm() local
1983 mutex_lock(&data->update_lock); in show_pwm_auto_point_pwm()
1984 if (data->pwm_enable & (1 << (2 * pwm))) { in show_pwm_auto_point_pwm()
1986 result = data->pwm_auto_point_pwm[pwm][point]; in show_pwm_auto_point_pwm()
1989 result = 32 * 255 / (32 + data->pwm_auto_point_pwm[pwm][point]); in show_pwm_auto_point_pwm()
1991 mutex_unlock(&data->update_lock); in show_pwm_auto_point_pwm()
2000 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_pwm() local
2011 mutex_lock(&data->update_lock); in store_pwm_auto_point_pwm()
2012 data->pwm_enable = f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in store_pwm_auto_point_pwm()
2013 if (data->pwm_enable & (1 << (2 * pwm))) { in store_pwm_auto_point_pwm()
2022 f71882fg_write8(data, F71882FG_REG_POINT_PWM(pwm, point), val); in store_pwm_auto_point_pwm()
2023 data->pwm_auto_point_pwm[pwm][point] = val; in store_pwm_auto_point_pwm()
2024 mutex_unlock(&data->update_lock); in store_pwm_auto_point_pwm()
2034 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_temp_hyst() local
2038 mutex_lock(&data->update_lock); in show_pwm_auto_point_temp_hyst()
2040 result = data->pwm_auto_point_hyst[nr / 2] >> 4; in show_pwm_auto_point_temp_hyst()
2042 result = data->pwm_auto_point_hyst[nr / 2] & 0x0f; in show_pwm_auto_point_temp_hyst()
2043 result = 1000 * (data->pwm_auto_point_temp[nr][point] - result); in show_pwm_auto_point_temp_hyst()
2044 mutex_unlock(&data->update_lock); in show_pwm_auto_point_temp_hyst()
2053 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_temp_hyst() local
2065 mutex_lock(&data->update_lock); in store_pwm_auto_point_temp_hyst()
2066 data->pwm_auto_point_temp[nr][point] = in store_pwm_auto_point_temp_hyst()
2067 f71882fg_read8(data, F71882FG_REG_POINT_TEMP(nr, point)); in store_pwm_auto_point_temp_hyst()
2068 val = clamp_val(val, data->pwm_auto_point_temp[nr][point] - 15, in store_pwm_auto_point_temp_hyst()
2069 data->pwm_auto_point_temp[nr][point]); in store_pwm_auto_point_temp_hyst()
2070 val = data->pwm_auto_point_temp[nr][point] - val; in store_pwm_auto_point_temp_hyst()
2072 reg = f71882fg_read8(data, F71882FG_REG_FAN_HYST(nr / 2)); in store_pwm_auto_point_temp_hyst()
2078 f71882fg_write8(data, F71882FG_REG_FAN_HYST(nr / 2), reg); in store_pwm_auto_point_temp_hyst()
2079 data->pwm_auto_point_hyst[nr / 2] = reg; in store_pwm_auto_point_temp_hyst()
2080 mutex_unlock(&data->update_lock); in store_pwm_auto_point_temp_hyst()
2089 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_interpolate() local
2092 result = (data->pwm_auto_point_mapping[nr] >> 4) & 1; in show_pwm_interpolate()
2101 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_interpolate() local
2109 mutex_lock(&data->update_lock); in store_pwm_interpolate()
2110 data->pwm_auto_point_mapping[nr] = in store_pwm_interpolate()
2111 f71882fg_read8(data, F71882FG_REG_POINT_MAPPING(nr)); in store_pwm_interpolate()
2113 val = data->pwm_auto_point_mapping[nr] | (1 << 4); in store_pwm_interpolate()
2115 val = data->pwm_auto_point_mapping[nr] & (~(1 << 4)); in store_pwm_interpolate()
2116 f71882fg_write8(data, F71882FG_REG_POINT_MAPPING(nr), val); in store_pwm_interpolate()
2117 data->pwm_auto_point_mapping[nr] = val; in store_pwm_interpolate()
2118 mutex_unlock(&data->update_lock); in store_pwm_interpolate()
2128 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_channel() local
2131 result = 1 << ((data->pwm_auto_point_mapping[nr] & 3) - in show_pwm_auto_point_channel()
2132 data->temp_start); in show_pwm_auto_point_channel()
2141 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_channel() local
2162 val += data->temp_start; in store_pwm_auto_point_channel()
2163 mutex_lock(&data->update_lock); in store_pwm_auto_point_channel()
2164 data->pwm_auto_point_mapping[nr] = in store_pwm_auto_point_channel()
2165 f71882fg_read8(data, F71882FG_REG_POINT_MAPPING(nr)); in store_pwm_auto_point_channel()
2166 val = (data->pwm_auto_point_mapping[nr] & 0xfc) | val; in store_pwm_auto_point_channel()
2167 f71882fg_write8(data, F71882FG_REG_POINT_MAPPING(nr), val); in store_pwm_auto_point_channel()
2168 data->pwm_auto_point_mapping[nr] = val; in store_pwm_auto_point_channel()
2169 mutex_unlock(&data->update_lock); in store_pwm_auto_point_channel()
2179 struct f71882fg_data *data = f71882fg_update_device(dev); in show_pwm_auto_point_temp() local
2183 result = data->pwm_auto_point_temp[pwm][point]; in show_pwm_auto_point_temp()
2191 struct f71882fg_data *data = dev_get_drvdata(dev); in store_pwm_auto_point_temp() local
2202 if (data->auto_point_temp_signed) in store_pwm_auto_point_temp()
2207 mutex_lock(&data->update_lock); in store_pwm_auto_point_temp()
2208 f71882fg_write8(data, F71882FG_REG_POINT_TEMP(pwm, point), val); in store_pwm_auto_point_temp()
2209 data->pwm_auto_point_temp[pwm][point] = val; in store_pwm_auto_point_temp()
2210 mutex_unlock(&data->update_lock); in store_pwm_auto_point_temp()
2218 struct f71882fg_data *data = dev_get_drvdata(dev); in show_name() local
2219 return sprintf(buf, "%s\n", f71882fg_names[data->type]); in show_name()
2247 struct f71882fg_data *data = platform_get_drvdata(pdev); in f71882fg_create_fan_sysfs_files() local
2252 switch (data->type) { in f71882fg_create_fan_sysfs_files()
2254 if (((data->pwm_enable >> (idx * 2)) & 3) == 3) in f71882fg_create_fan_sysfs_files()
2258 if (((data->pwm_enable >> (idx * 2)) & 1) != 1) in f71882fg_create_fan_sysfs_files()
2263 err = data->pwm_enable & 0x20; in f71882fg_create_fan_sysfs_files()
2272 (data->pwm_enable >> (idx * 2)) & 3, idx + 1); in f71882fg_create_fan_sysfs_files()
2281 if (f71882fg_fan_has_beep[data->type]) { in f71882fg_create_fan_sysfs_files()
2290 (data->pwm_enable & (1 << (2 * idx))) ? "duty-cycle" : "RPM"); in f71882fg_create_fan_sysfs_files()
2293 switch (data->type) { in f71882fg_create_fan_sysfs_files()
2301 data->pwm_auto_point_mapping[idx] = in f71882fg_create_fan_sysfs_files()
2302 f71882fg_read8(data, F71882FG_REG_POINT_MAPPING(idx)); in f71882fg_create_fan_sysfs_files()
2303 if ((data->pwm_auto_point_mapping[idx] & 0x80) || in f71882fg_create_fan_sysfs_files()
2304 (data->pwm_auto_point_mapping[idx] & 3) == 0) { in f71882fg_create_fan_sysfs_files()
2316 switch (data->type) { in f71882fg_create_fan_sysfs_files()
2344 struct f71882fg_data *data; in f71882fg_probe() local
2352 data = devm_kzalloc(&pdev->dev, sizeof(struct f71882fg_data), in f71882fg_probe()
2354 if (!data) in f71882fg_probe()
2357 data->addr = platform_get_resource(pdev, IORESOURCE_IO, 0)->start; in f71882fg_probe()
2358 data->type = sio_data->type; in f71882fg_probe()
2359 data->temp_start = in f71882fg_probe()
2360 (data->type == f71858fg || data->type == f8000 || in f71882fg_probe()
2361 data->type == f81866a) ? 0 : 1; in f71882fg_probe()
2362 mutex_init(&data->update_lock); in f71882fg_probe()
2363 platform_set_drvdata(pdev, data); in f71882fg_probe()
2365 start_reg = f71882fg_read8(data, F71882FG_REG_START); in f71882fg_probe()
2381 switch (data->type) { in f71882fg_probe()
2383 data->temp_config = in f71882fg_probe()
2384 f71882fg_read8(data, F71882FG_REG_TEMP_CONFIG); in f71882fg_probe()
2385 if (data->temp_config & 0x10) in f71882fg_probe()
2416 if (f71882fg_temp_has_beep[data->type]) { in f71882fg_probe()
2417 if (data->type == f81866a) { in f71882fg_probe()
2434 if (f71882fg_has_in[data->type][i]) { in f71882fg_probe()
2441 if (f71882fg_has_in1_alarm[data->type]) { in f71882fg_probe()
2451 switch (data->type) { in f71882fg_probe()
2457 data->auto_point_temp_signed = 1; in f71882fg_probe()
2462 reg = f71882fg_read8(data, F71882FG_REG_FAN_FAULT_T); in f71882fg_probe()
2464 data->auto_point_temp_signed = 1; in f71882fg_probe()
2467 f71882fg_write8(data, F71882FG_REG_FAN_FAULT_T, reg); in f71882fg_probe()
2473 data->pwm_enable = in f71882fg_probe()
2474 f71882fg_read8(data, F71882FG_REG_PWM_ENABLE); in f71882fg_probe()
2483 switch (data->type) { in f71882fg_probe()
2501 data->hwmon_dev = hwmon_device_register(&pdev->dev); in f71882fg_probe()
2502 if (IS_ERR(data->hwmon_dev)) { in f71882fg_probe()
2503 err = PTR_ERR(data->hwmon_dev); in f71882fg_probe()
2504 data->hwmon_dev = NULL; in f71882fg_probe()
2517 struct f71882fg_data *data = platform_get_drvdata(pdev); in f71882fg_remove() local
2518 int nr_fans = f71882fg_nr_fans[data->type]; in f71882fg_remove()
2519 int nr_temps = f71882fg_nr_temps[data->type]; in f71882fg_remove()
2521 u8 start_reg = f71882fg_read8(data, F71882FG_REG_START); in f71882fg_remove()
2523 if (data->hwmon_dev) in f71882fg_remove()
2524 hwmon_device_unregister(data->hwmon_dev); in f71882fg_remove()
2529 switch (data->type) { in f71882fg_remove()
2531 if (data->temp_config & 0x10) in f71882fg_remove()
2555 if (f71882fg_temp_has_beep[data->type]) { in f71882fg_remove()
2556 if (data->type == f81866a) in f71882fg_remove()
2569 if (f71882fg_has_in[data->type][i]) { in f71882fg_remove()
2574 if (f71882fg_has_in1_alarm[data->type]) { in f71882fg_remove()
2585 if (f71882fg_fan_has_beep[data->type]) { in f71882fg_remove()
2590 switch (data->type) { in f71882fg_remove()