This is a follow-on to this thread[1] where we discussed the need to support the vivaldi keyboard function row keys in the google hammer driver. I've extracted the common code into a new vivaldi-fmap.c file that can be used by the various keyboard drivers used on ChromeOS devices to expose the function_row_physmap sysfs attribute. Then we make another file to keep the HID parsing logic common for the vivaldi and hammer keyboards. Finally, we add support for the function row physmap attribute to the hammer driver. Changes from v3 (https://lore.kernel.org/r/20220211012510.1198155-1-swboyd@xxxxxxxxxxxx): * Changed vivaldi-keymap to vivaldi-fmap Changes from v2 (https://lore.kernel.org/r/20220209225556.3992827-1-swboyd@xxxxxxxxxxxx): * Drop first patch to change to u16 * Change array type to u32 in vivaldi_data Changes from v1 (https://lore.kernel.org/r/20220204202021.895426-1-swboyd@xxxxxxxxxxxx): * Yet another new file for HID part to fix compilation problems Stephen Boyd (3): Input: Extract ChromeOS vivaldi physmap show function HID: Extract vivaldi hid feature mapping for use in hid-hammer HID: google: Add support for vivaldi to hid-hammer Zhengqiao Xia (1): HID: google: modify HID device groups of eel drivers/hid/Kconfig | 11 +++ drivers/hid/Makefile | 1 + drivers/hid/hid-google-hammer.c | 97 +++++++++++++++++++++------ drivers/hid/hid-vivaldi-common.c | 97 +++++++++++++++++++++++++++ drivers/hid/hid-vivaldi.c | 88 ++---------------------- drivers/input/Kconfig | 7 ++ drivers/input/Makefile | 1 + drivers/input/keyboard/Kconfig | 2 + drivers/input/keyboard/atkbd.c | 22 ++---- drivers/input/keyboard/cros_ec_keyb.c | 32 +++------ drivers/input/vivaldi-fmap.c | 39 +++++++++++ include/linux/input/vivaldi-fmap.h | 37 ++++++++++ 12 files changed, 292 insertions(+), 142 deletions(-) create mode 100644 drivers/hid/hid-vivaldi-common.c create mode 100644 drivers/input/vivaldi-fmap.c create mode 100644 include/linux/input/vivaldi-fmap.h [1] https://lore.kernel.org/r/nycvar.YFH.7.76.2201140935460.28059@xxxxxxxxxxxxx base-commit: dfd42facf1e4ada021b939b4e19c935dcdd55566 -- https://chromeos.dev