Lines Matching refs:serio
3 * GPIO based serio bus driver for bit banging the PS/2 protocol
11 #include <linux/serio.h>
49 struct serio *serio;
64 static int ps2_gpio_open(struct serio *serio)
66 struct ps2_gpio_data *drvdata = serio->port_data;
72 static void ps2_gpio_close(struct serio *serio)
74 struct ps2_gpio_data *drvdata = serio->port_data;
80 static int __ps2_gpio_write(struct serio *serio, unsigned char val)
82 struct ps2_gpio_data *drvdata = serio->port_data;
95 static int ps2_gpio_write(struct serio *serio, unsigned char val)
97 struct ps2_gpio_data *drvdata = serio->port_data;
102 __ps2_gpio_write(serio, val);
108 __ps2_gpio_write(serio, val);
198 serio_interrupt(drvdata->serio, byte, rxflags);
221 __ps2_gpio_write(drvdata->serio, PS2_CMD_RESEND);
308 __ps2_gpio_write(drvdata->serio, drvdata->tx_byte);
348 struct serio *serio;
353 serio = kzalloc(sizeof(struct serio), GFP_KERNEL);
354 if (!drvdata || !serio) {
384 /* Keep irq disabled until serio->open is called. */
387 serio->id.type = SERIO_8042;
388 serio->open = ps2_gpio_open;
389 serio->close = ps2_gpio_close;
393 serio->write = drvdata->write_enable ? ps2_gpio_write : NULL;
394 serio->port_data = drvdata;
395 serio->dev.parent = dev;
396 strlcpy(serio->name, dev_name(dev), sizeof(serio->name));
397 strlcpy(serio->phys, dev_name(dev), sizeof(serio->phys));
399 drvdata->serio = serio;
412 serio_register_port(serio);
418 kfree(serio);
426 serio_unregister_port(drvdata->serio);