linux-stable/include/linux/input/vivaldi-fmap.h
Stephen Boyd 45ceaf14d5 Input: extract ChromeOS vivaldi physmap show function
Let's introduce a common library file for the physmap show function
duplicated between three different keyboard drivers. This largely copies
the code from cros_ec_keyb.c which has the most recent version of the
show function, while using the vivaldi_data struct from the hid-vivaldi
driver. This saves a small amount of space in an allyesconfig build.

$ ./scripts/bloat-o-meter vmlinux.before vmlinux.after

add/remove: 3/0 grow/shrink: 2/3 up/down: 412/-720 (-308)
Function                                     old     new   delta
vivaldi_function_row_physmap_show              -     292    +292
_sub_I_65535_1                           1057564 1057616     +52
_sub_D_65535_0                           1057564 1057616     +52
e843419@49f2_00062737_9b04                     -       8      +8
e843419@20f6_0002a34d_35bc                     -       8      +8
atkbd_parse_fwnode_data                      480     472      -8
atkbd_do_show_function_row_physmap           316      76    -240
function_row_physmap_show                    620     148    -472
Total: Before=285581925, After=285581617, chg -0.00%

Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Tested-by: Stephen Boyd <swboyd@chromium.org> # coachz, wormdingler
Link: https://lore.kernel.org/r/20220228075446.466016-3-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2022-03-14 21:11:09 -07:00

27 lines
906 B
C

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _VIVALDI_FMAP_H
#define _VIVALDI_FMAP_H
#include <linux/types.h>
#define VIVALDI_MAX_FUNCTION_ROW_KEYS 24
/**
* struct vivaldi_data - Function row map data for ChromeOS Vivaldi keyboards
* @function_row_physmap: An array of scancodes or their equivalent (HID usage
* codes, encoded rows/columns, etc) for the top
* row function keys, in an order from left to right
* @num_function_row_keys: The number of top row keys in a custom keyboard
*
* This structure is supposed to be used by ChromeOS keyboards using
* the Vivaldi keyboard function row design.
*/
struct vivaldi_data {
u32 function_row_physmap[VIVALDI_MAX_FUNCTION_ROW_KEYS];
unsigned int num_function_row_keys;
};
ssize_t vivaldi_function_row_physmap_show(const struct vivaldi_data *data,
char *buf);
#endif /* _VIVALDI_FMAP_H */