Reorder those static function so that their declarations can be removed. Signed-off-by: Bin Meng <bmeng...@gmail.com> Acked-by: Simon Glass <s...@chromium.org>
--- Changes in v2: - Split of reordering static functions into this patch drivers/input/i8042.c | 417 ++++++++++++++++++++++---------------------------- 1 file changed, 186 insertions(+), 231 deletions(-) diff --git a/drivers/input/i8042.c b/drivers/input/i8042.c index 8401181..0ade077 100644 --- a/drivers/input/i8042.c +++ b/drivers/input/i8042.c @@ -27,18 +27,6 @@ static int kbd_mapping = KBD_US; /* default US keyboard */ static int kbd_flags = NORMAL; /* after reset */ static int kbd_state; /* unshift code */ -static void kbd_conv_char(unsigned char scan_code); -static void kbd_led_set(void); -static void kbd_normal(unsigned char scan_code); -static void kbd_shift(unsigned char scan_code); -static void kbd_ctrl(unsigned char scan_code); -static void kbd_num(unsigned char scan_code); -static void kbd_caps(unsigned char scan_code); -static void kbd_scroll(unsigned char scan_code); -static void kbd_alt(unsigned char scan_code); -static int kbd_input_empty(void); -static int kbd_reset(void); - static unsigned char kbd_fct_map[144] = { /* kbd_fct_map table for scan code */ 0, AS, AS, AS, AS, AS, AS, AS, /* scan 0- 7 */ @@ -288,180 +276,34 @@ static unsigned char ext_key_map[] = { 0x00 /* map end */ }; -/******************************************************************************/ - -static int kbd_controller_present(void) -{ - return in8(I8042_STATUS_REG) != 0xff; -} - -/******************************************************************************* - * - * i8042_kbd_init - reset keyboard and init state flags - */ -int i8042_kbd_init(void) +static int kbd_input_empty(void) { - int keymap, try; - char *penv; - - if (!kbd_controller_present()) - return -1; + int kbdTimeout = KBD_TIMEOUT * 1000; - /* Init keyboard device (default US layout) */ - keymap = KBD_US; - penv = getenv("keymap"); - if (penv != NULL) { - if (strncmp(penv, "de", 3) == 0) - keymap = KBD_GER; - } + while ((in8(I8042_STATUS_REG) & I8042_STATUS_IN_DATA) && kbdTimeout--) + udelay(1); - for (try = 0; try < KBD_RESET_TRIES; try++) { - if (kbd_reset() == 0) { - kbd_mapping = keymap; - kbd_flags = NORMAL; - kbd_state = 0; - kbd_led_set(); - return 0; - } - } - return -1; + return kbdTimeout != -1; } - -/******************************************************************************* - * - * i8042_tstc - test if keyboard input is available - * option: cursor blinking if called in a loop - */ -int i8042_tstc(struct stdio_dev *dev) +static int wait_until_kbd_output_full(void) { - unsigned char scan_code = 0; - -#ifdef CONFIG_CONSOLE_CURSOR - if (--blinkCount == 0) { - cursor_state ^= 1; - console_cursor(cursor_state); - blinkCount = CONFIG_SYS_CONSOLE_BLINK_COUNT; - udelay(10); - } -#endif - - if ((in8(I8042_STATUS_REG) & 0x01) == 0) { - return 0; - } else { - scan_code = in8(I8042_DATA_REG); - if (scan_code == 0xfa) - return 0; - - kbd_conv_char(scan_code); - - if (kbd_input != -1) - return 1; - } - return 0; -} - + int kbdTimeout = KBD_TIMEOUT * 1000; -/******************************************************************************* - * - * i8042_getc - wait till keyboard input is available - * option: turn on/off cursor while waiting - */ -int i8042_getc(struct stdio_dev *dev) -{ - int ret_chr; - unsigned char scan_code; + while (((in8(I8042_STATUS_REG) & 0x01) == 0) && kbdTimeout--) + udelay(1); - while (kbd_input == -1) { - while ((in8(I8042_STATUS_REG) & 0x01) == 0) { -#ifdef CONFIG_CONSOLE_CURSOR - if (--blinkCount == 0) { - cursor_state ^= 1; - console_cursor(cursor_state); - blinkCount = CONFIG_SYS_CONSOLE_BLINK_COUNT; - } - udelay(10); -#endif - } - scan_code = in8(I8042_DATA_REG); - if (scan_code != 0xfa) - kbd_conv_char (scan_code); - } - ret_chr = kbd_input; - kbd_input = -1; - return ret_chr; + return kbdTimeout != -1; } - -/******************************************************************************/ - -static void kbd_conv_char(unsigned char scan_code) +static void kbd_led_set(void) { - if (scan_code == 0xe0) { - kbd_flags |= EXT; - return; - } - - /* if high bit of scan_code, set break flag */ - if (scan_code & 0x80) - kbd_flags |= BRK; - else - kbd_flags &= ~BRK; - - if ((scan_code == 0xe1) || (kbd_flags & E1)) { - if (scan_code == 0xe1) { - kbd_flags ^= BRK; /* reset the break flag */ - kbd_flags ^= E1; /* bitwise EXOR with E1 flag */ - } - return; - } - - scan_code &= 0x7f; - - if (kbd_flags & EXT) { - int i; - - kbd_flags ^= EXT; - for (i = 0; ext_key_map[i]; i++) { - if (ext_key_map[i] == scan_code) { - scan_code = 0x80 + i; - break; - } - } - /* not found ? */ - if (!ext_key_map[i]) - return; - } - - switch (kbd_fct_map[scan_code]) { - case AS: - kbd_normal(scan_code); - break; - case SH: - kbd_shift(scan_code); - break; - case CN: - kbd_ctrl(scan_code); - break; - case NM: - kbd_num(scan_code); - break; - case CP: - kbd_caps(scan_code); - break; - case ST: - kbd_scroll(scan_code); - break; - case AK: - kbd_alt(scan_code); - break; - } - return; + kbd_input_empty(); + out8(I8042_DATA_REG, 0xed); /* SET LED command */ + kbd_input_empty(); + out8(I8042_DATA_REG, (kbd_flags & 0x7)); /* LED bits only */ } - -/******************************************************************************/ - static void kbd_normal(unsigned char scan_code) { unsigned char chr; @@ -480,9 +322,6 @@ static void kbd_normal(unsigned char scan_code) } } - -/******************************************************************************/ - static void kbd_shift(unsigned char scan_code) { if ((kbd_flags & BRK) == BRK) { @@ -494,9 +333,6 @@ static void kbd_shift(unsigned char scan_code) } } - -/******************************************************************************/ - static void kbd_ctrl(unsigned char scan_code) { if ((kbd_flags & BRK) == BRK) { @@ -508,32 +344,34 @@ static void kbd_ctrl(unsigned char scan_code) } } - -/******************************************************************************/ - -static void kbd_caps(unsigned char scan_code) +static void kbd_num(unsigned char scan_code) { if ((kbd_flags & BRK) == NORMAL) { - kbd_flags ^= CAPS; + kbd_flags ^= NUM; + kbd_state = (kbd_flags & NUM) ? AS : NM; kbd_led_set(); /* update keyboard LED */ } } +static void kbd_alt(unsigned char scan_code) +{ + if ((kbd_flags & BRK) == BRK) { + kbd_state = AS; + kbd_flags &= (~ALT); + } else { + kbd_state = AK; + kbd_flags &= ALT; + } +} -/******************************************************************************/ - -static void kbd_num(unsigned char scan_code) +static void kbd_caps(unsigned char scan_code) { if ((kbd_flags & BRK) == NORMAL) { - kbd_flags ^= NUM; - kbd_state = (kbd_flags & NUM) ? AS : NM; + kbd_flags ^= CAPS; kbd_led_set(); /* update keyboard LED */ } } - -/******************************************************************************/ - static void kbd_scroll(unsigned char scan_code) { if ((kbd_flags & BRK) == NORMAL) { @@ -546,53 +384,68 @@ static void kbd_scroll(unsigned char scan_code) } } -/******************************************************************************/ - -static void kbd_alt(unsigned char scan_code) +static void kbd_conv_char(unsigned char scan_code) { - if ((kbd_flags & BRK) == BRK) { - kbd_state = AS; - kbd_flags &= (~ALT); - } else { - kbd_state = AK; - kbd_flags &= ALT; + if (scan_code == 0xe0) { + kbd_flags |= EXT; + return; } -} - -/******************************************************************************/ - -static void kbd_led_set(void) -{ - kbd_input_empty(); - out8(I8042_DATA_REG, 0xed); /* SET LED command */ - kbd_input_empty(); - out8(I8042_DATA_REG, (kbd_flags & 0x7)); /* LED bits only */ -} - - -/******************************************************************************/ - -static int kbd_input_empty(void) -{ - int kbdTimeout = KBD_TIMEOUT * 1000; - - while ((in8(I8042_STATUS_REG) & I8042_STATUS_IN_DATA) && kbdTimeout--) - udelay(1); + /* if high bit of scan_code, set break flag */ + if (scan_code & 0x80) + kbd_flags |= BRK; + else + kbd_flags &= ~BRK; - return kbdTimeout != -1; -} + if ((scan_code == 0xe1) || (kbd_flags & E1)) { + if (scan_code == 0xe1) { + kbd_flags ^= BRK; /* reset the break flag */ + kbd_flags ^= E1; /* bitwise EXOR with E1 flag */ + } + return; + } -/******************************************************************************/ + scan_code &= 0x7f; -static int wait_until_kbd_output_full(void) -{ - int kbdTimeout = KBD_TIMEOUT * 1000; + if (kbd_flags & EXT) { + int i; - while (((in8(I8042_STATUS_REG) & 0x01) == 0) && kbdTimeout--) - udelay(1); + kbd_flags ^= EXT; + for (i = 0; ext_key_map[i]; i++) { + if (ext_key_map[i] == scan_code) { + scan_code = 0x80 + i; + break; + } + } + /* not found ? */ + if (!ext_key_map[i]) + return; + } - return kbdTimeout != -1; + switch (kbd_fct_map[scan_code]) { + case AS: + kbd_normal(scan_code); + break; + case SH: + kbd_shift(scan_code); + break; + case CN: + kbd_ctrl(scan_code); + break; + case NM: + kbd_num(scan_code); + break; + case AK: + kbd_alt(scan_code); + break; + case CP: + kbd_caps(scan_code); + break; + case ST: + kbd_scroll(scan_code); + break; + } + return; } /******************************************************************************/ @@ -646,3 +499,105 @@ static int kbd_reset(void) return 0; } + +static int kbd_controller_present(void) +{ + return in8(I8042_STATUS_REG) != 0xff; +} + +/******************************************************************************* + * + * i8042_kbd_init - reset keyboard and init state flags + */ +int i8042_kbd_init(void) +{ + int keymap, try; + char *penv; + + if (!kbd_controller_present()) + return -1; + + /* Init keyboard device (default US layout) */ + keymap = KBD_US; + penv = getenv("keymap"); + if (penv != NULL) { + if (strncmp(penv, "de", 3) == 0) + keymap = KBD_GER; + } + + for (try = 0; try < KBD_RESET_TRIES; try++) { + if (kbd_reset() == 0) { + kbd_mapping = keymap; + kbd_flags = NORMAL; + kbd_state = 0; + kbd_led_set(); + return 0; + } + } + return -1; +} + + +/******************************************************************************* + * + * i8042_tstc - test if keyboard input is available + * option: cursor blinking if called in a loop + */ +int i8042_tstc(struct stdio_dev *dev) +{ + unsigned char scan_code = 0; + +#ifdef CONFIG_CONSOLE_CURSOR + if (--blinkCount == 0) { + cursor_state ^= 1; + console_cursor(cursor_state); + blinkCount = CONFIG_SYS_CONSOLE_BLINK_COUNT; + udelay(10); + } +#endif + + if ((in8(I8042_STATUS_REG) & 0x01) == 0) { + return 0; + } else { + scan_code = in8(I8042_DATA_REG); + if (scan_code == 0xfa) + return 0; + + kbd_conv_char(scan_code); + + if (kbd_input != -1) + return 1; + } + return 0; +} + + +/******************************************************************************* + * + * i8042_getc - wait till keyboard input is available + * option: turn on/off cursor while waiting + */ +int i8042_getc(struct stdio_dev *dev) +{ + int ret_chr; + unsigned char scan_code; + + while (kbd_input == -1) { + while ((in8(I8042_STATUS_REG) & 0x01) == 0) { +#ifdef CONFIG_CONSOLE_CURSOR + if (--blinkCount == 0) { + cursor_state ^= 1; + console_cursor(cursor_state); + blinkCount = CONFIG_SYS_CONSOLE_BLINK_COUNT; + } + udelay(10); +#endif + } + scan_code = in8(I8042_DATA_REG); + if (scan_code != 0xfa) + kbd_conv_char (scan_code); + } + ret_chr = kbd_input; + kbd_input = -1; + return ret_chr; +} -- 1.8.2.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot