Hello, On 18/11/2021 11:40:08+0300, Nikita Shubin wrote: > in case if threaded irq registered successfully - add da9063 > as a wakeup source if "wakeup-source" node present in device tree, > set as wakeup capable otherwise. > > Signed-off-by: Nikita Shubin <nikita.shubin@xxxxxxxxxxx> > --- > drivers/rtc/rtc-da9063.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/rtc/rtc-da9063.c b/drivers/rtc/rtc-da9063.c > index d4b72a9fa2ba..1aceb5ba6992 100644 > --- a/drivers/rtc/rtc-da9063.c > +++ b/drivers/rtc/rtc-da9063.c > @@ -490,7 +490,15 @@ static int da9063_rtc_probe(struct platform_device *pdev) > da9063_alarm_event, > IRQF_TRIGGER_LOW | IRQF_ONESHOT, > "ALARM", rtc); > - if (ret) > + if (!ret) { > + if (device_property_present(&pdev->dev, "wakeup-source")) { > + device_init_wakeup(&pdev->dev, true); If wakeup-source is present, then this should be done regardless of the registration of the interrupt handler. Note that wakeup-source and interrupt are supposed to be mutually exclusive. > + dev_info(&pdev->dev, "registered as wakeup source.\n"); This is too verbose please avoid adding new strings > + } else { > + device_set_wakeup_capable(&pdev->dev, true); I think this is misusing the wakeup-source property for configuration that should be left to userspace. > + dev_info(&pdev->dev, "marked as wakeup capable.\n"); Ditto > + } > + } else unbalanced brackets > dev_err(&pdev->dev, "Failed to request ALARM IRQ %d: %d\n", > irq_alarm, ret); > > -- > 2.31.1 > -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com