tmdc
struct tmdc *tmdc = gameport_get_drvdata(gameport);
tmdc->reads++;
if ((r = tmdc_read_packet(tmdc->gameport, data)) != tmdc->exists)
if (r & (1 << i) & tmdc->exists) {
if (tmdc_parse_packet(tmdc->port[i], data[i]))
tmdc->bads += bad;
struct tmdc *tmdc = input_get_drvdata(dev);
gameport_start_polling(tmdc->gameport);
struct tmdc *tmdc = input_get_drvdata(dev);
gameport_stop_polling(tmdc->gameport);
static int tmdc_setup_port(struct tmdc *tmdc, int idx, unsigned char *data)
tmdc->port[idx] = port = kzalloc_obj(struct tmdc_port);
snprintf(port->phys, sizeof(port->phys), "%s/input%d", tmdc->gameport->phys, i);
input_dev->dev.parent = &tmdc->gameport->dev;
input_set_drvdata(input_dev, tmdc);
struct tmdc *tmdc;
tmdc = kzalloc_obj(*tmdc);
if (!tmdc)
tmdc->gameport = gameport;
gameport_set_drvdata(gameport, tmdc);
if (!(tmdc->exists = tmdc_read_packet(gameport, data))) {
if (tmdc->exists & (1 << i)) {
err = tmdc_setup_port(tmdc, i, data[i]);
if (tmdc->port[i]) {
input_unregister_device(tmdc->port[i]->dev);
kfree(tmdc->port[i]);
kfree(tmdc);
struct tmdc *tmdc = gameport_get_drvdata(gameport);
if (tmdc->port[i]) {
input_unregister_device(tmdc->port[i]->dev);
kfree(tmdc->port[i]);
kfree(tmdc);