Lines Matching refs:rv8803

141 	struct rv8803_data *rv8803 = i2c_get_clientdata(client);  in rv8803_handle_irq()  local
145 mutex_lock(&rv8803->flags_lock); in rv8803_handle_irq()
149 mutex_unlock(&rv8803->flags_lock); in rv8803_handle_irq()
161 rv8803->ctrl &= ~RV8803_CTRL_TIE; in rv8803_handle_irq()
167 rv8803->ctrl &= ~RV8803_CTRL_AIE; in rv8803_handle_irq()
173 rv8803->ctrl &= ~RV8803_CTRL_UIE; in rv8803_handle_irq()
178 rtc_update_irq(rv8803->rtc, 1, events); in rv8803_handle_irq()
180 rv8803_write_reg(rv8803->client, RV8803_CTRL, rv8803->ctrl); in rv8803_handle_irq()
183 mutex_unlock(&rv8803->flags_lock); in rv8803_handle_irq()
190 struct rv8803_data *rv8803 = dev_get_drvdata(dev); in rv8803_get_time() local
196 flags = rv8803_read_reg(rv8803->client, RV8803_FLAG); in rv8803_get_time()
205 ret = rv8803_read_regs(rv8803->client, RV8803_SEC, 7, date); in rv8803_get_time()
210 ret = rv8803_read_regs(rv8803->client, RV8803_SEC, 7, date2); in rv8803_get_time()
231 struct rv8803_data *rv8803 = dev_get_drvdata(dev); in rv8803_set_time() local
235 ctrl = rv8803_read_reg(rv8803->client, RV8803_CTRL); in rv8803_set_time()
240 ret = rv8803_write_reg(rv8803->client, RV8803_CTRL, in rv8803_set_time()
253 ret = rv8803_write_regs(rv8803->client, RV8803_SEC, 7, date); in rv8803_set_time()
258 ret = rv8803_write_reg(rv8803->client, RV8803_CTRL, in rv8803_set_time()
263 mutex_lock(&rv8803->flags_lock); in rv8803_set_time()
265 flags = rv8803_read_reg(rv8803->client, RV8803_FLAG); in rv8803_set_time()
267 mutex_unlock(&rv8803->flags_lock); in rv8803_set_time()
271 ret = rv8803_write_reg(rv8803->client, RV8803_FLAG, in rv8803_set_time()
274 mutex_unlock(&rv8803->flags_lock); in rv8803_set_time()
281 struct rv8803_data *rv8803 = dev_get_drvdata(dev); in rv8803_get_alarm() local
282 struct i2c_client *client = rv8803->client; in rv8803_get_alarm()
299 alrm->enabled = !!(rv8803->ctrl & RV8803_CTRL_AIE); in rv8803_get_alarm()
308 struct rv8803_data *rv8803 = dev_get_drvdata(dev); in rv8803_set_alarm() local
321 mutex_lock(&rv8803->flags_lock); in rv8803_set_alarm()
325 mutex_unlock(&rv8803->flags_lock); in rv8803_set_alarm()
333 if (rv8803->ctrl & (RV8803_CTRL_AIE | RV8803_CTRL_UIE)) { in rv8803_set_alarm()
334 rv8803->ctrl &= ~(RV8803_CTRL_AIE | RV8803_CTRL_UIE); in rv8803_set_alarm()
335 err = rv8803_write_reg(rv8803->client, RV8803_CTRL, in rv8803_set_alarm()
336 rv8803->ctrl); in rv8803_set_alarm()
338 mutex_unlock(&rv8803->flags_lock); in rv8803_set_alarm()
344 err = rv8803_write_reg(rv8803->client, RV8803_FLAG, ctrl[1]); in rv8803_set_alarm()
345 mutex_unlock(&rv8803->flags_lock); in rv8803_set_alarm()
349 err = rv8803_write_regs(rv8803->client, RV8803_ALARM_MIN, 3, alarmvals); in rv8803_set_alarm()
354 if (rv8803->rtc->uie_rtctimer.enabled) in rv8803_set_alarm()
355 rv8803->ctrl |= RV8803_CTRL_UIE; in rv8803_set_alarm()
356 if (rv8803->rtc->aie_timer.enabled) in rv8803_set_alarm()
357 rv8803->ctrl |= RV8803_CTRL_AIE; in rv8803_set_alarm()
359 err = rv8803_write_reg(rv8803->client, RV8803_CTRL, in rv8803_set_alarm()
360 rv8803->ctrl); in rv8803_set_alarm()
371 struct rv8803_data *rv8803 = dev_get_drvdata(dev); in rv8803_alarm_irq_enable() local
374 ctrl = rv8803->ctrl; in rv8803_alarm_irq_enable()
377 if (rv8803->rtc->uie_rtctimer.enabled) in rv8803_alarm_irq_enable()
379 if (rv8803->rtc->aie_timer.enabled) in rv8803_alarm_irq_enable()
382 if (!rv8803->rtc->uie_rtctimer.enabled) in rv8803_alarm_irq_enable()
384 if (!rv8803->rtc->aie_timer.enabled) in rv8803_alarm_irq_enable()
388 mutex_lock(&rv8803->flags_lock); in rv8803_alarm_irq_enable()
391 mutex_unlock(&rv8803->flags_lock); in rv8803_alarm_irq_enable()
396 mutex_unlock(&rv8803->flags_lock); in rv8803_alarm_irq_enable()
400 if (ctrl != rv8803->ctrl) { in rv8803_alarm_irq_enable()
401 rv8803->ctrl = ctrl; in rv8803_alarm_irq_enable()
402 err = rv8803_write_reg(client, RV8803_CTRL, rv8803->ctrl); in rv8803_alarm_irq_enable()
413 struct rv8803_data *rv8803 = dev_get_drvdata(dev); in rv8803_ioctl() local
434 mutex_lock(&rv8803->flags_lock); in rv8803_ioctl()
437 mutex_unlock(&rv8803->flags_lock); in rv8803_ioctl()
443 mutex_unlock(&rv8803->flags_lock); in rv8803_ioctl()
480 static int rx8900_trickle_charger_init(struct rv8803_data *rv8803) in rx8900_trickle_charger_init() argument
482 struct i2c_client *client = rv8803->client; in rx8900_trickle_charger_init()
490 if (rv8803->type != rx_8900) in rx8900_trickle_charger_init()
493 err = i2c_smbus_read_byte_data(rv8803->client, RX8900_BACKUP_CTRL); in rx8900_trickle_charger_init()
505 return i2c_smbus_write_byte_data(rv8803->client, RX8900_BACKUP_CTRL, in rx8900_trickle_charger_init()
513 struct rv8803_data *rv8803; in rv8803_probe() local
531 rv8803 = devm_kzalloc(&client->dev, sizeof(struct rv8803_data), in rv8803_probe()
533 if (!rv8803) in rv8803_probe()
536 mutex_init(&rv8803->flags_lock); in rv8803_probe()
537 rv8803->client = client; in rv8803_probe()
539 rv8803->type = (enum rv8803_type) in rv8803_probe()
542 rv8803->type = id->driver_data; in rv8803_probe()
543 i2c_set_clientdata(client, rv8803); in rv8803_probe()
558 rv8803->rtc = devm_rtc_allocate_device(&client->dev); in rv8803_probe()
559 if (IS_ERR(rv8803->rtc)) in rv8803_probe()
560 return PTR_ERR(rv8803->rtc); in rv8803_probe()
577 err = rv8803_write_reg(rv8803->client, RV8803_EXT, RV8803_EXT_WADA); in rv8803_probe()
581 err = rx8900_trickle_charger_init(rv8803); in rv8803_probe()
587 rv8803->rtc->ops = &rv8803_rtc_ops; in rv8803_probe()
588 rv8803->rtc->nvram_old_abi = true; in rv8803_probe()
589 rv8803->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; in rv8803_probe()
590 rv8803->rtc->range_max = RTC_TIMESTAMP_END_2099; in rv8803_probe()
591 err = rtc_register_device(rv8803->rtc); in rv8803_probe()
595 rtc_nvmem_register(rv8803->rtc, &nvmem_cfg); in rv8803_probe()
597 rv8803->rtc->max_user_freq = 1; in rv8803_probe()