appleir
static void key_up(struct hid_device *hid, struct appleir *appleir, int key)
input_report_key(appleir->input_dev, key, 0);
input_sync(appleir->input_dev);
static void key_down(struct hid_device *hid, struct appleir *appleir, int key)
input_report_key(appleir->input_dev, key, 1);
input_sync(appleir->input_dev);
static void battery_flat(struct appleir *appleir)
dev_err(&appleir->input_dev->dev, "possible flat battery?\n");
struct appleir *appleir = timer_container_of(appleir, t, key_up_timer);
struct hid_device *hid = appleir->hid;
spin_lock_irqsave(&appleir->lock, flags);
if (appleir->current_key) {
key_up(hid, appleir, appleir->current_key);
appleir->current_key = 0;
spin_unlock_irqrestore(&appleir->lock, flags);
struct appleir *appleir = hid_get_drvdata(hid);
spin_lock_irqsave(&appleir->lock, flags);
if (appleir->current_key)
key_up(hid, appleir, appleir->current_key);
if (appleir->prev_key_idx > 0)
index = appleir->prev_key_idx;
appleir->current_key = appleir->keymap[index];
key_down(hid, appleir, appleir->current_key);
mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
appleir->prev_key_idx = 0;
appleir->prev_key_idx = -index;
spin_unlock_irqrestore(&appleir->lock, flags);
appleir->prev_key_idx = 0;
key_down(hid, appleir, appleir->current_key);
mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
battery_flat(appleir);
struct appleir *appleir = hid_get_drvdata(hid);
appleir->input_dev = input_dev;
input_dev->keycode = appleir->keymap;
input_dev->keycodemax = ARRAY_SIZE(appleir->keymap);
memcpy(appleir->keymap, appleir_key_table, sizeof(appleir->keymap));
set_bit(appleir->keymap[i], input_dev->keybit);
struct appleir *appleir;
appleir = devm_kzalloc(&hid->dev, sizeof(struct appleir), GFP_KERNEL);
if (!appleir)
appleir->hid = hid;
spin_lock_init(&appleir->lock);
timer_setup(&appleir->key_up_timer, key_up_tick, 0);
hid_set_drvdata(hid, appleir);
devm_kfree(&hid->dev, appleir);
struct appleir *appleir = hid_get_drvdata(hid);
timer_delete_sync(&appleir->key_up_timer);