• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/keyboard/

Lines Matching refs:keypad

96 #define keypad_readl(off)	__raw_readl(keypad->mmio_base + (off))
97 #define keypad_writel(off, v) __raw_writel((v), keypad->mmio_base + (off))
121 static void pxa27x_keypad_build_keycode(struct pxa27x_keypad *keypad)
123 struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
124 struct input_dev *input_dev = keypad->input_dev;
136 keypad->keycodes[scancode] = keycode;
142 keypad->keycodes[MAX_MATRIX_KEY_NUM + i] = keycode;
149 keypad->keycodes[MAX_MATRIX_KEY_NUM + 0] = keycode;
153 keypad->keycodes[MAX_MATRIX_KEY_NUM + 1] = keycode;
156 keypad->rotary_rel_code[0] = -1;
158 keypad->rotary_rel_code[0] = pdata->rotary0_rel_code;
166 keypad->keycodes[MAX_MATRIX_KEY_NUM + 2] = keycode;
170 keypad->keycodes[MAX_MATRIX_KEY_NUM + 3] = keycode;
173 keypad->rotary_rel_code[1] = -1;
175 keypad->rotary_rel_code[1] = pdata->rotary1_rel_code;
183 static void pxa27x_keypad_scan_matrix(struct pxa27x_keypad *keypad)
185 struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
186 struct input_dev *input_dev = keypad->input_dev;
231 bits_changed = keypad->matrix_key_state[col] ^ new_state[col];
241 input_report_key(input_dev, keypad->keycodes[code],
246 memcpy(keypad->matrix_key_state, new_state, sizeof(new_state));
261 static void report_rotary_event(struct pxa27x_keypad *keypad, int r, int delta)
263 struct input_dev *dev = keypad->input_dev;
268 if (keypad->rotary_rel_code[r] == -1) {
270 unsigned char keycode = keypad->keycodes[code];
280 input_report_rel(dev, keypad->rotary_rel_code[r], delta);
285 static void pxa27x_keypad_scan_rotary(struct pxa27x_keypad *keypad)
287 struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
295 report_rotary_event(keypad, 0, rotary_delta(kprec));
298 report_rotary_event(keypad, 1, rotary_delta(kprec >> 16));
301 static void pxa27x_keypad_scan_direct(struct pxa27x_keypad *keypad)
303 struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
304 struct input_dev *input_dev = keypad->input_dev;
312 pxa27x_keypad_scan_rotary(keypad);
314 new_state = KPDK_DK(kpdk) & keypad->direct_key_mask;
315 bits_changed = keypad->direct_key_state ^ new_state;
325 input_report_key(input_dev, keypad->keycodes[code],
330 keypad->direct_key_state = new_state;
335 struct pxa27x_keypad *keypad = dev_id;
339 pxa27x_keypad_scan_direct(keypad);
342 pxa27x_keypad_scan_matrix(keypad);
347 static void pxa27x_keypad_config(struct pxa27x_keypad *keypad)
349 struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
376 keypad->direct_key_mask = ((2 << direct_key_num) - 1) & ~mask;
389 struct pxa27x_keypad *keypad = input_get_drvdata(dev);
392 clk_enable(keypad->clk);
393 pxa27x_keypad_config(keypad);
400 struct pxa27x_keypad *keypad = input_get_drvdata(dev);
403 clk_disable(keypad->clk);
410 struct pxa27x_keypad *keypad = platform_get_drvdata(pdev);
412 clk_disable(keypad->clk);
415 enable_irq_wake(keypad->irq);
423 struct pxa27x_keypad *keypad = platform_get_drvdata(pdev);
424 struct input_dev *input_dev = keypad->input_dev;
427 disable_irq_wake(keypad->irq);
433 clk_enable(keypad->clk);
434 pxa27x_keypad_config(keypad);
451 struct pxa27x_keypad *keypad;
463 dev_err(&pdev->dev, "failed to get keypad irq\n");
473 keypad = kzalloc(sizeof(struct pxa27x_keypad), GFP_KERNEL);
475 if (!keypad || !input_dev) {
481 keypad->pdata = pdata;
482 keypad->input_dev = input_dev;
483 keypad->irq = irq;
492 keypad->mmio_base = ioremap(res->start, resource_size(res));
493 if (keypad->mmio_base == NULL) {
499 keypad->clk = clk_get(&pdev->dev, NULL);
500 if (IS_ERR(keypad->clk)) {
501 dev_err(&pdev->dev, "failed to get keypad clock\n");
502 error = PTR_ERR(keypad->clk);
512 input_dev->keycode = keypad->keycodes;
513 input_dev->keycodesize = sizeof(keypad->keycodes[0]);
514 input_dev->keycodemax = ARRAY_SIZE(keypad->keycodes);
516 input_set_drvdata(input_dev, keypad);
521 pxa27x_keypad_build_keycode(keypad);
523 if ((pdata->enable_rotary0 && keypad->rotary_rel_code[0] != -1) ||
524 (pdata->enable_rotary1 && keypad->rotary_rel_code[1] != -1)) {
529 pdev->name, keypad);
542 platform_set_drvdata(pdev, keypad);
550 clk_put(keypad->clk);
552 iounmap(keypad->mmio_base);
557 kfree(keypad);
563 struct pxa27x_keypad *keypad = platform_get_drvdata(pdev);
566 free_irq(keypad->irq, pdev);
567 clk_put(keypad->clk);
569 input_unregister_device(keypad->input_dev);
570 iounmap(keypad->mmio_base);
576 kfree(keypad);
582 MODULE_ALIAS("platform:pxa27x-keypad");
588 .name = "pxa27x-keypad",