aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon')
-rw-r--r--drivers/hwmon/pc87360.c112
1 files changed, 56 insertions, 56 deletions
diff --git a/drivers/hwmon/pc87360.c b/drivers/hwmon/pc87360.c
index 2e5a659db58c..5e87b2f1f13b 100644
--- a/drivers/hwmon/pc87360.c
+++ b/drivers/hwmon/pc87360.c
@@ -279,46 +279,46 @@ static ssize_t show_fan_input(struct device *dev, struct device_attribute *devat
279{ 279{
280 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 280 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
281 struct pc87360_data *data = pc87360_update_device(dev); 281 struct pc87360_data *data = pc87360_update_device(dev);
282 return sprintf(buf, "%u\n", FAN_FROM_REG(data->fan[attr->index-1], 282 return sprintf(buf, "%u\n", FAN_FROM_REG(data->fan[attr->index],
283 FAN_DIV_FROM_REG(data->fan_status[attr->index-1]))); 283 FAN_DIV_FROM_REG(data->fan_status[attr->index])));
284} 284}
285static ssize_t show_fan_min(struct device *dev, struct device_attribute *devattr, char *buf) 285static ssize_t show_fan_min(struct device *dev, struct device_attribute *devattr, char *buf)
286{ 286{
287 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 287 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
288 struct pc87360_data *data = pc87360_update_device(dev); 288 struct pc87360_data *data = pc87360_update_device(dev);
289 return sprintf(buf, "%u\n", FAN_FROM_REG(data->fan_min[attr->index-1], 289 return sprintf(buf, "%u\n", FAN_FROM_REG(data->fan_min[attr->index],
290 FAN_DIV_FROM_REG(data->fan_status[attr->index-1]))); 290 FAN_DIV_FROM_REG(data->fan_status[attr->index])));
291} 291}
292static ssize_t show_fan_div(struct device *dev, struct device_attribute *devattr, char *buf) 292static ssize_t show_fan_div(struct device *dev, struct device_attribute *devattr, char *buf)
293{ 293{
294 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 294 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
295 struct pc87360_data *data = pc87360_update_device(dev); 295 struct pc87360_data *data = pc87360_update_device(dev);
296 return sprintf(buf, "%u\n", 296 return sprintf(buf, "%u\n",
297 FAN_DIV_FROM_REG(data->fan_status[attr->index-1])); 297 FAN_DIV_FROM_REG(data->fan_status[attr->index]));
298} 298}
299static ssize_t show_fan_status(struct device *dev, struct device_attribute *devattr, char *buf) 299static ssize_t show_fan_status(struct device *dev, struct device_attribute *devattr, char *buf)
300{ 300{
301 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 301 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
302 struct pc87360_data *data = pc87360_update_device(dev); 302 struct pc87360_data *data = pc87360_update_device(dev);
303 return sprintf(buf, "%u\n", 303 return sprintf(buf, "%u\n",
304 FAN_STATUS_FROM_REG(data->fan_status[attr->index-1])); 304 FAN_STATUS_FROM_REG(data->fan_status[attr->index]));
305} 305}
306static ssize_t set_fan_min(struct device *dev, struct device_attribute *devattr, const char *buf, 306static ssize_t set_fan_min(struct device *dev, struct device_attribute *devattr, const char *buf,
307 size_t count) 307 size_t count)
308{ 308{
309 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 309 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
310 return _set_fan_min(dev, buf, count, attr->index-1); 310 return _set_fan_min(dev, buf, count, attr->index);
311} 311}
312 312
313#define show_and_set_fan(offset) \ 313#define show_and_set_fan(offset) \
314static SENSOR_DEVICE_ATTR(fan##offset##_input, S_IRUGO, \ 314static SENSOR_DEVICE_ATTR(fan##offset##_input, S_IRUGO, \
315 show_fan_input, NULL, offset); \ 315 show_fan_input, NULL, offset-1); \
316static SENSOR_DEVICE_ATTR(fan##offset##_min, S_IWUSR | S_IRUGO, \ 316static SENSOR_DEVICE_ATTR(fan##offset##_min, S_IWUSR | S_IRUGO, \
317 show_fan_min, set_fan_min, offset); \ 317 show_fan_min, set_fan_min, offset-1); \
318static SENSOR_DEVICE_ATTR(fan##offset##_div, S_IRUGO, \ 318static SENSOR_DEVICE_ATTR(fan##offset##_div, S_IRUGO, \
319 show_fan_div, NULL, offset); \ 319 show_fan_div, NULL, offset-1); \
320static SENSOR_DEVICE_ATTR(fan##offset##_status, S_IRUGO, \ 320static SENSOR_DEVICE_ATTR(fan##offset##_status, S_IRUGO, \
321 show_fan_status, NULL, offset); 321 show_fan_status, NULL, offset-1);
322show_and_set_fan(1) 322show_and_set_fan(1)
323show_and_set_fan(2) 323show_and_set_fan(2)
324show_and_set_fan(3) 324show_and_set_fan(3)
@@ -328,9 +328,9 @@ static ssize_t show_pwm(struct device *dev, struct device_attribute *devattr, ch
328 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 328 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
329 struct pc87360_data *data = pc87360_update_device(dev); 329 struct pc87360_data *data = pc87360_update_device(dev);
330 return sprintf(buf, "%u\n", 330 return sprintf(buf, "%u\n",
331 PWM_FROM_REG(data->pwm[attr->index-1], 331 PWM_FROM_REG(data->pwm[attr->index],
332 FAN_CONFIG_INVERT(data->fan_conf, 332 FAN_CONFIG_INVERT(data->fan_conf,
333 attr->index-1))); 333 attr->index)));
334} 334}
335static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr, const char *buf, 335static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr, const char *buf,
336 size_t count) 336 size_t count)
@@ -341,17 +341,17 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *devattr, con
341 long val = simple_strtol(buf, NULL, 10); 341 long val = simple_strtol(buf, NULL, 10);
342 342
343 down(&data->update_lock); 343 down(&data->update_lock);
344 data->pwm[attr->index-1] = PWM_TO_REG(val, 344 data->pwm[attr->index] = PWM_TO_REG(val,
345 FAN_CONFIG_INVERT(data->fan_conf, attr->index-1)); 345 FAN_CONFIG_INVERT(data->fan_conf, attr->index));
346 pc87360_write_value(data, LD_FAN, NO_BANK, PC87360_REG_PWM(attr->index-1), 346 pc87360_write_value(data, LD_FAN, NO_BANK, PC87360_REG_PWM(attr->index),
347 data->pwm[attr->index-1]); 347 data->pwm[attr->index]);
348 up(&data->update_lock); 348 up(&data->update_lock);
349 return count; 349 return count;
350} 350}
351 351
352#define show_and_set_pwm(offset) \ 352#define show_and_set_pwm(offset) \
353static SENSOR_DEVICE_ATTR(pwm##offset, S_IWUSR | S_IRUGO, \ 353static SENSOR_DEVICE_ATTR(pwm##offset, S_IWUSR | S_IRUGO, \
354 show_pwm, set_pwm, offset); 354 show_pwm, set_pwm, offset-1);
355show_and_set_pwm(1) 355show_and_set_pwm(1)
356show_and_set_pwm(2) 356show_and_set_pwm(2)
357show_and_set_pwm(3) 357show_and_set_pwm(3)
@@ -440,35 +440,35 @@ static ssize_t show_therm_input(struct device *dev, struct device_attribute *dev
440{ 440{
441 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 441 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
442 struct pc87360_data *data = pc87360_update_device(dev); 442 struct pc87360_data *data = pc87360_update_device(dev);
443 return sprintf(buf, "%u\n", IN_FROM_REG(data->in[attr->index+7], 443 return sprintf(buf, "%u\n", IN_FROM_REG(data->in[attr->index],
444 data->in_vref)); 444 data->in_vref));
445} 445}
446static ssize_t show_therm_min(struct device *dev, struct device_attribute *devattr, char *buf) 446static ssize_t show_therm_min(struct device *dev, struct device_attribute *devattr, char *buf)
447{ 447{
448 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 448 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
449 struct pc87360_data *data = pc87360_update_device(dev); 449 struct pc87360_data *data = pc87360_update_device(dev);
450 return sprintf(buf, "%u\n", IN_FROM_REG(data->in_min[attr->index+7], 450 return sprintf(buf, "%u\n", IN_FROM_REG(data->in_min[attr->index],
451 data->in_vref)); 451 data->in_vref));
452} 452}
453static ssize_t show_therm_max(struct device *dev, struct device_attribute *devattr, char *buf) 453static ssize_t show_therm_max(struct device *dev, struct device_attribute *devattr, char *buf)
454{ 454{
455 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 455 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
456 struct pc87360_data *data = pc87360_update_device(dev); 456 struct pc87360_data *data = pc87360_update_device(dev);
457 return sprintf(buf, "%u\n", IN_FROM_REG(data->in_max[attr->index+7], 457 return sprintf(buf, "%u\n", IN_FROM_REG(data->in_max[attr->index],
458 data->in_vref)); 458 data->in_vref));
459} 459}
460static ssize_t show_therm_crit(struct device *dev, struct device_attribute *devattr, char *buf) 460static ssize_t show_therm_crit(struct device *dev, struct device_attribute *devattr, char *buf)
461{ 461{
462 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 462 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
463 struct pc87360_data *data = pc87360_update_device(dev); 463 struct pc87360_data *data = pc87360_update_device(dev);
464 return sprintf(buf, "%u\n", IN_FROM_REG(data->in_crit[attr->index-4], 464 return sprintf(buf, "%u\n", IN_FROM_REG(data->in_crit[attr->index-11],
465 data->in_vref)); 465 data->in_vref));
466} 466}
467static ssize_t show_therm_status(struct device *dev, struct device_attribute *devattr, char *buf) 467static ssize_t show_therm_status(struct device *dev, struct device_attribute *devattr, char *buf)
468{ 468{
469 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 469 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
470 struct pc87360_data *data = pc87360_update_device(dev); 470 struct pc87360_data *data = pc87360_update_device(dev);
471 return sprintf(buf, "%u\n", data->in_status[attr->index+7]); 471 return sprintf(buf, "%u\n", data->in_status[attr->index]);
472} 472}
473static ssize_t set_therm_min(struct device *dev, struct device_attribute *devattr, const char *buf, 473static ssize_t set_therm_min(struct device *dev, struct device_attribute *devattr, const char *buf,
474 size_t count) 474 size_t count)
@@ -479,9 +479,9 @@ static ssize_t set_therm_min(struct device *dev, struct device_attribute *devatt
479 long val = simple_strtol(buf, NULL, 10); 479 long val = simple_strtol(buf, NULL, 10);
480 480
481 down(&data->update_lock); 481 down(&data->update_lock);
482 data->in_min[attr->index+7] = IN_TO_REG(val, data->in_vref); 482 data->in_min[attr->index] = IN_TO_REG(val, data->in_vref);
483 pc87360_write_value(data, LD_IN, attr->index+7, PC87365_REG_TEMP_MIN, 483 pc87360_write_value(data, LD_IN, attr->index, PC87365_REG_TEMP_MIN,
484 data->in_min[attr->index+7]); 484 data->in_min[attr->index]);
485 up(&data->update_lock); 485 up(&data->update_lock);
486 return count; 486 return count;
487} 487}
@@ -494,9 +494,9 @@ static ssize_t set_therm_max(struct device *dev, struct device_attribute *devatt
494 long val = simple_strtol(buf, NULL, 10); 494 long val = simple_strtol(buf, NULL, 10);
495 495
496 down(&data->update_lock); 496 down(&data->update_lock);
497 data->in_max[attr->index+7] = IN_TO_REG(val, data->in_vref); 497 data->in_max[attr->index] = IN_TO_REG(val, data->in_vref);
498 pc87360_write_value(data, LD_IN, attr->index+7, PC87365_REG_TEMP_MAX, 498 pc87360_write_value(data, LD_IN, attr->index, PC87365_REG_TEMP_MAX,
499 data->in_max[attr->index+7]); 499 data->in_max[attr->index]);
500 up(&data->update_lock); 500 up(&data->update_lock);
501 return count; 501 return count;
502} 502}
@@ -509,24 +509,24 @@ static ssize_t set_therm_crit(struct device *dev, struct device_attribute *devat
509 long val = simple_strtol(buf, NULL, 10); 509 long val = simple_strtol(buf, NULL, 10);
510 510
511 down(&data->update_lock); 511 down(&data->update_lock);
512 data->in_crit[attr->index-4] = IN_TO_REG(val, data->in_vref); 512 data->in_crit[attr->index-11] = IN_TO_REG(val, data->in_vref);
513 pc87360_write_value(data, LD_IN, attr->index+7, PC87365_REG_TEMP_CRIT, 513 pc87360_write_value(data, LD_IN, attr->index, PC87365_REG_TEMP_CRIT,
514 data->in_crit[attr->index-4]); 514 data->in_crit[attr->index-11]);
515 up(&data->update_lock); 515 up(&data->update_lock);
516 return count; 516 return count;
517} 517}
518 518
519#define show_and_set_therm(offset) \ 519#define show_and_set_therm(offset) \
520static SENSOR_DEVICE_ATTR(temp##offset##_input, S_IRUGO, \ 520static SENSOR_DEVICE_ATTR(temp##offset##_input, S_IRUGO, \
521 show_therm_input, NULL, offset); \ 521 show_therm_input, NULL, 11+offset-4); \
522static SENSOR_DEVICE_ATTR(temp##offset##_min, S_IWUSR | S_IRUGO, \ 522static SENSOR_DEVICE_ATTR(temp##offset##_min, S_IWUSR | S_IRUGO, \
523 show_therm_min, set_therm_min, offset); \ 523 show_therm_min, set_therm_min, 11+offset-4); \
524static SENSOR_DEVICE_ATTR(temp##offset##_max, S_IWUSR | S_IRUGO, \ 524static SENSOR_DEVICE_ATTR(temp##offset##_max, S_IWUSR | S_IRUGO, \
525 show_therm_max, set_therm_max, offset); \ 525 show_therm_max, set_therm_max, 11+offset-4); \
526static SENSOR_DEVICE_ATTR(temp##offset##_crit, S_IWUSR | S_IRUGO, \ 526static SENSOR_DEVICE_ATTR(temp##offset##_crit, S_IWUSR | S_IRUGO, \
527 show_therm_crit, set_therm_crit, offset); \ 527 show_therm_crit, set_therm_crit, 11+offset-4); \
528static SENSOR_DEVICE_ATTR(temp##offset##_status, S_IRUGO, \ 528static SENSOR_DEVICE_ATTR(temp##offset##_status, S_IRUGO, \
529 show_therm_status, NULL, offset); 529 show_therm_status, NULL, 11+offset-4);
530show_and_set_therm(4) 530show_and_set_therm(4)
531show_and_set_therm(5) 531show_and_set_therm(5)
532show_and_set_therm(6) 532show_and_set_therm(6)
@@ -563,31 +563,31 @@ static ssize_t show_temp_input(struct device *dev, struct device_attribute *deva
563{ 563{
564 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 564 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
565 struct pc87360_data *data = pc87360_update_device(dev); 565 struct pc87360_data *data = pc87360_update_device(dev);
566 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[attr->index-1])); 566 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp[attr->index]));
567} 567}
568static ssize_t show_temp_min(struct device *dev, struct device_attribute *devattr, char *buf) 568static ssize_t show_temp_min(struct device *dev, struct device_attribute *devattr, char *buf)
569{ 569{
570 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 570 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
571 struct pc87360_data *data = pc87360_update_device(dev); 571 struct pc87360_data *data = pc87360_update_device(dev);
572 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_min[attr->index-1])); 572 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_min[attr->index]));
573} 573}
574static ssize_t show_temp_max(struct device *dev, struct device_attribute *devattr, char *buf) 574static ssize_t show_temp_max(struct device *dev, struct device_attribute *devattr, char *buf)
575{ 575{
576 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 576 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
577 struct pc87360_data *data = pc87360_update_device(dev); 577 struct pc87360_data *data = pc87360_update_device(dev);
578 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[attr->index-1])); 578 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[attr->index]));
579} 579}
580static ssize_t show_temp_crit(struct device *dev, struct device_attribute *devattr, char *buf) 580static ssize_t show_temp_crit(struct device *dev, struct device_attribute *devattr, char *buf)
581{ 581{
582 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 582 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
583 struct pc87360_data *data = pc87360_update_device(dev); 583 struct pc87360_data *data = pc87360_update_device(dev);
584 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_crit[attr->index-1])); 584 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_crit[attr->index]));
585} 585}
586static ssize_t show_temp_status(struct device *dev, struct device_attribute *devattr, char *buf) 586static ssize_t show_temp_status(struct device *dev, struct device_attribute *devattr, char *buf)
587{ 587{
588 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); 588 struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
589 struct pc87360_data *data = pc87360_update_device(dev); 589 struct pc87360_data *data = pc87360_update_device(dev);
590 return sprintf(buf, "%d\n", data->temp_status[attr->index-1]); 590 return sprintf(buf, "%d\n", data->temp_status[attr->index]);
591} 591}
592static ssize_t set_temp_min(struct device *dev, struct device_attribute *devattr, const char *buf, 592static ssize_t set_temp_min(struct device *dev, struct device_attribute *devattr, const char *buf,
593 size_t count) 593 size_t count)
@@ -598,9 +598,9 @@ static ssize_t set_temp_min(struct device *dev, struct device_attribute *devattr
598 long val = simple_strtol(buf, NULL, 10); 598 long val = simple_strtol(buf, NULL, 10);
599 599
600 down(&data->update_lock); 600 down(&data->update_lock);
601 data->temp_min[attr->index-1] = TEMP_TO_REG(val); 601 data->temp_min[attr->index] = TEMP_TO_REG(val);
602 pc87360_write_value(data, LD_TEMP, attr->index-1, PC87365_REG_TEMP_MIN, 602 pc87360_write_value(data, LD_TEMP, attr->index, PC87365_REG_TEMP_MIN,
603 data->temp_min[attr->index-1]); 603 data->temp_min[attr->index]);
604 up(&data->update_lock); 604 up(&data->update_lock);
605 return count; 605 return count;
606} 606}
@@ -613,9 +613,9 @@ static ssize_t set_temp_max(struct device *dev, struct device_attribute *devattr
613 long val = simple_strtol(buf, NULL, 10); 613 long val = simple_strtol(buf, NULL, 10);
614 614
615 down(&data->update_lock); 615 down(&data->update_lock);
616 data->temp_max[attr->index-1] = TEMP_TO_REG(val); 616 data->temp_max[attr->index] = TEMP_TO_REG(val);
617 pc87360_write_value(data, LD_TEMP, attr->index-1, PC87365_REG_TEMP_MAX, 617 pc87360_write_value(data, LD_TEMP, attr->index, PC87365_REG_TEMP_MAX,
618 data->temp_max[attr->index-1]); 618 data->temp_max[attr->index]);
619 up(&data->update_lock); 619 up(&data->update_lock);
620 return count; 620 return count;
621} 621}
@@ -628,24 +628,24 @@ static ssize_t set_temp_crit(struct device *dev, struct device_attribute *devatt
628 long val = simple_strtol(buf, NULL, 10); 628 long val = simple_strtol(buf, NULL, 10);
629 629
630 down(&data->update_lock); 630 down(&data->update_lock);
631 data->temp_crit[attr->index-1] = TEMP_TO_REG(val); 631 data->temp_crit[attr->index] = TEMP_TO_REG(val);
632 pc87360_write_value(data, LD_TEMP, attr->index-1, PC87365_REG_TEMP_CRIT, 632 pc87360_write_value(data, LD_TEMP, attr->index, PC87365_REG_TEMP_CRIT,
633 data->temp_crit[attr->index-1]); 633 data->temp_crit[attr->index]);
634 up(&data->update_lock); 634 up(&data->update_lock);
635 return count; 635 return count;
636} 636}
637 637
638#define show_and_set_temp(offset) \ 638#define show_and_set_temp(offset) \
639static SENSOR_DEVICE_ATTR(temp##offset##_input, S_IRUGO, \ 639static SENSOR_DEVICE_ATTR(temp##offset##_input, S_IRUGO, \
640 show_temp_input, NULL, offset); \ 640 show_temp_input, NULL, offset-1); \
641static SENSOR_DEVICE_ATTR(temp##offset##_min, S_IWUSR | S_IRUGO, \ 641static SENSOR_DEVICE_ATTR(temp##offset##_min, S_IWUSR | S_IRUGO, \
642 show_temp_min, set_temp_min, offset); \ 642 show_temp_min, set_temp_min, offset-1); \
643static SENSOR_DEVICE_ATTR(temp##offset##_max, S_IWUSR | S_IRUGO, \ 643static SENSOR_DEVICE_ATTR(temp##offset##_max, S_IWUSR | S_IRUGO, \
644 show_temp_max, set_temp_max, offset); \ 644 show_temp_max, set_temp_max, offset-1); \
645static SENSOR_DEVICE_ATTR(temp##offset##_crit, S_IWUSR | S_IRUGO, \ 645static SENSOR_DEVICE_ATTR(temp##offset##_crit, S_IWUSR | S_IRUGO, \
646 show_temp_crit, set_temp_crit, offset); \ 646 show_temp_crit, set_temp_crit, offset-1); \
647static SENSOR_DEVICE_ATTR(temp##offset##_status, S_IRUGO, \ 647static SENSOR_DEVICE_ATTR(temp##offset##_status, S_IRUGO, \
648 show_temp_status, NULL, offset); 648 show_temp_status, NULL, offset-1);
649show_and_set_temp(1) 649show_and_set_temp(1)
650show_and_set_temp(2) 650show_and_set_temp(2)
651show_and_set_temp(3) 651show_and_set_temp(3)