blob: fd1fe3cdcbd054ba6a84f874cefee25f0b205b4e [file] [log] [blame]
/*
* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef __include_tegra_kbc_h__
#define __include_tegra_kbc_h__
#include <common.h>
enum KEYS {
KEY_FIRST_MODIFIER = 220,
KEY_RIGHT_CTRL = KEY_FIRST_MODIFIER,
KEY_LEFT_CTRL,
KEY_FN,
KEY_SHIFT,
};
#define KEY_IS_MODIFIER(key) ((key) >= KEY_FIRST_MODIFIER)
enum {
KBC_MAX_ROW = 16,
KBC_MAX_COL = 8,
KBC_KEY_COUNT = KBC_MAX_ROW * KBC_MAX_COL,
};
struct tegra_keyboard_config {
/* keycode tables, one for each row/col position */
u8 plain_keycode[KBC_KEY_COUNT]; /* when no Shift or Fn */
u8 shift_keycode[KBC_KEY_COUNT]; /* Shift modifier key is pressed */
u8 fn_keycode[KBC_KEY_COUNT]; /* Fn modifier key is pressed */
u8 ctrl_keycode[KBC_KEY_COUNT]; /* Ctrl modifier key is pressed */
};
struct kbc_tegra {
u32 control;
u32 interrupt;
u32 row_cfg[4];
u32 col_cfg[3];
u32 timeout_cnt;
u32 init_dly;
u32 rpt_dly;
u32 kp_ent[2];
u32 row_mask[16];
};
#ifdef CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
extern int overwrite_console(void);
#define OVERWRITE_CONSOLE overwrite_console()
#else
#define OVERWRITE_CONSOLE 0
#endif /* CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE */
extern struct tegra_keyboard_config board_keyboard_config;
#endif /* __include_tegra_kbc_h__ */