xref: /OK3568_Linux_fs/u-boot/board/rockchip/evb_rk3308/evb_rk3308.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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 /*
16  * Two board variants whith adc channel 3 is for board id
17  * v10: 1024, v11: 512
18  * v10: adc channel 0 for dnl key
19  * v11: adc channel 1 for dnl key
20  */
rockchip_dnl_key_pressed(void)21 int rockchip_dnl_key_pressed(void)
22 {
23 	unsigned int key_val, id_val;
24 	int key_ch;
25 
26 	if (adc_channel_single_shot("saradc", 3, &id_val)) {
27 		printf("%s read board id failed\n", __func__);
28 		return false;
29 	}
30 
31 	if (abs(id_val - 1024) <= 30)
32 		key_ch = 0;
33 	else
34 		key_ch = 1;
35 
36 	if (adc_channel_single_shot("saradc", key_ch, &key_val)) {
37 		printf("%s read adc key val failed\n", __func__);
38 		return false;
39 	}
40 
41 	if ((key_val >= KEY_DOWN_MIN_VAL) && (key_val <= KEY_DOWN_MAX_VAL))
42 		return true;
43 	else
44 		return false;
45 }
46