On Wed, Jul 24, 2024 at 11:21:27AM -0700, Dmitry Torokhov wrote: > Hi Frank, > > On Fri, Jul 19, 2024 at 11:22:58AM -0400, Frank Li wrote: > > From: Abel Vesa <abel.vesa@xxxxxxx> > > > > Enable default wakeup according to dts property 'wakeup-source'. > > > > Signed-off-by: Abel Vesa <abel.vesa@xxxxxxx> > > Reviewed-by: Nitin Garg <nitin.garg@xxxxxxx> > > Signed-off-by: Frank Li <Frank.Li@xxxxxxx> > > --- > > Change from v1 to v2 > > - change int to bool > > - move of_property_read_bool() just before device_init_wakeup() > > - drop !! > > --- > > drivers/input/keyboard/imx_sc_key.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/drivers/input/keyboard/imx_sc_key.c b/drivers/input/keyboard/imx_sc_key.c > > index d18839f1f4f60..fc1492088b645 100644 > > --- a/drivers/input/keyboard/imx_sc_key.c > > +++ b/drivers/input/keyboard/imx_sc_key.c > > @@ -110,8 +110,10 @@ static void imx_sc_key_action(void *data) > > > > static int imx_sc_key_probe(struct platform_device *pdev) > > { > > + struct device_node *np = pdev->dev.of_node; > > struct imx_key_drv_data *priv; > > struct input_dev *input; > > + bool wakeup; > > int error; > > > > priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); > > @@ -151,6 +153,9 @@ static int imx_sc_key_probe(struct platform_device *pdev) > > priv->input = input; > > platform_set_drvdata(pdev, priv); > > > > + wakeup = of_property_read_bool(np, "wakeup-source"); > > The driver uses generic device properties, why do you use OF-specific > variant here? I think it just show default if it is wakeup source. Do you think we just need call device_init_wakeup(&pdev->dev, wakeup) to maintance consisent between software wakeup enable status with SCU wakeup enable status? Since most case power-key should be wakeup source. > > > + device_init_wakeup(&pdev->dev, wakeup); > > + > > How does this actually work? Doesn't the call directly below > unconditionally configures button as a wakeup source? Good capture, I am also strange why it can wakeup even dts have not set wakeup-source. Frank > > > error = imx_scu_irq_group_enable(SC_IRQ_GROUP_WAKE, SC_IRQ_BUTTON, > > true); > > if (error) { > > Thanks. > > -- > Dmitry