fujitsu
fujitsu = kzalloc_obj(*fujitsu);
if (!fujitsu || !input_dev) {
fujitsu->serio = serio;
fujitsu->dev = input_dev;
scnprintf(fujitsu->phys, sizeof(fujitsu->phys), "%s/input0", serio->phys);
input_dev->phys = fujitsu->phys;
serio_set_drvdata(serio, fujitsu);
err = input_register_device(fujitsu->dev);
kfree(fujitsu);
struct fujitsu *fujitsu = serio_get_drvdata(serio);
struct input_dev *dev = fujitsu->dev;
if (fujitsu->idx == 0) {
fujitsu->idx = 0;
fujitsu->data[fujitsu->idx++] = data;
if (fujitsu->idx == FUJITSU_LENGTH) {
(fujitsu->data[2] << 7) | fujitsu->data[1]);
(fujitsu->data[4] << 7) | fujitsu->data[3]);
(fujitsu->data[0] & 0x03) != 2);
fujitsu->idx = 0;
struct fujitsu *fujitsu = serio_get_drvdata(serio);
input_get_device(fujitsu->dev);
input_unregister_device(fujitsu->dev);
input_put_device(fujitsu->dev);
kfree(fujitsu);
struct fujitsu *fujitsu;
} fujitsu;
return inb(fujitsu.io_base + 2);
return inb(fujitsu.io_base + 6);
outb(addr, fujitsu.io_base);
return inb(fujitsu.io_base + 4);
if (fujitsu.config.quirks & INVERT_DOCK_STATE_BIT)
if ((fujitsu.config.quirks & FORCE_TABLET_MODE_IF_UNDOCK) && (!dock)) {
if (fujitsu.config.quirks & INVERT_TABLET_MODE_BIT)
input_report_switch(fujitsu.idev, SW_DOCK, dock);
input_report_switch(fujitsu.idev, SW_TABLET_MODE, tablet_mode);
input_sync(fujitsu.idev);
idev->keycode = fujitsu.config.keymap;
idev->keycodesize = sizeof(fujitsu.config.keymap[0]);
idev->keycodemax = ARRAY_SIZE(fujitsu.config.keymap);
for (i = 0; i < ARRAY_SIZE(fujitsu.config.keymap); i++)
if (fujitsu.config.keymap[i])
input_set_capability(idev, EV_KEY, fujitsu.config.keymap[i]);
fujitsu.idev = idev;
input_unregister_device(fujitsu.idev);
changed = keymask ^ fujitsu.prev_keymask;
fujitsu.prev_keymask = keymask;
keycode = fujitsu.config.keymap[i];
input_event(fujitsu.idev, EV_MSC, MSC_SCAN, i);
input_report_key(fujitsu.idev, keycode, pressed);
input_sync(fujitsu.idev);
memcpy(fujitsu.config.keymap, dmi->driver_data,
sizeof(fujitsu.config.keymap));
fujitsu.config.quirks |= INVERT_TABLET_MODE_BIT;
fujitsu.config.quirks |= FORCE_TABLET_MODE_IF_UNDOCK;
fujitsu.config.quirks |= INVERT_DOCK_STATE_BIT;
fujitsu.irq = res->data.irq.interrupts[0];
fujitsu.io_base = res->data.io.minimum;
fujitsu.io_length = res->data.io.address_length;
if (fujitsu.irq && fujitsu.io_base)
if (ACPI_FAILURE(status) || !fujitsu.irq || !fujitsu.io_base)
snprintf(fujitsu.phys, sizeof(fujitsu.phys),
acpi_device_name(adev), fujitsu.phys);
if (!request_region(fujitsu.io_base, fujitsu.io_length, MODULENAME)) {
error = request_irq(fujitsu.irq, fujitsu_interrupt,
release_region(fujitsu.io_base, fujitsu.io_length);
free_irq(fujitsu.irq, fujitsu_interrupt);
release_region(fujitsu.io_base, fujitsu.io_length);