Lines Matching refs:keypad

116  * struct stmpe_keypad - STMPE keypad state container
141 static int stmpe_keypad_read_data(struct stmpe_keypad *keypad, u8 *data)
143 const struct stmpe_keypad_variant *variant = keypad->variant;
144 struct stmpe *stmpe = keypad->stmpe;
165 struct stmpe_keypad *keypad = dev;
166 struct input_dev *input = keypad->input;
167 const struct stmpe_keypad_variant *variant = keypad->variant;
172 ret = stmpe_keypad_read_data(keypad, fifo);
188 input_report_key(input, keypad->keymap[code], !up);
195 static int stmpe_keypad_altfunc_init(struct stmpe_keypad *keypad)
197 const struct stmpe_keypad_variant *variant = keypad->variant;
200 struct stmpe *stmpe = keypad->stmpe;
208 * Figure out which pins need to be set to the keypad alternate
212 * for the keypad.
214 * keypad->{cols,rows} are a bitmask of which pins (of the ones useable
215 * for the keypad) are used on the board.
221 if (keypad->cols & (1 << i)) {
232 if (keypad->rows & (1 << i))
243 * On STMPE24xx, set pin bias to pull-up on all keypad input
265 static int stmpe_keypad_chip_init(struct stmpe_keypad *keypad)
267 const struct stmpe_keypad_variant *variant = keypad->variant;
268 struct stmpe *stmpe = keypad->stmpe;
271 if (keypad->debounce_ms > STMPE_KEYPAD_MAX_DEBOUNCE)
274 if (keypad->scan_count > STMPE_KEYPAD_MAX_SCAN_COUNT)
281 ret = stmpe_keypad_altfunc_init(keypad);
285 ret = stmpe_reg_write(stmpe, STMPE_KPC_COL, keypad->cols);
289 ret = stmpe_reg_write(stmpe, STMPE_KPC_ROW_LSB, keypad->rows);
296 keypad->rows >> 8);
303 keypad->scan_count << 4);
311 (keypad->debounce_ms << 1));
314 static void stmpe_keypad_fill_used_pins(struct stmpe_keypad *keypad,
323 if (keypad->keymap[code] != KEY_RESERVED) {
324 keypad->rows |= 1 << row;
325 keypad->cols |= 1 << col;
335 struct stmpe_keypad *keypad;
346 keypad = devm_kzalloc(&pdev->dev, sizeof(struct stmpe_keypad),
348 if (!keypad)
351 keypad->stmpe = stmpe;
352 keypad->variant = &stmpe_keypad_variants[stmpe->partnum];
354 of_property_read_u32(np, "debounce-interval", &keypad->debounce_ms);
355 of_property_read_u32(np, "st,scan-count", &keypad->scan_count);
356 keypad->no_autorepeat = of_property_read_bool(np, "st,no-autorepeat");
362 input->name = "STMPE keypad";
371 keypad->keymap, input);
376 if (!keypad->no_autorepeat)
379 stmpe_keypad_fill_used_pins(keypad, rows, cols);
381 keypad->input = input;
383 error = stmpe_keypad_chip_init(keypad);
389 IRQF_ONESHOT, "stmpe-keypad", keypad);
402 platform_set_drvdata(pdev, keypad);
409 struct stmpe_keypad *keypad = platform_get_drvdata(pdev);
411 stmpe_disable(keypad->stmpe, STMPE_BLOCK_KEYPAD);
417 .driver.name = "stmpe-keypad",
425 MODULE_DESCRIPTION("STMPExxxx keypad driver");