Lines Matching refs:data

44  * the data in the registers and the cache in sync at any time).
144 static inline int pc87427_read8(struct pc87427_data *data, u8 ldi, u8 reg)
146 return inb(data->address[ldi] + reg);
149 /* Must be called with data->lock held, except during init */
150 static inline int pc87427_read8_bank(struct pc87427_data *data, u8 ldi,
153 outb(bank, data->address[ldi] + PC87427_REG_BANK);
154 return inb(data->address[ldi] + reg);
157 /* Must be called with data->lock held, except during init */
158 static inline void pc87427_write8_bank(struct pc87427_data *data, u8 ldi,
161 outb(bank, data->address[ldi] + PC87427_REG_BANK);
162 outb(value, data->address[ldi] + reg);
169 /* fan data registers are 16-bit wide */
181 * Must be called with data->lock held.
184 static void pc87427_readall_fan(struct pc87427_data *data, u8 nr)
186 int iobase = data->address[LD_FAN];
189 data->fan[nr] = inw(iobase + PC87427_REG_FAN);
190 data->fan_min[nr] = inw(iobase + PC87427_REG_FAN_MIN);
191 data->fan_status[nr] = inb(iobase + PC87427_REG_FAN_STATUS);
193 outb(data->fan_status[nr], iobase + PC87427_REG_FAN_STATUS);
236 * Must be called with data->lock held.
239 static void pc87427_readall_pwm(struct pc87427_data *data, u8 nr)
241 int iobase = data->address[LD_FAN];
244 data->pwm_enable[nr] = inb(iobase + PC87427_REG_PWM_ENABLE);
245 data->pwm[nr] = inb(iobase + PC87427_REG_PWM_DUTY);
300 * Must be called with data->lock held.
303 static void pc87427_readall_temp(struct pc87427_data *data, u8 nr)
305 int iobase = data->address[LD_TEMP];
308 data->temp[nr] = le16_to_cpu(inw(iobase + PC87427_REG_TEMP));
309 data->temp_max[nr] = inb(iobase + PC87427_REG_TEMP_MAX);
310 data->temp_min[nr] = inb(iobase + PC87427_REG_TEMP_MIN);
311 data->temp_crit[nr] = inb(iobase + PC87427_REG_TEMP_CRIT);
312 data->temp_type[nr] = inb(iobase + PC87427_REG_TEMP_TYPE);
313 data->temp_status[nr] = inb(iobase + PC87427_REG_TEMP_STATUS);
315 outb(data->temp_status[nr], iobase + PC87427_REG_TEMP_STATUS);
351 struct pc87427_data *data = dev_get_drvdata(dev);
354 mutex_lock(&data->lock);
355 if (!time_after(jiffies, data->last_updated + HZ)
356 && data->last_updated)
361 if (!(data->fan_enabled & (1 << i)))
363 pc87427_readall_fan(data, i);
368 if (!(data->pwm_enabled & (1 << i)))
370 pc87427_readall_pwm(data, i);
375 if (!(data->temp_enabled & (1 << i)))
377 pc87427_readall_temp(data, i);
380 data->last_updated = jiffies;
383 mutex_unlock(&data->lock);
384 return data;
390 struct pc87427_data *data = pc87427_update_device(dev);
393 return sprintf(buf, "%lu\n", fan_from_reg(data->fan[nr]));
399 struct pc87427_data *data = pc87427_update_device(dev);
402 return sprintf(buf, "%lu\n", fan_from_reg(data->fan_min[nr]));
408 struct pc87427_data *data = pc87427_update_device(dev);
411 return sprintf(buf, "%d\n", !!(data->fan_status[nr]
418 struct pc87427_data *data = pc87427_update_device(dev);
421 return sprintf(buf, "%d\n", !!(data->fan_status[nr]
429 struct pc87427_data *data = dev_get_drvdata(dev);
432 int iobase = data->address[LD_FAN];
437 mutex_lock(&data->lock);
445 data->fan_min[nr] = fan_to_reg(val);
446 outw(data->fan_min[nr], iobase + PC87427_REG_FAN_MIN);
448 mutex_unlock(&data->lock);
553 * Must be called with data->lock held and pc87427_readall_pwm() freshly
556 static void update_pwm_enable(struct pc87427_data *data, int nr, u8 mode)
558 int iobase = data->address[LD_FAN];
559 data->pwm_enable[nr] &= ~PWM_ENABLE_MODE_MASK;
560 data->pwm_enable[nr] |= mode;
561 outb(data->pwm_enable[nr], iobase + PC87427_REG_PWM_ENABLE);
567 struct pc87427_data *data = pc87427_update_device(dev);
571 pwm_enable = pwm_enable_from_reg(data->pwm_enable[nr]);
581 struct pc87427_data *data = dev_get_drvdata(dev);
588 if (val == 2 && !(data->pwm_auto_ok & (1 << nr)))
591 mutex_lock(&data->lock);
592 pc87427_readall_pwm(data, nr);
593 update_pwm_enable(data, nr, pwm_enable_to_reg(val, data->pwm[nr]));
594 mutex_unlock(&data->lock);
602 struct pc87427_data *data = pc87427_update_device(dev);
605 return sprintf(buf, "%d\n", (int)data->pwm[nr]);
611 struct pc87427_data *data = dev_get_drvdata(dev);
614 int iobase = data->address[LD_FAN];
620 mutex_lock(&data->lock);
621 pc87427_readall_pwm(data, nr);
622 mode = data->pwm_enable[nr] & PWM_ENABLE_MODE_MASK;
627 mutex_unlock(&data->lock);
634 update_pwm_enable(data, nr, PWM_MODE_OFF);
640 update_pwm_enable(data, nr, PWM_MODE_MANUAL);
646 data->pwm[nr] = val;
649 mutex_unlock(&data->lock);
694 struct pc87427_data *data = pc87427_update_device(dev);
697 return sprintf(buf, "%ld\n", temp_from_reg(data->temp[nr]));
703 struct pc87427_data *data = pc87427_update_device(dev);
706 return sprintf(buf, "%ld\n", temp_from_reg8(data->temp_min[nr]));
712 struct pc87427_data *data = pc87427_update_device(dev);
715 return sprintf(buf, "%ld\n", temp_from_reg8(data->temp_max[nr]));
721 struct pc87427_data *data = pc87427_update_device(dev);
724 return sprintf(buf, "%ld\n", temp_from_reg8(data->temp_crit[nr]));
730 struct pc87427_data *data = pc87427_update_device(dev);
733 return sprintf(buf, "%u\n", temp_type_from_reg(data->temp_type[nr]));
740 struct pc87427_data *data = pc87427_update_device(dev);
743 return sprintf(buf, "%d\n", !!(data->temp_status[nr]
751 struct pc87427_data *data = pc87427_update_device(dev);
754 return sprintf(buf, "%d\n", !!(data->temp_status[nr]
762 struct pc87427_data *data = pc87427_update_device(dev);
765 return sprintf(buf, "%d\n", !!(data->temp_status[nr]
772 struct pc87427_data *data = pc87427_update_device(dev);
775 return sprintf(buf, "%d\n", !!(data->temp_status[nr]
924 struct pc87427_data *data = dev_get_drvdata(dev);
926 return sprintf(buf, "%s\n", data->name);
962 struct pc87427_data *data = dev_get_drvdata(dev);
967 reg = pc87427_read8(data, LD_FAN, PC87427_REG_BANK);
975 reg = pc87427_read8_bank(data, LD_FAN, BANK_FM(i),
978 data->fan_enabled |= (1 << i);
981 if (!data->fan_enabled) {
986 pc87427_write8_bank(data, LD_FAN, BANK_FM(i),
990 data->fan_enabled = sio_data->has_fanin;
997 reg = pc87427_read8_bank(data, LD_FAN, BANK_FC(i),
1000 data->pwm_enabled |= (1 << i);
1010 data->pwm_auto_ok |= (1 << i);
1015 reg = pc87427_read8(data, LD_TEMP, PC87427_REG_BANK);
1021 reg = pc87427_read8_bank(data, LD_TEMP, BANK_TM(i),
1024 data->temp_enabled |= (1 << i);
1030 struct pc87427_data *data = dev_get_drvdata(dev);
1035 if (!(data->fan_enabled & (1 << i)))
1040 if (!(data->pwm_enabled & (1 << i)))
1045 if (!(data->temp_enabled & (1 << i)))
1054 struct pc87427_data *data;
1057 data = devm_kzalloc(&pdev->dev, sizeof(struct pc87427_data),
1059 if (!data)
1062 data->address[0] = sio_data->address[0];
1063 data->address[1] = sio_data->address[1];
1064 res_count = (data->address[0] != 0) + (data->address[1] != 0);
1070 mutex_init(&data->lock);
1071 data->name = "pc87427";
1072 platform_set_drvdata(pdev, data);
1080 if (!(data->fan_enabled & (1 << i)))
1088 if (!(data->pwm_enabled & (1 << i)))
1096 if (!(data->temp_enabled & (1 << i)))
1104 data->hwmon_dev = hwmon_device_register(&pdev->dev);
1105 if (IS_ERR(data->hwmon_dev)) {
1106 err = PTR_ERR(data->hwmon_dev);
1120 struct pc87427_data *data = platform_get_drvdata(pdev);
1122 hwmon_device_unregister(data->hwmon_dev);
1176 pr_err("Platform data allocation failed\n");