Lines Matching refs:keypad

115  * struct stmpe_keypad - STMPE keypad state container
140 static int stmpe_keypad_read_data(struct stmpe_keypad *keypad, u8 *data)
142 const struct stmpe_keypad_variant *variant = keypad->variant;
143 struct stmpe *stmpe = keypad->stmpe;
164 struct stmpe_keypad *keypad = dev;
165 struct input_dev *input = keypad->input;
166 const struct stmpe_keypad_variant *variant = keypad->variant;
171 ret = stmpe_keypad_read_data(keypad, fifo);
187 input_report_key(input, keypad->keymap[code], !up);
194 static int stmpe_keypad_altfunc_init(struct stmpe_keypad *keypad)
196 const struct stmpe_keypad_variant *variant = keypad->variant;
199 struct stmpe *stmpe = keypad->stmpe;
207 * Figure out which pins need to be set to the keypad alternate
211 * for the keypad.
213 * keypad->{cols,rows} are a bitmask of which pins (of the ones useable
214 * for the keypad) are used on the board.
220 if (keypad->cols & (1 << i)) {
231 if (keypad->rows & (1 << i))
242 * On STMPE24xx, set pin bias to pull-up on all keypad input
264 static int stmpe_keypad_chip_init(struct stmpe_keypad *keypad)
266 const struct stmpe_keypad_variant *variant = keypad->variant;
267 struct stmpe *stmpe = keypad->stmpe;
270 if (keypad->debounce_ms > STMPE_KEYPAD_MAX_DEBOUNCE)
273 if (keypad->scan_count > STMPE_KEYPAD_MAX_SCAN_COUNT)
280 ret = stmpe_keypad_altfunc_init(keypad);
284 ret = stmpe_reg_write(stmpe, STMPE_KPC_COL, keypad->cols);
288 ret = stmpe_reg_write(stmpe, STMPE_KPC_ROW_LSB, keypad->rows);
295 keypad->rows >> 8);
302 keypad->scan_count << 4);
310 (keypad->debounce_ms << 1));
313 static void stmpe_keypad_fill_used_pins(struct stmpe_keypad *keypad,
322 if (keypad->keymap[code] != KEY_RESERVED) {
323 keypad->rows |= 1 << row;
324 keypad->cols |= 1 << col;
334 struct stmpe_keypad *keypad;
345 keypad = devm_kzalloc(&pdev->dev, sizeof(struct stmpe_keypad),
347 if (!keypad)
350 keypad->stmpe = stmpe;
351 keypad->variant = &stmpe_keypad_variants[stmpe->partnum];
353 of_property_read_u32(np, "debounce-interval", &keypad->debounce_ms);
354 of_property_read_u32(np, "st,scan-count", &keypad->scan_count);
355 keypad->no_autorepeat = of_property_read_bool(np, "st,no-autorepeat");
361 input->name = "STMPE keypad";
370 keypad->keymap, input);
375 if (!keypad->no_autorepeat)
378 stmpe_keypad_fill_used_pins(keypad, rows, cols);
380 keypad->input = input;
382 error = stmpe_keypad_chip_init(keypad);
388 IRQF_ONESHOT, "stmpe-keypad", keypad);
401 platform_set_drvdata(pdev, keypad);
408 struct stmpe_keypad *keypad = platform_get_drvdata(pdev);
410 stmpe_disable(keypad->stmpe, STMPE_BLOCK_KEYPAD);
416 .driver.name = "stmpe-keypad",
424 MODULE_DESCRIPTION("STMPExxxx keypad driver");