Re: [PATCH] Repost: asus strict model checking

2006-08-03 Thread Thomas Renninger
On Wed, 2006-08-02 at 22:49 +0400, Alexey Starikovskiy wrote:
 I was referring to this peace of artwork(asus_info is pointer to DSDT header):
 --
 if (hotk-model == END_MODEL) { /* match failed */
 if (asus_info 
 strncmp(asus_info-oem_table_id, ODEM, 4) == 0) {
 hotk-model = P30;
Oh yes, you are right this is awful.

   Thomas

-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Repost: asus strict model checking

2006-08-02 Thread Thomas Renninger
On Tue, 2006-08-01 at 21:44 +0400, Alexey Starikovskiy wrote:
 Thomas Renninger wrote:
  On Tue, 2006-08-01 at 20:11 +0400, Alexey Starikovskiy wrote:
  Checks for Samsung P30/P35 are real hacks IMHO.
  Why?
 Because this DSDT signature could appear on any machine, and has nothing to do
 with ASUS or Samsung.

The string seems to define how the ATKD ACPI device has to be used.
If this Device pops up on other machines than Asus it's fine.
AFAIK the mappings from the string returned by ATKD.INIT and how the
device has to be used then works fine.

It's probably much better than the way done on Thinkpads:
If we have ACPI func xy we assume to have an A21 or similar and use this
set of function/variables.

I consider this an ugly hack:
IBM_HANDLE(ec, root, \\_SB.PCI0.ISA.EC0,  /* 240, 240x */
   \\_SB.PCI.ISA.EC,  /* 570 */
   \\_SB.PCI0.ISA0.EC0,   /* 600e/x, 770e, 770x */
   \\_SB.PCI0.ISA.EC, /* A21e, A2xm/p, T20-22, X20-21 */
   \\_SB.PCI0.AD4S.EC0,   /* i1400, R30 */
   \\_SB.PCI0.ICH3.EC0,   /* R31 */
   \\_SB.PCI0.LPC.EC, /* all others */

On Asus we should be happy ATKD.INIT is returning something useful and
one can guess (be sure?) which ACPI functions to use for what.
Checking for that string and making use of different ACPI
variable/method names seems to be intended and looks like the defined
way this should be used. As long as this is not officially specified (by
ACPI consortium and/or vendors) and such special Devices exist, it is
the best we can do.

   Thomas


-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Repost: asus strict model checking

2006-08-02 Thread Alexey Starikovskiy
I was referring to this peace of artwork(asus_info is pointer to DSDT header):
--
if (hotk-model == END_MODEL) { /* match failed */
if (asus_info 
strncmp(asus_info-oem_table_id, ODEM, 4) == 0) {
hotk-model = P30;
printk(KERN_NOTICE
 Samsung P30 detected, supported\n);
} else {
hotk-model = M2E;
printk(KERN_NOTICE   unsupported model %s, trying 
   default values\n, string);
printk(KERN_NOTICE
 send /proc/acpi/dsdt to the developers\n);
}
hotk-methods = model_conf[hotk-model];
return AE_OK;
}
--
Thomas Renninger wrote:
 On Tue, 2006-08-01 at 21:44 +0400, Alexey Starikovskiy wrote:
 Thomas Renninger wrote:
 On Tue, 2006-08-01 at 20:11 +0400, Alexey Starikovskiy wrote:
 Checks for Samsung P30/P35 are real hacks IMHO.
 Why?
 Because this DSDT signature could appear on any machine, and has nothing to 
 do
 with ASUS or Samsung.
 
 The string seems to define how the ATKD ACPI device has to be used.
 If this Device pops up on other machines than Asus it's fine.
 AFAIK the mappings from the string returned by ATKD.INIT and how the
 device has to be used then works fine.
 
 It's probably much better than the way done on Thinkpads:
 If we have ACPI func xy we assume to have an A21 or similar and use this
 set of function/variables.
 
 I consider this an ugly hack:
 IBM_HANDLE(ec, root, \\_SB.PCI0.ISA.EC0,/* 240, 240x */
  \\_SB.PCI.ISA.EC,  /* 570 */
  \\_SB.PCI0.ISA0.EC0,   /* 600e/x, 770e, 770x */
  \\_SB.PCI0.ISA.EC, /* A21e, A2xm/p, T20-22, X20-21 */
  \\_SB.PCI0.AD4S.EC0,   /* i1400, R30 */
  \\_SB.PCI0.ICH3.EC0,   /* R31 */
  \\_SB.PCI0.LPC.EC, /* all others */
 
 On Asus we should be happy ATKD.INIT is returning something useful and
 one can guess (be sure?) which ACPI functions to use for what.
 Checking for that string and making use of different ACPI
 variable/method names seems to be intended and looks like the defined
 way this should be used. As long as this is not officially specified (by
 ACPI consortium and/or vendors) and such special Devices exist, it is
 the best we can do.
 
Thomas
 
 
 -
 To unsubscribe from this list: send the line unsubscribe linux-acpi in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] Repost: asus strict model checking

2006-08-02 Thread Brown, Len
 As long as this is not officially specified (by ACPI consortium and/or
vendors)
 and such special Devices exist, it is the best we can do.

Platform specific methods will never be in the APCI spec --
by the virtue that they are non-standard and platform specific by
definition.

The vendors should be using vendor-specific PNP ID's. eg, IBM0068
when they put vendor specific devices in the DSDT.

When that is not available, Linux is going very far out on a limb
when it mines the name space to match specific internal variables,
as there is no reason they could not match some totally different
machine.
Certainly the platform specific drivers that the vendors ship
on Windows does not do this.  I don't know what they do -- maybe DMI?

-Len
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Repost: asus strict model checking

2006-08-01 Thread Thomas Renninger
These are some minor patches I already posted...
All are patched against 2.6.18-rc2.

Do only load asus acpi module when model is listed

Description: There are machines that have a device with HID: ATK0100
(Asus) and a device with HID SNY5001 (Sony). Bad things happen if sony
and asus driver are loaded there.

Reference: https://bugzilla.novell.org/show_bug.cgi?id=166920

Signed-off-by: Timo Hoenig [EMAIL PROTECTED]
Signed-off-by: Thomas Renninger[EMAIL PROTECTED]


 drivers/acpi/asus_acpi.c |   25 -
 1 files changed, 20 insertions(+), 5 deletions(-)

Index: linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
===
--- linux-2.6.18-rc2.orig/drivers/acpi/asus_acpi.c
+++ linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
@@ -77,10 +77,14 @@ MODULE_LICENSE(GPL);
 
 static uid_t asus_uid;
 static gid_t asus_gid;
+static int force;
 module_param(asus_uid, uint, 0);
 MODULE_PARM_DESC(asus_uid, UID for entries in /proc/acpi/asus.\n);
 module_param(asus_gid, uint, 0);
 MODULE_PARM_DESC(asus_gid, GID for entries in /proc/acpi/asus.\n);
+module_param(force, int, 0);
+MODULE_PARM_DESC(force, Force loading of the module even if the laptop
+model is not listed.\n);
 
 /* For each model, all features implemented, 
  * those marked with R are relative to HOTK, A for absolute */
@@ -1171,11 +1175,22 @@ static int asus_hotk_get_info(void)
printk(KERN_NOTICE
 Samsung P30 detected, supported\n);
} else {
-   hotk-model = M2E;
-   printk(KERN_NOTICE   unsupported model %s, trying 
-  default values\n, string);
-   printk(KERN_NOTICE
-send /proc/acpi/dsdt to the developers\n);
+   if (force){
+   hotk-model = M2E;
+   printk(KERN_NOTICE   unsupported model
+  %s, trying default values\n,
+  string);
+   printk(KERN_NOTICE
+send /proc/acpi/dsdt
+   to the developers\n);
+   }
+   else{
+   printk(KERN_NOTICE   %s unsupported model %s,
+   aborting.\nForce loading with force=1
+   parameter\n,
+  ACPI_HOTK_NAME, string);
+   return -ENODEV;
+   }
}
hotk-methods = model_conf[hotk-model];
return AE_OK;

Do only load asus acpi module when model is listed

Reference: https://bugzilla.novell.org/show_bug.cgi?id=166920

Signed-off-by: Timo Hoenig [EMAIL PROTECTED]
Signed-off-by: Thomas Renninger[EMAIL PROTECTED]


 drivers/acpi/asus_acpi.c |   25 -
 1 files changed, 20 insertions(+), 5 deletions(-)

Index: linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
===
--- linux-2.6.18-rc2.orig/drivers/acpi/asus_acpi.c
+++ linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
@@ -77,10 +77,14 @@ MODULE_LICENSE(GPL);
 
 static uid_t asus_uid;
 static gid_t asus_gid;
+static int force;
 module_param(asus_uid, uint, 0);
 MODULE_PARM_DESC(asus_uid, UID for entries in /proc/acpi/asus.\n);
 module_param(asus_gid, uint, 0);
 MODULE_PARM_DESC(asus_gid, GID for entries in /proc/acpi/asus.\n);
+module_param(force, int, 0);
+MODULE_PARM_DESC(force, Force loading of the module even if the laptop
+		 model is not listed.\n);
 
 /* For each model, all features implemented, 
  * those marked with R are relative to HOTK, A for absolute */
@@ -1171,11 +1175,22 @@ static int asus_hotk_get_info(void)
 			printk(KERN_NOTICE
 			 Samsung P30 detected, supported\n);
 		} else {
-			hotk-model = M2E;
-			printk(KERN_NOTICE   unsupported model %s, trying 
-			   default values\n, string);
-			printk(KERN_NOTICE
-			 send /proc/acpi/dsdt to the developers\n);
+			if (force){
+hotk-model = M2E;
+printk(KERN_NOTICE   unsupported model
+   %s, trying default values\n,
+   string);
+printk(KERN_NOTICE
+ send /proc/acpi/dsdt
+to the developers\n);
+			}
+			else{
+printk(KERN_NOTICE   %s unsupported model %s,
+aborting.\nForce loading with force=1
+parameter\n,
+   ACPI_HOTK_NAME, string);
+return -ENODEV;
+			}
 		}
 		hotk-methods = model_conf[hotk-model];
 		return AE_OK;


Re: [PATCH] Repost: asus strict model checking

2006-08-01 Thread Thomas Renninger
On Tue, 2006-08-01 at 17:58 +0400, Alexey Starikovskiy wrote:
 Thomas,
 Is it possible to use DMI interface for this kind of system identification?

IMO it should be sufficient to use the already provided Asus hotkey
model identification.
Using dmidecode to check for Asus and then fallback to the default model
if the model is unknown (which does not work for a lot new Asus anyway?)
sounds like the wrong way for me.
Better to have a not supported system (it's easy to white list an
additional model) than to fall back to default and have a broken system
(reading/writing to wrong EC registers,..).

Thomas

 Regards,
   Alex.
 
 Thomas Renninger wrote:
  These are some minor patches I already posted...
  All are patched against 2.6.18-rc2.
  
  Do only load asus acpi module when model is listed
  
  Description: There are machines that have a device with HID: ATK0100
  (Asus) and a device with HID SNY5001 (Sony). Bad things happen if sony
  and asus driver are loaded there.
  
  Reference: https://bugzilla.novell.org/show_bug.cgi?id=166920
  
  Signed-off-by: Timo Hoenig [EMAIL PROTECTED]
  Signed-off-by: Thomas Renninger[EMAIL PROTECTED]
  
  
   drivers/acpi/asus_acpi.c |   25 -
   1 files changed, 20 insertions(+), 5 deletions(-)
  
  Index: linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
  ===
  --- linux-2.6.18-rc2.orig/drivers/acpi/asus_acpi.c
  +++ linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
  @@ -77,10 +77,14 @@ MODULE_LICENSE(GPL);
   
   static uid_t asus_uid;
   static gid_t asus_gid;
  +static int force;
   module_param(asus_uid, uint, 0);
   MODULE_PARM_DESC(asus_uid, UID for entries in /proc/acpi/asus.\n);
   module_param(asus_gid, uint, 0);
   MODULE_PARM_DESC(asus_gid, GID for entries in /proc/acpi/asus.\n);
  +module_param(force, int, 0);
  +MODULE_PARM_DESC(force, Force loading of the module even if the laptop
  +model is not listed.\n);
   
   /* For each model, all features implemented, 
* those marked with R are relative to HOTK, A for absolute */
  @@ -1171,11 +1175,22 @@ static int asus_hotk_get_info(void)
  printk(KERN_NOTICE
   Samsung P30 detected, supported\n);
  } else {
  -   hotk-model = M2E;
  -   printk(KERN_NOTICE   unsupported model %s, trying 
  -  default values\n, string);
  -   printk(KERN_NOTICE
  -send /proc/acpi/dsdt to the developers\n);
  +   if (force){
  +   hotk-model = M2E;
  +   printk(KERN_NOTICE   unsupported model
  +  %s, trying default values\n,
  +  string);
  +   printk(KERN_NOTICE
  +send /proc/acpi/dsdt
  +   to the developers\n);
  +   }
  +   else{
  +   printk(KERN_NOTICE   %s unsupported model %s,
  +   aborting.\nForce loading with force=1
  +   parameter\n,
  +  ACPI_HOTK_NAME, string);
  +   return -ENODEV;
  +   }
  }
  hotk-methods = model_conf[hotk-model];
  return AE_OK;
  

