Lines Matching defs:psm
64 static void ps2mult_select_port(struct ps2mult *psm, struct ps2mult_port *port)
66 struct serio *mx_serio = psm->mx_serio;
69 psm->out_port = port;
76 struct ps2mult *psm = serio_get_drvdata(mx_port);
81 spin_lock_irqsave(&psm->lock, flags);
83 if (psm->out_port != port)
84 ps2mult_select_port(psm, port);
96 spin_unlock_irqrestore(&psm->lock, flags);
103 struct ps2mult *psm = serio_get_drvdata(serio->parent);
107 spin_lock_irqsave(&psm->lock, flags);
109 spin_unlock_irqrestore(&psm->lock, flags);
116 struct ps2mult *psm = serio_get_drvdata(serio->parent);
120 spin_lock_irqsave(&psm->lock, flags);
122 spin_unlock_irqrestore(&psm->lock, flags);
125 static int ps2mult_create_port(struct ps2mult *psm, int i)
127 struct serio *mx_serio = psm->mx_serio;
141 serio->parent = psm->mx_serio;
142 serio->port_data = &psm->ports[i];
144 psm->ports[i].serio = serio;
149 static void ps2mult_reset(struct ps2mult *psm)
153 spin_lock_irqsave(&psm->lock, flags);
155 serio_write(psm->mx_serio, PS2MULT_SESSION_END);
156 serio_write(psm->mx_serio, PS2MULT_SESSION_START);
158 ps2mult_select_port(psm, &psm->ports[PS2MULT_KBD_PORT]);
160 spin_unlock_irqrestore(&psm->lock, flags);
165 struct ps2mult *psm;
172 psm = kzalloc(sizeof(*psm), GFP_KERNEL);
173 if (!psm)
176 spin_lock_init(&psm->lock);
177 psm->mx_serio = serio;
180 psm->ports[i].sel = ps2mult_controls[i];
181 error = ps2mult_create_port(psm, i);
186 psm->in_port = psm->out_port = &psm->ports[PS2MULT_KBD_PORT];
188 serio_set_drvdata(serio, psm);
193 ps2mult_reset(psm);
196 struct serio *s = psm->ports[i].serio;
206 kfree(psm->ports[i].serio);
207 kfree(psm);
213 struct ps2mult *psm = serio_get_drvdata(serio);
218 kfree(psm);
225 struct ps2mult *psm = serio_get_drvdata(serio);
227 ps2mult_reset(psm);
235 struct ps2mult *psm = serio_get_drvdata(serio);
241 spin_lock_irqsave(&psm->lock, flags);
243 if (psm->escape) {
244 psm->escape = false;
245 in_port = psm->in_port;
254 psm->escape = true;
259 psm->in_port = psm->out_port;
272 psm->in_port = &psm->ports[PS2MULT_KBD_PORT];
277 psm->in_port = &psm->ports[PS2MULT_MOUSE_PORT];
281 in_port = psm->in_port;
288 spin_unlock_irqrestore(&psm->lock, flags);