Lines Matching refs:serio
12 #include <linux/serio.h>
26 struct serio *serio;
36 struct serio *mx_serio;
62 MODULE_DEVICE_TABLE(serio, ps2mult_serio_ids);
66 struct serio *mx_serio = psm->mx_serio;
73 static int ps2mult_serio_write(struct serio *serio, unsigned char data)
75 struct serio *mx_port = serio->parent;
77 struct ps2mult_port *port = serio->port_data;
88 dev_dbg(&serio->dev,
101 static int ps2mult_serio_start(struct serio *serio)
103 struct ps2mult *psm = serio_get_drvdata(serio->parent);
104 struct ps2mult_port *port = serio->port_data;
114 static void ps2mult_serio_stop(struct serio *serio)
116 struct ps2mult *psm = serio_get_drvdata(serio->parent);
117 struct ps2mult_port *port = serio->port_data;
127 struct serio *mx_serio = psm->mx_serio;
128 struct serio *serio;
130 serio = kzalloc(sizeof(struct serio), GFP_KERNEL);
131 if (!serio)
134 strscpy(serio->name, "TQC PS/2 Multiplexer", sizeof(serio->name));
135 snprintf(serio->phys, sizeof(serio->phys),
137 serio->id.type = SERIO_8042;
138 serio->write = ps2mult_serio_write;
139 serio->start = ps2mult_serio_start;
140 serio->stop = ps2mult_serio_stop;
141 serio->parent = psm->mx_serio;
142 serio->port_data = &psm->ports[i];
144 psm->ports[i].serio = serio;
163 static int ps2mult_connect(struct serio *serio, struct serio_driver *drv)
169 if (!serio->write)
177 psm->mx_serio = serio;
188 serio_set_drvdata(serio, psm);
189 error = serio_open(serio, drv);
196 struct serio *s = psm->ports[i].serio;
198 dev_info(&serio->dev, "%s port at %s\n", s->name, serio->phys);
206 kfree(psm->ports[i].serio);
211 static void ps2mult_disconnect(struct serio *serio)
213 struct ps2mult *psm = serio_get_drvdata(serio);
215 /* Note that serio core already take care of children ports */
216 serio_write(serio, PS2MULT_SESSION_END);
217 serio_close(serio);
220 serio_set_drvdata(serio, NULL);
223 static int ps2mult_reconnect(struct serio *serio)
225 struct ps2mult *psm = serio_get_drvdata(serio);
232 static irqreturn_t ps2mult_interrupt(struct serio *serio,
235 struct ps2mult *psm = serio_get_drvdata(serio);
239 dev_dbg(&serio->dev, "Received %02x flags %02x\n", data, dfl);
247 serio_interrupt(in_port->serio, data, dfl);
253 dev_dbg(&serio->dev, "ESCAPE\n");
258 dev_dbg(&serio->dev, "BSYNC\n");
263 dev_dbg(&serio->dev, "SS\n");
267 dev_dbg(&serio->dev, "SE\n");
271 dev_dbg(&serio->dev, "KB\n");
276 dev_dbg(&serio->dev, "MS\n");
283 serio_interrupt(in_port->serio, data, dfl);