rk30: enable 'adc drivers' and 'adc keys'
authorkfx <kfx@rock-chips.com>
Sat, 24 Mar 2012 14:25:40 +0000 (22:25 +0800)
committerkfx <kfx@rock-chips.com>
Sat, 24 Mar 2012 14:25:40 +0000 (22:25 +0800)
arch/arm/mach-rk30/board-rk30-sdk-key.c
drivers/adc/plat/Makefile
drivers/adc/plat/rk30_adc.c
drivers/adc/plat/rk30_adc.h

index 2b790a0595e9c421f56365aab3052b50e8f2c89d..ba359b93f73ae26a6e9481476f11be71f5187ef0 100755 (executable)
@@ -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
 };
 
index 9eb702dece1439cceddc75b1fec1cf1e1448d827..2dfec1fd600fd8fea59e0e96caee73ff326933d7 100644 (file)
@@ -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
index 422b36edf897a24f3b8cad59ffd0810fb2b3fb10..64cdd559c75eda64334d7295d7f7048ea4979b46 100755 (executable)
@@ -35,11 +35,9 @@ static void rk30_adc_start(struct adc_host *adc)
        int chn = adc->cur->chn;\r
 \r
        writel(0, dev->regs + ADC_CTRL);\r
-       writel(ADC_CTRL_POWER_UP|ADC_CTRL_CH(chn), dev->regs + ADC_CTRL);\r
-       udelay(SAMPLE_RATE);\r
+        writel(0x08, dev->regs + ADC_DELAY_PU_SOC);\r
+       writel(ADC_CTRL_POWER_UP|ADC_CTRL_CH(chn)|ADC_CTRL_IRQ_ENABLE, dev->regs + ADC_CTRL);\r
 \r
-       writel(readl(dev->regs + ADC_CTRL)|ADC_CTRL_IRQ_ENABLE|ADC_CTRL_START, \r
-               dev->regs + ADC_CTRL);\r
        return;\r
 }\r
 static void rk30_adc_stop(struct adc_host *adc)\r
@@ -58,6 +56,7 @@ static int rk30_adc_read(struct adc_host *adc)
 static irqreturn_t rk30_adc_irq(int irq, void *data)\r
 {\r
        struct rk30_adc_device *dev = data;\r
+\r
        adc_core_irq_handle(dev->adc);\r
        return IRQ_HANDLED;\r
 }\r
index 2fb92626b6db1bfe640a92f26d4d9787c5cc149a..8160f49046cbd152264320699cced16436dd718e 100755 (executable)
@@ -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)