mtk6572配置lcm背光

2021-06-22 10:10:12 字數 4020 閱讀 7953

mtk6572配置lcm背光 

配置lcm背光的控制腳

lcm背光控制主要有兩個引腳:使能腳en和亮度控制引腳vfb。

使能腳用來控制背光的使能與否,比如這裡是1為enable,0為disable;

亮度控制引腳則是用來接pwm輸出,通過pwm的占空比來控制背光亮度,這裡是低為亮,高為滅。

mtk的電路圖上表示的是pwm_a為disable,pwm_b為enable

\mediatek\custom\******x\kernel\leds\mt65xx\cust_leds.c

static struct cust_mt65xx_led cust_led_list[mt65xx_led_type_total] = },

},};

如何配置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=126.95khz

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=161.11khz

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

},led

mt6589

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);

mtk 6572平台led指示燈 除錯

led充電指示燈除錯 相關檔案目錄 custom kernel leds mt65xx cust leds.c kernel drivers leds leds drv.c platform mt6572 kernel drivers leds leds.c static struct cust m...

MTK平台搭建

mtk平台搭建 最近公司的專案差不多都做完了,趁新專案還沒來的時候學學東西。從朋友那裡搞來一套 mtk的源 學學 mtk的開發。選擇 mtk是因為,它跟我的工作所用的平台相似,學起來方便一點,另外一點是它可以在 pc上跑,不用自己去買硬體,成本不高。呵呵,從朋友那裡搞來的源 不用硬體,成本就只有時間...

MTK平台入門

mtk平台入門 通過 new,update,remake,clean all,clean modules,codegen.來動作生成bin file 二進字檔案 類如 假設專案是gsm專案,專案名稱為m720,則有這些命令 make custom m720 gsm resgen 修改了資源時用這個命...