Skip to content

Commit

Permalink
rtc: ds1511: let the core know when alarm are not supported
Browse files Browse the repository at this point in the history
Instead of failing function calls, let the core know alarms are not
supported so it can fail early and avoid unnecessary calls.

Link: https://lore.kernel.org/r/20240227230431.1837717-8-alexandre.belloni@bootlin.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
  • Loading branch information
alexandrebelloni committed Feb 29, 2024
1 parent 434c9d0 commit f891570
Showing 1 changed file with 9 additions and 15 deletions.
24 changes: 9 additions & 15 deletions drivers/rtc/rtc-ds1511.c
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,6 @@ static int ds1511_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
struct rtc_plat_data *pdata = dev_get_drvdata(dev);
unsigned long flags;

if (pdata->irq <= 0)
return -EINVAL;

pdata->alrm_mday = alrm->time.tm_mday;
pdata->alrm_hour = alrm->time.tm_hour;
pdata->alrm_min = alrm->time.tm_min;
Expand Down Expand Up @@ -219,9 +216,6 @@ static int ds1511_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
{
struct rtc_plat_data *pdata = dev_get_drvdata(dev);

if (pdata->irq <= 0)
return -EINVAL;

alrm->time.tm_mday = pdata->alrm_mday < 0 ? 0 : pdata->alrm_mday;
alrm->time.tm_hour = pdata->alrm_hour < 0 ? 0 : pdata->alrm_hour;
alrm->time.tm_min = pdata->alrm_min < 0 ? 0 : pdata->alrm_min;
Expand Down Expand Up @@ -253,9 +247,6 @@ static int ds1511_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
struct rtc_plat_data *pdata = dev_get_drvdata(dev);
unsigned long flags;

if (pdata->irq <= 0)
return -EINVAL;

spin_lock_irqsave(&pdata->lock, flags);
ds1511_rtc_alarm_enable(enabled);
spin_unlock_irqrestore(&pdata->lock, flags);
Expand Down Expand Up @@ -349,12 +340,6 @@ static int ds1511_rtc_probe(struct platform_device *pdev)

pdata->rtc->ops = &ds1511_rtc_ops;

ret = devm_rtc_register_device(pdata->rtc);
if (ret)
return ret;

devm_rtc_nvmem_register(pdata->rtc, &ds1511_nvmem_cfg);

/*
* if the platform has an interrupt in mind for this device,
* then by all means, set it
Expand All @@ -369,6 +354,15 @@ static int ds1511_rtc_probe(struct platform_device *pdev)
}
}

if (pdata->irq == 0)
clear_bit(RTC_FEATURE_ALARM, pdata->rtc->features);

ret = devm_rtc_register_device(pdata->rtc);
if (ret)
return ret;

devm_rtc_nvmem_register(pdata->rtc, &ds1511_nvmem_cfg);

return 0;
}

Expand Down

0 comments on commit f891570

Please sign in to comment.