Lines Matching refs:uc_key

62 			 struct dm_key_uclass_platdata *uc_key, int adcval)  in key_adc_event()  argument
66 if (uc_key->in_volt) { in key_adc_event()
72 uc_key->name, uc_key->min, uc_key->center, uc_key->max, in key_adc_event()
75 return (val <= uc_key->max && val >= uc_key->min) ? in key_adc_event()
80 static int key_gpio_event(struct dm_key_uclass_platdata *uc_key) in key_gpio_event() argument
82 if (!dm_gpio_is_valid(&uc_key->gpio)) { in key_gpio_event()
83 KEY_ERR("'%s' Invalid gpio\n", uc_key->name); in key_gpio_event()
87 return dm_gpio_get_value(&uc_key->gpio) ? in key_gpio_event()
91 static int key_gpio_interrupt_event(struct dm_key_uclass_platdata *uc_key) in key_gpio_interrupt_event() argument
96 __func__, uc_key->name, uc_key->rise_ms, uc_key->fall_ms, in key_gpio_interrupt_event()
97 uc_key->rise_ms - uc_key->fall_ms); in key_gpio_interrupt_event()
100 if (uc_key->fall_ms == 0 && uc_key->rise_ms != 0) { in key_gpio_interrupt_event()
105 if ((uc_key->rise_ms > uc_key->fall_ms) && in key_gpio_interrupt_event()
106 (uc_key->rise_ms - uc_key->fall_ms) >= KEY_LONG_DOWN_MS) { in key_gpio_interrupt_event()
107 uc_key->rise_ms = 0; in key_gpio_interrupt_event()
108 uc_key->fall_ms = 0; in key_gpio_interrupt_event()
110 KEY_DBG("%s key long pressed..\n", uc_key->name); in key_gpio_interrupt_event()
111 } else if (uc_key->fall_ms && in key_gpio_interrupt_event()
112 key_timer(uc_key->fall_ms) >= KEY_LONG_DOWN_MS) { in key_gpio_interrupt_event()
113 uc_key->rise_ms = 0; in key_gpio_interrupt_event()
114 uc_key->fall_ms = 0; in key_gpio_interrupt_event()
116 KEY_DBG("%s key long pressed(hold)..\n", uc_key->name); in key_gpio_interrupt_event()
117 } else if ((uc_key->rise_ms > uc_key->fall_ms) && in key_gpio_interrupt_event()
118 (uc_key->rise_ms - uc_key->fall_ms) < KEY_LONG_DOWN_MS) { in key_gpio_interrupt_event()
119 uc_key->rise_ms = 0; in key_gpio_interrupt_event()
120 uc_key->fall_ms = 0; in key_gpio_interrupt_event()
122 KEY_DBG("%s key short pressed..\n", uc_key->name); in key_gpio_interrupt_event()
124 } else if (uc_key->rise_ms && uc_key->fall_ms && in key_gpio_interrupt_event()
125 (uc_key->rise_ms == uc_key->fall_ms)) { in key_gpio_interrupt_event()
126 uc_key->rise_ms = 0; in key_gpio_interrupt_event()
127 uc_key->fall_ms = 0; in key_gpio_interrupt_event()
129 KEY_DBG("%s key short pressed..\n", uc_key->name); in key_gpio_interrupt_event()
143 static int key_core_read(struct dm_key_uclass_platdata *uc_key) in key_core_read() argument
145 if (uc_key->type == ADC_KEY) { in key_core_read()
155 KEY_ERR("%s: No saradc\n", uc_key->name); in key_core_read()
159 ret = adc_start_channel(dev, uc_key->channel); in key_core_read()
161 KEY_ERR("%s: Failed to start saradc\n", uc_key->name); in key_core_read()
165 ret = adc_channel_data(dev, uc_key->channel, &adcval); in key_core_read()
167 KEY_ERR("%s: Failed to read saradc, %d\n", uc_key->name, ret); in key_core_read()
171 return key_adc_event(dev, uc_key, adcval); in key_core_read()
177 return (uc_key->code == KEY_POWER) ? in key_core_read()
178 key_gpio_interrupt_event(uc_key) : in key_core_read()
179 key_gpio_event(uc_key); in key_core_read()
184 struct dm_key_uclass_platdata *uc_key; in key_read() local
198 uc_key = dev_get_uclass_platdata(dev); in key_read()
200 if (!allow_pre_reloc && uc_key->pre_reloc) in key_read()
203 if (uc_key->code != code) in key_read()
206 event = key_core_read(uc_key); in key_read()
222 struct dm_key_uclass_platdata *uc_key; in key_exist() local
228 uc_key = dev_get_uclass_platdata(dev); in key_exist()
230 if (uc_key->code == code) in key_exist()
240 static void power_key_download(struct dm_key_uclass_platdata *uc_key) in power_key_download() argument
245 if (uc_key->code == KEY_POWER && old_rise_ms != uc_key->rise_ms) { in power_key_download()
246 old_rise_ms = uc_key->rise_ms; in power_key_download()
247 uc_key->trig_cnt++; in power_key_download()
248 if (uc_key->trig_cnt >= trig_cnt) { in power_key_download()
250 irq_handler_disable(uc_key->irq); in power_key_download()
265 struct dm_key_uclass_platdata *uc_key = dev_get_uclass_platdata(dev); in gpio_irq_handler() local
267 if (uc_key->irq != irq) in gpio_irq_handler()
270 if (uc_key->irq_thread) { in gpio_irq_handler()
271 uc_key->irq_thread(irq, data); in gpio_irq_handler()
274 uc_key->rise_ms = key_timer(0); in gpio_irq_handler()
276 uc_key->name, uc_key->fall_ms); in gpio_irq_handler()
278 uc_key->fall_ms = key_timer(0); in gpio_irq_handler()
280 uc_key->name, uc_key->rise_ms); in gpio_irq_handler()
291 power_key_download(uc_key); in gpio_irq_handler()
328 struct dm_key_uclass_platdata *uc_key; in key_post_probe() local
331 uc_key = dev_get_uclass_platdata(dev); in key_post_probe()
332 if (!uc_key) in key_post_probe()
336 uc_key->pre_reloc = dev_read_bool(dev, "u-boot,dm-pre-reloc") || in key_post_probe()
339 if (uc_key->type != ADC_KEY) { in key_post_probe()
340 if (uc_key->code == KEY_POWER) { in key_post_probe()
344 if (uc_key->skip_irq_init) in key_post_probe()
347 irq = phandle_gpio_to_irq(uc_key->gpios[0], in key_post_probe()
348 uc_key->gpios[1]); in key_post_probe()
351 uc_key->name, irq); in key_post_probe()
355 if (uc_key->code != KEY_POWER && uc_key->irq_thread) { in key_post_probe()
357 uc_key->name); in key_post_probe()
361 uc_key->irq = irq; in key_post_probe()
366 KEY_WARN("%s: no IRQ framework available\n", uc_key->name); in key_post_probe()
370 &uc_key->gpio, GPIOD_IS_IN); in key_post_probe()
373 uc_key->name, ret); in key_post_probe()
380 printf("[%s] (%s, %s, %s):\n", uc_key->name, in key_post_probe()
381 uc_key->type == ADC_KEY ? "ADC" : "GPIO", in key_post_probe()
382 uc_key->pre_reloc ? "U-Boot" : "Kernel", in key_post_probe()
385 if (uc_key->type == ADC_KEY) { in key_post_probe()
387 uc_key->in_volt ? "volt" : " adc", in key_post_probe()
388 uc_key->center, uc_key->min, uc_key->max); in key_post_probe()
389 printf(" channel: %d\n\n", uc_key->channel); in key_post_probe()
392 ofnode_get_name(ofnode_get_by_phandle(uc_key->gpios[0])); in key_post_probe()
394 printf(" irq: %d\n", uc_key->irq); in key_post_probe()
396 printf(" gpio[1]: %d\n\n", uc_key->gpios[1]); in key_post_probe()