hal层修改屏幕亮度

平台:rk3568
系统:Android11
我的板子有两块屏幕,而且背光用的不是同一个PWM来控制,所以要修改上层添加对另外一个屏幕亮度的调节,好了话不多少先找到在hardware/rockchip/light_aidl/Lights.cpp 中如下代码位置:

 
 const char* getDriverPath(LightType type) {
    
    
     switch (type) {
    
    
         case LightType::BACKLIGHT:
             return "/sys/class/backlight/backlight/brightness";
         case LightType::BUTTONS:
             return "/sys/class/leds/button-backlight/brightness";
         case LightType::BATTERY:
         case LightType::NOTIFICATIONS:
         case LightType::ATTENTION:
             return "/sys/class/leds";
         case LightType::BLUETOOTH:
         case LightType::WIFI:
         case LightType::MICROPHONE:
         case LightType::KEYBOARD:
         default:
             return "/not_supported";
     }
 }
 
 static int setLightFromType(LightType type, const HwLightState& state) {
    
    
     int err = 0;
     switch (type) {
    
    
         case LightType::BACKLIGHT:
         case LightType::BUTTONS: {
    
    
             int brightness = state2brightbess(state);
             err = write_int(getDriverPath(type), brightness);      

从上面已经很清晰的看出是在setLightFromType函数中修改brightness的值,于是我添加了以下修改:

diff --git a/Lights.cpp b/Lights.cpp
index 4fadbc6..159a74b 100644
--- a/Lights.cpp
+++ b/Lights.cpp
@@ -78,6 +78,7 @@ static int setLightFromType(LightType type, const HwLightState& state) {
    
    
         case LightType::BACKLIGHT:
         case LightType::BUTTONS: {
    
    
             int brightness = state2brightbess(state);
+                       write_int("/sys/class/backlight/backlight1/brightness", brightness); 
             err = write_int(getDriverPath(type), brightness);
             break;
         }

修改之后发现调节亮度还是未生效,于是logcat -b all查看log信息:

01-03 11:05:31.503   652   652 D ViewRootImpl[NavigationBar0]: updatePointerIcon called with position out of bounds
01-03 11:05:31.698   442   497 V DisplayPowerController: Brightness [0.0354389] reason changing to: 'temporary', previous reason: 'manual'.
01-03 11:05:31.703   300   300 E RockchipLights: write_int() failed to open /sys/class/backlight/backlight1/brightness:Permission denied
01-03 11:05:31.703   652   652 I sysui_multi_action: [757,218,758,4,759,13]
01-03 11:05:31.709   442   497 V DisplayPowerController: Brightness [0.047966387] reason changing to: 'manual', previous reason: 'temporary'.

从上面的log信息可以看出是权限的问题,那这就好办了于是在device/rockchip/common目录下添加如下修改:

diff --git a/init.rk30board.rc b/init.rk30board.rc
index cf913d1..6e8048b 100755
--- a/init.rk30board.rc
+++ b/init.rk30board.rc
@@ -125,6 +125,7 @@ on boot
     # backlight
     chown system system /sys/class/backlight/rk28_bl/brightness
     chown system system /sys/class/backlight/backlight/brightness
+    chown system system /sys/class/backlight/backlight1/brightness

最后问题解决

猜你喜欢

转载自blog.csdn.net/weixin_68294039/article/details/128537523
今日推荐