Lines Matching +full:temperature +full:- +full:tracking
1 // SPDX-License-Identifier: GPL-2.0
66 #define VOLTAGE_MIN -300
77 #define CURRENT_MIN -30000
86 #define POWER_MIN -450000000
87 /* Temperature registers */
98 #define TEMP_MIN -40000
108 #define LTC2947_ALERTS_SIZE (LTC2947_REG_STATVDVCC - LTC2947_REG_STATUS)
133 ret = regmap_bulk_read(st->map, reg, &__val, 2);
148 ret = regmap_bulk_read(st->map, reg, &__val, 3);
163 ret = regmap_bulk_read(st->map, reg, &__val, 6);
178 ret = regmap_write(st->map, LTC2947_REG_PAGE_CTRL, page);
182 dev_dbg(st->dev, "Read val, reg:%02X, p:%d sz:%zu\n", reg, page,
196 ret = -EINVAL;
203 *val = sign_extend64(__val, (8 * size) - 1);
205 dev_dbg(st->dev, "Got s:%lld, u:%016llX\n", *val, __val);
216 return regmap_bulk_write(st->map, reg, &__val, 6);
225 return regmap_bulk_write(st->map, reg, &__val, 2);
234 ret = regmap_write(st->map, LTC2947_REG_PAGE_CTRL, page);
238 dev_dbg(st->dev, "Write val, r:%02X, p:%d, sz:%zu, val:%016llX\n",
249 ret = -EINVAL;
261 * let's reset the tracking register's. Tracking register's have all
274 u8 offset = reg - LTC2947_REG_STATUS;
281 ret = regmap_write(st->map, LTC2947_REG_PAGE_CTRL, LTC2947_PAGE0);
285 dev_dbg(st->dev, "Read alarm, reg:%02X, mask:%02X\n", reg, mask);
289 * multi-byte transaction.
291 ret = regmap_bulk_read(st->map, LTC2947_REG_STATUS, alarms,
354 return -ENOTSUPP;
402 return -ENOTSUPP;
449 return -ENOTSUPP;
469 dev_err(st->dev, "Invalid chan%d for voltage", channel);
470 return -EINVAL;
541 return -ENOTSUPP;
563 /* value in microJoule. st->lsb_energy was multiplied by 10E9 */
564 *val = DIV_S64_ROUND_CLOSEST(__val * st->lsb_energy, 1000);
584 return -ENOTSUPP;
594 dev_err(st->dev, "Invalid chan%d for temperature", channel);
595 return -EINVAL;
601 return -EINVAL;
607 if (!st->gpio_out)
608 return -ENOTSUPP;
613 DIV_ROUND_CLOSEST(val - 550, 204));
618 DIV_ROUND_CLOSEST(val - 550, 204));
622 if (!st->gpio_out)
623 return -ENOTSUPP;
628 DIV_ROUND_CLOSEST(val - 550, 204));
633 DIV_ROUND_CLOSEST(val - 550, 204));
635 return -ENOTSUPP;
647 return -EINVAL;
661 return -ENOTSUPP;
673 return -EINVAL;
687 return -ENOTSUPP;
697 dev_err(st->dev, "Invalid chan%d for voltage", channel);
698 return -EINVAL;
704 return -EINVAL;
737 return -ENOTSUPP;
755 return -ENOTSUPP;
768 *str = "VP-VM";
771 *str = "IP-IM";
783 return -ENOTSUPP;
940 ret = regmap_read(st->map, LTC2947_REG_STATUS, &dummy);
958 extclk = devm_clk_get_optional_enabled(st->dev, NULL);
960 return dev_err_probe(st->dev, PTR_ERR(extclk),
971 dev_err(st->dev, "Invalid rate:%lu for external clock",
973 return -EINVAL;
996 ret = regmap_write(st->map, LTC2947_REG_TBCTL, tbctl);
1005 st->lsb_energy = DIV_ROUND_CLOSEST_ULL(aux, rate_hz);
1007 /* 19.89E-6 * 10E9 */
1008 st->lsb_energy = 19890;
1010 ret = device_property_read_u32_array(st->dev, "adi,accumulator-ctl-pol",
1016 ret = regmap_write(st->map, LTC2947_REG_ACCUM_POL, accum_reg);
1020 ret = device_property_read_u32(st->dev,
1021 "adi,accumulation-deadband-microamp",
1025 ret = regmap_write(st->map, LTC2947_REG_ACCUM_DEADBAND,
1031 ret = device_property_read_u32(st->dev, "adi,gpio-out-pol", &pol);
1037 st->gpio_out = true;
1038 ret = regmap_write(st->map, LTC2947_REG_GPIOSTATCTL, gpio_ctl);
1042 ret = device_property_read_u32_array(st->dev, "adi,gpio-in-accum",
1052 if (st->gpio_out) {
1053 dev_err(st->dev,
1055 return -EINVAL;
1058 ret = regmap_write(st->map, LTC2947_REG_GPIO_ACCUM, accum_val);
1064 return regmap_update_bits(st->map, LTC2947_REG_CTRL,
1077 return -ENOMEM;
1079 st->map = map;
1080 st->dev = dev;
1100 ret = regmap_read(st->map, LTC2947_REG_CTRL, &ctrl);
1108 ret = regmap_read(st->map, LTC2947_REG_CTRL, &ctrl);
1113 dev_err(st->dev, "Device failed to wake up, ctl:%02X\n", ctrl);
1114 return -ETIMEDOUT;
1118 return regmap_update_bits(st->map, LTC2947_REG_CTRL,
1126 return regmap_update_bits(st->map, LTC2947_REG_CTRL,