From: ywj Date: Thu, 16 Aug 2012 06:27:56 +0000 (+0800) Subject: add node of rk29_backlight and rk29_keys for factorytool X-Git-Tag: firefly_0821_release~8926 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=03d6b5fe194d42add34022f91d083939ff6d7845;p=firefly-linux-kernel-4.4.55.git add node of rk29_backlight and rk29_keys for factorytool --- diff --git a/drivers/input/keyboard/rk29_keys.c b/drivers/input/keyboard/rk29_keys.c index b5881d5b5e93..79e1b678ecd5 100755 --- a/drivers/input/keyboard/rk29_keys.c +++ b/drivers/input/keyboard/rk29_keys.c @@ -30,6 +30,7 @@ #define EMPTY_ADVALUE 950 #define DRIFT_ADVALUE 70 #define INVALID_ADVALUE 10 +#define EV_MENU KEY_F1 #if 0 @@ -57,6 +58,68 @@ struct rk29_keys_drvdata { }; 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) { @@ -322,6 +385,13 @@ static int __devinit keys_probe(struct platform_device *pdev) 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; diff --git a/drivers/video/backlight/rk29_backlight.c b/drivers/video/backlight/rk29_backlight.c index a60a0245797c..95ca486472fb 100755 --- a/drivers/video/backlight/rk29_backlight.c +++ b/drivers/video/backlight/rk29_backlight.c @@ -50,6 +50,41 @@ static struct clk *pwm_clk; 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; @@ -232,6 +267,11 @@ static int rk29_backlight_probe(struct platform_device *pdev) 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);