Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 84345
b: refs/heads/master
c: 8987fec
h: refs/heads/master
i:
  84343: b98ddd3
v: v3
  • Loading branch information
Carlos Corbacho authored and Dmitry Torokhov committed Jan 21, 2008
1 parent a48e8de commit 0a1cf25
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 93e9012f40f75b8ab8a37deaf532b3c5e9b527c6
refs/heads/master: 8987fec0de0a4b71dd345052ea4271eaf05f7956
49 changes: 49 additions & 0 deletions trunk/drivers/input/serio/i8042-x86ia64io.h
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,50 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {

#endif

#ifdef CONFIG_X86

#include <linux/dmi.h>

/*
* Some Wistron based laptops need us to explicitly enable the 'Dritek
* keyboard extension' to make their extra keys start generating scancodes.
* Originally, this was just confined to older laptops, but a few Acer laptops
* have turned up in 2007 that also need this again.
*/
static struct dmi_system_id __initdata i8042_dmi_dritek_table[] = {
{
.ident = "Acer Aspire 5630",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5630"),
},
},
{
.ident = "Acer Aspire 5650",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5650"),
},
},
{
.ident = "Acer Aspire 5680",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5680"),
},
},
{
.ident = "Acer TravelMate 2490",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 2490"),
},
},
{ }
};

#endif /* CONFIG_X86 */


#ifdef CONFIG_PNP
#include <linux/pnp.h>
Expand Down Expand Up @@ -520,6 +564,11 @@ static int __init i8042_platform_init(void)
i8042_nomux = 1;
#endif

#ifdef CONFIG_X86
if (dmi_check_system(i8042_dmi_dritek_table))
i8042_dritek = 1;
#endif /* CONFIG_X86 */

return retval;
}

Expand Down
14 changes: 14 additions & 0 deletions trunk/drivers/input/serio/i8042.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ static unsigned int i8042_blink_frequency = 500;
module_param_named(panicblink, i8042_blink_frequency, uint, 0600);
MODULE_PARM_DESC(panicblink, "Frequency with which keyboard LEDs should blink when kernel panics");

#ifdef CONFIG_X86
static unsigned int i8042_dritek;
module_param_named(dritek, i8042_dritek, bool, 0);
MODULE_PARM_DESC(dritek, "Force enable the Dritek keyboard extension");
#endif

#ifdef CONFIG_PNP
static int i8042_nopnp;
module_param_named(nopnp, i8042_nopnp, bool, 0);
Expand Down Expand Up @@ -1145,6 +1151,7 @@ static int __devinit i8042_setup_kbd(void)
static int __devinit i8042_probe(struct platform_device *dev)
{
int error;
char param;

error = i8042_controller_selftest();
if (error)
Expand All @@ -1166,6 +1173,13 @@ static int __devinit i8042_probe(struct platform_device *dev)
goto out_fail;
}

if (i8042_dritek) {
param = 0x90;
error = i8042_command(&param, 0x1059);
if (error)
goto out_fail;
}

/*
* Ok, everything is ready, let's register all serio ports
*/
Expand Down

0 comments on commit 0a1cf25

Please sign in to comment.