Skip to content

Commit

Permalink
Merge tag 'rtc-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git…
Browse files Browse the repository at this point in the history
…/abelloni/linux

Pull RTC updates from Alexandre Belloni:
 "Not much this cycle, there are multiple small fixes.

  Core:
   - use boolean values with device_init_wakeup()

  Drivers:
   - pcf2127: add BSM support
   - pcf85063: fix possible out of bounds write"

* tag 'rtc-6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux:
  rtc: pcf2127: add BSM support
  rtc: Remove hpet_rtc_dropped_irq()
  dt-bindings: rtc: mxc: Document fsl,imx31-rtc
  rtc: stm32: Use syscon_regmap_lookup_by_phandle_args
  rtc: zynqmp: Fix optional clock name property
  rtc: loongson: clear TOY_MATCH0_REG in loongson_rtc_isr()
  rtc: pcf85063: fix potential OOB write in PCF85063 NVMEM read
  rtc: tps6594: Fix integer overflow on 32bit systems
  rtc: use boolean values with device_init_wakeup()
  rtc: RTC_DRV_SPEAR should not default to y when compile-testing
  • Loading branch information
torvalds committed Jan 31, 2025
2 parents a4b5e48 + 9727452 commit 2a9f04b
Show file tree
Hide file tree
Showing 61 changed files with 180 additions and 102 deletions.
10 changes: 7 additions & 3 deletions Documentation/devicetree/bindings/rtc/rtc-mxc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,13 @@ maintainers:

properties:
compatible:
enum:
- fsl,imx1-rtc
- fsl,imx21-rtc
oneOf:
- const: fsl,imx1-rtc
- const: fsl,imx21-rtc
- items:
- enum:
- fsl,imx31-rtc
- const: fsl,imx21-rtc

reg:
maxItems: 1
Expand Down
1 change: 0 additions & 1 deletion arch/x86/include/asm/hpet.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ extern int hpet_set_rtc_irq_bit(unsigned long bit_mask);
extern int hpet_set_alarm_time(unsigned char hrs, unsigned char min,
unsigned char sec);
extern int hpet_set_periodic_freq(unsigned long freq);
extern int hpet_rtc_dropped_irq(void);
extern int hpet_rtc_timer_init(void);
extern irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id);
extern int hpet_register_irq_handler(rtc_irq_handler handler);
Expand Down
6 changes: 0 additions & 6 deletions arch/x86/kernel/hpet.c
Original file line number Diff line number Diff line change
Expand Up @@ -1382,12 +1382,6 @@ int hpet_set_periodic_freq(unsigned long freq)
}
EXPORT_SYMBOL_GPL(hpet_set_periodic_freq);

int hpet_rtc_dropped_irq(void)
{
return is_hpet_enabled();
}
EXPORT_SYMBOL_GPL(hpet_rtc_dropped_irq);

static void hpet_rtc_timer_reinit(void)
{
unsigned int delta;
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1316,7 +1316,7 @@ config RTC_DRV_SC27XX
config RTC_DRV_SPEAR
tristate "SPEAR ST RTC"
depends on PLAT_SPEAR || COMPILE_TEST
default y
default PLAT_SPEAR
help
If you say Y here you will get support for the RTC found on
spear
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-88pm80x.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ static int pm80x_rtc_probe(struct platform_device *pdev)
/* remember whether this power up is caused by PMIC RTC or not */
info->rtc_dev->dev.platform_data = &pdata->rtc_wakeup;

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

return 0;
out_rtc:
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-88pm860x.c
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ static int pm860x_rtc_probe(struct platform_device *pdev)
schedule_delayed_work(&info->calib_work, VRTC_CALIB_INTERVAL);
#endif /* VRTC_CALIBRATION */

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

return 0;
}
Expand Down
6 changes: 3 additions & 3 deletions drivers/rtc/rtc-amlogic-a4.c
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ static int aml_rtc_probe(struct platform_device *pdev)
"failed to get_enable rtc sys clk\n");
aml_rtc_init(rtc);

