{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,
.adc_drift = 50,
.adc_chn = 1,
.adc_key_table = gAdcValueTab,
+ .initKeyCode = gInitKeyCode,
+ .adc_key_cnt = 9,
};
static void __init machine_rk2818_init_irq(void)
{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,
.adc_drift = 50,
.adc_chn = 1,
.adc_key_table = gAdcValueTab,
+ .initKeyCode = gInitKeyCode,
+ .adc_key_cnt = 9,
};
static void __init machine_rk2818_init_irq(void)
{
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);
}
}
{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)
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 */
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;
};
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++;
}
//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;
}
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();
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;