配置LCD背光和LED

2021-08-07 21:17:49 字數 3953 閱讀 5703

如何配置lcd背光和led,除錯方法

[solution]

lcd背光和led配置檔案

alps/custom/lk/cust_leds.c

alps/custom//kernel/leds/mt65xx/cust_leds.c

drvgen.exe編輯修改codegen.dws

配置cust_leds.c引數:

static struct cust_mt65xx_led cust_led_list[mt65xx_led_type_total] = },

},

},

},

},

},

},

};

lcd背光

mt6589

使用不同的控制源,配置模式:

1.bl_pwm (bls_pwm)

},

2.pwm1~pwm7 

如果是pwm1~4

},

表示src_clk=32k時鐘,div=0,hduration=4; lduration=4,pmic_pad=

0頻率計算:32k/(0+1)/64/4=125hz

如果使用pwm5~7

},

表示src_clk=52m時鐘,div=1,hduration=32; lduration=32,pmic_pad=

1(pwm5~7在pmic6320)

頻率計算:52m/(1+1)/64/32=12.695khz

3.gpio脈衝

},

通過實現cust_setbacklight(level,div)函式操作gpio動作

4.類似oled螢幕,通過寫lcm 暫存器實現

},

通過實現

unsigned int cust_setbacklight(int level, int div)

通過mtkfb_set_backlight_level(level);實現的函式指標將level傳到lcm driver

在lcm的driver中實現.set_backlight=lcm_setbacklight,

5.pmic6320的isinks

mt6320只有3個isink,應該不能滿足要求

mt6572

和mt6589有區別的:

1.pwm1~pwm5

},

表示src_clk=32k時鐘,div=0,hduration=4; lduration=4,pmic_pad=0

頻率計算:32k/(0+1)/64/4=125hz

},

表示src_clk=66m時鐘,div=1,hduration=32; lduration=32,pmic_pad=0

頻率計算:66m/(1+1)/64/32=16.111khz

2.pmic6323的isinks

mt6323有4個isink,每路24ma電流,可以double為48ma,可以接8個led

},

button led

mt6589

pmic mt6530有kpd ldo

},

mt6572

mt6323沒有kpd ldo,一般相容使用isink或者pwm

isink0和isink1合併做button led

},

注意:如果需要修改電流等級和double current,請修改leds.c

brightness_set_pmic()和led_blink_pmic()

電流等級介面:upmu_set_isinks_chx_step(0x0);//0x0 4ma;0x01 8ma;0x2 12ma;0x03 16ma 0x04 20ma;0x05 24ma

double current介面:upmu_set_isinks_chx_double_en(0x1);

pwm1~5

},

ledmt6589

1.pre-charger(pch_det) led

主要使用由於關機充電led,插usb charger點亮,lk階段關閉

如果需要開啟pch_det:

在mt_leds.c(lk)和leds.c 中要開啟pre-charger led 的控制

upmu_chr_chrind_on(1);//開啟

upmu_chr_chrind_on(0);//關閉

2.使用isink接led

},

},

},

3.使用pwm控制led

},

},

},

注意:mt6589上的pwm在sleep的時候沒有波形輸出的,如果sleep需要閃爍設計,請使用pmic mt6320上的pwm(pwm5~pwm7)

mt6572

與mt6589的區別:

1.mt6572沒有pre-charger led的pch_det pin

2.mt6572的pwm1~5在sleep的時候,都是沒有波形輸出的,設計請注意

3.使用isink設計時,如果1個isink接2路led,請注意開啟double current,或者step調大

flash light

檔案:alps/mediatek/custom//kernel/flashlight/constant_flashlight/leds_stobe.c

實現fl_enable()和fl_disable()

mt6589有專門的flash ldo

mt6572沒有flash ldo,可以通過控制pwm,gpio,isink等控制flash light

上層jni lib檔案

alps/mediatek/hardware/liblights/lights.c

如果需要同時開啟2個以上的led,請修改set_speaker_light_locked()裡面的邏輯

adb shell除錯lcd背光和led

adb命令檢視led或者backlight的亮度status

cd /sys/class/leds/***/brightness

(***表示的是light的名字,例如green,blue,red分別表示綠燈、藍燈和紅燈,lcd-backlight表示的是lcd背光。)

如果出現led或backlight不正常時,可以通過進入到相應的folder執行如下命令去檢測是否driver有問題:

echo brightness_level > brightness  檢查是否按照你設定的亮度顯示。

對於led來說brightness_level只要不是0,driver都會讓led on。

lcd背光不支援blink,測試led blink可以執行如下命令:

cd /sys/class/leds/***/

echo timer > trigger        這個命令會建立delay_on和delay_off兩個檔案。

echo on_time > delay_on 這個命令用於設定led on的時間

echo off_time > delay_on 這個命令用於設定led off的時間(on和off的時間都是以毫秒為單位的。)

echo timer > trigger        命令清除delay_on和delay_off時間,讓led off。

echo none > trigger        刪除delay_on/delay_off 節點

在kernel_log 可以看到leds.s中函式呼叫的情況

如 printk("mt65xx_leds_set_cust: set brightness, name:%s, mode:%d, level:%d\n", cust->name, cust->mode, level);

LED 如何配置LCD背光和LED,除錯方法

description 如何配置lcd背光和led,除錯方法 solution lcd背光和led配置檔案 alps custom lk cust leds.c alps custom kernel leds mt65xx cust leds.c drvgen.exe編輯修改codegen.dws ...

如何配置LCD背光和LED,除錯方法

cd背光和led配置檔案 alps custom lk cust leds.c alpl custom kernel leds mt65xx cust leds.c drvgen.exe編輯修改codegen.dws。配置cust leds.c引數 static struct cust mt65xx...

MTK android配置LCD背光和LED

description 如何配置lcd背光和led,除錯方法 solution lcd背光和led配置檔案 alps custom lk cust leds.c alps custom kernel leds mt65xx cust leds.c drvgen.exe編輯修改codegen.dws ...