From: Karol Kozimor <sziwan@hell.org.pl>
To: "Brown, Len" <len.brown@intel.com>
Cc: linux-acpi@vger.kernel.org
Subject: [PATCH 3/10] LED display support
Date: Sat, 1 Jul 2006 01:04:26 +0200 [thread overview]
Message-ID: <20060630230426.GE31642@hell.org.pl> (raw)
In-Reply-To: <20060630225905.GB31642@hell.org.pl>
This patch adds handling for front LED displays found on W1N and the like.
Additionally, W1N is given its own model_data instance.
Patch originally by Éric Burghard.
Signed-off-by: Karol Kozimor <sziwan@hell.org.pl>
--- a/drivers/acpi/asus_acpi.c 2006-01-18 17:28:11.000000000 +0100
+++ b/drivers/acpi/asus_acpi.c 2006-01-18 17:29:43.000000000 +0100
@@ -26,6 +26,7 @@
* Pontus Fuchs - Helper functions, cleanup
* Johann Wiesner - Small compile fixes
* John Belmonte - ACPI code for Toshiba laptop was a good starting point.
+ * Éric Burghard - LED display support for W1N
*
* TODO:
* add Fn key status
@@ -48,6 +49,7 @@
#define PROC_MLED "mled"
#define PROC_WLED "wled"
#define PROC_TLED "tled"
+#define PROC_LEDD "ledd"
#define PROC_INFO "info"
#define PROC_LCD "lcd"
#define PROC_BRN "brn"
@@ -92,6 +94,7 @@ struct model_data {
char *wled_status; //node to handle wled reading_______A
char *mt_tled; //method to handle tled_____________R
char *tled_status; //node to handle tled reading_______A
+ char *mt_ledd; //method to handle LED display______R
char *mt_lcd_switch; //method to turn LCD ON/OFF_________A
char *lcd_status; //node to read LCD panel state______A
char *brightness_up; //method to set brightness up_______A
@@ -111,6 +114,7 @@ struct asus_hotk {
struct acpi_device *device; //the device we are in
acpi_handle handle; //the handle of the hotk device
char status; //status of the hotk, for LEDs, ...
+ u32 ledd_status; //status of the LED display
struct model_data *methods; //methods available on the laptop
u8 brightness; //brightness level
enum {
@@ -131,7 +135,8 @@ struct asus_hotk {
P30, //Samsung P30
S1x, //S1300A, but also L1400B and M2400A (L84F)
S2x, //S200 (J1 reported), Victor MP-XP7210
- xxN, //M2400N, M3700N, M5200N, S1300N, S5200N, W1OOON
+ W1N, //W1000N
+ xxN, //M2400N, M3700N, M5200N, M6800N, S1300N, S5200N
//(Centrino)
END_MODEL
} model; //Models currently supported
@@ -345,6 +350,18 @@ static struct model_data model_conf[END_
.brightness_down = S2x_PREFIX "_Q0A"},
{
+ .name = "W1N",
+ .mt_mled = "MLED",
+ .mt_wled = "WLED",
+ .mt_ledd = "SLCM",
+ .mt_lcd_switch = xxN_PREFIX "_Q10",
+ .lcd_status = "\\BKLT",
+ .brightness_set = "SPLV",
+ .brightness_get = "GPLV",
+ .display_set = "SDSP",
+ .display_get = "\\ADVG"},
+
+ {
.name = "xxN",
.mt_mled = "MLED",
/* WLED present, but not controlled by ACPI */
@@ -563,6 +580,36 @@ proc_write_mled(struct file *file, const
}
/*
+ * Proc handlers for LED display
+ */
+static int
+proc_read_ledd(char *page, char **start, off_t off, int count, int *eof,
+ void *data)
+{
+ return sprintf(page, "0x%08x\n", hotk->ledd_status);
+}
+
+static int
+proc_write_ledd(struct file *file, const char __user * buffer,
+ unsigned long count, void *data)
+{
+ int value;
+
+ count = parse_arg(buffer, count, &value);
+ if (count > 0) {
+ if (!write_acpi_int
+ (hotk->handle, hotk->methods->mt_ledd, value, NULL))
+ printk(KERN_WARNING
+ "Asus ACPI: LED display write failed\n");
+ else
+ hotk->ledd_status = (u32) value;
+ } else if (count < 0)
+ printk(KERN_WARNING "Asus ACPI: Error reading user input\n");
+
+ return count;
+}
+
+/*
* Proc handlers for WLED
*/
static int
@@ -876,6 +923,11 @@ static int __init asus_hotk_add_fs(struc
mode, device);
}
+ if (hotk->methods->mt_ledd) {
+ asus_proc_add(PROC_LEDD, &proc_write_ledd, &proc_read_ledd,
+ mode, device);
+ }
+
if (hotk->methods->mt_mled) {
asus_proc_add(PROC_MLED, &proc_write_mled, &proc_read_mled,
mode, device);
@@ -919,6 +971,8 @@ static int asus_hotk_remove_fs(struct ac
remove_proc_entry(PROC_MLED, acpi_device_dir(device));
if (hotk->methods->mt_tled)
remove_proc_entry(PROC_TLED, acpi_device_dir(device));
+ if (hotk->methods->mt_ledd)
+ remove_proc_entry(PROC_LEDD, acpi_device_dir(device));
if (hotk->methods->mt_lcd_switch && hotk->methods->lcd_status)
remove_proc_entry(PROC_LCD, acpi_device_dir(device));
if ((hotk->methods->brightness_up
@@ -1046,8 +1100,7 @@ static int __init asus_hotk_get_info(voi
strncmp(model->string.pointer, "M5N", 3) == 0 ||
strncmp(model->string.pointer, "M6N", 3) == 0 ||
strncmp(model->string.pointer, "S1N", 3) == 0 ||
- strncmp(model->string.pointer, "S5N", 3) == 0 ||
- strncmp(model->string.pointer, "W1N", 3) == 0)
+ strncmp(model->string.pointer, "S5N", 3) == 0)
hotk->model = xxN;
else if (strncmp(model->string.pointer, "M1", 2) == 0)
hotk->model = M1A;
@@ -1068,6 +1121,8 @@ static int __init asus_hotk_get_info(voi
hotk->model = S2x;
else if (strncmp(model->string.pointer, "L5", 2) == 0)
hotk->model = L5x;
+ else if (strncmp(model->string.pointer, "W1N", 3) == 0)
+ hotk->model = W1N;
if (hotk->model == END_MODEL) {
printk("unsupported, trying default values, supply the "
@@ -1091,10 +1146,9 @@ static int __init asus_hotk_get_info(voi
strncmp(model->string.pointer, "M5N", 3) == 0)
hotk->methods->mt_mled = NULL;
/* S5N and M5N have no MLED */
- else if (strncmp(model->string.pointer, "M2N", 3) == 0 ||
- strncmp(model->string.pointer, "W1N", 3) == 0)
+ else if (strncmp(model->string.pointer, "M2N", 3) == 0)
hotk->methods->mt_wled = "WLED";
- /* M2N and W1N have a usable WLED */
+ /* M2N has a usable WLED */
else if (asus_info) {
if (strncmp(asus_info->oem_table_id, "L1", 2) == 0)
hotk->methods->mled_status = NULL;
@@ -1184,6 +1238,9 @@ static int __init asus_hotk_add(struct a
}
}
+ /* LED display is off by default */
+ hotk->ledd_status = 0xFFF;
+
end:
if (result) {
kfree(hotk);
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2006-06-30 23:04 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-18 21:21 [PATCH 0/9] drivers/acpi/asus_acpi.c updates Karol Kozimor
2006-01-18 21:26 ` [PATCH 1/9] misc cleanups Karol Kozimor
2006-01-18 21:28 ` [PATCH 2/9] support A3G Karol Kozimor
2006-01-18 21:36 ` [PATCH 3/9] LED display support Karol Kozimor
2006-01-18 21:38 ` [PATCH 4/9] support W3400N Karol Kozimor
2006-01-18 21:41 ` [PATCH 5/9] support A4G Karol Kozimor
2006-01-18 21:48 ` [PATCH 6/9] handle internal Bluetooth / support W5A Karol Kozimor
2006-01-18 21:52 ` [PATCH 7/9] support L5D Karol Kozimor
2006-01-18 22:02 ` [PATCH 8/9] rework model detection Karol Kozimor
2006-01-18 22:04 ` [PATCH 9/9] add S1N WLED control Karol Kozimor
2006-06-30 22:59 ` [PATCH 0/10] drivers/acpi/asus_acpi.c updates [RESEND] Karol Kozimor
2006-06-30 23:02 ` [PATCH 1/10] misc cleanups Karol Kozimor
2006-06-30 23:03 ` [PATCH 2/10] support A3G Karol Kozimor
2006-06-30 23:04 ` Karol Kozimor [this message]
2006-06-30 23:05 ` [PATCH 4/10] support W3400N Karol Kozimor
2006-06-30 23:05 ` [PATCH 5/10] support A4G Karol Kozimor
2006-06-30 23:07 ` [PATCH 6/10] handle internal Bluetooth / support W5A Karol Kozimor
2006-06-30 23:08 ` [PATCH 7/10] support L5D Karol Kozimor
2006-06-30 23:11 ` [PATCH 8/10] rework model detection Karol Kozimor
2006-06-30 23:12 ` [PATCH 9/10] add S1N WLED control Karol Kozimor
2006-06-30 23:14 ` [PATCH 10/10] " Karol Kozimor
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=20060630230426.GE31642@hell.org.pl \
--to=sziwan@hell.org.pl \
--cc=len.brown@intel.com \
--cc=linux-acpi@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.