--- /home/root/linux-2.6.31/drivers/input/keyboard/atkbd.c 2010-01-17 20:14:21.000000000 +0100 +++ /home/root/linux-2.6.31-patched/drivers/input/keyboard/atkbd.c 2010-01-17 18:24:35.000000000 +0100 @@ -932,6 +932,13 @@ }; /* + * Toshiba Satellite (Pro) U30x don't generate key release for volume wheel + */ +static unsigned int atkbd_toshiba_u300_forced_release_keys[] = { + 0xae, 0xb0, -1U +}; + +/* * atkbd_set_keycode_table() initializes keyboard's keycode table * according to the selected scancode set */ @@ -1688,6 +1695,30 @@ .callback = atkbd_setup_forced_release, .driver_data = atkdb_soltech_ta12_forced_release_keys, }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite Pro U300"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_toshiba_u300_forced_release_keys, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite U300"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_toshiba_u300_forced_release_keys, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite U305"), + }, + .callback = atkbd_setup_forced_release, + .driver_data = atkbd_toshiba_u300_forced_release_keys, + }, { } };