linux/include/linux/platform_data/keypad-pxa27x.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __ASM_ARCH_PXA27x_KEYPAD_H
   3#define __ASM_ARCH_PXA27x_KEYPAD_H
   4
   5#include <linux/input.h>
   6#include <linux/input/matrix_keypad.h>
   7
   8#define MAX_MATRIX_KEY_ROWS     (8)
   9#define MAX_MATRIX_KEY_COLS     (8)
  10#define MATRIX_ROW_SHIFT        (3)
  11#define MAX_DIRECT_KEY_NUM      (8)
  12
  13/* pxa3xx keypad platform specific parameters
  14 *
  15 * NOTE:
  16 * 1. direct_key_num indicates the number of keys in the direct keypad
  17 *    _plus_ the number of rotary-encoder sensor inputs,  this can be
  18 *    left as 0 if only rotary encoders are enabled,  the driver will
  19 *    automatically calculate this
  20 *
  21 * 2. direct_key_map is the key code map for the direct keys, if rotary
  22 *    encoder(s) are enabled, direct key 0/1(2/3) will be ignored
  23 *
  24 * 3. rotary can be either interpreted as a relative input event (e.g.
  25 *    REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT)
  26 *
  27 * 4. matrix key and direct key will use the same debounce_interval by
  28 *    default, which should be sufficient in most cases
  29 *
  30 * pxa168 keypad platform specific parameter
  31 *
  32 * NOTE:
  33 * clear_wakeup_event callback is a workaround required to clear the
  34 * keypad interrupt. The keypad wake must be cleared in addition to
  35 * reading the MI/DI bits in the KPC register.
  36 */
  37struct pxa27x_keypad_platform_data {
  38
  39        /* code map for the matrix keys */
  40        const struct matrix_keymap_data *matrix_keymap_data;
  41        unsigned int    matrix_key_rows;
  42        unsigned int    matrix_key_cols;
  43
  44        /* direct keys */
  45        int             direct_key_num;
  46        unsigned int    direct_key_map[MAX_DIRECT_KEY_NUM];
  47        /* the key output may be low active */
  48        int             direct_key_low_active;
  49        /* give board a chance to choose the start direct key */
  50        unsigned int    direct_key_mask;
  51
  52        /* rotary encoders 0 */
  53        int             enable_rotary0;
  54        int             rotary0_rel_code;
  55        int             rotary0_up_key;
  56        int             rotary0_down_key;
  57
  58        /* rotary encoders 1 */
  59        int             enable_rotary1;
  60        int             rotary1_rel_code;
  61        int             rotary1_up_key;
  62        int             rotary1_down_key;
  63
  64        /* key debounce interval */
  65        unsigned int    debounce_interval;
  66
  67        /* clear wakeup event requirement for pxa168 */
  68        void            (*clear_wakeup_event)(void);
  69};
  70
  71extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
  72
  73#endif /* __ASM_ARCH_PXA27x_KEYPAD_H */
  74