Home | History | Annotate | Download | only in libboot

Lines Matching refs:keypad

33 int gpio_keypad_init(gpio_keypad_info *keypad)
36 for(i = 0; i < keypad->noutputs; i++) {
37 gpio_set(keypad->output_gpios[i], keypad->polarity ^ keypad->drive_inactive_outputs);
38 gpio_dir(keypad->output_gpios[i], keypad->drive_inactive_outputs);
40 for(i = 0; i < keypad->ninputs; i++) {
41 gpio_dir(keypad->input_gpios[i], 0);
43 keypad->state = 0;
47 void gpio_keypad_scan_keys(gpio_keypad_info *keypad)
51 unsigned npolarity = !keypad->polarity;
55 out = keypad->noutputs;
56 shift = keypad->noutputs * keypad->ninputs;
59 if(keypad->drive_inactive_outputs)
60 gpio_set(keypad->output_gpios[out], !npolarity);
62 gpio_dir(keypad->output_gpios[out], 1);
63 udelay(keypad->settle_time);
64 in = keypad->ninputs;
68 keys = (keys << 1) | (gpio_get(keypad->input_gpios[in]) ^ npolarity);
69 if(((unsigned)(keypad->state >> shift) ^ (unsigned)keys) & 1) {
71 if(keypad->key_map)
72 mapped_key = keypad->key_map[shift];
74 // keypad->output_gpios[out], keypad->input_gpios[in],
80 if(keypad->drive_inactive_outputs)
81 gpio_set(keypad->output_gpios[out], npolarity);
83 gpio_dir(keypad->output_gpios[out], 0);
85 if(keys != keypad->state) {
86 keypad->state = keys;