huangcm
2025-07-03 571fede27a127398697e783a06a833e37b5b58c3
feat(lcd): add lcd_pwm_max_limit
5 files modified
33 ■■■■ changed files
android/device/softwinner/ceres-c3/ceres_c3.mk 2 ●●● patch | view | raw | blame | history
longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c 15 ●●●● patch | view | raw | blame | history
longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.h 1 ●●●● patch | view | raw | blame | history
longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c 14 ●●●● patch | view | raw | blame | history
longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.h 1 ●●●● patch | view | raw | blame | history
android/device/softwinner/ceres-c3/ceres_c3.mk
....@@ -333,7 +333,7 @@
333333
334334 # holding wake lock
335335 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
336
- persist.sys.kickpi_holding_wakelock=true
336
+ persist.sys.kickpi_holding_wakelock=false
337337
338338 # stoarge
339339 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.c
....@@ -15,6 +15,7 @@
1515 *
1616 */
1717 #include "disp_lcd.h"
18
+#include <linux/delay.h>
1819
1920 struct disp_lcd_private_data
2021 {
....@@ -754,6 +755,14 @@
754755 ret = disp_sys_script_get_item(primary_key, sub_name, (int *)lcd_cfg->lcd_pin_power[i], 2);
755756 }
756757
758
+ sprintf(sub_name, "lcd_pwm_max_limit");
759
+ ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1);
760
+ if (ret == 1) {
761
+ lcd_cfg->lcd_pwm_max_limit = value;
762
+ } else {
763
+ lcd_cfg->lcd_pwm_max_limit = 255;
764
+ }
765
+
757766 #ifdef __LINUX_PLAT__
758767 //backlight adjust
759768 for (i = 0; i < 101; i++) {
....@@ -761,12 +770,12 @@
761770 lcd_cfg->backlight_curve_adjust[i] = 0;
762771
763772 if (i == 100)
764
- lcd_cfg->backlight_curve_adjust[i] = 255;
773
+ lcd_cfg->backlight_curve_adjust[i] = lcd_cfg->lcd_pwm_max_limit;
765774
766775 ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1);
767776 if (ret == 1) {
768777 value = (value > 100)? 100:value;
769
- value = value * 255 / 100;
778
+ value = value * lcd_cfg->lcd_pwm_max_limit / 100;
770779 lcd_cfg->backlight_curve_adjust[i] = value;
771780 }
772781 }
....@@ -774,7 +783,7 @@
774783 sprintf(sub_name, "lcd_backlight");
775784 ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1);
776785 if (ret == 1) {
777
- value = (value > 256)? 256:value;
786
+ value = (value > lcd_cfg->lcd_pwm_max_limit)? lcd_cfg->lcd_pwm_max_limit:value;
778787 lcd_cfg->backlight_bright = value;
779788 } else {
780789 lcd_cfg->backlight_bright = 197;
longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/de/disp_lcd.h
....@@ -55,6 +55,7 @@
5555 u32 lcd_contrast;
5656 u32 lcd_saturation;
5757 u32 lcd_hue;
58
+ u32 lcd_pwm_max_limit;
5859 }disp_lcd_cfg;
5960
6061 s32 disp_init_lcd(disp_bsp_init_para * para);
longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.c
....@@ -456,19 +456,27 @@
456456 2);
457457 }
458458
459
+ sprintf(sub_name, "lcd_pwm_max_limit");
460
+ ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1);
461
+ if (ret == 1) {
462
+ lcd_cfg->lcd_pwm_max_limit = value;
463
+ } else {
464
+ lcd_cfg->lcd_pwm_max_limit = 255;
465
+ }
466
+
459467 /* backlight adjust */
460468 for (i = 0; i < 101; i++) {
461469 sprintf(sub_name, "lcd_bl_%d_percent", i);
462470 lcd_cfg->backlight_curve_adjust[i] = 0;
463471
464472 if (i == 100)
465
- lcd_cfg->backlight_curve_adjust[i] = 255;
473
+ lcd_cfg->backlight_curve_adjust[i] = lcd_cfg->lcd_pwm_max_limit;
466474
467475 ret =
468476 disp_sys_script_get_item(primary_key, sub_name, &value, 1);
469477 if (ret == 1) {
470478 value = (value > 100) ? 100 : value;
471
- value = value * 255 / 100;
479
+ value = value * lcd_cfg->lcd_pwm_max_limit / 100;
472480 lcd_cfg->backlight_curve_adjust[i] = value;
473481 }
474482 }
....@@ -476,7 +484,7 @@
476484 sprintf(sub_name, "lcd_backlight");
477485 ret = disp_sys_script_get_item(primary_key, sub_name, &value, 1);
478486 if (ret == 1) {
479
- value = (value > 256) ? 256 : value;
487
+ value = (value > lcd_cfg->lcd_pwm_max_limit) ? lcd_cfg->lcd_pwm_max_limit : value;
480488 lcd_cfg->backlight_bright = value;
481489 } else {
482490 lcd_cfg->backlight_bright = 197;
longan/kernel/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/de/disp_lcd.h
....@@ -55,6 +55,7 @@
5555 u32 lcd_contrast;
5656 u32 lcd_saturation;
5757 u32 lcd_hue;
58
+ u32 lcd_pwm_max_limit;
5859 };
5960
6061 s32 disp_init_lcd(struct disp_bsp_init_para *para);