平台: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
最后问题解决