-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Repost: asus strict model checking

2006-08-01 Thread Thomas Renninger
On Tue, 2006-08-01 at 20:11 +0400, Alexey Starikovskiy wrote:
 Checks for Samsung P30/P35 are real hacks IMHO.
Why?

   Thomas
 
 Thomas Renninger wrote:
  On Tue, 2006-08-01 at 17:58 +0400, Alexey Starikovskiy wrote:
  Thomas,
  Is it possible to use DMI interface for this kind of system identification?
  
  IMO it should be sufficient to use the already provided Asus hotkey
  model identification.
  Using dmidecode to check for Asus and then fallback to the default model
  if the model is unknown (which does not work for a lot new Asus anyway?)
  sounds like the wrong way for me.
  Better to have a not supported system (it's easy to white list an
  additional model) than to fall back to default and have a broken system
  (reading/writing to wrong EC registers,..).
  
  Thomas
  
  Regards,
 Alex.
 
  Thomas Renninger wrote:
  These are some minor patches I already posted...
  All are patched against 2.6.18-rc2.
 
  Do only load asus acpi module when model is listed
 
  Description: There are machines that have a device with HID: ATK0100
  (Asus) and a device with HID SNY5001 (Sony). Bad things happen if sony
  and asus driver are loaded there.
 
  Reference: https://bugzilla.novell.org/show_bug.cgi?id=166920
 
  Signed-off-by: Timo Hoenig [EMAIL PROTECTED]
  Signed-off-by: Thomas Renninger[EMAIL PROTECTED]
 
 
   drivers/acpi/asus_acpi.c |   25 -
   1 files changed, 20 insertions(+), 5 deletions(-)
 
  Index: linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
  ===
  --- linux-2.6.18-rc2.orig/drivers/acpi/asus_acpi.c
  +++ linux-2.6.18-rc2/drivers/acpi/asus_acpi.c
  @@ -77,10 +77,14 @@ MODULE_LICENSE(GPL);
   
   static uid_t asus_uid;
   static gid_t asus_gid;
  +static int force;
   module_param(asus_uid, uint, 0);
   MODULE_PARM_DESC(asus_uid, UID for entries in /proc/acpi/asus.\n);
   module_param(asus_gid, uint, 0);
   MODULE_PARM_DESC(asus_gid, GID for entries in /proc/acpi/asus.\n);
  +module_param(force, int, 0);
  +MODULE_PARM_DESC(force, Force loading of the module even if the laptop
  +  model is not listed.\n);
   
   /* For each model, all features implemented, 
* those marked with R are relative to HOTK, A for absolute */
  @@ -1171,11 +1175,22 @@ static int asus_hotk_get_info(void)
printk(KERN_NOTICE
 Samsung P30 detected, supported\n);
} else {
  - hotk-model = M2E;
  - printk(KERN_NOTICE   unsupported model %s, trying 
  -default values\n, string);
  - printk(KERN_NOTICE
  -  send /proc/acpi/dsdt to the developers\n);
  + if (force){
  + hotk-model = M2E;
  + printk(KERN_NOTICE   unsupported model
  +%s, trying default values\n,
  +string);
  + printk(KERN_NOTICE
  +  send /proc/acpi/dsdt
  + to the developers\n);
  + }
  + else{
  + printk(KERN_NOTICE   %s unsupported model %s,
  + aborting.\nForce loading with force=1
  + parameter\n,
  +ACPI_HOTK_NAME, string);
  + return -ENODEV;
  + }
}
hotk-methods = model_conf[hotk-model];
return AE_OK;
 
  
  -
  To unsubscribe from this list: send the line unsubscribe linux-acpi in
  the body of a message to [EMAIL PROTECTED]
  More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html