xref: /rk3399_rockchip-uboot/board/rockchip/evb_rk3308/evb_rk3308.c (revision 2c6a058b7ea25398013cb25b4e3bb96fe40da1a5)
1 /*
2  * (C) Copyright 2018 Rockchip Electronics Co., Ltd
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6 
7 #include <common.h>
8 #include <adc.h>
9 
10 DECLARE_GLOBAL_DATA_PTR;
11 
12 #define KEY_DOWN_MIN_VAL        0
13 #define KEY_DOWN_MAX_VAL        30
14 
15 #ifndef CONFIG_USING_KERNEL_DTB
16 /*
17  * Two board variants whith adc channel 3 is for board id
18  * v10: 1024, v11: 512
19  * v10: adc channel 0 for dnl key
20  * v11: adc channel 1 for dnl key
21  */
22 int rockchip_dnl_key_pressed(void)
23 {
24 	unsigned int key_val, id_val;
25 	int key_ch;
26 
27 	if (adc_channel_single_shot("saradc", 3, &id_val)) {
28 		printf("%s read board id failed\n", __func__);
29 		return false;
30 	}
31 
32 	if (abs(id_val - 1024) <= 30)
33 		key_ch = 0;
34 	else
35 		key_ch = 1;
36 
37 	if (adc_channel_single_shot("saradc", key_ch, &key_val)) {
38 		printf("%s read adc key val failed\n", __func__);
39 		return false;
40 	}
41 
42 	if ((key_val >= KEY_DOWN_MIN_VAL) && (key_val <= KEY_DOWN_MAX_VAL))
43 		return true;
44 	else
45 		return false;
46 }
47 #endif
48