From 6710383f3434a17df4a87e9bac46d3425c7be5ca Mon Sep 17 00:00:00 2001 From: kfx Date: Sat, 24 Mar 2012 22:25:40 +0800 Subject: [PATCH] rk30: enable 'adc drivers' and 'adc keys' --- arch/arm/mach-rk30/board-rk30-sdk-key.c | 22 +++++++++++----------- drivers/adc/plat/Makefile | 2 +- drivers/adc/plat/rk30_adc.c | 7 +++---- drivers/adc/plat/rk30_adc.h | 4 ++-- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/arch/arm/mach-rk30/board-rk30-sdk-key.c b/arch/arm/mach-rk30/board-rk30-sdk-key.c index 2b790a0595e9..ba359b93f73a 100755 --- a/arch/arm/mach-rk30/board-rk30-sdk-key.c +++ b/arch/arm/mach-rk30/board-rk30-sdk-key.c @@ -62,14 +62,15 @@ static struct rk29_keys_button key_button[] = { //.code_long_press = EV_ENCALL, .wakeup = 1, }, -#if 0 +#if 1 { .desc = "vol+", .code = KEY_VOLUMEDOWN, - .adc_value = 95, + .adc_value = 1, .gpio = INVALID_GPIO, .active_low = PRESS_LEV_LOW, }, +#if 0 { .desc = "vol-", .code = KEY_VOLUMEUP, @@ -77,33 +78,32 @@ static struct rk29_keys_button key_button[] = { .gpio = INVALID_GPIO, .active_low = PRESS_LEV_LOW, }, +#endif { .desc = "menu", .code = EV_MENU, - .adc_value = 406, + .adc_value = 155, .gpio = INVALID_GPIO, .active_low = PRESS_LEV_LOW, }, { .desc = "home", .code = KEY_HOME, - .code_long_press = KEY_F4, - .adc_value = 561, + .adc_value = 630, .gpio = INVALID_GPIO, .active_low = PRESS_LEV_LOW, }, { .desc = "esc", .code = KEY_ESC, - .adc_value = 726, + .adc_value = 386, .gpio = INVALID_GPIO, .active_low = PRESS_LEV_LOW, }, { - .desc = "adkey6", - .code = KEY_BACK, - .code_long_press = EV_ENCALL, - .adc_value = 899, + .desc = "camera", + .code = KEY_CAMERA, + .adc_value = 827, .gpio = INVALID_GPIO, .active_low = PRESS_LEV_LOW, }, @@ -112,6 +112,6 @@ static struct rk29_keys_button key_button[] = { struct rk29_keys_platform_data rk29_keys_pdata = { .buttons = key_button, .nbuttons = ARRAY_SIZE(key_button), - .chn = -1, //chn: 0-7, if do not use ADC,set 'chn' -1 + .chn = 1, //chn: 0-7, if do not use ADC,set 'chn' -1 }; diff --git a/drivers/adc/plat/Makefile b/drivers/adc/plat/Makefile index 9eb702dece14..2dfec1fd600f 100644 --- a/drivers/adc/plat/Makefile +++ b/drivers/adc/plat/Makefile @@ -3,5 +3,5 @@ # obj-$(CONFIG_ADC_RK28) += rk28_adc.o obj-$(CONFIG_ADC_RK29) += rk29_adc.o -obj-$(CONFIG_ADC_RK29) += rk30_adc.o +obj-$(CONFIG_ADC_RK30) += rk30_adc.o obj-$(CONFIG_TSADC_RK30) += rk30_tsadc.o diff --git a/drivers/adc/plat/rk30_adc.c b/drivers/adc/plat/rk30_adc.c index 422b36edf897..64cdd559c75e 100755 --- a/drivers/adc/plat/rk30_adc.c +++ b/drivers/adc/plat/rk30_adc.c @@ -35,11 +35,9 @@ static void rk30_adc_start(struct adc_host *adc) int chn = adc->cur->chn; writel(0, dev->regs + ADC_CTRL); - writel(ADC_CTRL_POWER_UP|ADC_CTRL_CH(chn), dev->regs + ADC_CTRL); - udelay(SAMPLE_RATE); + writel(0x08, dev->regs + ADC_DELAY_PU_SOC); + writel(ADC_CTRL_POWER_UP|ADC_CTRL_CH(chn)|ADC_CTRL_IRQ_ENABLE, dev->regs + ADC_CTRL); - writel(readl(dev->regs + ADC_CTRL)|ADC_CTRL_IRQ_ENABLE|ADC_CTRL_START, - dev->regs + ADC_CTRL); return; } static void rk30_adc_stop(struct adc_host *adc) @@ -58,6 +56,7 @@ static int rk30_adc_read(struct adc_host *adc) static irqreturn_t rk30_adc_irq(int irq, void *data) { struct rk30_adc_device *dev = data; + adc_core_irq_handle(dev->adc); return IRQ_HANDLED; } diff --git a/drivers/adc/plat/rk30_adc.h b/drivers/adc/plat/rk30_adc.h index 2fb92626b6db..8160f49046cb 100755 --- a/drivers/adc/plat/rk30_adc.h +++ b/drivers/adc/plat/rk30_adc.h @@ -16,9 +16,9 @@ #define ADC_STAS_BUSY (1<<0) #define ADC_CTRL 0x08 -#define ADC_CTRL_CH(ch) (0x07 - ((ch)<<0)) +#define ADC_DELAY_PU_SOC 0x0c +#define ADC_CTRL_CH(ch) (ch) //(0x07 - ((ch)<<0)) #define ADC_CTRL_POWER_UP (1<<3) -#define ADC_CTRL_START (1<<4) #define ADC_CTRL_IRQ_ENABLE (1<<5) #define ADC_CTRL_IRQ_STATUS (1<<6) -- 2.34.1