locomokbd
static void locomokbd_scankeyboard(struct locomokbd *locomokbd)
unsigned long membase = locomokbd->base;
guard(spinlock_irqsave)(&locomokbd->lock);
key = locomokbd->keycode[scancode];
input_report_key(locomokbd->input, key, pressed);
locomokbd->suspend_jiffies + HZ))
if (locomokbd->count_cancel++
input_event(locomokbd->input, EV_PWR,
locomokbd->suspend_jiffies = jiffies;
locomokbd->count_cancel = 0;
input_sync(locomokbd->input);
mod_timer(&locomokbd->timer, jiffies + SCAN_INTERVAL);
locomokbd->count_cancel = 0;
struct locomokbd *locomokbd = dev_id;
r = locomo_readl(locomokbd->base + LOCOMO_KIC);
locomo_writel(r & ~0x0100, locomokbd->base + LOCOMO_KIC); /* Ack */
locomokbd_scankeyboard(locomokbd);
struct locomokbd *locomokbd = timer_container_of(locomokbd, t, timer);
locomokbd_scankeyboard(locomokbd);
struct locomokbd *locomokbd = input_get_drvdata(dev);
r = locomo_readl(locomokbd->base + LOCOMO_KIC) | 0x0010;
locomo_writel(r, locomokbd->base + LOCOMO_KIC);
struct locomokbd *locomokbd = input_get_drvdata(dev);
r = locomo_readl(locomokbd->base + LOCOMO_KIC) & ~0x0010;
locomo_writel(r, locomokbd->base + LOCOMO_KIC);
struct locomokbd *locomokbd;
locomokbd = kzalloc_obj(*locomokbd);
if (!locomokbd || !input_dev) {
locomo_set_drvdata(dev, locomokbd);
locomokbd->base = (unsigned long) dev->mapbase;
spin_lock_init(&locomokbd->lock);
timer_setup(&locomokbd->timer, locomokbd_timer_callback, 0);
locomokbd->suspend_jiffies = jiffies;
locomokbd->input = input_dev;
strcpy(locomokbd->phys, "locomokbd/input0");
input_dev->phys = locomokbd->phys;
input_dev->keycode = locomokbd->keycode;
input_set_drvdata(input_dev, locomokbd);
memcpy(locomokbd->keycode, locomokbd_keycode, sizeof(locomokbd->keycode));
set_bit(locomokbd->keycode[i], input_dev->keybit);
err = request_irq(dev->irq[0], locomokbd_interrupt, 0, "locomokbd", locomokbd);
err = input_register_device(locomokbd->input);
free_irq(dev->irq[0], locomokbd);
kfree(locomokbd);
struct locomokbd *locomokbd = locomo_get_drvdata(dev);
free_irq(dev->irq[0], locomokbd);
timer_shutdown_sync(&locomokbd->timer);
input_unregister_device(locomokbd->input);
kfree(locomokbd);