omap_kp
struct omap_kp *omap_kp = dev_get_drvdata(dev);
enable_irq(omap_kp->irq);
disable_irq(omap_kp->irq);
ATTRIBUTE_GROUPS(omap_kp);
struct omap_kp *omap_kp;
omap_kp = kzalloc_flex(*omap_kp, keymap, keycodemax);
if (!omap_kp || !input_dev) {
kfree(omap_kp);
platform_set_drvdata(pdev, omap_kp);
omap_kp->input = input_dev;
omap_kp->delay = pdata->delay;
omap_kp->rows = pdata->rows;
omap_kp->cols = pdata->cols;
timer_setup(&omap_kp->timer, omap_kp_timer, 0);
kp_tasklet.data = (unsigned long) omap_kp;
omap_kp->keymap, input_dev);
ret = input_register_device(omap_kp->input);
omap_kp_scan_keypad(omap_kp, keypad_state);
omap_kp->irq = platform_get_irq(pdev, 0);
if (omap_kp->irq >= 0) {
if (request_irq(omap_kp->irq, omap_kp_interrupt, 0,
"omap-keypad", omap_kp) < 0)
input_unregister_device(omap_kp->input);
kfree(omap_kp);
struct omap_kp *omap_kp = platform_get_drvdata(pdev);
free_irq(omap_kp->irq, omap_kp);
timer_shutdown_sync(&omap_kp->timer);
input_unregister_device(omap_kp->input);
kfree(omap_kp);
static void omap_kp_scan_keypad(struct omap_kp *omap_kp, unsigned char *state)
for (col = 0; col < omap_kp->cols; col++) {
udelay(omap_kp->delay);
struct omap_kp *omap_kp_data = (struct omap_kp *) data;