Lines Matching +full:timeout +full:- +full:minutes

1 // SPDX-License-Identifier: GPL-2.0-or-later
60 minutes = 60 enumerator
101 struct fts_data *data = dev_get_drvdata(&client->dev); in fts_read_byte()
103 mutex_lock(&data->access_lock); in fts_read_byte()
105 dev_dbg(&client->dev, "page select - page: 0x%.02x\n", page); in fts_read_byte()
112 dev_dbg(&client->dev, "read - reg: 0x%.02x: val: 0x%.02x\n", reg, ret); in fts_read_byte()
115 mutex_unlock(&data->access_lock); in fts_read_byte()
124 struct fts_data *data = dev_get_drvdata(&client->dev); in fts_write_byte()
126 mutex_lock(&data->access_lock); in fts_write_byte()
128 dev_dbg(&client->dev, "page select - page: 0x%.02x\n", page); in fts_write_byte()
134 dev_dbg(&client->dev, in fts_write_byte()
135 "write - reg: 0x%.02x: val: 0x%.02x\n", reg, value); in fts_write_byte()
139 mutex_unlock(&data->access_lock); in fts_write_byte()
151 mutex_lock(&data->update_lock); in fts_update_device()
152 if (!time_after(jiffies, data->last_updated + 2 * HZ) && data->valid) in fts_update_device()
155 err = fts_read_byte(data->client, FTS_DEVICE_STATUS_REG); in fts_update_device()
159 data->valid = !!(err & 0x02); /* Data not ready yet */ in fts_update_device()
160 if (unlikely(!data->valid)) { in fts_update_device()
161 err = -EAGAIN; in fts_update_device()
165 err = fts_read_byte(data->client, FTS_FAN_PRESENT_REG); in fts_update_device()
168 data->fan_present = err; in fts_update_device()
170 err = fts_read_byte(data->client, FTS_FAN_EVENT_REG); in fts_update_device()
173 data->fan_alarm = err; in fts_update_device()
176 if (data->fan_present & BIT(i)) { in fts_update_device()
177 err = fts_read_byte(data->client, FTS_REG_FAN_INPUT(i)); in fts_update_device()
180 data->fan_input[i] = err; in fts_update_device()
182 err = fts_read_byte(data->client, in fts_update_device()
186 data->fan_source[i] = err; in fts_update_device()
188 data->fan_input[i] = 0; in fts_update_device()
189 data->fan_source[i] = FTS_FAN_SOURCE_INVALID; in fts_update_device()
193 err = fts_read_byte(data->client, FTS_SENSOR_EVENT_REG); in fts_update_device()
196 data->temp_alarm = err; in fts_update_device()
199 err = fts_read_byte(data->client, FTS_REG_TEMP_INPUT(i)); in fts_update_device()
202 data->temp_input[i] = err; in fts_update_device()
206 err = fts_read_byte(data->client, FTS_REG_VOLT(i)); in fts_update_device()
209 data->volt[i] = err; in fts_update_device()
211 data->last_updated = jiffies; in fts_update_device()
214 mutex_unlock(&data->update_lock); in fts_update_device()
226 if (data->resolution == resolution) in fts_wd_set_resolution()
229 ret = fts_read_byte(data->client, FTS_WATCHDOG_CONTROL); in fts_wd_set_resolution()
234 (resolution == minutes && (ret & BIT(1)) == 0)) { in fts_wd_set_resolution()
235 data->resolution = resolution; in fts_wd_set_resolution()
244 ret = fts_write_byte(data->client, FTS_WATCHDOG_CONTROL, ret); in fts_wd_set_resolution()
248 data->resolution = resolution; in fts_wd_set_resolution()
252 static int fts_wd_set_timeout(struct watchdog_device *wdd, unsigned int timeout) in fts_wd_set_timeout() argument
259 /* switch watchdog resolution to minutes if timeout does not fit in fts_wd_set_timeout()
262 if (timeout > 0xFF) { in fts_wd_set_timeout()
263 timeout = DIV_ROUND_UP(timeout, 60) * 60; in fts_wd_set_timeout()
264 resolution = minutes; in fts_wd_set_timeout()
271 wdd->timeout = timeout; in fts_wd_set_timeout()
279 return fts_write_byte(data->client, FTS_WATCHDOG_TIME_PRESET, in fts_wd_start()
280 wdd->timeout / (u8)data->resolution); in fts_wd_start()
288 return fts_write_byte(data->client, FTS_WATCHDOG_TIME_PRESET, 0); in fts_wd_stop()
305 int timeout, ret; in fts_watchdog_init() local
307 watchdog_set_drvdata(&data->wdd, data); in fts_watchdog_init()
309 timeout = fts_read_byte(data->client, FTS_WATCHDOG_TIME_PRESET); in fts_watchdog_init()
310 if (timeout < 0) in fts_watchdog_init()
311 return timeout; in fts_watchdog_init()
313 /* watchdog not running, set timeout to a default of 60 sec. */ in fts_watchdog_init()
314 if (timeout == 0) { in fts_watchdog_init()
318 data->wdd.timeout = 60; in fts_watchdog_init()
320 ret = fts_read_byte(data->client, FTS_WATCHDOG_CONTROL); in fts_watchdog_init()
324 data->resolution = ret & BIT(1) ? seconds : minutes; in fts_watchdog_init()
325 data->wdd.timeout = timeout * (u8)data->resolution; in fts_watchdog_init()
326 set_bit(WDOG_HW_RUNNING, &data->wdd.status); in fts_watchdog_init()
330 data->wdd.info = &fts_wd_info; in fts_watchdog_init()
331 data->wdd.ops = &fts_wd_ops; in fts_watchdog_init()
332 data->wdd.parent = &data->client->dev; in fts_watchdog_init()
333 data->wdd.min_timeout = 1; in fts_watchdog_init()
335 /* max timeout 255 minutes. */ in fts_watchdog_init()
336 data->wdd.max_hw_heartbeat_ms = 0xFF * 60 * MSEC_PER_SEC; in fts_watchdog_init()
338 return devm_watchdog_register_device(&data->client->dev, &data->wdd); in fts_watchdog_init()
390 *val = (data->temp_input[channel] - 64) * 1000; in fts_read()
394 *val = !!(data->temp_alarm & BIT(channel)); in fts_read()
399 *val = (data->temp_input[channel] == 0); in fts_read()
409 *val = data->fan_input[channel] * 60; in fts_read()
413 *val = !!(data->fan_alarm & BIT(channel)); in fts_read()
417 *val = !(data->fan_present & BIT(channel)); in fts_read()
427 if (data->fan_source[channel] == FTS_FAN_SOURCE_INVALID) in fts_read()
430 *val = BIT(data->fan_source[channel]); in fts_read()
440 *val = DIV_ROUND_CLOSEST(data->volt[channel] * 3300, 255); in fts_read()
451 return -EOPNOTSUPP; in fts_read()
468 return -EINVAL; in fts_write()
470 mutex_lock(&data->update_lock); in fts_write()
471 ret = fts_read_byte(data->client, FTS_REG_TEMP_CONTROL(channel)); in fts_write()
473 ret = fts_write_byte(data->client, FTS_REG_TEMP_CONTROL(channel), in fts_write()
476 data->valid = false; in fts_write()
478 mutex_unlock(&data->update_lock); in fts_write()
491 return -EINVAL; in fts_write()
493 mutex_lock(&data->update_lock); in fts_write()
494 ret = fts_read_byte(data->client, FTS_REG_FAN_CONTROL(channel)); in fts_write()
496 ret = fts_write_byte(data->client, FTS_REG_FAN_CONTROL(channel), in fts_write()
499 data->valid = false; in fts_write()
501 mutex_unlock(&data->update_lock); in fts_write()
514 return -EOPNOTSUPP; in fts_write()
588 return -ENODEV; in fts_detect()
593 return -ENODEV; in fts_detect()
597 return -ENODEV; in fts_detect()
601 return -ENODEV; in fts_detect()
609 return -ENODEV; in fts_detect()
611 strscpy(info->type, fts_id[0].name, I2C_NAME_SIZE); in fts_detect()
612 info->flags = 0; in fts_detect()
624 if (client->addr != 0x73) in fts_probe()
625 return -ENODEV; in fts_probe()
634 dev_dbg(&client->dev, in fts_probe()
636 return -ENODEV; in fts_probe()
639 dev_dbg(&client->dev, "No fujitsu board\n"); in fts_probe()
640 return -ENODEV; in fts_probe()
643 data = devm_kzalloc(&client->dev, sizeof(struct fts_data), in fts_probe()
646 return -ENOMEM; in fts_probe()
648 mutex_init(&data->update_lock); in fts_probe()
649 mutex_init(&data->access_lock); in fts_probe()
650 data->client = client; in fts_probe()
651 dev_set_drvdata(&client->dev, data); in fts_probe()
658 hwmon_dev = devm_hwmon_device_register_with_info(&client->dev, "ftsteutates", data, in fts_probe()
667 dev_info(&client->dev, "Detected FTS Teutates chip, revision: %d.%d\n", in fts_probe()