lcd的背光主要涉及到兩個地方
1.休眠和喚醒的開關
2.背光的亮度調整
安卓設定中可以控制背光的亮度,jni層的實現
frameworks/base/services/jni/com_android_server_lightsservice.cpp
light_index_backlight = 0
hw_module_t* module;
devices* devices;
err = hw_get_module(lights_hardware_module_id, (hw_module_t const**)&module);
devices->lights[light_index_backlight] = get_device(module, light_id_backlight);
.....
static void setlight_native(jnienv *env, jobject clazz, int ptr,
int light, int colorargb, int flashmode, int onms, int offms, int brightnessmode)
//主要是呼叫hw中的open
static light_device_t* get_device(hw_module_t* module, char const* name)
else
}這裡主要去呼叫hal層。
imx6的背光hal層實現在:
hardware/imx/lights/fsl_lights.c
簡略的列一下:
static int lights_device_open(const struct hw_module_t* module,
const char* name, struct hw_device_t** device)
/sys/class/backlight/pwm-backlight.0/pwm-backlight/brightness
/sys/class/backlight/pwm-backlight.0/max_brightness
static int set_light_backlight(struct light_device_t* dev,
struct light_state_t const* state)
看完hal層**,發現這完全是驅動層實現的,我們只負責設定值而已。
這裡為了檢測問題,測試了一下:
/sys/class/backlight/pwm-backlight/pwm-backlight.0/brightness
這個檔案無論怎麼寫,都不會讓背光滅掉,只起到調節背光大小的作用,做過螢幕改不了背光那麼就需要
1.手動修改這個檔案是否能改
2.檢查驅動是否有問題
這裡結論是只能修改背光的亮度,並不能關閉。
arch/arm/mach-mx6/board-mx6q_sabresd.c 這是我麼的板檔案
根據原理圖上背光的總開關由乙個gpio管教控制,我們只需要看看這個管教是不是在休眠的時候關閉掉即可。
這是背光相關的控制實現
static struct platform_pwm_backlight_data mx6_sabresd_pwm_backlight_data = ;
static int mx6q_backlight_notify(struct device *dev, int brightness)else
return 0; }
然後驅動在:
drivers/video/backlight/pwm_bl.c
這裡主要看一下休眠和喚醒的實現裡的操作,其實根本不需要修改**,我們需要參考呼叫流程,來在板檔案做好相應的處理即可。
另外剛才在sys檔案系統操作的節點,由
drivers/video/backlight/
backlight.c 實現。
imx6ul 正點原子 imx6ul學習筆記(1)
目錄 linux imx6ull uboot alientek uboot 檔名 mx6ull alientek emmc.sh 編譯方法 mx6ull alientek emmc.sh目錄 f imx6ull alientek uboot cd alientek uboot 進入正點原子 uboo...
imx6ul 正點原子 imx6ul學習筆記(2)
目錄 home jk9 linux imx6ull alientek linux 編譯,vscode工程建立 2020.3.12 目錄 home jk9 linux nxp nxp linux 編譯 2020.3.12.23 32 1 新增開發板預設配置檔案 2 新增開發板對應的裝置樹檔案cp ar...
imx6q can驅動理解
理解imx536的can驅動還是從probe開始吧,2.6版本核心can驅動是歸屬於網路驅動 所以我得先去把網路驅動幾個重要結構體先找出來吧。前進吧 年輕人。static struct platform driver flexcan driver probe flexcan probe,remove...