Lines Matching refs:keypad

73 	struct ht16k33_keypad keypad;
251 * This gets the keys from keypad and reports it to input subsystem.
254 static bool ht16k33_keypad_scan(struct ht16k33_keypad *keypad)
256 const unsigned short *keycodes = keypad->dev->keycode;
264 rc = i2c_smbus_read_i2c_block_data(keypad->client, 0x40,
267 dev_err(&keypad->client->dev,
272 for (col = 0; col < keypad->cols; col++) {
276 bits_changed = keypad->last_key_state[col] ^ new_state[col];
279 code = MATRIX_SCAN_CODE(row, col, keypad->row_shift);
280 input_event(keypad->dev, EV_MSC, MSC_SCAN, code);
281 input_report_key(keypad->dev, keycodes[code],
285 input_sync(keypad->dev);
286 memcpy(keypad->last_key_state, new_state, sizeof(u16) * keypad->cols);
293 struct ht16k33_keypad *keypad = dev;
296 wait_event_timeout(keypad->wait, keypad->stopped,
297 msecs_to_jiffies(keypad->debounce_ms));
298 if (keypad->stopped)
300 } while (ht16k33_keypad_scan(keypad));
307 struct ht16k33_keypad *keypad = input_get_drvdata(dev);
309 keypad->stopped = false;
311 enable_irq(keypad->client->irq);
318 struct ht16k33_keypad *keypad = input_get_drvdata(dev);
320 keypad->stopped = true;
322 wake_up(&keypad->wait);
323 disable_irq(keypad->client->irq);
327 struct ht16k33_keypad *keypad)
334 keypad->client = client;
335 init_waitqueue_head(&keypad->wait);
337 keypad->dev = devm_input_allocate_device(&client->dev);
338 if (!keypad->dev)
341 input_set_drvdata(keypad->dev, keypad);
343 keypad->dev->name = DRIVER_NAME"-keypad";
344 keypad->dev->id.bustype = BUS_I2C;
345 keypad->dev->open = ht16k33_keypad_start;
346 keypad->dev->close = ht16k33_keypad_stop;
349 __set_bit(EV_REP, keypad->dev->evbit);
352 &keypad->debounce_ms);
368 keypad->rows = rows;
369 keypad->cols = cols;
370 keypad->row_shift = get_count_order(cols);
373 keypad->dev);
382 DRIVER_NAME, keypad);
389 ht16k33_keypad_stop(keypad->dev);
391 err = input_register_device(keypad->dev);
499 err = ht16k33_keypad_probe(client, &priv->keypad);