Symbol: pcf2127
drivers/rtc/rtc-pcf2127.c
1135
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
1138
if (ts_id >= pcf2127->cfg->ts_count) {
drivers/rtc/rtc-pcf2127.c
1145
ret = regmap_update_bits(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
1146
pcf2127->cfg->ts[ts_id].reg_base,
drivers/rtc/rtc-pcf2127.c
1161
ret = regmap_update_bits(pcf2127->regmap, pcf2127->cfg->ts[ts_id].ie_reg,
drivers/rtc/rtc-pcf2127.c
1162
pcf2127->cfg->ts[ts_id].ie_bit,
drivers/rtc/rtc-pcf2127.c
1163
pcf2127->cfg->ts[ts_id].ie_bit);
drivers/rtc/rtc-pcf2127.c
1176
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
1182
ret = regmap_write(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
1187
ret = regmap_write(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
1198
struct pcf2127 *pcf2127;
drivers/rtc/rtc-pcf2127.c
1204
pcf2127 = devm_kzalloc(dev, sizeof(*pcf2127), GFP_KERNEL);
drivers/rtc/rtc-pcf2127.c
1205
if (!pcf2127)
drivers/rtc/rtc-pcf2127.c
1208
pcf2127->regmap = regmap;
drivers/rtc/rtc-pcf2127.c
1209
pcf2127->cfg = config;
drivers/rtc/rtc-pcf2127.c
1211
dev_set_drvdata(dev, pcf2127);
drivers/rtc/rtc-pcf2127.c
1213
pcf2127->rtc = devm_rtc_allocate_device(dev);
drivers/rtc/rtc-pcf2127.c
1214
if (IS_ERR(pcf2127->rtc))
drivers/rtc/rtc-pcf2127.c
1215
return PTR_ERR(pcf2127->rtc);
drivers/rtc/rtc-pcf2127.c
1217
pcf2127->rtc->ops = &pcf2127_rtc_ops;
drivers/rtc/rtc-pcf2127.c
1218
pcf2127->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
drivers/rtc/rtc-pcf2127.c
1219
pcf2127->rtc->range_max = RTC_TIMESTAMP_END_2099;
drivers/rtc/rtc-pcf2127.c
1220
pcf2127->rtc->set_start_time = true; /* Sets actual start to 1970 */
drivers/rtc/rtc-pcf2127.c
1226
if (pcf2127->cfg->type == PCF2127 || pcf2127->cfg->type == PCF2129) {
drivers/rtc/rtc-pcf2127.c
1227
set_bit(RTC_FEATURE_ALARM_RES_2S, pcf2127->rtc->features);
drivers/rtc/rtc-pcf2127.c
1228
clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf2127->rtc->features);
drivers/rtc/rtc-pcf2127.c
1231
clear_bit(RTC_FEATURE_ALARM, pcf2127->rtc->features);
drivers/rtc/rtc-pcf2127.c
1253
pcf2127->irq_enabled = true;
drivers/rtc/rtc-pcf2127.c
1258
set_bit(RTC_FEATURE_ALARM, pcf2127->rtc->features);
drivers/rtc/rtc-pcf2127.c
1261
if (pcf2127->cfg->has_int_a_b) {
drivers/rtc/rtc-pcf2127.c
1270
if (pcf2127->cfg->has_nvmem) {
drivers/rtc/rtc-pcf2127.c
1272
.priv = pcf2127,
drivers/rtc/rtc-pcf2127.c
1278
ret = devm_rtc_nvmem_register(pcf2127->rtc, &nvmem_cfg);
drivers/rtc/rtc-pcf2127.c
1285
ret = regmap_clear_bits(pcf2127->regmap, PCF2127_REG_CTRL1,
drivers/rtc/rtc-pcf2127.c
1290
ret = regmap_read(pcf2127->regmap, pcf2127->cfg->reg_clkout, &val);
drivers/rtc/rtc-pcf2127.c
1295
ret = regmap_set_bits(pcf2127->regmap, pcf2127->cfg->reg_clkout,
drivers/rtc/rtc-pcf2127.c
1312
ret = regmap_update_bits(pcf2127->regmap, pcf2127->cfg->reg_wd_ctl,
drivers/rtc/rtc-pcf2127.c
1318
(pcf2127->cfg->has_bit_wd_ctl_cd0 ? PCF2127_BIT_WD_CTL_CD0 : 0) |
drivers/rtc/rtc-pcf2127.c
1325
pcf2127_watchdog_init(dev, pcf2127);
drivers/rtc/rtc-pcf2127.c
1333
ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3,
drivers/rtc/rtc-pcf2127.c
1346
for (int i = 0; i < pcf2127->cfg->ts_count; i++) {
drivers/rtc/rtc-pcf2127.c
1352
ret = rtc_add_group(pcf2127->rtc, &pcf2127->cfg->attribute_group);
drivers/rtc/rtc-pcf2127.c
1359
return devm_rtc_register_device(pcf2127->rtc);
drivers/rtc/rtc-pcf2127.c
222
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
230
ret = regmap_bulk_read(pcf2127->regmap, pcf2127->cfg->reg_time_base,
drivers/rtc/rtc-pcf2127.c
273
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
301
if (pcf2127->cfg->type == PCF2131) {
drivers/rtc/rtc-pcf2127.c
302
err = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL1,
drivers/rtc/rtc-pcf2127.c
310
err = regmap_write(pcf2127->regmap, PCF2131_REG_SR_RESET,
drivers/rtc/rtc-pcf2127.c
319
err = regmap_bulk_write(pcf2127->regmap, pcf2127->cfg->reg_time_base, buf, i);
drivers/rtc/rtc-pcf2127.c
325
if (pcf2127->cfg->type == PCF2131) {
drivers/rtc/rtc-pcf2127.c
327
err = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL1,
drivers/rtc/rtc-pcf2127.c
340
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
346
ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &value);
drivers/rtc/rtc-pcf2127.c
370
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
377
ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &value);
drivers/rtc/rtc-pcf2127.c
403
return regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3,
drivers/rtc/rtc-pcf2127.c
419
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
425
ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL3, &val);
drivers/rtc/rtc-pcf2127.c
438
return regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL3,
drivers/rtc/rtc-pcf2127.c
449
struct pcf2127 *pcf2127 = priv;
drivers/rtc/rtc-pcf2127.c
453
ret = regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_ADDR_MSB,
drivers/rtc/rtc-pcf2127.c
458
return regmap_bulk_read(pcf2127->regmap, PCF2127_REG_RAM_RD_CMD,
drivers/rtc/rtc-pcf2127.c
465
struct pcf2127 *pcf2127 = priv;
drivers/rtc/rtc-pcf2127.c
469
ret = regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_ADDR_MSB,
drivers/rtc/rtc-pcf2127.c
474
return regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_WRT_CMD,
drivers/rtc/rtc-pcf2127.c
483
struct pcf2127 *pcf2127 = watchdog_get_drvdata(wdd);
drivers/rtc/rtc-pcf2127.c
489
wd_val = ((wdd->timeout * pcf2127->cfg->wdd_clock_hz_x1000) / 1000) + 1;
drivers/rtc/rtc-pcf2127.c
491
return regmap_write(pcf2127->regmap, pcf2127->cfg->reg_wd_val, wd_val);
drivers/rtc/rtc-pcf2127.c
523
struct pcf2127 *pcf2127 = watchdog_get_drvdata(wdd);
drivers/rtc/rtc-pcf2127.c
525
return regmap_write(pcf2127->regmap, pcf2127->cfg->reg_wd_val,
drivers/rtc/rtc-pcf2127.c
570
static int pcf2127_watchdog_init(struct device *dev, struct pcf2127 *pcf2127)
drivers/rtc/rtc-pcf2127.c
578
pcf2127->wdd.parent = dev;
drivers/rtc/rtc-pcf2127.c
579
pcf2127->wdd.info = &pcf2127_wdt_info;
drivers/rtc/rtc-pcf2127.c
580
pcf2127->wdd.ops = &pcf2127_watchdog_ops;
drivers/rtc/rtc-pcf2127.c
582
pcf2127->wdd.min_timeout =
drivers/rtc/rtc-pcf2127.c
584
2, pcf2127->cfg->wdd_clock_hz_x1000);
drivers/rtc/rtc-pcf2127.c
585
pcf2127->wdd.max_timeout =
drivers/rtc/rtc-pcf2127.c
587
255, pcf2127->cfg->wdd_clock_hz_x1000);
drivers/rtc/rtc-pcf2127.c
588
pcf2127->wdd.timeout = PCF2127_WD_DEFAULT_TIMEOUT_S;
drivers/rtc/rtc-pcf2127.c
591
pcf2127->cfg->wdd_clock_hz_x1000);
drivers/rtc/rtc-pcf2127.c
593
pcf2127->wdd.min_hw_heartbeat_ms = pcf2127->cfg->wdd_min_hw_heartbeat_ms;
drivers/rtc/rtc-pcf2127.c
594
pcf2127->wdd.status = WATCHDOG_NOWAYOUT_INIT_STATUS;
drivers/rtc/rtc-pcf2127.c
596
watchdog_set_drvdata(&pcf2127->wdd, pcf2127);
drivers/rtc/rtc-pcf2127.c
599
if (pcf2127->cfg->wd_val_reg_readable) {
drivers/rtc/rtc-pcf2127.c
602
ret = regmap_read(pcf2127->regmap, pcf2127->cfg->reg_wd_val,
drivers/rtc/rtc-pcf2127.c
608
set_bit(WDOG_HW_RUNNING, &pcf2127->wdd.status);
drivers/rtc/rtc-pcf2127.c
616
if (pcf2127->cfg->type == PCF2131) {
drivers/rtc/rtc-pcf2127.c
617
ret = regmap_write(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
626
return devm_watchdog_register_device(dev, &pcf2127->wdd);
drivers/rtc/rtc-pcf2127.c
632
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
637
ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL2, &ctrl2);
drivers/rtc/rtc-pcf2127.c
641
ret = pcf2127_wdt_active_ping(&pcf2127->wdd);
drivers/rtc/rtc-pcf2127.c
645
ret = regmap_bulk_read(pcf2127->regmap, pcf2127->cfg->regs_alarm_base,
drivers/rtc/rtc-pcf2127.c
663
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
666
ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL2,
drivers/rtc/rtc-pcf2127.c
672
return pcf2127_wdt_active_ping(&pcf2127->wdd);
drivers/rtc/rtc-pcf2127.c
677
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
681
ret = regmap_update_bits(pcf2127->regmap, PCF2127_REG_CTRL2,
drivers/rtc/rtc-pcf2127.c
686
ret = pcf2127_wdt_active_ping(&pcf2127->wdd);
drivers/rtc/rtc-pcf2127.c
696
ret = regmap_bulk_write(pcf2127->regmap, pcf2127->cfg->regs_alarm_base,
drivers/rtc/rtc-pcf2127.c
711
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
716
ret = regmap_bulk_read(pcf2127->regmap, pcf2127->cfg->ts[ts_id].reg_base,
drivers/rtc/rtc-pcf2127.c
749
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
752
if (ts_id >= pcf2127->cfg->ts_count)
drivers/rtc/rtc-pcf2127.c
756
if (pcf2127->ts_valid[ts_id])
drivers/rtc/rtc-pcf2127.c
759
ret = pcf2127_rtc_ts_read(dev, &pcf2127->ts[ts_id], ts_id);
drivers/rtc/rtc-pcf2127.c
761
pcf2127->ts_valid[ts_id] = true;
drivers/rtc/rtc-pcf2127.c
766
struct pcf2127 *pcf2127 = dev_get_drvdata(dev);
drivers/rtc/rtc-pcf2127.c
770
ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL2, &ctrl2);
drivers/rtc/rtc-pcf2127.c
774
if (pcf2127->cfg->ts_count == 1) {
drivers/rtc/rtc-pcf2127.c
778
ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL1, &ctrl1);
drivers/rtc/rtc-pcf2127.c
789
regmap_write(pcf2127->regmap, PCF2127_REG_CTRL1,
drivers/rtc/rtc-pcf2127.c
793
regmap_write(pcf2127->regmap, PCF2127_REG_CTRL2,
drivers/rtc/rtc-pcf2127.c
799
ret = regmap_read(pcf2127->regmap, PCF2131_REG_CTRL4, &ctrl4);
drivers/rtc/rtc-pcf2127.c
810
for (i = 0; i < pcf2127->cfg->ts_count; i++) {
drivers/rtc/rtc-pcf2127.c
817
regmap_write(pcf2127->regmap, PCF2131_REG_CTRL4,
drivers/rtc/rtc-pcf2127.c
822
regmap_write(pcf2127->regmap, PCF2127_REG_CTRL2,
drivers/rtc/rtc-pcf2127.c
827
rtc_update_irq(pcf2127->rtc, 1, RTC_IRQF | RTC_AF);
drivers/rtc/rtc-pcf2127.c
829
pcf2127_wdt_active_ping(&pcf2127->wdd);
drivers/rtc/rtc-pcf2127.c
851
struct pcf2127 *pcf2127 = dev_get_drvdata(dev->parent);
drivers/rtc/rtc-pcf2127.c
854
if (ts_id >= pcf2127->cfg->ts_count)
drivers/rtc/rtc-pcf2127.c
857
if (pcf2127->irq_enabled) {
drivers/rtc/rtc-pcf2127.c
858
pcf2127->ts_valid[ts_id] = false;
drivers/rtc/rtc-pcf2127.c
861
ret = regmap_update_bits(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
862
pcf2127->cfg->ts[ts_id].gnd_detect_reg,
drivers/rtc/rtc-pcf2127.c
863
pcf2127->cfg->ts[ts_id].gnd_detect_bit,
drivers/rtc/rtc-pcf2127.c
871
if (pcf2127->cfg->ts[ts_id].inter_detect_bit) {
drivers/rtc/rtc-pcf2127.c
873
ret = regmap_update_bits(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
874
pcf2127->cfg->ts[ts_id].inter_detect_reg,
drivers/rtc/rtc-pcf2127.c
875
pcf2127->cfg->ts[ts_id].inter_detect_bit,
drivers/rtc/rtc-pcf2127.c
884
ret = pcf2127_wdt_active_ping(&pcf2127->wdd);
drivers/rtc/rtc-pcf2127.c
924
struct pcf2127 *pcf2127 = dev_get_drvdata(dev->parent);
drivers/rtc/rtc-pcf2127.c
928
if (ts_id >= pcf2127->cfg->ts_count)
drivers/rtc/rtc-pcf2127.c
931
if (pcf2127->irq_enabled) {
drivers/rtc/rtc-pcf2127.c
932
if (!pcf2127->ts_valid[ts_id])
drivers/rtc/rtc-pcf2127.c
934
ts = pcf2127->ts[ts_id];
drivers/rtc/rtc-pcf2127.c
943
ret = regmap_read(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
944
pcf2127->cfg->ts[ts_id].gnd_detect_reg,
drivers/rtc/rtc-pcf2127.c
949
valid_low = ctrl & pcf2127->cfg->ts[ts_id].gnd_detect_bit;
drivers/rtc/rtc-pcf2127.c
951
if (pcf2127->cfg->ts[ts_id].inter_detect_bit) {
drivers/rtc/rtc-pcf2127.c
955
ret = regmap_read(pcf2127->regmap,
drivers/rtc/rtc-pcf2127.c
956
pcf2127->cfg->ts[ts_id].inter_detect_reg,
drivers/rtc/rtc-pcf2127.c
961
valid_inter = ctrl & pcf2127->cfg->ts[ts_id].inter_detect_bit;
drivers/rtc/rtc-pcf2127.c
971
ret = pcf2127_wdt_active_ping(&pcf2127->wdd);