Lines Matching full:serio
3 * Raw serio device providing access to a raw byte stream from underlying
4 * serio port. Closely emulates behavior of pre-2.6 /dev/psaux device
14 #include <linux/serio.h>
21 #define DRIVER_DESC "Raw serio driver"
34 struct serio *serio; member
96 scoped_guard(serio_pause_rx, serio_raw->serio) in serio_raw_open()
110 put_device(&serio_raw->serio->dev); in serio_raw_free()
119 scoped_guard(serio_pause_rx, serio_raw->serio) in serio_raw_release()
131 guard(serio_pause_rx)(serio_raw->serio); in serio_raw_fetch_byte()
202 if (serio_write(serio_raw->serio, c)) { in serio_raw_write()
244 * Interface with serio port *
247 static irqreturn_t serio_raw_interrupt(struct serio *serio, unsigned char data, in serio_raw_interrupt() argument
250 struct serio_raw *serio_raw = serio_get_drvdata(serio); in serio_raw_interrupt()
254 /* we are holding serio->lock here so we are protected */ in serio_raw_interrupt()
267 static int serio_raw_connect(struct serio *serio, struct serio_driver *drv) in serio_raw_connect() argument
275 dev_dbg(&serio->dev, "can't allocate memory for a device\n"); in serio_raw_connect()
285 serio_raw->serio = serio; in serio_raw_connect()
286 get_device(&serio->dev); in serio_raw_connect()
288 serio_set_drvdata(serio, serio_raw); in serio_raw_connect()
290 err = serio_open(serio, drv); in serio_raw_connect()
303 serio_raw->dev.parent = &serio->dev; in serio_raw_connect()
313 dev_err(&serio->dev, in serio_raw_connect()
315 serio->phys); in serio_raw_connect()
319 dev_info(&serio->dev, "raw access enabled on %s (%s, minor %d)\n", in serio_raw_connect()
320 serio->phys, serio_raw->name, serio_raw->dev.minor); in serio_raw_connect()
326 serio_close(serio); in serio_raw_connect()
328 serio_set_drvdata(serio, NULL); in serio_raw_connect()
333 static int serio_raw_reconnect(struct serio *serio) in serio_raw_reconnect() argument
335 struct serio_raw *serio_raw = serio_get_drvdata(serio); in serio_raw_reconnect()
336 struct serio_driver *drv = serio->drv; in serio_raw_reconnect()
339 dev_dbg(&serio->dev, in serio_raw_reconnect()
340 "reconnect request, but serio is disconnected, ignoring...\n"); in serio_raw_reconnect()
359 scoped_guard(serio_pause_rx, serio_raw->serio) { in serio_raw_hangup()
368 static void serio_raw_disconnect(struct serio *serio) in serio_raw_disconnect() argument
370 struct serio_raw *serio_raw = serio_get_drvdata(serio); in serio_raw_disconnect()
381 serio_close(serio); in serio_raw_disconnect()
384 serio_set_drvdata(serio, NULL); in serio_raw_disconnect()
403 MODULE_DEVICE_TABLE(serio, serio_raw_serio_ids);