Lines Matching refs:pcf8563

63 struct pcf8563 {
87 static int pcf8563_set_alarm_mode(struct pcf8563 *pcf8563, bool on)
92 err = regmap_read(pcf8563->regmap, PCF8563_REG_ST2, &buf);
103 return regmap_write(pcf8563->regmap, PCF8563_REG_ST2, buf);
106 static int pcf8563_get_alarm_mode(struct pcf8563 *pcf8563, unsigned char *en,
112 err = regmap_read(pcf8563->regmap, PCF8563_REG_ST2, &buf);
126 struct pcf8563 *pcf8563 = dev_id;
130 err = pcf8563_get_alarm_mode(pcf8563, NULL, &pending);
135 rtc_update_irq(pcf8563->rtc, 1, RTC_IRQF | RTC_AF);
136 pcf8563_set_alarm_mode(pcf8563, 1);
144 * In the routines that deal directly with the pcf8563 hardware, we use
149 struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
153 err = regmap_bulk_read(pcf8563->regmap, PCF8563_REG_ST1, buf,
180 pcf8563->c_polarity = (buf[PCF8563_REG_MO] & PCF8563_MO_C) ?
194 struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
215 if (pcf8563->c_polarity ? (tm->tm_year >= 100) : (tm->tm_year < 100))
220 return regmap_bulk_write(pcf8563->regmap, PCF8563_REG_SC,
227 struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
232 ret = regmap_test_bits(pcf8563->regmap, PCF8563_REG_SC,
246 struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
250 err = regmap_bulk_read(pcf8563->regmap, PCF8563_REG_AMN, buf,
265 err = pcf8563_get_alarm_mode(pcf8563, &tm->enabled, &tm->pending);
279 struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
288 err = regmap_bulk_write(pcf8563->regmap, PCF8563_REG_AMN, buf,
293 return pcf8563_set_alarm_mode(pcf8563, !!tm->enabled);
298 struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
301 return pcf8563_set_alarm_mode(pcf8563, !!enabled);
309 #define clkout_hw_to_pcf8563(_hw) container_of(_hw, struct pcf8563, clkout_hw)
321 struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
325 ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
353 struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
357 ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
365 return regmap_update_bits(pcf8563->regmap,
376 struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
380 ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
389 return regmap_update_bits(pcf8563->regmap, PCF8563_REG_CLKO,
405 struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
409 ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
425 static struct clk *pcf8563_clkout_register_clk(struct pcf8563 *pcf8563)
427 struct device_node *node = pcf8563->rtc->dev.of_node;
433 ret = regmap_clear_bits(pcf8563->regmap, PCF8563_REG_CLKO,
438 init.name = "pcf8563-clkout";
443 pcf8563->clkout_hw.init = &init;
449 clk = devm_clk_register(&pcf8563->rtc->dev, &pcf8563->clkout_hw);
475 struct pcf8563 *pcf8563;
483 pcf8563 = devm_kzalloc(&client->dev, sizeof(struct pcf8563),
485 if (!pcf8563)
488 pcf8563->regmap = devm_regmap_init_i2c(client, &regmap_config);
489 if (IS_ERR(pcf8563->regmap))
490 return PTR_ERR(pcf8563->regmap);
492 i2c_set_clientdata(client, pcf8563);
496 err = regmap_set_bits(pcf8563->regmap, PCF8563_REG_TMRC,
504 err = regmap_write(pcf8563->regmap, PCF8563_REG_ST2, 0);
510 pcf8563->rtc = devm_rtc_allocate_device(&client->dev);
511 if (IS_ERR(pcf8563->rtc))
512 return PTR_ERR(pcf8563->rtc);
514 pcf8563->rtc->ops = &pcf8563_rtc_ops;
515 /* the pcf8563 alarm only supports a minute accuracy */
516 set_bit(RTC_FEATURE_ALARM_RES_MINUTE, pcf8563->rtc->features);
517 clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf8563->rtc->features);
518 clear_bit(RTC_FEATURE_ALARM, pcf8563->rtc->features);
519 pcf8563->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
520 pcf8563->rtc->range_max = RTC_TIMESTAMP_END_2099;
521 pcf8563->rtc->set_start_time = true;
544 set_bit(RTC_FEATURE_ALARM, pcf8563->rtc->features);
547 err = devm_rtc_register_device(pcf8563->rtc);
553 pcf8563_clkout_register_clk(pcf8563);
560 { "pcf8563" },
569 { .compatible = "nxp,pcf8563" },
580 .name = "rtc-pcf8563",