input: keyboard: continued refactoring brain-kbd-i2c

* code formatted by clang-format
This commit is contained in:
Suguru Saito 2023-09-20 11:03:01 +09:00
parent e35e599497
commit 3b643f8451
1 changed files with 31 additions and 26 deletions

View File

@ -25,18 +25,20 @@
#define BK_KEY(val) ((val) & 0x3f) #define BK_KEY(val) ((val) & 0x3f)
#define BK_IS_PRESSED(val) ((~val & 0x40) >> 6) #define BK_IS_PRESSED(val) ((~val & 0x40) >> 6)
#define BK_IS_SWITCH(val) (((val)&0x80) != 0) #define BK_IS_SWITCH(val) (((val) & 0x80) != 0)
#define BK_SW_CODE(val) (((val) >> 1) & 0x1F) #define BK_SW_CODE(val) (((val) >> 1) & 0x1F)
#define BK_SWITCH_ON(val) (((val)&1) == 0) #define BK_SWITCH_ON(val) (((val) & 1) == 0)
#define BK_KEYCODE_MAX (64) #define BK_KEYCODE_MAX (64)
#define BK_N_ROLL_MAX (3) #define BK_N_ROLL_MAX (3)
enum { BK_SW_LCD_TRANSFORMING_TO_TABLET = 3, enum {
BK_SW_UNKNOWN4, BK_SW_LCD_TRANSFORMING_TO_TABLET = 3,
BK_SW_USB_VBUS, BK_SW_UNKNOWN4,
BK_SW_LCD_FULLY_TRANSFORMED, BK_SW_USB_VBUS,
BK_SW_LCD_TRANSFORMING_TO_CLOSED }; BK_SW_LCD_FULLY_TRANSFORMED,
BK_SW_LCD_TRANSFORMING_TO_CLOSED
};
struct keymap_def { struct keymap_def {
unsigned int normal_event_code; unsigned int normal_event_code;
@ -100,14 +102,14 @@ static bool handle_symbol_key(struct bk_i2c_data *kbd, u8 keycode)
BK_KEY(keycode), keymap->normal_event_code); BK_KEY(keycode), keymap->normal_event_code);
} }
input_report_key(kbd->idev, input_report_key(kbd->idev, keymap->symbol_event_code,
keymap->symbol_event_code, BK_IS_PRESSED(keycode)); BK_IS_PRESSED(keycode));
kbd->symbol_states[BK_KEY(keycode)] = BK_IS_PRESSED(keycode); kbd->symbol_states[BK_KEY(keycode)] = BK_IS_PRESSED(keycode);
dev_dbg(&kbd->cli->dev, "symbol key %02x(%02x) %s\n", dev_dbg(&kbd->cli->dev, "symbol key %02x(%02x) %s\n", BK_KEY(keycode),
BK_KEY(keycode), keymap->symbol_event_code, keymap->symbol_event_code,
BK_IS_PRESSED(keycode) ? "pressed": "released"); BK_IS_PRESSED(keycode) ? "pressed" : "released");
return true; return true;
} }
@ -127,14 +129,14 @@ static bool handle_normal_key(struct bk_i2c_data *kbd, u8 keycode)
BK_KEY(keycode), keymap->symbol_event_code); BK_KEY(keycode), keymap->symbol_event_code);
} }
input_report_key(kbd->idev, input_report_key(kbd->idev, keymap->normal_event_code,
keymap->normal_event_code, BK_IS_PRESSED(keycode)); BK_IS_PRESSED(keycode));
kbd->symbol_states[BK_KEY(keycode)] = false; kbd->symbol_states[BK_KEY(keycode)] = false;
dev_dbg(&kbd->cli->dev, "normal key %02x(%02x) %s\n", dev_dbg(&kbd->cli->dev, "normal key %02x(%02x) %s\n", BK_KEY(keycode),
BK_KEY(keycode), keymap->normal_event_code, keymap->normal_event_code,
BK_IS_PRESSED(keycode) ? "pressed": "released"); BK_IS_PRESSED(keycode) ? "pressed" : "released");
return true; return true;
} }
@ -186,8 +188,7 @@ static irqreturn_t bk_i2c_irq_handler(int irq, void *devid)
if (n < 1) { if (n < 1) {
goto done; goto done;
} else if (n > BK_N_ROLL_MAX) { } else if (n > BK_N_ROLL_MAX) {
dev_dbg(&kbd->cli->dev, dev_dbg(&kbd->cli->dev, "invalid sequence\n");
"invalid sequence\n");
n = BK_N_ROLL_MAX; n = BK_N_ROLL_MAX;
} }
if (!detect_key(kbd, k1)) { if (!detect_key(kbd, k1)) {
@ -276,12 +277,14 @@ static int bk_i2c_probe(struct i2c_client *cli, const struct i2c_device_id *id)
} }
if (brain_keycode <= BK_KEYCODE_MAX) { if (brain_keycode <= BK_KEYCODE_MAX) {
kbd->keymaps[brain_keycode].normal_event_code = kernel_keycode; kbd->keymaps[brain_keycode].normal_event_code =
kernel_keycode;
dev_dbg(&cli->dev, "normal: brain: %02x, kernel: %02x", dev_dbg(&cli->dev, "normal: brain: %02x, kernel: %02x",
brain_keycode, kernel_keycode); brain_keycode, kernel_keycode);
} else { } else {
dev_err(&cli->dev, "invalid keycode: %02x\n", brain_keycode); dev_err(&cli->dev, "invalid keycode: %02x\n",
brain_keycode);
} }
} }
@ -308,12 +311,14 @@ static int bk_i2c_probe(struct i2c_client *cli, const struct i2c_device_id *id)
return -EINVAL; return -EINVAL;
} }
if (brain_keycode <= BK_KEYCODE_MAX) { if (brain_keycode <= BK_KEYCODE_MAX) {
kbd->keymaps[brain_keycode].symbol_event_code = kernel_keycode; kbd->keymaps[brain_keycode].symbol_event_code =
kernel_keycode;
dev_dbg(&cli->dev, "symbol: brain: %02x, kernel: %02x", dev_dbg(&cli->dev, "symbol: brain: %02x, kernel: %02x",
brain_keycode, kernel_keycode); brain_keycode, kernel_keycode);
} else { } else {
dev_err(&cli->dev, "invalid keycode: %02x\n", brain_keycode); dev_err(&cli->dev, "invalid keycode: %02x\n",
brain_keycode);
} }
} }
@ -334,11 +339,11 @@ static int bk_i2c_probe(struct i2c_client *cli, const struct i2c_device_id *id)
for (i = 0; i < BK_KEYCODE_MAX; i++) { for (i = 0; i < BK_KEYCODE_MAX; i++) {
if (kbd->keymaps[i].normal_event_code != KEY_RESERVED) if (kbd->keymaps[i].normal_event_code != KEY_RESERVED)
input_set_capability(kbd->idev, EV_KEY, input_set_capability(kbd->idev, EV_KEY,
kbd->keymaps[i].normal_event_code); kbd->keymaps[i].normal_event_code);
if (kbd->keymaps[i].symbol_event_code != KEY_RESERVED) if (kbd->keymaps[i].symbol_event_code != KEY_RESERVED)
input_set_capability(kbd->idev, EV_KEY, input_set_capability(kbd->idev, EV_KEY,
kbd->keymaps[i].symbol_event_code); kbd->keymaps[i].symbol_event_code);
} }
kbd->closing = false; kbd->closing = false;
input_set_capability(kbd->idev, EV_SW, SW_LID); input_set_capability(kbd->idev, EV_SW, SW_LID);