• Home
  • Raw
  • Download

Lines Matching refs:keypad

86 	struct ep93xx_keypad *keypad = dev_id;  in ep93xx_keypad_irq_handler()  local
87 struct input_dev *input_dev = keypad->input_dev; in ep93xx_keypad_irq_handler()
91 status = __raw_readl(keypad->mmio_base + KEY_REG); in ep93xx_keypad_irq_handler()
94 key1 = keypad->keycodes[keycode]; in ep93xx_keypad_irq_handler()
97 key2 = keypad->keycodes[keycode]; in ep93xx_keypad_irq_handler()
100 if (keypad->key1 && key1 != keypad->key1 && key2 != keypad->key1) in ep93xx_keypad_irq_handler()
101 input_report_key(input_dev, keypad->key1, 0); in ep93xx_keypad_irq_handler()
103 if (keypad->key2 && key1 != keypad->key2 && key2 != keypad->key2) in ep93xx_keypad_irq_handler()
104 input_report_key(input_dev, keypad->key2, 0); in ep93xx_keypad_irq_handler()
109 keypad->key1 = key1; in ep93xx_keypad_irq_handler()
110 keypad->key2 = key2; in ep93xx_keypad_irq_handler()
113 if (keypad->key1 && key1 != keypad->key1) in ep93xx_keypad_irq_handler()
114 input_report_key(input_dev, keypad->key1, 0); in ep93xx_keypad_irq_handler()
116 if (keypad->key2 && key1 != keypad->key2) in ep93xx_keypad_irq_handler()
117 input_report_key(input_dev, keypad->key2, 0); in ep93xx_keypad_irq_handler()
121 keypad->key1 = key1; in ep93xx_keypad_irq_handler()
122 keypad->key2 = 0; in ep93xx_keypad_irq_handler()
125 input_report_key(input_dev, keypad->key1, 0); in ep93xx_keypad_irq_handler()
126 input_report_key(input_dev, keypad->key2, 0); in ep93xx_keypad_irq_handler()
128 keypad->key1 = keypad->key2 = 0; in ep93xx_keypad_irq_handler()
135 static void ep93xx_keypad_config(struct ep93xx_keypad *keypad) in ep93xx_keypad_config() argument
137 struct ep93xx_keypad_platform_data *pdata = keypad->pdata; in ep93xx_keypad_config()
141 clk_set_rate(keypad->clk, EP93XX_KEYTCHCLK_DIV4); in ep93xx_keypad_config()
143 clk_set_rate(keypad->clk, EP93XX_KEYTCHCLK_DIV16); in ep93xx_keypad_config()
158 __raw_writel(val, keypad->mmio_base + KEY_INIT); in ep93xx_keypad_config()
163 struct ep93xx_keypad *keypad = input_get_drvdata(pdev); in ep93xx_keypad_open() local
165 if (!keypad->enabled) { in ep93xx_keypad_open()
166 ep93xx_keypad_config(keypad); in ep93xx_keypad_open()
167 clk_enable(keypad->clk); in ep93xx_keypad_open()
168 keypad->enabled = true; in ep93xx_keypad_open()
176 struct ep93xx_keypad *keypad = input_get_drvdata(pdev); in ep93xx_keypad_close() local
178 if (keypad->enabled) { in ep93xx_keypad_close()
179 clk_disable(keypad->clk); in ep93xx_keypad_close()
180 keypad->enabled = false; in ep93xx_keypad_close()
195 struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); in ep93xx_keypad_suspend() local
196 struct input_dev *input_dev = keypad->input_dev; in ep93xx_keypad_suspend()
200 if (keypad->enabled) { in ep93xx_keypad_suspend()
201 clk_disable(keypad->clk); in ep93xx_keypad_suspend()
202 keypad->enabled = false; in ep93xx_keypad_suspend()
208 enable_irq_wake(keypad->irq); in ep93xx_keypad_suspend()
215 struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); in ep93xx_keypad_resume() local
216 struct input_dev *input_dev = keypad->input_dev; in ep93xx_keypad_resume()
219 disable_irq_wake(keypad->irq); in ep93xx_keypad_resume()
224 if (!keypad->enabled) { in ep93xx_keypad_resume()
225 ep93xx_keypad_config(keypad); in ep93xx_keypad_resume()
226 clk_enable(keypad->clk); in ep93xx_keypad_resume()
227 keypad->enabled = true; in ep93xx_keypad_resume()
242 struct ep93xx_keypad *keypad; in ep93xx_keypad_probe() local
248 keypad = kzalloc(sizeof(struct ep93xx_keypad), GFP_KERNEL); in ep93xx_keypad_probe()
249 if (!keypad) in ep93xx_keypad_probe()
252 keypad->pdata = pdev->dev.platform_data; in ep93xx_keypad_probe()
253 if (!keypad->pdata) { in ep93xx_keypad_probe()
258 keymap_data = keypad->pdata->keymap_data; in ep93xx_keypad_probe()
264 keypad->irq = platform_get_irq(pdev, 0); in ep93xx_keypad_probe()
265 if (!keypad->irq) { in ep93xx_keypad_probe()
282 keypad->mmio_base = ioremap(res->start, resource_size(res)); in ep93xx_keypad_probe()
283 if (keypad->mmio_base == NULL) { in ep93xx_keypad_probe()
292 keypad->clk = clk_get(&pdev->dev, NULL); in ep93xx_keypad_probe()
293 if (IS_ERR(keypad->clk)) { in ep93xx_keypad_probe()
294 err = PTR_ERR(keypad->clk); in ep93xx_keypad_probe()
304 keypad->input_dev = input_dev; in ep93xx_keypad_probe()
311 input_dev->keycode = keypad->keycodes; in ep93xx_keypad_probe()
312 input_dev->keycodesize = sizeof(keypad->keycodes[0]); in ep93xx_keypad_probe()
313 input_dev->keycodemax = ARRAY_SIZE(keypad->keycodes); in ep93xx_keypad_probe()
315 input_set_drvdata(input_dev, keypad); in ep93xx_keypad_probe()
318 if (keypad->pdata->flags & EP93XX_KEYPAD_AUTOREPEAT) in ep93xx_keypad_probe()
323 platform_set_drvdata(pdev, keypad); in ep93xx_keypad_probe()
325 err = request_irq(keypad->irq, ep93xx_keypad_irq_handler, in ep93xx_keypad_probe()
326 0, pdev->name, keypad); in ep93xx_keypad_probe()
339 free_irq(keypad->irq, pdev); in ep93xx_keypad_probe()
344 clk_put(keypad->clk); in ep93xx_keypad_probe()
348 iounmap(keypad->mmio_base); in ep93xx_keypad_probe()
352 kfree(keypad); in ep93xx_keypad_probe()
358 struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); in ep93xx_keypad_remove() local
361 free_irq(keypad->irq, pdev); in ep93xx_keypad_remove()
365 if (keypad->enabled) in ep93xx_keypad_remove()
366 clk_disable(keypad->clk); in ep93xx_keypad_remove()
367 clk_put(keypad->clk); in ep93xx_keypad_remove()
369 input_unregister_device(keypad->input_dev); in ep93xx_keypad_remove()
373 iounmap(keypad->mmio_base); in ep93xx_keypad_remove()
378 kfree(keypad); in ep93xx_keypad_remove()