Repost: asus strict model checking
PATCH 1/1 Repost: asus strict model checking
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
drivers/acpi/asus_acpi.c | 25 ++++++++++++++++++++----- 1 files changed, 20 insertions(+), 5 deletions(-)
drivers/acpi/asus_acpi.c +20 -5
@@ -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
drivers/acpi/asus_acpi.c | 25 ++++++++++++++++++++----- 1 files changed, 20 insertions(+), 5 deletions(-)
drivers/acpi/asus_acpi.c +20 -5
@@ -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 ;
Thomas,
Is it possible to use DMI interface for this kind of system identification?
Regards,
Alex.
Quoted 66 lines · 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
===================================================================drivers/acpi/asus_acpi.c +20
-5@@ -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 ;
Quoted 2 lines · Alexey Starikovskiy
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
Quoted 70 lines
Regards,
Alex.Quoted 66 lines · 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
===================================================================drivers/acpi/asus_acpi.c +20
-5@@ -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 ;
Checks for Samsung P30/P35 are real hacks IMHO.
Quoted 91 lines · Thomas Renninger
Quoted 2 lines · Alexey Starikovskiy
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
Quoted 62 lines
Regards,
Alex.Quoted 58 lines · 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
===================================================================drivers/acpi/asus_acpi.c +16
-5@@ -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"Quoted 8 lines
drivers/acpi/asus_acpi.c static int asus_hotk_get_info(void) · line 1196
Quoted 8 lines
drivers/acpi/asus_acpi.c +4
-0+" 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
Quoted 1 line · Alexey Starikovskiy
Checks for Samsung P30/P35 are real hacks IMHO.
Why?
Thomas
Quoted 93 lines
Quoted 91 lines · Thomas Renninger
Quoted 2 lines · Alexey Starikovskiy
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
Quoted 62 lines
Regards,
Alex.Quoted 58 lines · 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
===================================================================drivers/acpi/asus_acpi.c +16
-5@@ -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"Quoted 8 lines
drivers/acpi/asus_acpi.c static int asus_hotk_get_info(void) · line 1196
Quoted 8 lines
drivers/acpi/asus_acpi.c +4
-0+" 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
Quoted 3 lines · Thomas Renninger
Quoted 1 line · Alexey Starikovskiy
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.
Quoted 6 lines · Alexey Starikovskiy
Quoted 3 lines · Thomas Renninger
Quoted 1 line · Alexey Starikovskiy
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
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;
}------------------------------------------------------------------------------
Quoted 42 lines · Thomas Renninger
Quoted 6 lines · Alexey Starikovskiy
Quoted 3 lines · Thomas Renninger
Quoted 1 line · Alexey Starikovskiy
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
Quoted 6 lines · 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;
Oh yes, you are right this is awful.
Thomas
Quoted 5 lines · Thomas Renninger
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
Nit: should be novell.com, not norvell.org.