device_init_wakeup(dev, 1);
device_init_wakeup(dev, true);
platform_set_drvdata(pdev, rtc);

rtc->rtc_dev = devm_rtc_allocate_device(dev);
Expand Down Expand Up @@ -391,7 +391,7 @@ static int aml_rtc_probe(struct platform_device *pdev)
return 0;
err_clk:
clk_disable_unprepare(rtc->sys_clk);
device_init_wakeup(dev, 0);
device_init_wakeup(dev, false);

return ret;
}
Expand Down Expand Up @@ -426,7 +426,7 @@ static void aml_rtc_remove(struct platform_device *pdev)
struct aml_rtc_data *rtc = dev_get_drvdata(&pdev->dev);

clk_disable_unprepare(rtc->sys_clk);
device_init_wakeup(&pdev->dev, 0);
device_init_wakeup(&pdev->dev, false);
}

static const struct aml_rtc_config a5_rtc_config = {
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-armada38x.c
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, rtc);

if (rtc->irq != -1)
device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);
else
clear_bit(RTC_FEATURE_ALARM, rtc->rtc_dev->features);

Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-as3722.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ static int as3722_rtc_probe(struct platform_device *pdev)
return ret;
}

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

as3722_rtc->rtc = devm_rtc_device_register(&pdev->dev, "as3722-rtc",
&as3722_rtc_ops, THIS_MODULE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-at91rm9200.c
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev)
* being wake-capable; if it didn't, do that here.
*/
if (!device_can_wakeup(&pdev->dev))
device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

if (at91_rtc_config->has_correction)
rtc->ops = &sama5d4_rtc_ops;
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-at91sam9.c
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ static int at91_rtc_probe(struct platform_device *pdev)

/* platform setup code should have handled this; sigh */
if (!device_can_wakeup(&pdev->dev))
device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

platform_set_drvdata(pdev, rtc);

Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-cadence.c
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ static void cdns_rtc_remove(struct platform_device *pdev)
struct cdns_rtc *crtc = platform_get_drvdata(pdev);

cdns_rtc_alarm_irq_enable(&pdev->dev, 0);
device_init_wakeup(&pdev->dev, 0);
device_init_wakeup(&pdev->dev, false);

clk_disable_unprepare(crtc->pclk);
clk_disable_unprepare(crtc->ref_clk);
Expand Down
7 changes: 1 addition & 6 deletions drivers/rtc/rtc-cmos.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,6 @@ static inline int hpet_set_periodic_freq(unsigned long freq)
return 0;
}

static inline int hpet_rtc_dropped_irq(void)
{
return 0;
}

static inline int hpet_rtc_timer_init(void)
{
return 0;
Expand Down Expand Up @@ -864,7 +859,7 @@ static void acpi_cmos_wake_setup(struct device *dev)
dev_info(dev, "RTC can wake from S4\n");

/* RTC always wakes from S1/S2/S3, and often S4/STD */
device_init_wakeup(dev, 1);
device_init_wakeup(dev, true);
}

static void cmos_check_acpi_rtc_status(struct device *dev,
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-cpcap.c
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ static int cpcap_rtc_probe(struct platform_device *pdev)
}
disable_irq(rtc->update_irq);

err = device_init_wakeup(dev, 1);
err = device_init_wakeup(dev, true);
if (err) {
dev_err(dev, "wakeup initialization failed (%d)\n", err);
/* ignore error and continue without wakeup support */
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-cros-ec.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ static int cros_ec_rtc_probe(struct platform_device *pdev)
return ret;
}

