On Mon, Mar 20, 2017 at 10:32:23AM +0100, Micha?? K??pie?? wrote: > Some laptop models need to have different keycodes assigned to hotkey > scancodes. Change the sparse keymap upon a DMI match, before the hotkey > input device is setup. > > Instead of using three different callbacks in the DMI match table, > simplify code by using the driver_data field of struct dmi_system_id to > supply the requested keymap to a common callback. Also merge keymaps > for S6410 and S6420 as they are identical. > > [cut] > > diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c > index 8f1c9c204110..1487eb2396c6 100644 > --- a/drivers/platform/x86/fujitsu-laptop.c > +++ b/drivers/platform/x86/fujitsu-laptop.c > @@ -766,8 +711,62 @@ static const struct key_entry keymap_default[] = { > { KE_END, 0 } > }; > > +static const struct key_entry keymap_s6400[] = { > + { KE_KEY, KEY1_CODE, { KEY_SCREENLOCK } }, /* "Lock" */ > + { KE_KEY, KEY2_CODE, { KEY_HELP } }, /* "Mobility Center */ > + { KE_KEY, KEY3_CODE, { KEY_PROG3 } }, > + { KE_KEY, KEY4_CODE, { KEY_PROG4 } }, > + { KE_END, 0 } > +}; Since this keymap applies to both the S6410 and S6420, referencing S6400 in its name might be slightly confusing in future. Calling this "keymap_s64x0" or (if it fits better with conventions used elsewhere) "keymap_s64X0" would avoid the confusion. Regards jonathan