Lines Matching refs:data
477 struct lm90_data *data, in lm90_select_remote_channel() argument
482 if (data->kind == max6696) { in lm90_select_remote_channel()
497 static void lm90_set_convrate(struct i2c_client *client, struct lm90_data *data, in lm90_set_convrate() argument
508 i < data->max_convrate; i++, update_interval >>= 1) in lm90_set_convrate()
513 data->update_interval = DIV_ROUND_CLOSEST(update_interval, 64); in lm90_set_convrate()
518 struct lm90_data *data = dev_get_drvdata(dev); in lm90_update_device() local
519 struct i2c_client *client = data->client; in lm90_update_device()
522 mutex_lock(&data->update_lock); in lm90_update_device()
524 next_update = data->last_updated + in lm90_update_device()
525 msecs_to_jiffies(data->update_interval); in lm90_update_device()
526 if (time_after(jiffies, next_update) || !data->valid) { in lm90_update_device()
532 &data->temp8[LOCAL_LOW]); in lm90_update_device()
534 &data->temp8[LOCAL_HIGH]); in lm90_update_device()
536 &data->temp8[LOCAL_CRIT]); in lm90_update_device()
538 &data->temp8[REMOTE_CRIT]); in lm90_update_device()
539 lm90_read_reg(client, LM90_REG_R_TCRIT_HYST, &data->temp_hyst); in lm90_update_device()
541 if (data->reg_local_ext) { in lm90_update_device()
543 data->reg_local_ext, in lm90_update_device()
544 &data->temp11[LOCAL_TEMP]); in lm90_update_device()
548 data->temp11[LOCAL_TEMP] = h << 8; in lm90_update_device()
552 &data->temp11[REMOTE_TEMP]); in lm90_update_device()
555 data->temp11[REMOTE_LOW] = h << 8; in lm90_update_device()
556 if ((data->flags & LM90_HAVE_REM_LIMIT_EXT) in lm90_update_device()
559 data->temp11[REMOTE_LOW] |= l; in lm90_update_device()
562 data->temp11[REMOTE_HIGH] = h << 8; in lm90_update_device()
563 if ((data->flags & LM90_HAVE_REM_LIMIT_EXT) in lm90_update_device()
566 data->temp11[REMOTE_HIGH] |= l; in lm90_update_device()
569 if (data->flags & LM90_HAVE_OFFSET) { in lm90_update_device()
574 data->temp11[REMOTE_OFFSET] = (h << 8) | l; in lm90_update_device()
576 if (data->flags & LM90_HAVE_EMERGENCY) { in lm90_update_device()
578 &data->temp8[LOCAL_EMERG]); in lm90_update_device()
580 &data->temp8[REMOTE_EMERG]); in lm90_update_device()
583 data->alarms = alarms; /* save as 16 bit value */ in lm90_update_device()
585 if (data->kind == max6696) { in lm90_update_device()
586 lm90_select_remote_channel(client, data, 1); in lm90_update_device()
588 &data->temp8[REMOTE2_CRIT]); in lm90_update_device()
590 &data->temp8[REMOTE2_EMERG]); in lm90_update_device()
593 &data->temp11[REMOTE2_TEMP]); in lm90_update_device()
595 data->temp11[REMOTE2_LOW] = h << 8; in lm90_update_device()
597 data->temp11[REMOTE2_HIGH] = h << 8; in lm90_update_device()
598 lm90_select_remote_channel(client, data, 0); in lm90_update_device()
602 data->alarms |= alarms << 8; in lm90_update_device()
609 if ((data->config_orig & 0x80) == 0 in lm90_update_device()
610 && (data->alarms & data->alert_alarms) == 0) { in lm90_update_device()
622 data->last_updated = jiffies; in lm90_update_device()
623 data->valid = 1; in lm90_update_device()
626 mutex_unlock(&data->update_lock); in lm90_update_device()
628 return data; in lm90_update_device()
708 static inline int temp_from_u8_adt7461(struct lm90_data *data, u8 val) in temp_from_u8_adt7461() argument
710 if (data->flags & LM90_FLAG_ADT7461_EXT) in temp_from_u8_adt7461()
716 static inline int temp_from_u16_adt7461(struct lm90_data *data, u16 val) in temp_from_u16_adt7461() argument
718 if (data->flags & LM90_FLAG_ADT7461_EXT) in temp_from_u16_adt7461()
724 static u8 temp_to_u8_adt7461(struct lm90_data *data, long val) in temp_to_u8_adt7461() argument
726 if (data->flags & LM90_FLAG_ADT7461_EXT) { in temp_to_u8_adt7461()
741 static u16 temp_to_u16_adt7461(struct lm90_data *data, long val) in temp_to_u16_adt7461() argument
743 if (data->flags & LM90_FLAG_ADT7461_EXT) { in temp_to_u16_adt7461()
766 struct lm90_data *data = lm90_update_device(dev); in show_temp8() local
769 if (data->kind == adt7461 || data->kind == tmp451) in show_temp8()
770 temp = temp_from_u8_adt7461(data, data->temp8[attr->index]); in show_temp8()
771 else if (data->kind == max6646) in show_temp8()
772 temp = temp_from_u8(data->temp8[attr->index]); in show_temp8()
774 temp = temp_from_s8(data->temp8[attr->index]); in show_temp8()
777 if (data->kind == lm99 && attr->index == 3) in show_temp8()
798 struct lm90_data *data = dev_get_drvdata(dev); in set_temp8() local
799 struct i2c_client *client = data->client; in set_temp8()
809 if (data->kind == lm99 && attr->index == 3) in set_temp8()
812 mutex_lock(&data->update_lock); in set_temp8()
813 if (data->kind == adt7461 || data->kind == tmp451) in set_temp8()
814 data->temp8[nr] = temp_to_u8_adt7461(data, val); in set_temp8()
815 else if (data->kind == max6646) in set_temp8()
816 data->temp8[nr] = temp_to_u8(val); in set_temp8()
818 data->temp8[nr] = temp_to_s8(val); in set_temp8()
820 lm90_select_remote_channel(client, data, nr >= 6); in set_temp8()
821 i2c_smbus_write_byte_data(client, reg[nr], data->temp8[nr]); in set_temp8()
822 lm90_select_remote_channel(client, data, 0); in set_temp8()
824 mutex_unlock(&data->update_lock); in set_temp8()
832 struct lm90_data *data = lm90_update_device(dev); in show_temp11() local
835 if (data->kind == adt7461 || data->kind == tmp451) in show_temp11()
836 temp = temp_from_u16_adt7461(data, data->temp11[attr->index]); in show_temp11()
837 else if (data->kind == max6646) in show_temp11()
838 temp = temp_from_u16(data->temp11[attr->index]); in show_temp11()
840 temp = temp_from_s16(data->temp11[attr->index]); in show_temp11()
843 if (data->kind == lm99 && attr->index <= 2) in show_temp11()
865 struct lm90_data *data = dev_get_drvdata(dev); in set_temp11() local
866 struct i2c_client *client = data->client; in set_temp11()
877 if (data->kind == lm99 && index <= 2) in set_temp11()
880 mutex_lock(&data->update_lock); in set_temp11()
881 if (data->kind == adt7461 || data->kind == tmp451) in set_temp11()
882 data->temp11[index] = temp_to_u16_adt7461(data, val); in set_temp11()
883 else if (data->kind == max6646) in set_temp11()
884 data->temp11[index] = temp_to_u8(val) << 8; in set_temp11()
885 else if (data->flags & LM90_HAVE_REM_LIMIT_EXT) in set_temp11()
886 data->temp11[index] = temp_to_s16(val); in set_temp11()
888 data->temp11[index] = temp_to_s8(val) << 8; in set_temp11()
890 lm90_select_remote_channel(client, data, reg[nr].channel); in set_temp11()
892 data->temp11[index] >> 8); in set_temp11()
893 if (data->flags & LM90_HAVE_REM_LIMIT_EXT) in set_temp11()
895 data->temp11[index] & 0xff); in set_temp11()
896 lm90_select_remote_channel(client, data, 0); in set_temp11()
898 mutex_unlock(&data->update_lock); in set_temp11()
907 struct lm90_data *data = lm90_update_device(dev); in show_temphyst() local
910 if (data->kind == adt7461 || data->kind == tmp451) in show_temphyst()
911 temp = temp_from_u8_adt7461(data, data->temp8[attr->index]); in show_temphyst()
912 else if (data->kind == max6646) in show_temphyst()
913 temp = temp_from_u8(data->temp8[attr->index]); in show_temphyst()
915 temp = temp_from_s8(data->temp8[attr->index]); in show_temphyst()
918 if (data->kind == lm99 && attr->index == 3) in show_temphyst()
921 return sprintf(buf, "%d\n", temp - temp_from_s8(data->temp_hyst)); in show_temphyst()
927 struct lm90_data *data = dev_get_drvdata(dev); in set_temphyst() local
928 struct i2c_client *client = data->client; in set_temphyst()
937 mutex_lock(&data->update_lock); in set_temphyst()
938 if (data->kind == adt7461 || data->kind == tmp451) in set_temphyst()
939 temp = temp_from_u8_adt7461(data, data->temp8[LOCAL_CRIT]); in set_temphyst()
940 else if (data->kind == max6646) in set_temphyst()
941 temp = temp_from_u8(data->temp8[LOCAL_CRIT]); in set_temphyst()
943 temp = temp_from_s8(data->temp8[LOCAL_CRIT]); in set_temphyst()
945 data->temp_hyst = hyst_to_reg(temp - val); in set_temphyst()
947 data->temp_hyst); in set_temphyst()
948 mutex_unlock(&data->update_lock); in set_temphyst()
955 struct lm90_data *data = lm90_update_device(dev); in show_alarms() local
956 return sprintf(buf, "%d\n", data->alarms); in show_alarms()
963 struct lm90_data *data = lm90_update_device(dev); in show_alarm() local
966 return sprintf(buf, "%d\n", (data->alarms >> bitnr) & 1); in show_alarm()
972 struct lm90_data *data = dev_get_drvdata(dev); in show_update_interval() local
974 return sprintf(buf, "%u\n", data->update_interval); in show_update_interval()
981 struct lm90_data *data = dev_get_drvdata(dev); in set_update_interval() local
982 struct i2c_client *client = data->client; in set_update_interval()
990 mutex_lock(&data->update_lock); in set_update_interval()
991 lm90_set_convrate(client, data, clamp_val(val, 0, 100000)); in set_update_interval()
992 mutex_unlock(&data->update_lock); in set_update_interval()
1407 static void lm90_restore_conf(struct i2c_client *client, struct lm90_data *data) in lm90_restore_conf() argument
1411 data->convrate_orig); in lm90_restore_conf()
1413 data->config_orig); in lm90_restore_conf()
1416 static void lm90_init_client(struct i2c_client *client, struct lm90_data *data) in lm90_init_client() argument
1424 data->convrate_orig = convrate; in lm90_init_client()
1429 lm90_set_convrate(client, data, 500); /* 500ms; 2Hz conversion rate */ in lm90_init_client()
1434 data->config_orig = config; in lm90_init_client()
1437 if (data->kind == adt7461 || data->kind == tmp451) { in lm90_init_client()
1439 data->flags |= LM90_FLAG_ADT7461_EXT; in lm90_init_client()
1447 if (data->kind == max6680) in lm90_init_client()
1453 if (data->kind == max6696) in lm90_init_client()
1457 if (config != data->config_orig) /* Only write if changed */ in lm90_init_client()
1463 struct lm90_data *data = i2c_get_clientdata(client); in lm90_is_tripped() local
1468 if (data->kind == max6696) in lm90_is_tripped()
1514 struct lm90_data *data; in lm90_probe() local
1529 data = devm_kzalloc(dev, sizeof(struct lm90_data), GFP_KERNEL); in lm90_probe()
1530 if (!data) in lm90_probe()
1533 data->client = client; in lm90_probe()
1534 i2c_set_clientdata(client, data); in lm90_probe()
1535 mutex_init(&data->update_lock); in lm90_probe()
1537 data->regulator = regulator; in lm90_probe()
1540 data->kind = id->driver_data; in lm90_probe()
1541 if (data->kind == adm1032) { in lm90_probe()
1550 data->alert_alarms = lm90_params[data->kind].alert_alarms; in lm90_probe()
1553 data->flags = lm90_params[data->kind].flags; in lm90_probe()
1554 data->reg_local_ext = lm90_params[data->kind].reg_local_ext; in lm90_probe()
1557 data->max_convrate = lm90_params[data->kind].max_convrate; in lm90_probe()
1560 lm90_init_client(client, data); in lm90_probe()
1563 data->groups[groups++] = &lm90_group; in lm90_probe()
1565 if (data->flags & LM90_HAVE_OFFSET) in lm90_probe()
1566 data->groups[groups++] = &lm90_temp2_offset_group; in lm90_probe()
1568 if (data->flags & LM90_HAVE_EMERGENCY) in lm90_probe()
1569 data->groups[groups++] = &lm90_emergency_group; in lm90_probe()
1571 if (data->flags & LM90_HAVE_EMERGENCY_ALARM) in lm90_probe()
1572 data->groups[groups++] = &lm90_emergency_alarm_group; in lm90_probe()
1574 if (data->flags & LM90_HAVE_TEMP3) in lm90_probe()
1575 data->groups[groups++] = &lm90_temp3_group; in lm90_probe()
1583 data->hwmon_dev = hwmon_device_register_with_groups(dev, client->name, in lm90_probe()
1584 data, data->groups); in lm90_probe()
1585 if (IS_ERR(data->hwmon_dev)) { in lm90_probe()
1586 err = PTR_ERR(data->hwmon_dev); in lm90_probe()
1605 hwmon_device_unregister(data->hwmon_dev); in lm90_probe()
1609 lm90_restore_conf(client, data); in lm90_probe()
1610 regulator_disable(data->regulator); in lm90_probe()
1617 struct lm90_data *data = i2c_get_clientdata(client); in lm90_remove() local
1619 hwmon_device_unregister(data->hwmon_dev); in lm90_remove()
1621 lm90_restore_conf(client, data); in lm90_remove()
1622 regulator_disable(data->regulator); in lm90_remove()
1637 struct lm90_data *data = i2c_get_clientdata(client); in lm90_alert() local
1639 if ((data->flags & LM90_HAVE_BROKEN_ALERT) in lm90_alert()
1640 && (alarms & data->alert_alarms)) { in lm90_alert()