Lines Matching refs:q40kbd
53 struct q40kbd { struct
60 struct q40kbd *q40kbd = dev_id; in q40kbd_interrupt() local
63 spin_lock_irqsave(&q40kbd->lock, flags); in q40kbd_interrupt()
66 serio_interrupt(q40kbd->port, master_inb(KEYCODE_REG), 0); in q40kbd_interrupt()
70 spin_unlock_irqrestore(&q40kbd->lock, flags); in q40kbd_interrupt()
79 static void q40kbd_flush(struct q40kbd *q40kbd) in q40kbd_flush() argument
84 spin_lock_irqsave(&q40kbd->lock, flags); in q40kbd_flush()
89 spin_unlock_irqrestore(&q40kbd->lock, flags); in q40kbd_flush()
105 struct q40kbd *q40kbd = port->port_data; in q40kbd_open() local
107 q40kbd_flush(q40kbd); in q40kbd_open()
118 struct q40kbd *q40kbd = port->port_data; in q40kbd_close() local
121 q40kbd_flush(q40kbd); in q40kbd_close()
126 struct q40kbd *q40kbd; in q40kbd_probe() local
130 q40kbd = kzalloc(sizeof(struct q40kbd), GFP_KERNEL); in q40kbd_probe()
132 if (!q40kbd || !port) { in q40kbd_probe()
137 q40kbd->port = port; in q40kbd_probe()
138 spin_lock_init(&q40kbd->lock); in q40kbd_probe()
143 port->port_data = q40kbd; in q40kbd_probe()
151 DRV_NAME, q40kbd); in q40kbd_probe()
157 serio_register_port(q40kbd->port); in q40kbd_probe()
159 platform_set_drvdata(pdev, q40kbd); in q40kbd_probe()
166 kfree(q40kbd); in q40kbd_probe()
172 struct q40kbd *q40kbd = platform_get_drvdata(pdev); in q40kbd_remove() local
179 serio_unregister_port(q40kbd->port); in q40kbd_remove()
180 free_irq(Q40_IRQ_KEYBOARD, q40kbd); in q40kbd_remove()
181 kfree(q40kbd); in q40kbd_remove()