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