Lines Matching full:serio

17 #include <linux/serio.h>
158 struct serio *serio; member
343 static int i8042_kbd_write(struct serio *port, unsigned char c) in i8042_kbd_write()
363 static int i8042_aux_write(struct serio *serio, unsigned char c) in i8042_aux_write() argument
365 struct i8042_port *port = serio->port_data; in i8042_aux_write()
378 static void i8042_port_close(struct serio *serio) in i8042_port_close() argument
384 if (serio == i8042_ports[I8042_AUX_PORT_NO].serio) { in i8042_port_close()
413 * i8042_start() is called by serio core when port is about to finish
417 static int i8042_start(struct serio *serio) in i8042_start() argument
419 struct i8042_port *port = serio->port_data; in i8042_start()
421 device_set_wakeup_capable(&serio->dev, true); in i8042_start()
431 serio == i8042_ports[I8042_KBD_PORT_NO].serio) { in i8042_start()
432 device_set_wakeup_enable(&serio->dev, true); in i8042_start()
442 * i8042_stop() marks serio port as non-existing so i8042_interrupt
444 * The function is called by serio core as part of unregister procedure.
446 static void i8042_stop(struct serio *serio) in i8042_stop() argument
448 struct i8042_port *port = serio->port_data; in i8042_stop()
452 port->serio = NULL; in i8042_stop()
457 * our serio port before we return from this function. in i8042_stop()
472 struct serio *serio) in i8042_filter() argument
486 if (i8042_platform_filter(data, str, serio, i8042_platform_filter_context)) { in i8042_filter()
507 * rest assume that the data came from the same serio last byte
551 * it reads the data from the i8042, determines its destination serio
559 struct serio *serio; in i8042_handle_data() local
585 serio = port->exists ? port->serio : NULL; in i8042_handle_data()
593 filtered = i8042_filter(data, str, serio); in i8042_handle_data()
596 if (likely(serio && !filtered)) in i8042_handle_data()
597 serio_interrupt(serio, data, dfl); in i8042_handle_data()
1208 } else if (i8042_ports[I8042_AUX_PORT_NO].serio) { in i8042_controller_resume()
1212 if (i8042_ports[I8042_KBD_PORT_NO].serio) in i8042_controller_resume()
1232 /* Set up serio interrupts for system wakeup. */ in i8042_pm_suspend()
1234 struct serio *serio = i8042_ports[i].serio; in i8042_pm_suspend() local
1236 if (serio && device_may_wakeup(&serio->dev)) in i8042_pm_suspend()
1257 struct serio *serio = i8042_ports[i].serio; in i8042_pm_resume() local
1259 if (serio && device_may_wakeup(&serio->dev)) in i8042_pm_resume()
1323 struct serio *serio; in i8042_create_kbd_port() local
1326 serio = kzalloc(sizeof(*serio), GFP_KERNEL); in i8042_create_kbd_port()
1327 if (!serio) in i8042_create_kbd_port()
1330 serio->id.type = i8042_direct ? SERIO_8042 : SERIO_8042_XL; in i8042_create_kbd_port()
1331 serio->write = i8042_dumbkbd ? NULL : i8042_kbd_write; in i8042_create_kbd_port()
1332 serio->start = i8042_start; in i8042_create_kbd_port()
1333 serio->stop = i8042_stop; in i8042_create_kbd_port()
1334 serio->close = i8042_port_close; in i8042_create_kbd_port()
1335 serio->ps2_cmd_mutex = &i8042_mutex; in i8042_create_kbd_port()
1336 serio->port_data = port; in i8042_create_kbd_port()
1337 serio->dev.parent = &i8042_platform_device->dev; in i8042_create_kbd_port()
1338 strscpy(serio->name, "i8042 KBD port", sizeof(serio->name)); in i8042_create_kbd_port()
1339 strscpy(serio->phys, I8042_KBD_PHYS_DESC, sizeof(serio->phys)); in i8042_create_kbd_port()
1340 strscpy(serio->firmware_id, i8042_kbd_firmware_id, in i8042_create_kbd_port()
1341 sizeof(serio->firmware_id)); in i8042_create_kbd_port()
1342 set_primary_fwnode(&serio->dev, i8042_kbd_fwnode); in i8042_create_kbd_port()
1344 port->serio = serio; in i8042_create_kbd_port()
1352 struct serio *serio; in i8042_create_aux_port() local
1356 serio = kzalloc(sizeof(*serio), GFP_KERNEL); in i8042_create_aux_port()
1357 if (!serio) in i8042_create_aux_port()
1360 serio->id.type = SERIO_8042; in i8042_create_aux_port()
1361 serio->write = i8042_aux_write; in i8042_create_aux_port()
1362 serio->start = i8042_start; in i8042_create_aux_port()
1363 serio->stop = i8042_stop; in i8042_create_aux_port()
1364 serio->ps2_cmd_mutex = &i8042_mutex; in i8042_create_aux_port()
1365 serio->port_data = port; in i8042_create_aux_port()
1366 serio->dev.parent = &i8042_platform_device->dev; in i8042_create_aux_port()
1368 strscpy(serio->name, "i8042 AUX port", sizeof(serio->name)); in i8042_create_aux_port()
1369 strscpy(serio->phys, I8042_AUX_PHYS_DESC, sizeof(serio->phys)); in i8042_create_aux_port()
1370 strscpy(serio->firmware_id, i8042_aux_firmware_id, in i8042_create_aux_port()
1371 sizeof(serio->firmware_id)); in i8042_create_aux_port()
1372 serio->close = i8042_port_close; in i8042_create_aux_port()
1374 snprintf(serio->name, sizeof(serio->name), "i8042 AUX%d port", idx); in i8042_create_aux_port()
1375 snprintf(serio->phys, sizeof(serio->phys), I8042_MUX_PHYS_DESC, idx + 1); in i8042_create_aux_port()
1376 strscpy(serio->firmware_id, i8042_aux_firmware_id, in i8042_create_aux_port()
1377 sizeof(serio->firmware_id)); in i8042_create_aux_port()
1380 port->serio = serio; in i8042_create_aux_port()
1389 kfree(i8042_ports[I8042_KBD_PORT_NO].serio); in i8042_free_kbd_port()
1390 i8042_ports[I8042_KBD_PORT_NO].serio = NULL; in i8042_free_kbd_port()
1398 kfree(i8042_ports[i].serio); in i8042_free_aux_ports()
1399 i8042_ports[i].serio = NULL; in i8042_free_aux_ports()
1408 struct serio *serio = i8042_ports[i].serio; in i8042_register_ports() local
1410 if (!serio) in i8042_register_ports()
1413 printk(KERN_INFO "serio: %s at %#lx,%#lx irq %d\n", in i8042_register_ports()
1414 serio->name, in i8042_register_ports()
1418 serio_register_port(serio); in i8042_register_ports()
1427 if (i8042_ports[i].serio) { in i8042_unregister_ports()
1428 serio_unregister_port(i8042_ports[i].serio); in i8042_unregister_ports()
1429 i8042_ports[i].serio = NULL; in i8042_unregister_ports()
1517 struct serio *serio = to_serio_port(dev); in i8042_kbd_bind_notifier() local
1518 struct i8042_port *port = serio->port_data; in i8042_kbd_bind_notifier()
1520 if (serio != i8042_ports[I8042_KBD_PORT_NO].serio) in i8042_kbd_bind_notifier()
1567 * Ok, everything is ready, let's register all serio ports in i8042_probe()