Lines Matching defs:data
78 /* Where are the ISA address/data registers relative to the base address */
99 #define SIS5595_REG_TEMP (((data->revision) >= REV2MIN) ? \
101 #define SIS5595_REG_TEMP_OVER (((data->revision) >= REV2MIN) ? \
103 #define SIS5595_REG_TEMP_HYST (((data->revision) >= REV2MIN) ? \
166 * For each registered chip, we need to keep some data in memory.
196 static int sis5595_read_value(struct sis5595_data *data, u8 reg)
200 mutex_lock(&data->lock);
201 outb_p(reg, data->addr + SIS5595_ADDR_REG_OFFSET);
202 res = inb_p(data->addr + SIS5595_DATA_REG_OFFSET);
203 mutex_unlock(&data->lock);
207 static void sis5595_write_value(struct sis5595_data *data, u8 reg, u8 value)
209 mutex_lock(&data->lock);
210 outb_p(reg, data->addr + SIS5595_ADDR_REG_OFFSET);
211 outb_p(value, data->addr + SIS5595_DATA_REG_OFFSET);
212 mutex_unlock(&data->lock);
217 struct sis5595_data *data = dev_get_drvdata(dev);
220 mutex_lock(&data->update_lock);
222 if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
223 || !data->valid) {
225 for (i = 0; i <= data->maxins; i++) {
226 data->in[i] =
227 sis5595_read_value(data, SIS5595_REG_IN(i));
228 data->in_min[i] =
229 sis5595_read_value(data,
231 data->in_max[i] =
232 sis5595_read_value(data,
236 data->fan[i] =
237 sis5595_read_value(data, SIS5595_REG_FAN(i));
238 data->fan_min[i] =
239 sis5595_read_value(data,
242 if (data->maxins == 3) {
243 data->temp =
244 sis5595_read_value(data, SIS5595_REG_TEMP);
245 data->temp_over =
246 sis5595_read_value(data, SIS5595_REG_TEMP_OVER);
247 data->temp_hyst =
248 sis5595_read_value(data, SIS5595_REG_TEMP_HYST);
250 i = sis5595_read_value(data, SIS5595_REG_FANDIV);
251 data->fan_div[0] = (i >> 4) & 0x03;
252 data->fan_div[1] = i >> 6;
253 data->alarms =
254 sis5595_read_value(data, SIS5595_REG_ALARM1) |
255 (sis5595_read_value(data, SIS5595_REG_ALARM2) << 8);
256 data->last_updated = jiffies;
257 data->valid = true;
260 mutex_unlock(&data->update_lock);
262 return data;
269 struct sis5595_data *data = sis5595_update_device(dev);
272 return sprintf(buf, "%d\n", IN_FROM_REG(data->in[nr]));
278 struct sis5595_data *data = sis5595_update_device(dev);
281 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_min[nr]));
287 struct sis5595_data *data = sis5595_update_device(dev);
290 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_max[nr]));
296 struct sis5595_data *data = dev_get_drvdata(dev);
306 mutex_lock(&data->update_lock);
307 data->in_min[nr] = IN_TO_REG(val);
308 sis5595_write_value(data, SIS5595_REG_IN_MIN(nr), data->in_min[nr]);
309 mutex_unlock(&data->update_lock);
316 struct sis5595_data *data = dev_get_drvdata(dev);
326 mutex_lock(&data->update_lock);
327 data->in_max[nr] = IN_TO_REG(val);
328 sis5595_write_value(data, SIS5595_REG_IN_MAX(nr), data->in_max[nr]);
329 mutex_unlock(&data->update_lock);
353 struct sis5595_data *data = sis5595_update_device(dev);
354 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp));
360 struct sis5595_data *data = sis5595_update_device(dev);
361 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_over));
368 struct sis5595_data *data = dev_get_drvdata(dev);
376 mutex_lock(&data->update_lock);
377 data->temp_over = TEMP_TO_REG(val);
378 sis5595_write_value(data, SIS5595_REG_TEMP_OVER, data->temp_over);
379 mutex_unlock(&data->update_lock);
386 struct sis5595_data *data = sis5595_update_device(dev);
387 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_hyst));
394 struct sis5595_data *data = dev_get_drvdata(dev);
402 mutex_lock(&data->update_lock);
403 data->temp_hyst = TEMP_TO_REG(val);
404 sis5595_write_value(data, SIS5595_REG_TEMP_HYST, data->temp_hyst);
405 mutex_unlock(&data->update_lock);
417 struct sis5595_data *data = sis5595_update_device(dev);
420 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[nr],
421 DIV_FROM_REG(data->fan_div[nr])));
427 struct sis5595_data *data = sis5595_update_device(dev);
430 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan_min[nr],
431 DIV_FROM_REG(data->fan_div[nr])));
437 struct sis5595_data *data = dev_get_drvdata(dev);
447 mutex_lock(&data->update_lock);
448 data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr]));
449 sis5595_write_value(data, SIS5595_REG_FAN_MIN(nr), data->fan_min[nr]);
450 mutex_unlock(&data->update_lock);
457 struct sis5595_data *data = sis5595_update_device(dev);
460 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr]));
472 struct sis5595_data *data = dev_get_drvdata(dev);
484 mutex_lock(&data->update_lock);
485 min = FAN_FROM_REG(data->fan_min[nr],
486 DIV_FROM_REG(data->fan_div[nr]));
487 reg = sis5595_read_value(data, SIS5595_REG_FANDIV);
491 data->fan_div[nr] = 0;
494 data->fan_div[nr] = 1;
497 data->fan_div[nr] = 2;
500 data->fan_div[nr] = 3;
506 mutex_unlock(&data->update_lock);
512 reg = (reg & 0xcf) | (data->fan_div[nr] << 4);
515 reg = (reg & 0x3f) | (data->fan_div[nr] << 6);
518 sis5595_write_value(data, SIS5595_REG_FANDIV, reg);
519 data->fan_min[nr] =
520 FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr]));
521 sis5595_write_value(data, SIS5595_REG_FAN_MIN(nr), data->fan_min[nr]);
522 mutex_unlock(&data->update_lock);
537 struct sis5595_data *data = sis5595_update_device(dev);
538 return sprintf(buf, "%d\n", data->alarms);
545 struct sis5595_data *data = sis5595_update_device(dev);
547 return sprintf(buf, "%u\n", (data->alarms >> nr) & 1);
561 struct sis5595_data *data = dev_get_drvdata(dev);
562 return sprintf(buf, "%s\n", data->name);
627 static void sis5595_init_device(struct sis5595_data *data)
629 u8 config = sis5595_read_value(data, SIS5595_REG_CONFIG);
631 sis5595_write_value(data, SIS5595_REG_CONFIG,
640 struct sis5595_data *data;
650 data = devm_kzalloc(&pdev->dev, sizeof(struct sis5595_data),
652 if (!data)
655 mutex_init(&data->lock);
656 mutex_init(&data->update_lock);
657 data->addr = res->start;
658 data->name = DRIVER_NAME;
659 platform_set_drvdata(pdev, data);
664 data->revision = s_bridge->revision;
666 data->maxins = 3;
667 if (data->revision >= REV2MIN) {
671 data->maxins = 4;
675 sis5595_init_device(data);
679 data->fan_min[i] = sis5595_read_value(data,
687 if (data->maxins == 4) {
697 data->hwmon_dev = hwmon_device_register(&pdev->dev);
698 if (IS_ERR(data->hwmon_dev)) {
699 err = PTR_ERR(data->hwmon_dev);
714 struct sis5595_data *data = platform_get_drvdata(pdev);
716 hwmon_device_unregister(data->hwmon_dev);