Lines Matching refs:locomokbd

73 struct locomokbd {  struct
127 static void locomokbd_scankeyboard(struct locomokbd *locomokbd) in locomokbd_scankeyboard() argument
132 unsigned long membase = locomokbd->base; in locomokbd_scankeyboard()
134 spin_lock_irqsave(&locomokbd->lock, flags); in locomokbd_scankeyboard()
150 key = locomokbd->keycode[scancode]; in locomokbd_scankeyboard()
152 input_report_key(locomokbd->input, key, pressed); in locomokbd_scankeyboard()
163 locomokbd->suspend_jiffies + HZ)) in locomokbd_scankeyboard()
165 if (locomokbd->count_cancel++ in locomokbd_scankeyboard()
168 input_event(locomokbd->input, EV_PWR, in locomokbd_scankeyboard()
170 locomokbd->suspend_jiffies = jiffies; in locomokbd_scankeyboard()
172 locomokbd->count_cancel = 0; in locomokbd_scankeyboard()
178 input_sync(locomokbd->input); in locomokbd_scankeyboard()
182 mod_timer(&locomokbd->timer, jiffies + SCAN_INTERVAL); in locomokbd_scankeyboard()
184 locomokbd->count_cancel = 0; in locomokbd_scankeyboard()
186 spin_unlock_irqrestore(&locomokbd->lock, flags); in locomokbd_scankeyboard()
194 struct locomokbd *locomokbd = dev_id; in locomokbd_interrupt() local
197 r = locomo_readl(locomokbd->base + LOCOMO_KIC); in locomokbd_interrupt()
201 locomo_writel(r & ~0x0100, locomokbd->base + LOCOMO_KIC); /* Ack */ in locomokbd_interrupt()
206 locomokbd_scankeyboard(locomokbd); in locomokbd_interrupt()
215 struct locomokbd *locomokbd = (struct locomokbd *) data; in locomokbd_timer_callback() local
217 locomokbd_scankeyboard(locomokbd); in locomokbd_timer_callback()
222 struct locomokbd *locomokbd = input_get_drvdata(dev); in locomokbd_open() local
225 r = locomo_readl(locomokbd->base + LOCOMO_KIC) | 0x0010; in locomokbd_open()
226 locomo_writel(r, locomokbd->base + LOCOMO_KIC); in locomokbd_open()
232 struct locomokbd *locomokbd = input_get_drvdata(dev); in locomokbd_close() local
235 r = locomo_readl(locomokbd->base + LOCOMO_KIC) & ~0x0010; in locomokbd_close()
236 locomo_writel(r, locomokbd->base + LOCOMO_KIC); in locomokbd_close()
241 struct locomokbd *locomokbd; in locomokbd_probe() local
245 locomokbd = kzalloc(sizeof(struct locomokbd), GFP_KERNEL); in locomokbd_probe()
247 if (!locomokbd || !input_dev) { in locomokbd_probe()
261 locomo_set_drvdata(dev, locomokbd); in locomokbd_probe()
263 locomokbd->base = (unsigned long) dev->mapbase; in locomokbd_probe()
265 spin_lock_init(&locomokbd->lock); in locomokbd_probe()
267 init_timer(&locomokbd->timer); in locomokbd_probe()
268 locomokbd->timer.function = locomokbd_timer_callback; in locomokbd_probe()
269 locomokbd->timer.data = (unsigned long) locomokbd; in locomokbd_probe()
271 locomokbd->suspend_jiffies = jiffies; in locomokbd_probe()
273 locomokbd->input = input_dev; in locomokbd_probe()
274 strcpy(locomokbd->phys, "locomokbd/input0"); in locomokbd_probe()
277 input_dev->phys = locomokbd->phys; in locomokbd_probe()
288 input_dev->keycode = locomokbd->keycode; in locomokbd_probe()
292 input_set_drvdata(input_dev, locomokbd); in locomokbd_probe()
294 memcpy(locomokbd->keycode, locomokbd_keycode, sizeof(locomokbd->keycode)); in locomokbd_probe()
296 set_bit(locomokbd->keycode[i], input_dev->keybit); in locomokbd_probe()
300 err = request_irq(dev->irq[0], locomokbd_interrupt, 0, "locomokbd", locomokbd); in locomokbd_probe()
306 err = input_register_device(locomokbd->input); in locomokbd_probe()
313 free_irq(dev->irq[0], locomokbd); in locomokbd_probe()
319 kfree(locomokbd); in locomokbd_probe()
326 struct locomokbd *locomokbd = locomo_get_drvdata(dev); in locomokbd_remove() local
328 free_irq(dev->irq[0], locomokbd); in locomokbd_remove()
330 del_timer_sync(&locomokbd->timer); in locomokbd_remove()
332 input_unregister_device(locomokbd->input); in locomokbd_remove()
337 kfree(locomokbd); in locomokbd_remove()