ret = device_init_wakeup(&pdev->dev, 1);
ret = device_init_wakeup(&pdev->dev, true);
if (ret) {
dev_err(&pdev->dev, "failed to initialize wakeup\n");
return ret;
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-da9055.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ static int da9055_rtc_probe(struct platform_device *pdev)
if (ret & DA9055_RTC_ALM_EN)
rtc->alarm_enable = 1;

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
&da9055_rtc_ops, THIS_MODULE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-ds3232.c
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ static int ds3232_probe(struct device *dev, struct regmap *regmap, int irq,
return ret;

if (ds3232->irq > 0)
device_init_wakeup(dev, 1);
device_init_wakeup(dev, true);

ds3232_hwmon_register(dev, name);

Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-isl1208.c
Original file line number Diff line number Diff line change
Expand Up @@ -830,7 +830,7 @@ static int isl1208_setup_irq(struct i2c_client *client, int irq)
isl1208_driver.driver.name,
client);
if (!rc) {
device_init_wakeup(&client->dev, 1);
device_init_wakeup(&client->dev, true);
enable_irq_wake(irq);
} else {
dev_err(&client->dev,
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-jz4740.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ static int jz4740_rtc_probe(struct platform_device *pdev)

platform_set_drvdata(pdev, rtc);

device_init_wakeup(dev, 1);
device_init_wakeup(dev, true);

ret = dev_pm_set_wake_irq(dev, irq);
if (ret)
Expand Down
17 changes: 10 additions & 7 deletions drivers/rtc/rtc-loongson.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,13 @@ static irqreturn_t loongson_rtc_isr(int irq, void *id)
struct loongson_rtc_priv *priv = (struct loongson_rtc_priv *)id;

rtc_update_irq(priv->rtcdev, 1, RTC_AF | RTC_IRQF);

/*
* The TOY_MATCH0_REG should be cleared 0 here,
* otherwise the interrupt cannot be cleared.
*/
regmap_write(priv->regmap, TOY_MATCH0_REG, 0);

return IRQ_HANDLED;
}

Expand All @@ -131,11 +138,7 @@ static u32 loongson_rtc_handler(void *id)
writel(RTC_STS, priv->pm_base + PM1_STS_REG);
spin_unlock(&priv->lock);

/*
* The TOY_MATCH0_REG should be cleared 0 here,
* otherwise the interrupt cannot be cleared.
*/
return regmap_write(priv->regmap, TOY_MATCH0_REG, 0);
return ACPI_INTERRUPT_HANDLED;
}

static int loongson_rtc_set_enabled(struct device *dev)
Expand Down Expand Up @@ -329,7 +332,7 @@ static int loongson_rtc_probe(struct platform_device *pdev)
alarm_irq);

priv->pm_base = regs - priv->config->pm_offset;
device_init_wakeup(dev, 1);
device_init_wakeup(dev, true);

if (has_acpi_companion(dev))
acpi_install_fixed_event_handler(ACPI_EVENT_RTC,
Expand Down Expand Up @@ -360,7 +363,7 @@ static void loongson_rtc_remove(struct platform_device *pdev)
acpi_remove_fixed_event_handler(ACPI_EVENT_RTC,
loongson_rtc_handler);

device_init_wakeup(dev, 0);
device_init_wakeup(dev, false);
loongson_rtc_alarm_irq_enable(dev, 0);
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-lp8788.c
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ static int lp8788_rtc_probe(struct platform_device *pdev)
rtc->alarm = lp->pdata ? lp->pdata->alarm_sel : DEFAULT_ALARM_SEL;
platform_set_drvdata(pdev, rtc);

device_init_wakeup(dev, 1);
device_init_wakeup(dev, true);

rtc->rdev = devm_rtc_device_register(dev, "lp8788_rtc",
&lp8788_rtc_ops, THIS_MODULE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-lpc32xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ static int lpc32xx_rtc_probe(struct platform_device *pdev)
dev_warn(&pdev->dev, "Can't request interrupt.\n");
rtc->irq = -1;
} else {
device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);
}
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-max77686.c
Original file line number Diff line number Diff line change
Expand Up @@ -770,7 +770,7 @@ static int max77686_rtc_probe(struct platform_device *pdev)
goto err_rtc;
}

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

