Lines Matching refs:keypad
102 struct ht16k33_keypad keypad;
369 * This gets the keys from keypad and reports it to input subsystem.
372 static bool ht16k33_keypad_scan(struct ht16k33_keypad *keypad)
374 const unsigned short *keycodes = keypad->dev->keycode;
382 rc = i2c_smbus_read_i2c_block_data(keypad->client, 0x40,
385 dev_err(&keypad->client->dev,
390 for (col = 0; col < keypad->cols; col++) {
394 bits_changed = keypad->last_key_state[col] ^ new_state[col];
397 code = MATRIX_SCAN_CODE(row, col, keypad->row_shift);
398 input_event(keypad->dev, EV_MSC, MSC_SCAN, code);
399 input_report_key(keypad->dev, keycodes[code],
403 input_sync(keypad->dev);
404 memcpy(keypad->last_key_state, new_state, sizeof(u16) * keypad->cols);
411 struct ht16k33_keypad *keypad = dev;
414 wait_event_timeout(keypad->wait, keypad->stopped,
415 msecs_to_jiffies(keypad->debounce_ms));
416 if (keypad->stopped)
418 } while (ht16k33_keypad_scan(keypad));
425 struct ht16k33_keypad *keypad = input_get_drvdata(dev);
427 keypad->stopped = false;
429 enable_irq(keypad->client->irq);
436 struct ht16k33_keypad *keypad = input_get_drvdata(dev);
438 keypad->stopped = true;
440 wake_up(&keypad->wait);
441 disable_irq(keypad->client->irq);
517 struct ht16k33_keypad *keypad)
524 keypad->client = client;
525 init_waitqueue_head(&keypad->wait);
527 keypad->dev = devm_input_allocate_device(dev);
528 if (!keypad->dev)
531 input_set_drvdata(keypad->dev, keypad);
533 keypad->dev->name = DRIVER_NAME"-keypad";
534 keypad->dev->id.bustype = BUS_I2C;
535 keypad->dev->open = ht16k33_keypad_start;
536 keypad->dev->close = ht16k33_keypad_stop;
539 __set_bit(EV_REP, keypad->dev->evbit);
542 &keypad->debounce_ms);
558 keypad->rows = rows;
559 keypad->cols = cols;
560 keypad->row_shift = get_count_order(cols);
563 keypad->dev);
572 DRIVER_NAME, keypad);
579 ht16k33_keypad_stop(keypad->dev);
581 return input_register_device(keypad->dev);
757 err = ht16k33_keypad_probe(client, &priv->keypad);