public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Guillaume Douézan-Grard" <gdouezangrard@gmail.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>,
	Darren Hart <dvhart@infradead.org>
Cc: Andy Shevchenko <andy@infradead.org>,
	Platform Driver <platform-driver-x86@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 4/4] platform/x86: topstar-laptop: add optional WLAN LED workaround
Date: Wed, 8 Nov 2017 01:25:26 +0100	[thread overview]
Message-ID: <20171108002526.GA17436@localhost> (raw)
In-Reply-To: <20171105223443.GF24317@fury>

On Sun, Nov 05, 2017 at 02:34:43PM -0800, Darren Hart wrote:
> On Sun, Nov 05, 2017 at 03:28:09PM +0200, Andy Shevchenko wrote:
> > On Fri, Nov 3, 2017 at 5:07 PM, Guillaume Douézan-Grard
> > <gdouezangrard@gmail.com> wrote:
> > > On Fri, Nov 03, 2017 at 02:50:52PM +0200, Andy Shevchenko wrote:
> > >> On Sun, Oct 29, 2017 at 1:53 AM, Guillaume Douézan-Grard
> > >> <gdouezangrard@gmail.com> wrote:
> > >> > Topstar U931 laptops provide an LED synced with the WLAN adapter
> > >> > hard-blocking state. Unfortunately, some models seem to be defective,
> > >> > making impossible to hard-block the adapter with the WLAN switch and
> > >> > thus the LED is useless.
> > >> >
> > >> > An ACPI method is available to programmatically control this switch and
> > >> > it indirectly allows to control the LED.
> > >> >
> > >> > This commit registers the LED within the corresponding subsystem, making
> > >> > possible for instance to use an rfkill-based trigger to synchronize the
> > >> > LED with the soft-blocking state.
> > >> >
> > >> > This feature is disabled by default and can be enabled with the
> > >> > `led_workaround` module parameter.
> > >>
> > >> >  #include <linux/platform_device.h>
> > >> >  #include <linux/input.h>
> > >> >  #include <linux/input/sparse-keymap.h>
> > >> > +#include <linux/leds.h>
> > >>
> > >> Yep, exact place, esp. after moving platform_device to the right place.
> > >>
> > >> > +static bool led_workaround;
> > >> > +module_param_named(led_workaround, led_workaround, bool, 0444);
> > >> > +MODULE_PARM_DESC(led_workaround,
> > >> > +               "Enables software-based WLAN LED control on systems with defective hardware switch");
> > >>
> > >> So, this is most problematic piece in the series.
> > >>
> > >> We are not encouraging module parameters. Why do we need one? Can't be
> > >> detected automatically (perhaps based on DMI strings)?
> > >
> > > Darren told me that.
> > 
> > > I tried to answer this question in the cover letter:
> > 
> > Perhaps it makes sense to put this explanation in the commit message.
> > 
> > > "These are barebone laptops, sold under quite a lot of brands and
> > > configurations, with different firmwares and so on. I can only say for sure
> > > that this issue is present for all the models sold under a specific brand,
> > > that's why I'm reluctant to enable this by default with a DMI check."
> > >
> > > In my case for instance, the DMI info has not been filled in by the retailler
> > > since I only have the ODM base board information to identify a model.
> > 
> > I see. I would like to have a consensus on this one with Darren, the
> > rest (after addressing comments) looks good to me.
> 
> If you can definitively say that all models of brand X and this HID have this
> quirk, that is considerably better than a lot of quirks we deal with today. I
> suggest doing that and holding off on the option. If it gets to the point where
> a number otherwise unidentifiable systems have this problem, we can add the
> option then.

Thanks for your reviews.

I replaced the module parameter with a board name/version DMI check,
that will be included for the new patch serie.

Signed-off-by: Guillaume Douézan-Grard <gdouezangrard@gmail.com>
---
 drivers/platform/x86/topstar-laptop.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/platform/x86/topstar-laptop.c b/drivers/platform/x86/topstar-laptop.c
index 0ed1ce404ea1..72433cfdf231 100644
--- a/drivers/platform/x86/topstar-laptop.c
+++ b/drivers/platform/x86/topstar-laptop.c
@@ -19,6 +19,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/acpi.h>
+#include <linux/dmi.h>
 #include <linux/input.h>
 #include <linux/input/sparse-keymap.h>
 #include <linux/leds.h>
@@ -26,15 +27,12 @@
 
 #define TOPSTAR_LAPTOP_CLASS "topstar"
 
-static bool led_workaround;
-module_param_named(led_workaround, led_workaround, bool, 0444);
-MODULE_PARM_DESC(led_workaround,
-		"Enables software-based WLAN LED control on systems with defective hardware switch");
-
 struct topstar_laptop {
 	struct acpi_device *device;
 	struct platform_device *platform;
 	struct input_dev *input;
+
+	bool led_registered;
 	struct led_classdev led;
 };
 
@@ -291,10 +289,16 @@ static int topstar_acpi_add(struct acpi_device *device)
 	if (err)
 		goto err_platform_exit;
 
-	if (led_workaround) {
+	/*
+	 * Enable software-based WLAN LED control on systems with defective
+	 * hardware switch.
+	 */
+	if (dmi_match(DMI_BOARD_NAME, "U931")
+			&& dmi_match(DMI_BOARD_VERSION, "RVP7")) {
 		err = topstar_led_init(topstar);
 		if (err)
 			goto err_input_exit;
+		topstar->led_registered = true;
 	}
 
 	return 0;
@@ -314,7 +318,7 @@ static int topstar_acpi_remove(struct acpi_device *device)
 {
 	struct topstar_laptop *topstar = acpi_driver_data(device);
 
-	if (led_workaround)
+	if (topstar->led_registered)
 		topstar_led_exit(topstar);
 
 	topstar_input_exit(topstar);
-- 
2.15.0

  reply	other threads:[~2017-11-08  0:25 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-28 22:49 [PATCH v2 0/4] Topstar ACPI LED Workaround Guillaume Douézan-Grard
2017-10-28 22:50 ` [PATCH v2 1/4] platform/x86: topstar-laptop: non-functional changes Guillaume Douézan-Grard
2017-11-03 12:40   ` Andy Shevchenko
2017-10-28 22:51 ` [PATCH v2 2/4] platform/x86: topstar-laptop: change to generic module Guillaume Douézan-Grard
2017-11-03 12:43   ` Andy Shevchenko
2017-10-28 22:52 ` [PATCH v2 3/4] platform/x86: topstar-laptop: add platform device Guillaume Douézan-Grard
2017-11-03 12:47   ` Andy Shevchenko
2017-10-28 22:53 ` [PATCH v2 4/4] platform/x86: topstar-laptop: add optional WLAN LED workaround Guillaume Douézan-Grard
2017-11-03 12:50   ` Andy Shevchenko
2017-11-03 15:07     ` Guillaume Douézan-Grard
2017-11-05 13:28       ` Andy Shevchenko
2017-11-05 22:34         ` Darren Hart
2017-11-08  0:25           ` Guillaume Douézan-Grard [this message]
2017-11-08 10:26             ` Andy Shevchenko
2017-11-03 11:56 ` [PATCH v2 0/4] Topstar ACPI LED Workaround Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171108002526.GA17436@localhost \
    --to=gdouezangrard@gmail.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=andy@infradead.org \
    --cc=dvhart@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox