From: Mattia Dongili <malattia@linux.it>
To: Len Brown <lenb@kernel.org>
Cc: linux-acpi@vger.kernel.org, Stelian Pop <stelian@popies.net>,
Mattia Dongili <malattia@linux.it>,
Andrei Paskevich <andrei@capet.iut-fbleau.fr>
Subject: [PATCH 7/7] Fix event reading in sony-laptop
Date: Mon, 16 Jul 2007 02:34:39 +0900 [thread overview]
Message-ID: <1184520880267-git-send-email-malattia@linux.it> (raw)
In-Reply-To: <11845208801817-git-send-email-malattia@linux.it>
The rewritten event reading code from sonypi was absolutely wrong,
this patche makes things functional for type2 and type1 models.
Cc: Andrei Paskevich <andrei@capet.iut-fbleau.fr>
Signed-off-by: Mattia Dongili <malattia@linux.it>
---
drivers/misc/sony-laptop.c | 30 ++++++++++++++++++++++--------
1 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/drivers/misc/sony-laptop.c b/drivers/misc/sony-laptop.c
index 6909714..4831e72 100644
--- a/drivers/misc/sony-laptop.c
+++ b/drivers/misc/sony-laptop.c
@@ -1086,7 +1086,9 @@ static struct acpi_driver sony_nc_driver = {
#define SONYPI_DEVICE_TYPE2 0x00000002
#define SONYPI_DEVICE_TYPE3 0x00000004
-#define SONY_PIC_EV_MASK 0xff
+#define SONYPI_TYPE1_OFFSET 0x04
+#define SONYPI_TYPE2_OFFSET 0x12
+#define SONYPI_TYPE3_OFFSET 0x12
struct sony_pic_ioport {
struct acpi_resource_io io;
@@ -1100,6 +1102,7 @@ struct sony_pic_irq {
struct sony_pic_dev {
int model;
+ u16 evport_offset;
u8 camera_power;
u8 bluetooth_power;
u8 wwan_power;
@@ -2176,20 +2179,17 @@ end:
static irqreturn_t sony_pic_irq(int irq, void *dev_id)
{
int i, j;
- u32 port_val = 0;
u8 ev = 0;
u8 data_mask = 0;
u8 device_event = 0;
struct sony_pic_dev *dev = (struct sony_pic_dev *) dev_id;
- acpi_os_read_port(dev->cur_ioport->io.minimum, &port_val,
- dev->cur_ioport->io.address_length);
- ev = port_val & SONY_PIC_EV_MASK;
- data_mask = 0xff & (port_val >> (dev->cur_ioport->io.address_length - 8));
+ ev = inb_p(dev->cur_ioport->io.minimum);
+ data_mask = inb_p(dev->cur_ioport->io.minimum + dev->evport_offset);
- dprintk("event (0x%.8x [%.2x] [%.2x]) at port 0x%.4x\n",
- port_val, ev, data_mask, dev->cur_ioport->io.minimum);
+ dprintk("event ([%.2x] [%.2x]) at port 0x%.4x(+0x%.2x)\n",
+ ev, data_mask, dev->cur_ioport->io.minimum, dev->evport_offset);
if (ev == 0x00 || ev == 0xff)
return IRQ_HANDLED;
@@ -2280,6 +2280,20 @@ static int sony_pic_add(struct acpi_device *device)
spic_dev.model = sony_pic_detect_device_type();
mutex_init(&spic_dev.lock);
+ /* model specific characteristics */
+ switch(spic_dev.model) {
+ case SONYPI_DEVICE_TYPE1:
+ spic_dev.evport_offset = SONYPI_TYPE1_OFFSET;
+ break;
+ case SONYPI_DEVICE_TYPE3:
+ spic_dev.evport_offset = SONYPI_TYPE3_OFFSET;
+ break;
+ case SONYPI_DEVICE_TYPE2:
+ default:
+ spic_dev.evport_offset = SONYPI_TYPE2_OFFSET;
+ break;
+ }
+
/* read _PRS resources */
result = sony_pic_possible_resources(device);
if (result) {
--
1.5.2.3
next prev parent reply other threads:[~2007-07-15 17:35 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-15 17:34 [PATCH 0/7] sony-laptop for 2.6.23 (updated) Mattia Dongili
2007-07-15 17:34 ` [PATCH 1/7] sony-laptop: add new SNC handlers Mattia Dongili
2007-07-15 17:34 ` [PATCH 2/7] sony-laptop: map wireless switch events to KEY_WLAN Mattia Dongili
2007-07-15 17:34 ` [PATCH 3/7] Add support for recent Vaios Fn keys (C series for now) Mattia Dongili
2007-07-15 17:34 ` [PATCH 4/7] Invoke _INI for SNC devices that provide it Mattia Dongili
2007-07-15 17:34 ` [PATCH 5/7] Make the driver use MSC_SCAN and a setkeycode and getkeycode key table Mattia Dongili
2007-07-15 17:34 ` [PATCH 6/7] Add Vaio FE to the special init sequence Mattia Dongili
2007-07-15 17:34 ` Mattia Dongili [this message]
2007-07-15 21:11 ` [PATCH 5/7] Make the driver use MSC_SCAN and a setkeycode and getkeycode key table Matthew Garrett
2007-07-16 17:06 ` Richard Hughes
2007-07-16 18:09 ` Matthew Garrett
2007-07-17 10:37 ` Richard Hughes
2007-07-17 10:46 ` Matthew Garrett
2007-07-18 11:45 ` Mattia Dongili
2007-07-18 14:28 ` Matthew Garrett
2007-07-18 15:05 ` Dmitry Torokhov
2007-07-18 15:17 ` Richard Hughes
2007-07-18 16:02 ` Dmitry Torokhov
2007-07-18 16:20 ` Richard Hughes
2007-07-18 16:25 ` Matthew Garrett
2007-07-18 16:39 ` Dmitry Torokhov
2007-07-18 16:44 ` Richard Hughes
2007-07-18 16:56 ` Matthew Garrett
2007-07-19 15:51 ` Mattia Dongili
2007-07-16 13:22 ` Dmitry Torokhov
2007-07-18 11:33 ` Mattia Dongili
2007-07-19 17:01 ` Mattia Dongili
2007-07-22 4:36 ` Len Brown
2007-07-18 11:45 ` Mattia Dongili
2007-07-22 4:37 ` [PATCH 0/7] sony-laptop for 2.6.23 (updated) Len Brown
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=1184520880267-git-send-email-malattia@linux.it \
--to=malattia@linux.it \
--cc=andrei@capet.iut-fbleau.fr \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=stelian@popies.net \
/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.