MTK AMOLED 低电量闪屏/开机闪烁某灯/OLED屏配置背光

1、不插充电器开机,原因是开机初始化屏后,流程跑到检测电池电量时,为低电量,进行POWEROFF操作,AMOLED屏会出现红屏闪。

2、插充电器开机,必须作出判断是否在充电,充电状态下,读出的电池电压会需高,需要加大判断低电量的判断条件。

3、源码链接http://download.youkuaiyun.com/detail/diandaer/9902237

开机闪烁电源指示灯

vendor\mediatek\proprietary\hardware\liblights\lights.c

static int
set_speaker_light_locked(__attribute__((__unused__)) struct light_device_t* dev,
        struct light_state_t const* state)
{

        
    if (red) {
#if 0
        blink_green(0, 0, 0);
        blink_blue(0, 0, 0);
#endif
        blink_red(red, onMS, offMS);
    }
#if 1
    else {
        blink_red(0, 0, 0);
    }
#else
    else if (green) {
        blink_red(0, 0, 0);
        blink_blue(0, 0, 0);
        blink_green(green, onMS, offMS);
    }
    else if (blue) {
        blink_red(0, 0, 0);
        blink_green(0, 0, 0);
        blink_blue(blue, onMS, offMS);
    }
    else {
        blink_red(0, 0, 0);
        blink_green(0, 0, 0);
        blink_blue(0, 0, 0);
    }
 #endif

}

device\mediatek\mt6739\init.mt6739.rc

on boot   

chown system system /sys/class/blue/red/trigger
    chmod 777 /sys/class/leds/blue/trigger
    write  /sys/class/leds/blue/trigger timer
    chown system system /sys/class/leds/blue/delay_on
    chown system system /sys/class/leds/blue/delay_off
    chmod 777 /sys/class/leds/blue/delay_on 
    chmod 777 /sys/class/leds/blue/delay_off 777
    write   /sys/class/leds/blue/delay_on 200
    write   /sys/class/leds/blue/delay_off 200

on property:sys.boot_completed=1

    write /sys/class/leds/blue/trigger none
    chmod 0777 /sys/class/leds/blue/brightness
    write /sys/class/leds/blue/brightness 100

配置蓝灯

    led2:led@2 {
        compatible = "mediatek,blue";

        led_mode = <2>; //GPIO模式
        data = <6>;

OLED配置背光

dts设置背光模式,这样LK的背光就不用处理了

        compatible = "mediatek,lcd-backlight";
        led_mode = <4>;
        data = <1>;

屏.c里面添加

     .set_backlight    = oled_set_backlight,

static void oled_set_backlight(unsigned int  level)
{
    unsigned char level_temp=0;

    level_temp=level;
    
    
    if(level<=0)
    {
        level=0;
    }
    else if(level>=255)
    {
        level=255;
    }
    #ifdef BUILD_LK
    printf("backlight:oled_set_backlight level=%d\n",level);
    #else
    printk("backlight:oled_set_backlight level=%d\n",level);
    #endif
    dsi_set_cmdq_V2(0x51, 1, &level_temp, 1);

}

kernel修改

1、kernel-4.14\drivers\misc\mediatek\leds\mt6739\mtk_leds.c

函数mt_mt65xx_led_set下添加

            backlight_debug_log(led_data->level, level);
        +    oled_set_backlight_by_cmdq(level);

2、kernel-4.14\drivers\misc\mediatek\video\mt6739\videox\disp_lcm.c添加
int  oled_disp_lcm_set_backlight_ext(struct disp_lcm_handle *plcm,unsigned int level)
{
    struct LCM_DRIVER *lcm_drv = NULL;

    DISPFUNC();
    if (!_is_lcm_inited(plcm)) {
        DISPERR("lcm_drv is null\n");
        return -1;
    }
    
    lcm_drv = plcm->drv;
    if (lcm_drv->set_backlight) {
        lcm_drv->set_backlight( level);
        }

    return 0;
    
}

3、kernel-4.14\drivers\misc\mediatek\video\mt6739\videox\disp_lcm.h添加

int oled_disp_lcm_set_backlight_ext(struct disp_lcm_handle *plcm,unsigned int level);

4、kernel-4.14\drivers\misc\mediatek\video\mt6739\videox\primary_display.c 添加

int oled_set_backlight_by_cmdq(unsigned int level)
{
    oled_disp_lcm_set_backlight_ext(pgc->plcm,level );
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值