From: Bruce <bruce.ma@canonical.com>
To: platform-driver-x86@vger.kernel.org
Cc: ibm-acpi-devel@lists.sourceforge.net,
Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>,
linux-kernel@vger.kernel.org
Subject: [PATCH] subsystem: thinkpad-acpi.c
Date: Tue, 28 May 2013 19:14:43 +0800 [thread overview]
Message-ID: <51A491A3.5080702@canonical.com> (raw)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
from: Bruce Ma
For some specific model of laptop, don't execute any led functions.
Signed-off-by: Bruce Ma <bruce.ma@canonical.com>
- ---
- --- old/thinkpad_acpi.c 2013-01-29 16:54:34.000000000 +0800
+++ src/thinkpad_acpi.c 2013-01-29 16:52:46.000000000 +0800
@@ -1787,6 +1787,90 @@ static const struct tpacpi_quirk tpacpi_
#undef TPV_Q_X
#undef TPV_Q
+/*
+check tpacpi_check_model()
+
+ * Model Name , Number Model Name
+ * Lenovo LM490s, 814YG01
+
+ "dmesg | grep thinkpad_acpi" shows:
+ thinkpad_acpi: Lenovo Lenovo LM490s, model 814YG01
+
+ How to add new model to blacklist:
+ Add these lines like below into lenovo_blacklist[].
+ {
+ .model_s = "Lenovo K490s",
+ .nummodel_s = "814YJ01",
+ },
+ */
+
+unsigned int no_led = 0 ;
+
+struct blacklist {
+ struct list_head blist;
+ char *model_s;
+ char *nummodel_s;
+};
+
+struct blacklist led_blacklist = {
+ .model_s = NULL,
+ .nummodel_s = NULL,
+};
+
+struct blacklist lenovo_blacklist[] = {
+ {
+ .model_s = "Lenovo LM490s",
+ .nummodel_s = "814YG01",
+ },
+ {
+ .model_s = "ThinkPad Edge E430",
+ .nummodel_s = "3254TNU",
+ },
+ {
+ .model_s = "LENOVO",
+ .nummodel_s = "914TK01",
+ },
+ {
+ .model_s = "ThinkPad Twist",
+ .nummodel_s = "334724C",
+ },
+ {
+ .model_s = "Lenovo M490s",
+ .nummodel_s = "914YG01",
+ },
+ {
+ .model_s = "Lenovo K490s",
+ .nummodel_s = "814YJ01",
+ },
+};
+
+static int __init tpacpi_check_model(void)
+{
+ unsigned int i ;
+ struct blacklist *list_p;
+
+ /* If thinkpad_id.nummodel_str is "unkown". */
+ if (!thinkpad_id.nummodel_str) {
+ return 1;
+ }
+
+ INIT_LIST_HEAD(&led_blacklist.blist);
+
+ for(i = 0; i < ARRAY_SIZE(lenovo_blacklist) ; i++) {
+ INIT_LIST_HEAD(&lenovo_blacklist[i].blist);
+ list_add(&lenovo_blacklist[i].blist, &led_blacklist.blist);
+ }
+
+ list_for_each_entry(list_p,&led_blacklist.blist,blist) {
+ if (!strcmp(list_p->model_s,thinkpad_id.model_str)
+ &&
!strcmp(list_p->nummodel_s,thinkpad_id.nummodel_str)) {
+ no_led = 1;
+ pr_info("Disable led support for this model.\n");
+ }
+ }
+ return 0;
+}
+
static void __init tpacpi_check_outdated_fw(void)
{
unsigned long fwvers;
@@ -5235,6 +5319,10 @@ static enum led_brightness led_sysfs_get
static void led_exit(void)
{
+ if (no_led == 1 ) {
+ return 0;
+ }
+
unsigned int i;
for (i = 0; i < TPACPI_LED_NUMLEDS; i++) {
@@ -5349,6 +5437,10 @@ static enum led_access_mode __init led_i
static int __init led_init(struct ibm_init_struct *iibm)
{
+ if (no_led == 1 ) {
+ return 0;
+ }
+
unsigned int i;
int rc;
unsigned long useful_leds;
@@ -5397,6 +5489,10 @@ static int __init led_init(struct ibm_in
static int led_read(struct seq_file *m)
{
+ if (no_led == 1 ) {
+ return 0;
+ }
+
if (!led_supported) {
seq_printf(m, "status:\t\tnot supported\n");
return 0;
@@ -5423,6 +5519,10 @@ static int led_read(struct seq_file *m)
static int led_write(char *buf)
{
+ if (no_led == 1 ) {
+ return 0;
+ }
+
char *cmd;
int led, rc;
enum led_status_t s;
@@ -9031,6 +9131,9 @@ static int __init thinkpad_acpi_module_i
/* Driver initialization */
thinkpad_acpi_init_banner();
+
+ tpacpi_check_model();
+
tpacpi_check_outdated_fw();
TPACPI_ACPIHANDLE_INIT(ecrd);
- ---
Bruce Ma
May 28,2013
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQEcBAEBAgAGBQJRpJGjAAoJEFnPatyLvGg1rnMIAKqffR2XgBQfIaUv+Zqa3OE4
38KGwctvA/qxiFHtxQ7sMJFiiQ01/WskfCVJeWgkh7bDtJt14/Nd5bpCEnjHDBSZ
byqcziONeGt5o1yAXRAP2artuPwpIrdoRK3WYY9ODK+wJBFMb2wEc4EUuyfT5RAM
ASNzal+UjZyqL/UT9vfwtiN4OxuIlJ2BHeTP8jRElYZux2nEUvjtP0Wqwq7Otybc
ud6/p+Ldn1OOEJt+2sBBzdDo75mjOrewJxIsdZyHZoNnXPPZLnftvCM/k/mkEVw4
+ElZEDDVJWKGHqzqiHPKnaJRCqrnEw3t1u1C5hEK7hGn/PVtdYflV78CoimGG5Q=
=nLc0
-----END PGP SIGNATURE-----
reply other threads:[~2013-05-28 11:14 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=51A491A3.5080702@canonical.com \
--to=bruce.ma@canonical.com \
--cc=ibm-acpi-devel@lists.sourceforge.net \
--cc=ibm-acpi@hmh.eng.br \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.