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