Skip to content

Commit d370586

Browse files
Wolfram Sangalexandrebelloni
authored andcommitted
rtc: da9063: simplify irq management
The code for enabling and disabling the irq is so similar that it can easily be handled by one function. Like in most other RTC drivers. Save the duplicated code and one layer of indirection. Signed-off-by: Wolfram Sang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Alexandre Belloni <[email protected]>
1 parent 0bddd06 commit d370586

File tree

1 file changed

+6
-24
lines changed

1 file changed

+6
-24
lines changed

drivers/rtc/rtc-da9063.c

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -194,26 +194,17 @@ static void da9063_tm_to_data(struct rtc_time *tm, u8 *data,
194194
config->rtc_count_year_mask;
195195
}
196196

197-
static int da9063_rtc_stop_alarm(struct device *dev)
198-
{
199-
struct da9063_compatible_rtc *rtc = dev_get_drvdata(dev);
200-
const struct da9063_compatible_rtc_regmap *config = rtc->config;
201-
202-
return regmap_update_bits(rtc->regmap,
203-
config->rtc_alarm_year_reg,
204-
config->rtc_alarm_on_mask,
205-
0);
206-
}
207-
208-
static int da9063_rtc_start_alarm(struct device *dev)
197+
static int da9063_rtc_alarm_irq_enable(struct device *dev,
198+
unsigned int enabled)
209199
{
210200
struct da9063_compatible_rtc *rtc = dev_get_drvdata(dev);
211201
const struct da9063_compatible_rtc_regmap *config = rtc->config;
202+
u8 set_bit = enabled ? config->rtc_alarm_on_mask : 0;
212203

213204
return regmap_update_bits(rtc->regmap,
214205
config->rtc_alarm_year_reg,
215206
config->rtc_alarm_on_mask,
216-
config->rtc_alarm_on_mask);
207+
set_bit);
217208
}
218209

219210
static int da9063_rtc_read_time(struct device *dev, struct rtc_time *tm)
@@ -312,7 +303,7 @@ static int da9063_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
312303

313304
da9063_tm_to_data(&alrm->time, data, rtc);
314305

315-
ret = da9063_rtc_stop_alarm(dev);
306+
ret = da9063_rtc_alarm_irq_enable(dev, 0);
316307
if (ret < 0) {
317308
dev_err(dev, "Failed to stop alarm: %d\n", ret);
318309
return ret;
@@ -330,7 +321,7 @@ static int da9063_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
330321
da9063_data_to_tm(data, &rtc->alarm_time, rtc);
331322

332323
if (alrm->enabled) {
333-
ret = da9063_rtc_start_alarm(dev);
324+
ret = da9063_rtc_alarm_irq_enable(dev, 1);
334325
if (ret < 0) {
335326
dev_err(dev, "Failed to start alarm: %d\n", ret);
336327
return ret;
@@ -340,15 +331,6 @@ static int da9063_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
340331
return ret;
341332
}
342333

343-
static int da9063_rtc_alarm_irq_enable(struct device *dev,
344-
unsigned int enabled)
345-
{
346-
if (enabled)
347-
return da9063_rtc_start_alarm(dev);
348-
else
349-
return da9063_rtc_stop_alarm(dev);
350-
}
351-
352334
static irqreturn_t da9063_alarm_event(int irq, void *data)
353335
{
354336
struct da9063_compatible_rtc *rtc = data;

0 commit comments

Comments
 (0)