From 762321e08aa97a2fa400ad5d0b51b22d18b3ae68 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 27 Jul 2010 21:42:39 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9raho=E6=9D=BF=E5=AD=90?= =?utf8?q?=E7=9A=84=E6=8C=89=E9=94=AE=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- arch/arm/mach-rk2818/board-midsdk.c | 8 ++++++++ arch/arm/mach-rk2818/board-phonesdk.c | 8 ++++++++ arch/arm/mach-rk2818/board-raho.c | 14 ++++++++++--- arch/arm/mach-rk2818/include/mach/board.h | 2 ++ drivers/input/keyboard/rk2818_adckey.c | 24 +++++++++-------------- 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/arch/arm/mach-rk2818/board-midsdk.c b/arch/arm/mach-rk2818/board-midsdk.c index c0cc1091eea0..7c26c8f37169 100644 --- a/arch/arm/mach-rk2818/board-midsdk.c +++ b/arch/arm/mach-rk2818/board-midsdk.c @@ -585,6 +585,12 @@ static ADC_keyst gAdcValueTab[] = {0,0} }; +static unsigned char gInitKeyCode[] = +{ + AD2KEY1,AD2KEY2,AD2KEY3,AD2KEY4,AD2KEY5,AD2KEY6, + ENDCALL,KEYSTART,KEY_WAKEUP, +}; + struct adc_key_data rk2818_adc_key = { .pin_playon = RK2818_PIN_PA3, .playon_level = 1, @@ -593,6 +599,8 @@ struct adc_key_data rk2818_adc_key = { .adc_drift = 50, .adc_chn = 1, .adc_key_table = gAdcValueTab, + .initKeyCode = gInitKeyCode, + .adc_key_cnt = 9, }; static void __init machine_rk2818_init_irq(void) diff --git a/arch/arm/mach-rk2818/board-phonesdk.c b/arch/arm/mach-rk2818/board-phonesdk.c index ec9a3cacdfbe..630857812099 100755 --- a/arch/arm/mach-rk2818/board-phonesdk.c +++ b/arch/arm/mach-rk2818/board-phonesdk.c @@ -591,6 +591,12 @@ static ADC_keyst gAdcValueTab[] = {0,0} }; +static unsigned char gInitKeyCode[] = +{ + AD2KEY1,AD2KEY2,AD2KEY3,AD2KEY4,AD2KEY5,AD2KEY6, + ENDCALL,KEYSTART,KEY_WAKEUP, +}; + struct adc_key_data rk2818_adc_key = { .pin_playon = RK2818_PIN_PA3, .playon_level = 1, @@ -599,6 +605,8 @@ struct adc_key_data rk2818_adc_key = { .adc_drift = 50, .adc_chn = 1, .adc_key_table = gAdcValueTab, + .initKeyCode = gInitKeyCode, + .adc_key_cnt = 9, }; static void __init machine_rk2818_init_irq(void) diff --git a/arch/arm/mach-rk2818/board-raho.c b/arch/arm/mach-rk2818/board-raho.c index 27b3dd4334cf..c9a61d72e0a7 100644 --- a/arch/arm/mach-rk2818/board-raho.c +++ b/arch/arm/mach-rk2818/board-raho.c @@ -393,12 +393,12 @@ static void spi_xpt2046_cs_control(u32 command) { if(command == 3) { - //printk("spi_xpt2046_cs_control cs \n"); + printk("spi_xpt2046_cs_control cs \n"); gpio_direction_output(RK2818_PIN_PF5, GPIO_LOW); } if(command == 0) { - //printk("spi_xpt2046_cs_control decs \n"); + printk("spi_xpt2046_cs_control decs \n"); gpio_direction_output(RK2818_PIN_PF5, GPIO_HIGH); } } @@ -616,14 +616,22 @@ static ADC_keyst gAdcValueTab[] = {0, 0}///table end }; +static unsigned char gInitKeyCode[] = +{ + AD2KEY1,AD2KEY2,AD2KEY3,AD2KEY4,AD2KEY5,AD2KEY6,AD2KEY7, + ENDCALL,KEYSTART,KEY_WAKEUP, +}; + struct adc_key_data rk2818_adc_key = { .pin_playon = RK2818_PIN_PA3, .playon_level = 1, - .adc_empty = 927, + .adc_empty = 900, .adc_invalid = 20, .adc_drift = 50, .adc_chn = 1, .adc_key_table = gAdcValueTab, + .initKeyCode = gInitKeyCode, + .adc_key_cnt = 10, }; static void __init machine_rk2818_init_irq(void) diff --git a/arch/arm/mach-rk2818/include/mach/board.h b/arch/arm/mach-rk2818/include/mach/board.h index d9db53fed7c5..398bf579bc30 100644 --- a/arch/arm/mach-rk2818/include/mach/board.h +++ b/arch/arm/mach-rk2818/include/mach/board.h @@ -144,6 +144,8 @@ struct adc_key_data{ u32 adc_drift; u32 adc_chn; ADC_keyst * adc_key_table; + unsigned char *initKeyCode; + u32 adc_key_cnt; }; /* common init routines for use by arch/arm/mach-msm/board-*.c */ diff --git a/drivers/input/keyboard/rk2818_adckey.c b/drivers/input/keyboard/rk2818_adckey.c index cbc3f2a43b57..75502669d295 100755 --- a/drivers/input/keyboard/rk2818_adckey.c +++ b/drivers/input/keyboard/rk2818_adckey.c @@ -47,21 +47,13 @@ volatile unsigned int gFlagLongPlay = 0; volatile unsigned int gPlayCount = 0; //key code tab -#define ADKEYNUM 10 -static unsigned char gInitKeyCode[ADKEYNUM] = -{ - AD2KEY1,AD2KEY2,AD2KEY3,AD2KEY4,AD2KEY5,AD2KEY6, - ENDCALL,KEYSTART,KEY_WAKEUP, -}; - - struct rk28_adckey { struct semaphore lock; struct rk28_adc_client *client; struct input_dev *input_dev; struct timer_list timer; - unsigned char keycodes[ADKEYNUM]; + unsigned char * keycodes; void __iomem *mmio_base; }; @@ -72,7 +64,7 @@ unsigned int rk28_get_keycode(unsigned int advalue,pADC_keyst ptab) while(ptab->adc_value != 0) { if((advalue > ptab->adc_value - rk2818_adc_key.adc_drift) && (advalue < ptab->adc_value + rk2818_adc_key.adc_drift)) - return ptab->adc_keycode; + return ptab->adc_keycode; ptab++; } @@ -198,10 +190,11 @@ static void rk28_adkeyscan_timer(unsigned long data) //rk28_read_adc(pRk28AdcKey); adcvalue = gAdcValue[rk2818_adc_key.adc_chn]; - DBG("=========== adcvalue=0x%x ===========\n",adcvalue); + //DBG("=========== adcvalue=0x%x ===========\n",adcvalue); if((adcvalue > rk2818_adc_key.adc_empty) || (adcvalue < rk2818_adc_key.adc_invalid)) { + //DBG("adcvalue invalid !!!\n"); if(gLastCode == 0) { return; } @@ -272,7 +265,8 @@ static int __devinit rk28_adckey_probe(struct platform_device *pdev) return -ENOMEM; } - memcpy(adckey->keycodes, gInitKeyCode, sizeof(adckey->keycodes)); + //memcpy(adckey->keycodes, gInitKeyCode, sizeof(adckey->keycodes)); + adckey->keycodes = rk2818_adc_key.initKeyCode; /* Create and register the input driver. */ input_dev = input_allocate_device(); @@ -294,9 +288,9 @@ static int __devinit rk28_adckey_probe(struct platform_device *pdev) input_dev->keycode = adckey->keycodes; input_dev->keycodesize = sizeof(unsigned char); - input_dev->keycodemax = ARRAY_SIZE(gInitKeyCode); - for (i = 0; i < ARRAY_SIZE(gInitKeyCode); i++) - set_bit(gInitKeyCode[i], input_dev->keybit); + input_dev->keycodemax = rk2818_adc_key.adc_key_cnt; + for (i = 0; i < rk2818_adc_key.adc_key_cnt; i++) + set_bit(rk2818_adc_key.initKeyCode[i], input_dev->keybit); clear_bit(0, input_dev->keybit); adckey->input_dev = input_dev; -- 2.34.1