From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755424AbcAROqu (ORCPT ); Mon, 18 Jan 2016 09:46:50 -0500 Received: from v094114.home.net.pl ([79.96.170.134]:48149 "HELO v094114.home.net.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1755037AbcAROqr (ORCPT ); Mon, 18 Jan 2016 09:46:47 -0500 From: "Rafael J. Wysocki" To: Dmitry Torokhov Cc: Greg Kroah-Hartman , Rob Herring , Grant Likely , Linus Walleij , Thierry Reding , Uwe =?ISO-8859-1?Q?Kleine=2DK=F6nig?= , linux-kernel@vger.kernel.org, "Rafael J. Wysocki" Subject: Re: [PATCH] driver-core: platform: automatically mark wakeup devices Date: Mon, 18 Jan 2016 15:47:27 +0100 Message-ID: <2182115.GafOXid1Dx@vostro.rjw.lan> User-Agent: KMail/4.11.5 (Linux/4.4.0; KDE/4.11.5; x86_64; ; ) In-Reply-To: <20160118021138.GA20498@dtor-ws> References: <20160118021138.GA20498@dtor-ws> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="utf-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sunday, January 17, 2016 06:11:38 PM Dmitry Torokhov wrote: > When probing platform drivers let's check if corresponding devices have > "wakeup-source" property defined (either in device tree, ACPI, or static > platform properties) and automatically enable such devices as wakeup > sources for the system. This will help us standardize on the name for this > property and reduce amount of boilerplate code in the drivers. ACPI has other ways of telling the OS that the device is wakeup-capable, but I guess the property in question can be used too (as long as it is consistent with the other methods). > Signed-off-by: Dmitry Torokhov > --- > drivers/base/platform.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > index 1dd6d3b..d14071a 100644 > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -514,9 +514,14 @@ static int platform_drv_probe(struct device *_dev) > > ret = dev_pm_domain_attach(_dev, true); > if (ret != -EPROBE_DEFER && drv->probe) { > + bool wakeup = device_property_read_bool(_dev, "wakeup-source"); > + > + device_init_wakeup(_dev, wakeup); But I'm wondering if this should be device_set_wakeup_capable(dev, true) rather? device_init_wakeup() additionally sets the default in sysfs to "do wakeup" which in principle may unblock spurious wakeups on some systems. > ret = drv->probe(dev); > - if (ret) > + if (ret) { > + device_init_wakeup(_dev, false); > dev_pm_domain_detach(_dev, true); > + } > } > > if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) { > @@ -540,6 +545,8 @@ static int platform_drv_remove(struct device *_dev) > > if (drv->remove) > ret = drv->remove(dev); > + > + device_init_wakeup(_dev, false); > dev_pm_domain_detach(_dev, true); > > return ret; > -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.