uboot开启背光
evb_rv1106.c
#define GPIO1_BASE 0xff530000
#define GPIO1_B0_MASK BIT(8)
/* 拉高 LCD 背光(GPIO1_B0)*/
static void backlight_init(void)
{
u32 ddr = gpio_v2_read(GPIO1_BASE + GPIO0_DDR_L);
ddr |= GPIO1_B0_MASK;
gpio_v2_write(GPIO1_BASE + GPIO0_DDR_L, ddr);
u32 dr = gpio_v2_read(GPIO1_BASE + GPIO0_DR_L);
dr |= GPIO1_B0_MASK;
gpio_v2_write(GPIO1_BASE + GPIO0_DR_L, dr);
printf("[LCD] Backlight GPIO1_B0 on\n");
}
设备树修改
backlight: backlight {
status = "okay";
compatible = "pwm-backlight";
pwms = <&pwm3 0 50000 0>;
brightness-levels = <0 80 160 255>;
default-brightness-level = <0>;
power-supply = <&vcc_3v3>;
};
//背光控制不交给DRM
panel: panel {
// backlight = <&backlight>;
}
SPI初始化驱动修改
uboot屏幕驱动250 - 254
/* Backlight will be enabled by kernel drm logo */
// if (priv->backlight)
// backlight_enable(priv->backlight);
内核驱动修改
路径:
/kernel/drivers/gpu/drm/rockchip/rockchip_drm_logo.c
添加头文件
#include <linux/backlight.h>
添加1070 - 1080
drm_atomic_state_put(state);
+{
+ struct backlight_device *bd;
+ bd = backlight_device_get_by_type(BACKLIGHT_RAW);
+ if (bd) {
+ backlight_enable(bd);
+ put_device(&bd->dev);
+ }
+}
private->loader_protect = true;
调试
# 查看当前亮度
cat /sys/class/backlight/backlight/brightness
#返回0-3
# 设置亮度(0-3,对应 brightness-levels 的索引)
echo 3 > /sys/class/backlight/backlight/brightness # 高档
echo 2 > /sys/class/backlight/backlight/brightness # 中档
echo 1 > /sys/class/backlight/backlight/brightness # 低档
echo 0 > /sys/class/backlight/backlight/brightness # 关闭