pcf85063
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
rc = regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL1,
rc = regmap_bulk_write(pcf85063->regmap, PCF85063_REG_SC,
return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL1,
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
ret = regmap_bulk_read(pcf85063->regmap, PCF85063_REG_ALM_S,
ret = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL2, &val);
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
ret = regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2,
ret = regmap_bulk_write(pcf85063->regmap, PCF85063_REG_ALM_S,
return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2,
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2,
struct pcf85063 *pcf85063 = dev_id;
err = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL2, &val);
rtc_update_irq(pcf85063->rtc, 1, RTC_IRQF | RTC_AF);
regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2,
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
ret = regmap_read(pcf85063->regmap, PCF85063_REG_OFFSET, ®);
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
return regmap_write(pcf85063->regmap, PCF85063_REG_OFFSET, reg);
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
ret = regmap_read(pcf85063->regmap, PCF85063_REG_SC, &status);
static int pcf85063_load_capacitance(struct pcf85063 *pcf85063,
dev_warn(&pcf85063->rtc->dev, "Unknown quartz-load-femtofarads value: %d. Assuming 7000",
return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL1,
#define clkout_hw_to_pcf85063(_hw) container_of(_hw, struct pcf85063, clkout_hw)
struct pcf85063 *pcf85063 = clkout_hw_to_pcf85063(hw);
int ret = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL2, &buf);
struct pcf85063 *pcf85063 = clkout_hw_to_pcf85063(hw);
return regmap_update_bits(pcf85063->regmap,
struct pcf85063 *pcf85063 = clkout_hw_to_pcf85063(hw);
ret = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL2, &buf);
return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2,
struct pcf85063 *pcf85063 = clkout_hw_to_pcf85063(hw);
int ret = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL2, &buf);
static struct clk *pcf85063_clkout_register_clk(struct pcf85063 *pcf85063)
struct device_node *node = pcf85063->rtc->dev.parent->of_node;
pcf85063->clkout_hw.init = &init;
clk = devm_clk_register(&pcf85063->rtc->dev, &pcf85063->clkout_hw);
struct pcf85063 *pcf85063;
pcf85063 = devm_kzalloc(dev, sizeof(struct pcf85063),
if (!pcf85063)
pcf85063->regmap = regmap;
dev_set_drvdata(dev, pcf85063);
err = regmap_read(pcf85063->regmap, PCF85063_REG_SC, &tmp);
pcf85063->rtc = devm_rtc_allocate_device(dev);
if (IS_ERR(pcf85063->rtc))
return PTR_ERR(pcf85063->rtc);
err = regmap_write(pcf85063->regmap, PCF85063_REG_CTRL1,
err = pcf85063_load_capacitance(pcf85063, dev->of_node,
pcf85063->rtc->ops = &pcf85063_rtc_ops;
pcf85063->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
pcf85063->rtc->range_max = RTC_TIMESTAMP_END_2099;
set_bit(RTC_FEATURE_ALARM_RES_2S, pcf85063->rtc->features);
clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf85063->rtc->features);
clear_bit(RTC_FEATURE_ALARM, pcf85063->rtc->features);
"pcf85063", pcf85063);
dev_warn(&pcf85063->rtc->dev,
set_bit(RTC_FEATURE_ALARM, pcf85063->rtc->features);
dev_err(&pcf85063->rtc->dev,
nvmem_cfg.priv = pcf85063->regmap;
devm_rtc_nvmem_register(pcf85063->rtc, &nvmem_cfg);
pcf85063_clkout_register_clk(pcf85063);
return devm_rtc_register_device(pcf85063->rtc);
struct pcf85063 *pcf85063 = dev_get_drvdata(dev);
rc = regmap_bulk_read(pcf85063->regmap, PCF85063_REG_SC, regs,
dev_warn(&pcf85063->rtc->dev, "Power loss detected, invalid time\n");