Lines Matching refs:sd2405al

43 struct sd2405al {  struct
49 static int sd2405al_enable_reg_write(struct sd2405al *sd2405al) in sd2405al_enable_reg_write() argument
54 ret = regmap_update_bits(sd2405al->regmap, SD2405AL_REG_CTR2, in sd2405al_enable_reg_write()
59 ret = regmap_update_bits(sd2405al->regmap, SD2405AL_REG_CTR1, in sd2405al_enable_reg_write()
68 static int sd2405al_disable_reg_write(struct sd2405al *sd2405al) in sd2405al_disable_reg_write() argument
73 ret = regmap_update_bits(sd2405al->regmap, SD2405AL_REG_CTR1, in sd2405al_disable_reg_write()
78 ret = regmap_update_bits(sd2405al->regmap, SD2405AL_REG_CTR2, in sd2405al_disable_reg_write()
89 struct sd2405al *sd2405al = dev_get_drvdata(dev); in sd2405al_read_time() local
92 ret = regmap_bulk_read(sd2405al->regmap, SD2405AL_REG_T_SEC, data, in sd2405al_read_time()
115 dev_dbg(sd2405al->dev, "read time: %ptR (%d)\n", time, time->tm_wday); in sd2405al_read_time()
123 struct sd2405al *sd2405al = dev_get_drvdata(dev); in sd2405al_set_time() local
134 ret = sd2405al_enable_reg_write(sd2405al); in sd2405al_set_time()
138 ret = regmap_bulk_write(sd2405al->regmap, SD2405AL_REG_T_SEC, data, in sd2405al_set_time()
143 ret = regmap_write(sd2405al->regmap, SD2405AL_REG_TTF, 0x00); in sd2405al_set_time()
147 ret = sd2405al_disable_reg_write(sd2405al); in sd2405al_set_time()
151 dev_dbg(sd2405al->dev, "set time: %ptR (%d)\n", time, time->tm_wday); in sd2405al_set_time()
169 struct sd2405al *sd2405al; in sd2405al_probe() local
175 sd2405al = devm_kzalloc(&client->dev, sizeof(*sd2405al), GFP_KERNEL); in sd2405al_probe()
176 if (!sd2405al) in sd2405al_probe()
179 sd2405al->dev = &client->dev; in sd2405al_probe()
181 sd2405al->regmap = devm_regmap_init_i2c(client, &sd2405al_regmap_conf); in sd2405al_probe()
182 if (IS_ERR(sd2405al->regmap)) in sd2405al_probe()
183 return PTR_ERR(sd2405al->regmap); in sd2405al_probe()
185 sd2405al->rtc = devm_rtc_allocate_device(&client->dev); in sd2405al_probe()
186 if (IS_ERR(sd2405al->rtc)) in sd2405al_probe()
187 return PTR_ERR(sd2405al->rtc); in sd2405al_probe()
189 sd2405al->rtc->ops = &sd2405al_rtc_ops; in sd2405al_probe()
190 sd2405al->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; in sd2405al_probe()
191 sd2405al->rtc->range_max = RTC_TIMESTAMP_END_2099; in sd2405al_probe()
193 dev_set_drvdata(&client->dev, sd2405al); in sd2405al_probe()
195 ret = devm_rtc_register_device(sd2405al->rtc); in sd2405al_probe()