xref: /rk3399_rockchip-uboot/include/key.h (revision a2df960601036d3fd0d00ea8f43cdde52b5eddbe)
1b398a9a7SJoseph Chen /*
2b398a9a7SJoseph Chen  * (C) Copyright 2017 Rockchip Electronics Co., Ltd
3b398a9a7SJoseph Chen  *
4b398a9a7SJoseph Chen  * SPDX-License-Identifier:     GPL-2.0+
5b398a9a7SJoseph Chen  */
6b398a9a7SJoseph Chen 
7b398a9a7SJoseph Chen #ifndef _KEY_H_
8b398a9a7SJoseph Chen #define _KEY_H_
9b398a9a7SJoseph Chen 
10c315aab8SJoseph Chen #define KEY_LONG_DOWN_MS	2000
11c315aab8SJoseph Chen 
12b398a9a7SJoseph Chen enum key_state {
13b398a9a7SJoseph Chen 	KEY_PRESS_NONE,
14b398a9a7SJoseph Chen 	KEY_PRESS_UP,
15b398a9a7SJoseph Chen 	KEY_PRESS_DOWN,
16c315aab8SJoseph Chen 	KEY_PRESS_LONG_DOWN,
17*a2df9606SJoseph Chen 	KEY_NOT_EXIST,
18b398a9a7SJoseph Chen };
19b398a9a7SJoseph Chen 
20b398a9a7SJoseph Chen struct dm_key_ops {
216e14addfSJoseph Chen 	int type;
226e14addfSJoseph Chen 	const char *name;
23*a2df9606SJoseph Chen 	int (*read)(struct udevice *dev, int code);
24*a2df9606SJoseph Chen 	int (*exist)(struct udevice *dev, int code);
25b398a9a7SJoseph Chen };
26b398a9a7SJoseph Chen 
27*a2df9606SJoseph Chen struct input_key {
28*a2df9606SJoseph Chen 	const char *name;
29*a2df9606SJoseph Chen 	u32 code;
30*a2df9606SJoseph Chen 	u32 channel;
31*a2df9606SJoseph Chen 	u32 value;
32*a2df9606SJoseph Chen 	u32 margin;
33*a2df9606SJoseph Chen 	u32 vref;
34*a2df9606SJoseph Chen 	int flag;
35*a2df9606SJoseph Chen 
36*a2df9606SJoseph Chen 	u32 irq;
37*a2df9606SJoseph Chen 	u64 up_t;
38*a2df9606SJoseph Chen 	u64 down_t;
39*a2df9606SJoseph Chen };
40*a2df9606SJoseph Chen 
41*a2df9606SJoseph Chen uint64_t key_get_timer(uint64_t base);
42*a2df9606SJoseph Chen int platform_key_read(int code);
43b398a9a7SJoseph Chen 
44b398a9a7SJoseph Chen #endif
45