info->rtc_dev = devm_rtc_device_register(&pdev->dev, id->name,
&max77686_rtc_ops, THIS_MODULE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-max8925.c
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ static int max8925_rtc_probe(struct platform_device *pdev)
/* XXX - isn't this redundant? */
platform_set_drvdata(pdev, info);

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

info->rtc_dev = devm_rtc_device_register(&pdev->dev, "max8925-rtc",
&max8925_rtc_ops, THIS_MODULE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-max8997.c
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ static int max8997_rtc_probe(struct platform_device *pdev)
max8997_rtc_enable_wtsr(info, true);
max8997_rtc_enable_smpl(info, true);

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

info->rtc_dev = devm_rtc_device_register(&pdev->dev, "max8997-rtc",
&max8997_rtc_ops, THIS_MODULE);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-meson-vrtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ static int meson_vrtc_probe(struct platform_device *pdev)
if (IS_ERR(vrtc->io_alarm))
return PTR_ERR(vrtc->io_alarm);

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

platform_set_drvdata(pdev, vrtc);

Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-mpc5121.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ static int mpc5121_rtc_probe(struct platform_device *op)
return PTR_ERR(rtc->regs);
}

device_init_wakeup(&op->dev, 1);
device_init_wakeup(&op->dev, true);

platform_set_drvdata(op, rtc);

Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-mt6397.c
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ static int mtk_rtc_probe(struct platform_device *pdev)
return ret;
}

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);

rtc->rtc_dev->ops = &mtk_rtc_ops;
rtc->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_1900;
Expand Down
4 changes: 2 additions & 2 deletions drivers/rtc/rtc-mv.c
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ static int __init mv_rtc_probe(struct platform_device *pdev)
}

if (pdata->irq >= 0)
device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);
else
clear_bit(RTC_FEATURE_ALARM, pdata->rtc->features);

Expand All @@ -287,7 +287,7 @@ static void __exit mv_rtc_remove(struct platform_device *pdev)
struct rtc_plat_data *pdata = platform_get_drvdata(pdev);

if (pdata->irq >= 0)
device_init_wakeup(&pdev->dev, 0);
device_init_wakeup(&pdev->dev, false);

if (!IS_ERR(pdata->clk))
clk_disable_unprepare(pdata->clk);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-mxc.c
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ static int mxc_rtc_probe(struct platform_device *pdev)
}

if (pdata->irq >= 0) {
device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);
ret = dev_pm_set_wake_irq(&pdev->dev, pdata->irq);
if (ret)
dev_err(&pdev->dev, "failed to enable irq wake\n");
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-mxc_v2.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ static int mxc_rtc_probe(struct platform_device *pdev)
if (pdata->irq < 0)
return pdata->irq;

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);
ret = dev_pm_set_wake_irq(&pdev->dev, pdata->irq);
if (ret)
dev_err(&pdev->dev, "failed to enable irq wake\n");
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-omap.c
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,7 @@ static void omap_rtc_remove(struct platform_device *pdev)
omap_rtc_power_off_rtc = NULL;
}

device_init_wakeup(&pdev->dev, 0);
device_init_wakeup(&pdev->dev, false);

if (!IS_ERR(rtc->clk))
clk_disable_unprepare(rtc->clk);
Expand Down
2 changes: 1 addition & 1 deletion drivers/rtc/rtc-palmas.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ static int palmas_rtc_probe(struct platform_device *pdev)

palmas_rtc->irq = platform_get_irq(pdev, 0);

device_init_wakeup(&pdev->dev, 1);
device_init_wakeup(&pdev->dev, true);
palmas_rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
&palmas_rtc_ops, THIS_MODULE);
if (IS_ERR(palmas_rtc->rtc)) {
Expand Down
Loading

0 comments on commit 2a9f04b

Please sign in to comment.