#define EMPTY_ADVALUE 950
#define DRIFT_ADVALUE 70
#define INVALID_ADVALUE 10
+#define EV_MENU KEY_F1
#if 0
};
static struct input_dev *input_dev;
+struct rk29_keys_Arrary {
+ char keyArrary[20];
+};
+
+static ssize_t rk29key_set(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct rk29_keys_platform_data *pdata = dev->platform_data;
+ int i,j,start,end;
+ char rk29keyArrary[400];
+ struct rk29_keys_Arrary Arrary[]={"menu","home","esc","sensor","play","vol+","vol-"};
+ char *p;
+
+ for(i=0;i<7;i++)
+ {
+
+ p = strstr(buf,&Arrary[i]);
+
+ start = strcspn(p,":");
+
+ if(i<6)
+ end = strcspn(p,",");
+ else
+ end = strcspn(p,"}");
+
+ memset(rk29keyArrary,0,sizeof(rk29keyArrary));
+
+ strncpy(rk29keyArrary,p+start+1,end-start-1);
+
+ for(j=0;j<7;j++)
+ {
+ if(strcmp(pdata->buttons[j].desc,&Arrary[i])==0)
+ {
+ if(strcmp(rk29keyArrary,"MENU")==0)
+ pdata->buttons[j].code = EV_MENU;
+ else if(strcmp(rk29keyArrary,"HOME")==0)
+ pdata->buttons[j].code = KEY_HOME;
+ else if(strcmp(rk29keyArrary,"ESC")==0)
+ pdata->buttons[j].code = KEY_BACK;
+ else if(strcmp(rk29keyArrary,"sensor")==0)
+ pdata->buttons[j].code = KEY_CAMERA;
+ else if(strcmp(rk29keyArrary,"PLAY")==0)
+ pdata->buttons[j].code = KEY_POWER;
+ else if(strcmp(rk29keyArrary,"VOLUP")==0)
+ pdata->buttons[j].code = KEY_VOLUMEUP;
+ else if(strcmp(rk29keyArrary,"VOLDOWN")==0)
+ pdata->buttons[j].code = KEY_VOLUMEDOWN;
+ else
+ continue;
+ }
+
+ }
+
+ }
+
+ for(i=0;i<7;i++)
+ printk("desc=%s, code=%d\n",pdata->buttons[i].desc,pdata->buttons[i].code);
+ return 0;
+
+}
+
+static DEVICE_ATTR(rk29key,0777, NULL, rk29key_set);
void rk29_send_power_key(int state)
{
device_init_wakeup(&pdev->dev, wakeup);
error = device_create_file(&pdev->dev, &dev_attr_get_adc_value);
+ error = device_create_file(&pdev->dev,&dev_attr_rk29key);
+ if(error )
+ {
+ pr_err("failed to create key file error: %d\n", error);
+ }
+
+
input_dev = input;
return error;
static struct backlight_device *rk29_bl;
static int suspend_flag = 0;
+
+int convertint(char s[])
+{
+ int i;
+ int n = 0;
+ for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
+ {
+ n = 10 * n + (s[i] - '0');
+ }
+ return n;
+}
+
+static ssize_t backlight_write(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+
+ struct rk29_bl_info *rk29_bl_info = bl_get_data(rk29_bl);
+ int number;
+
+ number = convertint(buf);
+
+ rk29_bl_info->min_brightness=number;
+ return 0;
+}
+
+
+static ssize_t backlight_read(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct rk29_bl_info *rk29_bl_info = bl_get_data(rk29_bl);
+
+ printk("rk29_bl_info->min_brightness=%d\n",rk29_bl_info->min_brightness);
+}
+static DEVICE_ATTR(rk29backlight, 0777, backlight_read, backlight_write);
+
static int rk29_bl_update_status(struct backlight_device *bl)
{
u32 divh,div_total;
rk29_bl->props.brightness = BL_STEP / 2;
schedule_delayed_work(&rk29_backlight_work, msecs_to_jiffies(rk29_bl_info->delay_ms));
+ ret = device_create_file(&pdev->dev,&dev_attr_rk29backlight);
+ if(ret)
+ {
+ dev_err(&pdev->dev, "failed to create sysfs file\n");
+ }
register_early_suspend(&bl_early_suspend);