pcf8563
return regmap_write(pcf8563->regmap, PCF8563_REG_ST2, buf);
static int pcf8563_get_alarm_mode(struct pcf8563 *pcf8563, unsigned char *en,
err = regmap_read(pcf8563->regmap, PCF8563_REG_ST2, &buf);
struct pcf8563 *pcf8563 = dev_id;
err = pcf8563_get_alarm_mode(pcf8563, NULL, &pending);
rtc_update_irq(pcf8563->rtc, 1, RTC_IRQF | RTC_AF);
pcf8563_set_alarm_mode(pcf8563, 1);
struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
err = regmap_bulk_read(pcf8563->regmap, PCF8563_REG_ST1, buf,
pcf8563->c_polarity = (buf[PCF8563_REG_MO] & PCF8563_MO_C) ?
struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
if (pcf8563->c_polarity ? (tm->tm_year >= 100) : (tm->tm_year < 100))
return regmap_bulk_write(pcf8563->regmap, PCF8563_REG_SC,
struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
ret = regmap_test_bits(pcf8563->regmap, PCF8563_REG_SC,
struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
err = regmap_bulk_read(pcf8563->regmap, PCF8563_REG_AMN, buf,
err = pcf8563_get_alarm_mode(pcf8563, &tm->enabled, &tm->pending);
struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
err = regmap_bulk_write(pcf8563->regmap, PCF8563_REG_AMN, buf,
return pcf8563_set_alarm_mode(pcf8563, !!tm->enabled);
struct pcf8563 *pcf8563 = dev_get_drvdata(dev);
return pcf8563_set_alarm_mode(pcf8563, !!enabled);
#define clkout_hw_to_pcf8563(_hw) container_of(_hw, struct pcf8563, clkout_hw)
struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
return regmap_update_bits(pcf8563->regmap,
struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
return regmap_update_bits(pcf8563->regmap, PCF8563_REG_CLKO,
struct pcf8563 *pcf8563 = clkout_hw_to_pcf8563(hw);
ret = regmap_read(pcf8563->regmap, PCF8563_REG_CLKO, &buf);
static struct clk *pcf8563_clkout_register_clk(struct pcf8563 *pcf8563)
struct device_node *node = pcf8563->rtc->dev.parent->of_node;
ret = regmap_clear_bits(pcf8563->regmap, PCF8563_REG_CLKO,
pcf8563->clkout_hw.init = &init;
clk = devm_clk_register(&pcf8563->rtc->dev, &pcf8563->clkout_hw);
struct pcf8563 *pcf8563;
pcf8563 = devm_kzalloc(&client->dev, sizeof(struct pcf8563),
if (!pcf8563)
pcf8563->regmap = devm_regmap_init_i2c(client, ®map_config);
if (IS_ERR(pcf8563->regmap))
return PTR_ERR(pcf8563->regmap);
i2c_set_clientdata(client, pcf8563);
err = regmap_set_bits(pcf8563->regmap, PCF8563_REG_TMRC,
err = regmap_write(pcf8563->regmap, PCF8563_REG_ST2, 0);
pcf8563->rtc = devm_rtc_allocate_device(&client->dev);
if (IS_ERR(pcf8563->rtc))
return PTR_ERR(pcf8563->rtc);
pcf8563->rtc->ops = &pcf8563_rtc_ops;
set_bit(RTC_FEATURE_ALARM_RES_MINUTE, pcf8563->rtc->features);
clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf8563->rtc->features);
clear_bit(RTC_FEATURE_ALARM, pcf8563->rtc->features);
pcf8563->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
pcf8563->rtc->range_max = RTC_TIMESTAMP_END_2099;
pcf8563->rtc->set_start_time = true;
set_bit(RTC_FEATURE_ALARM, pcf8563->rtc->features);
err = devm_rtc_register_device(pcf8563->rtc);
pcf8563_clkout_register_clk(pcf8563);
static int pcf8563_set_alarm_mode(struct pcf8563 *pcf8563, bool on)
err = regmap_read(pcf8563->regmap, PCF8563_REG_ST2, &buf);