liu qidong [url ssh://qidong.liu@10.2.90.253:29418/] 1 месяц назад
Родитель
Сommit
ca1eef7071
1 измененных файлов с 14 добавлено и 5 удалено
  1. 14 5
      light_ring.c

+ 14 - 5
light_ring.c

@@ -165,9 +165,9 @@ int set_color(unsigned int color)
     unsigned char blue_pwm_l = 0;
     unsigned char blue_pwm_l = 0;
     unsigned char blue_pwm_h = 0;
     unsigned char blue_pwm_h = 0;
 
 
-    red = 255 - ((color >> 16) & 0xff);
-    green = 255 - ((color >> 8) & 0xff);
-    blue = 255 - (color & 0xff);
+    red = (255 - ((color >> 16) & 0xff)) * global_dev->lightring->brightness / 100;
+    green = (255 - ((color >> 8) & 0xff)) * global_dev->lightring->brightness / 100;
+    blue = (255 - (color & 0xff)) * global_dev->lightring->brightness / 100;
 
 
     red_pwm_l = (red * 4095 / 255) & 0xff;
     red_pwm_l = (red * 4095 / 255) & 0xff;
     red_pwm_h = ((red * 4095 / 255) >> 8) & 0x0f;
     red_pwm_h = ((red * 4095 / 255) >> 8) & 0x0f;
@@ -213,10 +213,19 @@ static ssize_t brightness_store(struct kobject *kobj, struct kobj_attribute *att
 
 
     ret = kstrtou32(buf, 10, &val);
     ret = kstrtou32(buf, 10, &val);
     if (ret < 0)
     if (ret < 0)
+    {        
+        printk("Lightring: brightness format error\n");
         return ret;
         return ret;
-
+    }
+    if(val > 100)
+    {
+        printk("Lightring: brightness out of range\n");
+        return -1;
+    }
     /* 硬件操作:设置亮度 */
     /* 硬件操作:设置亮度 */
     global_dev->lightring->brightness = val;
     global_dev->lightring->brightness = val;
+    set_color(global_dev->lightring->color);
+
     pr_info("Lightring: brightness set to %u\n", val);
     pr_info("Lightring: brightness set to %u\n", val);
 
 
     return count;
     return count;
@@ -688,7 +697,7 @@ int light_ring_init(void)
     }
     }
 
 
     /* 默认值 */
     /* 默认值 */
-    global_dev->lightring->brightness = 128;
+    global_dev->lightring->brightness = 60;
     global_dev->lightring->color = 0xFFFFFF; /* 白色 */
     global_dev->lightring->color = 0xFFFFFF; /* 白色 */
     global_dev->lightring->max_fade_brightness = 255;
     global_dev->lightring->max_fade_brightness = 255;
     global_dev->lightring->mode = 0; /* static */
     global_dev->lightring->mode = 0; /* static */