add node of rk29_backlight and rk29_keys for factorytool
authorywj <ywj@rockchip.com>
Thu, 16 Aug 2012 06:27:56 +0000 (14:27 +0800)
committerywj <ywj@rockchip.com>
Thu, 16 Aug 2012 06:27:56 +0000 (14:27 +0800)
drivers/input/keyboard/rk29_keys.c
drivers/video/backlight/rk29_backlight.c

index b5881d5b5e93244ccec10089411d153ec4ac6825..79e1b678ecd582217ed0d0d8ff0310c904bb041c 100755 (executable)
@@ -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;
 
index a60a0245797c41d9a7052cca4ca6ce85052c1631..95ca486472fb18b2c2e7e0c5947be32f5c3fd44c 100755 (executable)
@@ -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);