Skip to content

Commit b1248da

Browse files
andredalexandrebelloni
authored andcommitted
rtc: s5m: replace open-coded read/modify/write registers with regmap helpers
Instead of the open-coded read/modify/write sequence, we can simply use the regmap helpers regmap_set_bits() and regmap_update_bits() respectively. This makes the code easier to read, and avoids extra work in case the underlying bus supports updating bits via struct regmap_bus::reg_update_bits() directly (which is the case for S2MPG10 on gs101 where this driver communicates via ACPM). Signed-off-by: André Draszik <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Alexandre Belloni <[email protected]>
1 parent f5adb1f commit b1248da

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

drivers/rtc/rtc-s5m.c

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -279,17 +279,9 @@ static int s5m_check_pending_alarm_interrupt(struct s5m_rtc_info *info,
279279
static int s5m8767_rtc_set_time_reg(struct s5m_rtc_info *info)
280280
{
281281
int ret;
282-
unsigned int data;
283-
284-
ret = regmap_read(info->regmap, info->regs->udr_update, &data);
285-
if (ret < 0) {
286-
dev_err(info->dev, "failed to read update reg(%d)\n", ret);
287-
return ret;
288-
}
289-
290-
data |= info->regs->write_time_udr_mask;
291282

292-
ret = regmap_write(info->regmap, info->regs->udr_update, data);
283+
ret = regmap_set_bits(info->regmap, info->regs->udr_update,
284+
info->regs->write_time_udr_mask);
293285
if (ret < 0) {
294286
dev_err(info->dev, "failed to write update reg(%d)\n", ret);
295287
return ret;
@@ -303,19 +295,12 @@ static int s5m8767_rtc_set_time_reg(struct s5m_rtc_info *info)
303295
static int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info)
304296
{
305297
int ret;
306-
unsigned int data;
307-
308-
ret = regmap_read(info->regmap, info->regs->udr_update, &data);
309-
if (ret < 0) {
310-
dev_err(info->dev, "%s: fail to read update reg(%d)\n",
311-
__func__, ret);
312-
return ret;
313-
}
298+
unsigned int udr_mask;
314299

315-
data |= info->regs->write_alarm_udr_mask;
300+
udr_mask = info->regs->write_alarm_udr_mask;
316301
switch (info->device_type) {
317302
case S5M8767X:
318-
data &= ~S5M_RTC_TIME_EN_MASK;
303+
udr_mask |= S5M_RTC_TIME_EN_MASK;
319304
break;
320305
case S2MPG10:
321306
case S2MPS15X:
@@ -327,7 +312,8 @@ static int s5m8767_rtc_set_alarm_reg(struct s5m_rtc_info *info)
327312
return -EINVAL;
328313
}
329314

330-
ret = regmap_write(info->regmap, info->regs->udr_update, data);
315+
ret = regmap_update_bits(info->regmap, info->regs->udr_update,
316+
udr_mask, info->regs->write_alarm_udr_mask);
331317
if (ret < 0) {
332318
dev_err(info->dev, "%s: fail to write update reg(%d)\n",
333319
__func__, ret);

0 commit comments

Comments
 (0)