From 571fede27a127398697e783a06a833e37b5b58c3 Mon Sep 17 00:00:00 2001 From: huangcm <1263938474@qq.com> Date: Thu, 03 Jul 2025 01:22:12 +0000 Subject: [PATCH] feat(lcd): add lcd_pwm_max_limit --- longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.h | 1 + longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c | 14 +++++++++++--- longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c | 15 ++++++++++++--- longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.h | 1 + android/device/softwinner/ceres-c3/ceres_c3.mk | 2 +- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/android/device/softwinner/ceres-c3/ceres_c3.mk b/android/device/softwinner/ceres-c3/ceres_c3.mk index 2bec556..79b5ef1 100755 --- a/android/device/softwinner/ceres-c3/ceres_c3.mk +++ b/android/device/softwinner/ceres-c3/ceres_c3.mk @@ -333,7 +333,7 @@ # holding wake lock PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - persist.sys.kickpi_holding_wakelock=true + persist.sys.kickpi_holding_wakelock=false # stoarge PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ diff --git a/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c b/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c index acb75fb..c07980d 100755 --- a/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c +++ b/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c @@ -15,6 +15,7 @@ * */ #include "disp_lcd.h" +#include <linux/delay.h> struct disp_lcd_private_data { @@ -754,6 +755,14 @@ ret = disp_sys_script_get_item(primary_key, sub_name, (int *)lcd_cfg->lcd_pin_power[i], 2); } + sprintf(sub_name, "lcd_pwm_max_limit"); + ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1); + if (ret == 1) { + lcd_cfg->lcd_pwm_max_limit = value; + } else { + lcd_cfg->lcd_pwm_max_limit = 255; + } + #ifdef __LINUX_PLAT__ //backlight adjust for (i = 0; i < 101; i++) { @@ -761,12 +770,12 @@ lcd_cfg->backlight_curve_adjust[i] = 0; if (i == 100) - lcd_cfg->backlight_curve_adjust[i] = 255; + lcd_cfg->backlight_curve_adjust[i] = lcd_cfg->lcd_pwm_max_limit; ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1); if (ret == 1) { value = (value > 100)? 100:value; - value = value * 255 / 100; + value = value * lcd_cfg->lcd_pwm_max_limit / 100; lcd_cfg->backlight_curve_adjust[i] = value; } } @@ -774,7 +783,7 @@ sprintf(sub_name, "lcd_backlight"); ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1); if (ret == 1) { - value = (value > 256)? 256:value; + value = (value > lcd_cfg->lcd_pwm_max_limit)? lcd_cfg->lcd_pwm_max_limit:value; lcd_cfg->backlight_bright = value; } else { lcd_cfg->backlight_bright = 197; diff --git a/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.h b/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.h index 051e357..6dbf350 100755 --- a/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.h +++ b/longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.h @@ -55,6 +55,7 @@ u32 lcd_contrast; u32 lcd_saturation; u32 lcd_hue; + u32 lcd_pwm_max_limit; }disp_lcd_cfg; s32 disp_init_lcd(disp_bsp_init_para * para); diff --git a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c index ec4b3fb..fcf5e6b 100644 --- a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c +++ b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c @@ -456,19 +456,27 @@ 2); } + sprintf(sub_name, "lcd_pwm_max_limit"); + ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1); + if (ret == 1) { + lcd_cfg->lcd_pwm_max_limit = value; + } else { + lcd_cfg->lcd_pwm_max_limit = 255; + } + /* backlight adjust */ for (i = 0; i < 101; i++) { sprintf(sub_name, "lcd_bl_%d_percent", i); lcd_cfg->backlight_curve_adjust[i] = 0; if (i == 100) - lcd_cfg->backlight_curve_adjust[i] = 255; + lcd_cfg->backlight_curve_adjust[i] = lcd_cfg->lcd_pwm_max_limit; ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1); if (ret == 1) { value = (value > 100) ? 100 : value; - value = value * 255 / 100; + value = value * lcd_cfg->lcd_pwm_max_limit / 100; lcd_cfg->backlight_curve_adjust[i] = value; } } @@ -476,7 +484,7 @@ sprintf(sub_name, "lcd_backlight"); ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1); if (ret == 1) { - value = (value > 256) ? 256 : value; + value = (value > lcd_cfg->lcd_pwm_max_limit) ? lcd_cfg->lcd_pwm_max_limit : value; lcd_cfg->backlight_bright = value; } else { lcd_cfg->backlight_bright = 197; diff --git a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.h b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.h index eedba5f..11c904a 100644 --- a/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.h +++ b/longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.h @@ -55,6 +55,7 @@ u32 lcd_contrast; u32 lcd_saturation; u32 lcd_hue; + u32 lcd_pwm_max_limit; }; s32 disp_init_lcd(struct disp_bsp_init_para *para); -- Gitblit v1.6.2