• Home
  • Raw
  • Download

Lines Matching refs:kbd

89 static void hil_kbd_process_record(struct hil_kbd *kbd)  in hil_kbd_process_record()  argument
91 struct input_dev *dev = kbd->dev; in hil_kbd_process_record()
92 hil_packet *data = kbd->data; in hil_kbd_process_record()
96 idx = kbd->idx4/4; in hil_kbd_process_record()
110 kbd->idd[i] = kbd->data[i] & HIL_PKT_DATA_MASK; in hil_kbd_process_record()
112 kbd->idd[i] = 0; in hil_kbd_process_record()
117 kbd->rsc[i] = kbd->data[i] & HIL_PKT_DATA_MASK; in hil_kbd_process_record()
119 kbd->rsc[i] = 0; in hil_kbd_process_record()
124 kbd->exd[i] = kbd->data[i] & HIL_PKT_DATA_MASK; in hil_kbd_process_record()
126 kbd->exd[i] = 0; in hil_kbd_process_record()
131 kbd->rnm[i] = kbd->data[i] & HIL_PKT_DATA_MASK; in hil_kbd_process_record()
133 kbd->rnm[i] = '\0'; in hil_kbd_process_record()
148 switch (kbd->data[0] & HIL_POL_CHARTYPE_MASK) { in hil_kbd_process_record()
154 input_report_key(dev, kbd->data[cnt++] & 0x7f, 1); in hil_kbd_process_record()
161 input_report_key(dev, kbd->data[cnt++], 1); in hil_kbd_process_record()
168 key = kbd->data[cnt++]; in hil_kbd_process_record()
181 key = kbd->data[cnt++]; in hil_kbd_process_record()
194 key = kbd->data[cnt++]; in hil_kbd_process_record()
204 kbd->idx4 = 0; in hil_kbd_process_record()
205 up(&kbd->sem); in hil_kbd_process_record()
208 static void hil_kbd_process_err(struct hil_kbd *kbd) in hil_kbd_process_err() argument
211 kbd->idx4 = 0; in hil_kbd_process_err()
212 up(&kbd->sem); in hil_kbd_process_err()
218 struct hil_kbd *kbd; in hil_kbd_interrupt() local
222 kbd = serio_get_drvdata(serio); in hil_kbd_interrupt()
223 BUG_ON(kbd == NULL); in hil_kbd_interrupt()
225 if (kbd->idx4 >= (HIL_KBD_MAX_LENGTH * sizeof(hil_packet))) { in hil_kbd_interrupt()
226 hil_kbd_process_err(kbd); in hil_kbd_interrupt()
229 idx = kbd->idx4/4; in hil_kbd_interrupt()
230 if (!(kbd->idx4 % 4)) in hil_kbd_interrupt()
231 kbd->data[idx] = 0; in hil_kbd_interrupt()
232 packet = kbd->data[idx]; in hil_kbd_interrupt()
233 packet |= ((hil_packet)data) << ((3 - (kbd->idx4 % 4)) * 8); in hil_kbd_interrupt()
234 kbd->data[idx] = packet; in hil_kbd_interrupt()
237 if ((++(kbd->idx4)) % 4) in hil_kbd_interrupt()
240 hil_kbd_process_err(kbd); in hil_kbd_interrupt()
244 hil_kbd_process_record(kbd); in hil_kbd_interrupt()
250 struct hil_kbd *kbd; in hil_kbd_disconnect() local
252 kbd = serio_get_drvdata(serio); in hil_kbd_disconnect()
253 BUG_ON(kbd == NULL); in hil_kbd_disconnect()
256 input_unregister_device(kbd->dev); in hil_kbd_disconnect()
257 kfree(kbd); in hil_kbd_disconnect()
262 struct hil_kbd *kbd; in hil_kbd_connect() local
266 kbd = kzalloc(sizeof(*kbd), GFP_KERNEL); in hil_kbd_connect()
267 if (!kbd) in hil_kbd_connect()
270 kbd->dev = input_allocate_device(); in hil_kbd_connect()
271 if (!kbd->dev) in hil_kbd_connect()
277 serio_set_drvdata(serio, kbd); in hil_kbd_connect()
278 kbd->serio = serio; in hil_kbd_connect()
280 init_MUTEX_LOCKED(&kbd->sem); in hil_kbd_connect()
287 down(&kbd->sem); in hil_kbd_connect()
293 down(&kbd->sem); in hil_kbd_connect()
299 down(&kbd->sem); in hil_kbd_connect()
305 down(&kbd->sem); in hil_kbd_connect()
307 up(&kbd->sem); in hil_kbd_connect()
309 did = kbd->idd[0]; in hil_kbd_connect()
310 idd = kbd->idd + 1; in hil_kbd_connect()
328 kbd->dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP); in hil_kbd_connect()
329 kbd->dev->ledbit[0] = BIT_MASK(LED_NUML) | BIT_MASK(LED_CAPSL) | in hil_kbd_connect()
331 kbd->dev->keycodemax = HIL_KEYCODES_SET1_TBLSIZE; in hil_kbd_connect()
332 kbd->dev->keycodesize = sizeof(hil_kbd_set1[0]); in hil_kbd_connect()
333 kbd->dev->keycode = hil_kbd_set1; in hil_kbd_connect()
334 kbd->dev->name = strlen(kbd->rnm) ? kbd->rnm : HIL_GENERIC_NAME; in hil_kbd_connect()
335 kbd->dev->phys = "hpkbd/input0"; /* XXX */ in hil_kbd_connect()
337 kbd->dev->id.bustype = BUS_HIL; in hil_kbd_connect()
338 kbd->dev->id.vendor = PCI_VENDOR_ID_HP; in hil_kbd_connect()
339 kbd->dev->id.product = 0x0001; /* TODO: get from kbd->rsc */ in hil_kbd_connect()
340 kbd->dev->id.version = 0x0100; /* TODO: get from kbd->rsc */ in hil_kbd_connect()
341 kbd->dev->dev.parent = &serio->dev; in hil_kbd_connect()
344 set_bit(hil_kbd_set1[i], kbd->dev->keybit); in hil_kbd_connect()
345 set_bit(hil_kbd_set3[i], kbd->dev->keybit); in hil_kbd_connect()
347 clear_bit(0, kbd->dev->keybit); in hil_kbd_connect()
349 input_register_device(kbd->dev); in hil_kbd_connect()
351 kbd->dev->name, did); in hil_kbd_connect()
357 down(&kbd->sem); in hil_kbd_connect()
358 up(&kbd->sem); in hil_kbd_connect()
365 input_free_device(kbd->dev); in hil_kbd_connect()
367 kfree(kbd); in hil_kbd_connect()