1. 程式人生 > >[RK3399][Android7.1]Rockchip PWM Backlight 驅動分析

[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 上;
在這裡插入圖片描述

第二個引數 表示 index0pwm0 下只有 1pwm,所以填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是屬於GPIO4C組,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-levelsdefault-brightness-level
在這裡插入圖片描述


首先看一下使用到的結構體:
目錄:kernel/drivers/video/backlight/pwm_bl.c
在這裡插入圖片描述

目錄:kernel/include/linux/pwm_backlight.h
在這裡插入圖片描述

目錄:kernel/include/linux/backlight.h
在這裡插入圖片描述