interact
struct interact *interact = gameport_get_drvdata(gameport);
struct input_dev *dev = interact->dev;
interact->reads++;
if (interact_read_packet(interact->gameport, interact->length, data) < interact->length) {
interact->bads++;
data[i] <<= INTERACT_MAX_LENGTH - interact->length;
switch (interact->type) {
struct interact *interact = input_get_drvdata(dev);
gameport_start_polling(interact->gameport);
struct interact *interact = input_get_drvdata(dev);
gameport_stop_polling(interact->gameport);
struct interact *interact;
interact = kzalloc_obj(*interact);
if (!interact || !input_dev) {
interact->gameport = gameport;
interact->dev = input_dev;
gameport_set_drvdata(gameport, interact);
snprintf(interact->phys, sizeof(interact->phys), "%s/input0", gameport->phys);
interact->type = i;
interact->length = interact_type[i].length;
input_dev->phys = interact->phys;
input_set_drvdata(input_dev, interact);
for (i = 0; (t = interact_type[interact->type].abs[i]) >= 0; i++) {
if (i < interact_type[interact->type].b8)
for (i = 0; (t = interact_type[interact->type].btn[i]) >= 0; i++)
err = input_register_device(interact->dev);
kfree(interact);
struct interact *interact = gameport_get_drvdata(gameport);
input_unregister_device(interact->dev);
kfree(interact);