[RK3399][Android7.1]Rockchip PWM Backlight 驅動分析
平臺 | 核心版本 | 安卓版本 |
---|---|---|
RK3399 | Linux4.4 | Android7.1 |
文章目錄
DTS
目錄:kernel/arch/arm64/boot/dts/rockchip/rk3399-nanopi4-common.dtsi
解釋下:pwms = <&pwm0 0 25000 0>;
第一個引數 表示此背光接在 pwm0 上;
第二個引數 表示 index
為 0
,pwm0
下只有 1
個 pwm
,所以填0
第三個引數 表示週期為 25000ns
,即 頻率 為 40k
第四個引數 表示極性,0
正極性,1
負極性
正極性0
表示 背光為正極0~255
,佔空比從0~100%
變化
負極性 1
表示 背光為負極255~0
,佔空比從 100~0%
變化
解釋下:default-brightness-level = <200>
表示預設的背光,它存在於開機時候背光初始化到安卓設定下來新的背光這段時間, default-brightness-level = < 200 >
表示為第 200
個元素的背光亮度
我們接著看pwm_bl
狀態設定及管腳定義
pwm0
設定狀態
解釋下:enable-gpios
表示背光使能腳,這個根據電路原理圖配置即可;
這裡的12來源於:16+2=18,其中8是因為GPIO4_C2
是屬於GPIO4
的C
組,GPIO_ACTIVE_HIGH
表示高電平有效,如果想要低電平有效,可以改為:GPIO_ACTIVE_LOW
,這個屬性將被驅動所讀取。
我們的背光使用在edp
屏上面:
原理圖如下:
驅動分析
platform driver :
目錄:kernel/drivers/video/backlight/pwm_bl.c
裝置樹和驅動通過compatible
probe 分析:
dev_get_platdata
獲取的是device
結構體成員變數的void * platform_data
。
pwm_backlight_parse_dt
解析 dts
中的 brightness-levels
、default-brightness-level
首先看一下使用到的結構體:
目錄:kernel/drivers/video/backlight/pwm_bl.c
目錄:kernel/include/linux/pwm_backlight.h
目錄:kernel/include/linux/backlight.h