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