Lines Matching refs:info
114 static int max77802_rtc_update(struct max77802_rtc_info *info, in max77802_rtc_update() argument
125 ret = regmap_update_bits(info->max77802->regmap, in max77802_rtc_update()
128 dev_err(info->dev, "%s: fail to write update reg(ret=%d, data=0x%x)\n", in max77802_rtc_update()
141 struct max77802_rtc_info *info = dev_get_drvdata(dev); in max77802_rtc_read_time() local
145 mutex_lock(&info->lock); in max77802_rtc_read_time()
147 ret = max77802_rtc_update(info, MAX77802_RTC_READ); in max77802_rtc_read_time()
151 ret = regmap_bulk_read(info->max77802->regmap, in max77802_rtc_read_time()
154 dev_err(info->dev, "%s: fail to read time reg(%d)\n", __func__, in max77802_rtc_read_time()
159 max77802_rtc_data_to_tm(data, tm, info->rtc_24hr_mode); in max77802_rtc_read_time()
164 mutex_unlock(&info->lock); in max77802_rtc_read_time()
170 struct max77802_rtc_info *info = dev_get_drvdata(dev); in max77802_rtc_set_time() local
178 mutex_lock(&info->lock); in max77802_rtc_set_time()
180 ret = regmap_bulk_write(info->max77802->regmap, in max77802_rtc_set_time()
183 dev_err(info->dev, "%s: fail to write time reg(%d)\n", __func__, in max77802_rtc_set_time()
188 ret = max77802_rtc_update(info, MAX77802_RTC_WRITE); in max77802_rtc_set_time()
191 mutex_unlock(&info->lock); in max77802_rtc_set_time()
197 struct max77802_rtc_info *info = dev_get_drvdata(dev); in max77802_rtc_read_alarm() local
202 mutex_lock(&info->lock); in max77802_rtc_read_alarm()
204 ret = max77802_rtc_update(info, MAX77802_RTC_READ); in max77802_rtc_read_alarm()
208 ret = regmap_bulk_read(info->max77802->regmap, in max77802_rtc_read_alarm()
211 dev_err(info->dev, "%s:%d fail to read alarm reg(%d)\n", in max77802_rtc_read_alarm()
216 max77802_rtc_data_to_tm(data, &alrm->time, info->rtc_24hr_mode); in max77802_rtc_read_alarm()
219 ret = regmap_read(info->max77802->regmap, in max77802_rtc_read_alarm()
222 dev_err(info->dev, "%s:%d fail to read alarm enable(%d)\n", in max77802_rtc_read_alarm()
230 ret = regmap_read(info->max77802->regmap, MAX77802_REG_STATUS2, &val); in max77802_rtc_read_alarm()
232 dev_err(info->dev, "%s:%d fail to read status2 reg(%d)\n", in max77802_rtc_read_alarm()
241 mutex_unlock(&info->lock); in max77802_rtc_read_alarm()
245 static int max77802_rtc_stop_alarm(struct max77802_rtc_info *info) in max77802_rtc_stop_alarm() argument
249 if (!mutex_is_locked(&info->lock)) in max77802_rtc_stop_alarm()
250 dev_warn(info->dev, "%s: should have mutex locked\n", __func__); in max77802_rtc_stop_alarm()
252 ret = max77802_rtc_update(info, MAX77802_RTC_READ); in max77802_rtc_stop_alarm()
256 ret = regmap_write(info->max77802->regmap, in max77802_rtc_stop_alarm()
259 dev_err(info->dev, "%s: fail to write alarm reg(%d)\n", in max77802_rtc_stop_alarm()
264 ret = max77802_rtc_update(info, MAX77802_RTC_WRITE); in max77802_rtc_stop_alarm()
269 static int max77802_rtc_start_alarm(struct max77802_rtc_info *info) in max77802_rtc_start_alarm() argument
273 if (!mutex_is_locked(&info->lock)) in max77802_rtc_start_alarm()
274 dev_warn(info->dev, "%s: should have mutex locked\n", in max77802_rtc_start_alarm()
277 ret = max77802_rtc_update(info, MAX77802_RTC_READ); in max77802_rtc_start_alarm()
281 ret = regmap_write(info->max77802->regmap, in max77802_rtc_start_alarm()
286 dev_err(info->dev, "%s: fail to read alarm reg(%d)\n", in max77802_rtc_start_alarm()
291 ret = max77802_rtc_update(info, MAX77802_RTC_WRITE); in max77802_rtc_start_alarm()
298 struct max77802_rtc_info *info = dev_get_drvdata(dev); in max77802_rtc_set_alarm() local
306 mutex_lock(&info->lock); in max77802_rtc_set_alarm()
308 ret = max77802_rtc_stop_alarm(info); in max77802_rtc_set_alarm()
312 ret = regmap_bulk_write(info->max77802->regmap, in max77802_rtc_set_alarm()
316 dev_err(info->dev, "%s: fail to write alarm reg(%d)\n", in max77802_rtc_set_alarm()
321 ret = max77802_rtc_update(info, MAX77802_RTC_WRITE); in max77802_rtc_set_alarm()
326 ret = max77802_rtc_start_alarm(info); in max77802_rtc_set_alarm()
328 mutex_unlock(&info->lock); in max77802_rtc_set_alarm()
335 struct max77802_rtc_info *info = dev_get_drvdata(dev); in max77802_rtc_alarm_irq_enable() local
338 mutex_lock(&info->lock); in max77802_rtc_alarm_irq_enable()
340 ret = max77802_rtc_start_alarm(info); in max77802_rtc_alarm_irq_enable()
342 ret = max77802_rtc_stop_alarm(info); in max77802_rtc_alarm_irq_enable()
343 mutex_unlock(&info->lock); in max77802_rtc_alarm_irq_enable()
350 struct max77802_rtc_info *info = data; in max77802_rtc_alarm_irq() local
352 dev_dbg(info->dev, "%s:irq(%d)\n", __func__, irq); in max77802_rtc_alarm_irq()
354 rtc_update_irq(info->rtc_dev, 1, RTC_IRQF | RTC_AF); in max77802_rtc_alarm_irq()
367 static int max77802_rtc_init_reg(struct max77802_rtc_info *info) in max77802_rtc_init_reg() argument
372 max77802_rtc_update(info, MAX77802_RTC_READ); in max77802_rtc_init_reg()
378 info->rtc_24hr_mode = 1; in max77802_rtc_init_reg()
380 ret = regmap_bulk_write(info->max77802->regmap, in max77802_rtc_init_reg()
383 dev_err(info->dev, "%s: fail to write controlm reg(%d)\n", in max77802_rtc_init_reg()
388 ret = max77802_rtc_update(info, MAX77802_RTC_WRITE); in max77802_rtc_init_reg()
395 struct max77802_rtc_info *info; in max77802_rtc_probe() local
400 info = devm_kzalloc(&pdev->dev, sizeof(struct max77802_rtc_info), in max77802_rtc_probe()
402 if (!info) in max77802_rtc_probe()
405 mutex_init(&info->lock); in max77802_rtc_probe()
406 info->dev = &pdev->dev; in max77802_rtc_probe()
407 info->max77802 = max77802; in max77802_rtc_probe()
408 info->rtc = max77802->i2c; in max77802_rtc_probe()
410 platform_set_drvdata(pdev, info); in max77802_rtc_probe()
412 ret = max77802_rtc_init_reg(info); in max77802_rtc_probe()
421 info->rtc_dev = devm_rtc_device_register(&pdev->dev, "max77802-rtc", in max77802_rtc_probe()
424 if (IS_ERR(info->rtc_dev)) { in max77802_rtc_probe()
425 ret = PTR_ERR(info->rtc_dev); in max77802_rtc_probe()
437 info->virq = regmap_irq_get_virq(max77802->rtc_irq_data, in max77802_rtc_probe()
440 if (info->virq <= 0) { in max77802_rtc_probe()
446 ret = devm_request_threaded_irq(&pdev->dev, info->virq, NULL, in max77802_rtc_probe()
448 info); in max77802_rtc_probe()
451 info->virq, ret); in max77802_rtc_probe()
460 struct max77802_rtc_info *info = dev_get_drvdata(dev); in max77802_rtc_suspend() local
462 return enable_irq_wake(info->virq); in max77802_rtc_suspend()
471 struct max77802_rtc_info *info = dev_get_drvdata(dev); in max77802_rtc_resume() local
473 return disable_irq_wake(info->virq); in max77802_rtc_resume()