adbhid
static struct adbhid *adbhid[16];
if (!adbhid[id]) {
struct adbhid *ahid = adbhid[id];
key = adbhid[id]->keycode[keycode];
input_report_key(adbhid[id]->input, key, !up_flag);
input_sync(adbhid[id]->input);
if (!adbhid[id]) {
switch (adbhid[id]->mouse_kind)
input_report_key(adbhid[id]->input, BTN_LEFT, !((data[1] >> 7) & 1));
input_report_key(adbhid[id]->input, BTN_MIDDLE, !((data[2] >> 7) & 1));
if (nb >= 4 && adbhid[id]->mouse_kind != ADBMOUSE_TRACKPAD)
input_report_key(adbhid[id]->input, BTN_RIGHT, !((data[3] >> 7) & 1));
input_report_rel(adbhid[id]->input, REL_X,
input_report_rel(adbhid[id]->input, REL_Y,
input_sync(adbhid[id]->input);
if (!adbhid[id]) {
switch (adbhid[id]->original_handler_id) {
input_report_key(adbhid[id]->input, KEY_SOUND, down);
input_report_key(adbhid[id]->input, KEY_MUTE, down);
input_report_key(adbhid[id]->input, KEY_VOLUMEDOWN, down);
input_report_key(adbhid[id]->input, KEY_VOLUMEUP, down);
input_report_key(adbhid[id]->input, KEY_MUTE, down);
input_report_key(adbhid[id]->input, KEY_VOLUMEDOWN, down);
input_report_key(adbhid[id]->input, KEY_VOLUMEUP, down);
input_report_key(adbhid[id]->input, KEY_EJECTCD, down);
input_report_key(adbhid[id]->input, KEY_BRIGHTNESSDOWN, down);
input_report_key(adbhid[id]->input, KEY_BRIGHTNESSUP, down);
input_report_key(adbhid[id]->input, KEY_SWITCHVIDEOMODE, down);
input_report_key(adbhid[id]->input, KEY_KBDILLUMTOGGLE, down);
input_report_key(adbhid[id]->input, KEY_KBDILLUMDOWN, down);
input_report_key(adbhid[id]->input, KEY_KBDILLUMUP, down);
input_sync(adbhid[id]->input);
struct adbhid *adbhid = input_get_drvdata(dev);
real_leds(leds, adbhid->id);
struct adbhid *ahid;
ahid = adbhid[i];
if (adbhid[i])
timer_delete_sync(&adbhid[i]->input->timer);
struct adbhid *hid;
if (adbhid[id]) {
adbhid[id] = hid = kzalloc_obj(struct adbhid);
adbhid[id] = NULL;
input_unregister_device(adbhid[id]->input);
kfree(adbhid[id]->keycode);
kfree(adbhid[id]);
adbhid[id] = NULL;
if (adbhid[id]) {
if (adbhid[id]->input->id.product !=
if (adbhid[i] && !(exist&(1<<i)))