Lines Matching refs:config
185 static int input_queue_ascii(struct input_config *config, int ch) in input_queue_ascii() argument
187 if (config->fifo_in + 1 == INPUT_BUFFER_LEN) { in input_queue_ascii()
188 if (!config->fifo_out) in input_queue_ascii()
191 config->fifo_in = 0; in input_queue_ascii()
193 if (config->fifo_in + 1 == config->fifo_out) in input_queue_ascii()
195 config->fifo_in++; in input_queue_ascii()
198 config->fifo[config->fifo_in] = (uchar)ch; in input_queue_ascii()
203 int input_tstc(struct input_config *config) in input_tstc() argument
205 if (config->fifo_in == config->fifo_out && config->read_keys) { in input_tstc()
206 if (!(*config->read_keys)(config)) in input_tstc()
209 return config->fifo_in != config->fifo_out; in input_tstc()
212 int input_getc(struct input_config *config) in input_getc() argument
216 while (config->fifo_in == config->fifo_out) { in input_getc()
217 if (config->read_keys) in input_getc()
218 err = (*config->read_keys)(config); in input_getc()
223 if (++config->fifo_out == INPUT_BUFFER_LEN) in input_getc()
224 config->fifo_out = 0; in input_getc()
226 return config->fifo[config->fifo_out]; in input_getc()
240 static struct input_key_xlate *process_modifier(struct input_config *config, in process_modifier() argument
244 struct udevice *dev = config->dev; in process_modifier()
251 assert(config->num_tables > 0); in process_modifier()
252 table = &config->table[0]; in process_modifier()
253 for (i = 1; i < config->num_tables; i++) { in process_modifier()
254 struct input_key_xlate *tab = &config->table[i]; in process_modifier()
279 config->flags ^= flip; in process_modifier()
280 if (config->flags & FLAG_NUM_LOCK) in process_modifier()
282 if (config->flags & FLAG_CAPS_LOCK) in process_modifier()
284 if (config->flags & FLAG_SCROLL_LOCK) in process_modifier()
286 config->leds = leds; in process_modifier()
287 config->leds_changed = flip; in process_modifier()
291 if (ops->update_leds(dev, config->leds)) in process_modifier()
374 static int input_check_keycodes(struct input_config *config, in input_check_keycodes() argument
378 if (!config->num_tables) { in input_check_keycodes()
385 config->prev_keycodes, config->num_prev_keycodes); in input_check_keycodes()
387 memcpy(config->prev_keycodes, keycode, num_keycodes * sizeof(int)); in input_check_keycodes()
388 config->num_prev_keycodes = num_keycodes; in input_check_keycodes()
406 static int input_keycode_to_ansi364(struct input_config *config, in input_keycode_to_ansi364() argument
449 static int input_keycodes_to_ascii(struct input_config *config, in input_keycodes_to_ascii() argument
457 table = &config->table[0]; in input_keycodes_to_ascii()
464 table = process_modifier(config, key, in input_keycodes_to_ascii()
480 if ((config->flags & FLAG_CAPS_LOCK) && in input_keycodes_to_ascii()
484 if (!(config->flags & FLAG_NUM_LOCK)) { in input_keycodes_to_ascii()
492 ch_count += input_keycode_to_ansi364(config, key, in input_keycodes_to_ascii()
507 static int _input_send_keycodes(struct input_config *config, int keycode[], in _input_send_keycodes() argument
515 config->modifiers = 0; in _input_send_keycodes()
516 if (!input_check_keycodes(config, keycode, num_keycodes, &same)) { in _input_send_keycodes()
525 is_repeat = config->allow_repeats || (config->repeat_rate_ms && in _input_send_keycodes()
526 (int)get_timer(config->next_repeat_ms) >= 0); in _input_send_keycodes()
531 count = input_keycodes_to_ascii(config, keycode, num_keycodes, in _input_send_keycodes()
535 input_queue_ascii(config, ch[i]); in _input_send_keycodes()
538 config->repeat_rate_ms : in _input_send_keycodes()
539 config->repeat_delay_ms; in _input_send_keycodes()
541 config->next_repeat_ms = get_timer(0) + delay_ms; in _input_send_keycodes()
546 int input_send_keycodes(struct input_config *config, int keycode[], in input_send_keycodes() argument
549 return _input_send_keycodes(config, keycode, num_keycodes, true); in input_send_keycodes()
552 int input_add_keycode(struct input_config *config, int new_keycode, in input_add_keycode() argument
559 for (i = 0, count = 0; i < config->num_prev_keycodes; i++) { in input_add_keycode()
560 int code = config->prev_keycodes[i]; in input_add_keycode()
578 return _input_send_keycodes(config, keycode, count, !release); in input_add_keycode()
581 int input_add_table(struct input_config *config, int left_keycode, in input_add_table() argument
586 if (config->num_tables == INPUT_MAX_MODIFIERS) { in input_add_table()
591 table = &config->table[config->num_tables++]; in input_add_table()
600 void input_set_delays(struct input_config *config, int repeat_delay_ms, in input_set_delays() argument
603 config->repeat_delay_ms = repeat_delay_ms; in input_set_delays()
604 config->repeat_rate_ms = repeat_rate_ms; in input_set_delays()
607 void input_allow_repeats(struct input_config *config, bool allow_repeats) in input_allow_repeats() argument
609 config->allow_repeats = allow_repeats; in input_allow_repeats()
612 int input_leds_changed(struct input_config *config) in input_leds_changed() argument
614 if (config->leds_changed) in input_leds_changed()
615 return config->leds; in input_leds_changed()
620 int input_add_tables(struct input_config *config, bool german) in input_add_tables() argument
630 ret = input_add_table(config, entry->left_keycode, in input_add_tables()
640 int input_init(struct input_config *config, int leds) in input_init() argument
642 memset(config, '\0', sizeof(*config)); in input_init()
643 config->leds = leds; in input_init()