RK3288 添加backlight lcd接口
一、首先,设置背光:
(1)添加设备树节点:
compatible:驱动匹配名称;
pwm:<pwm选择 通道选择 频率>;
brightness-levels:背光调节等级;
default-bightness-level:默认等级;
enable-gpios:使能引脚;
使能pwm通道。
(2)驱动流程分析:
驱动文件位置:/kernel/driver/video/backlight/pwm_bl.c
pwm_backlight_probe 探测函数
pwm_backlight_parse_dt 解析设备树中brightness-levels,default-brightness-level,enable-gpios
gpio_request_one 申请enable-gpios
devm_pwm_get 申请pwm,添加到已申请列表
pwm_get 申请pwm
of_pwm_get 从设备树中查找节点
of_parse_phandle_with_args 解析设备树中选择的pwm0节点
of_node_to_pwmchip 从链表中查找
pc->of_xlate 生成pwm结构
pwm_request 申请pwm,驱动之间不可重复使用
pwm_get_period 获取pwm周期
dev_set_name 设置设备节点
backlight_device_register 注册背光设备
backlight_update_status 默认值设置背光
bd->ops->update_status(pwm_backlight_update_status) 同时被ops调用
compute_duty_cycle 计算占空比
pwm_config 配置pwm
pwm_backlight_power_on 使能backlight
二、设置lcd:
(1)/kernel/arch/arm/configs/firefly_defconfig配置
CONFIG_LCD_MIPI=y
CONFIG_MIPI_DSI=y
CONFIG_RK32_MIPI_DSI=y
(2)设备树配置
在lcdc0中添加子节点power_ctr(可删减):
lcd_en:电源使能
lcd_cs:片选信号
lcd_rst:复位信号
mipi host配置
screen-init:液晶屏是否需要初始化,1是,0否;
dsi_lane:每个mipi的传输线数量;
dsi_hs_clk:一条lane传输速率,Mbits/s,大概100+H_total*V_total*fps*3*8/lanes,H_total V_total是active、bp、fp、sync_len总和;
mipi_dsi_num:单mipi1,双mipi2;
配置液晶屏初始化序列(根据以上screen-init,无需添加):
cmd_debug:是否打开调试;
cmd_type:LPDT低电位 HSDT高电位;
dsi_id:选择mipi通道,mipi0 0,mipi1 1,mipi0+mipi1 2;
cmd:初始化命令,<命令类型 指令 参数>,命令类型:0x05 指令无参,0x15 指令一个参,0x39 指令多参;
cmd_delay:指令发后延时;
液晶显示屏时序配置:
native-mode:选择时序;
(可参考/kernel/include/dt-bindings/rkfb/rk_fb.h)
screen-type:屏幕类型;
lvds-format:lvds数据格式;
out-face:屏幕接线格式;
clock-frequency:dclk频率;
hactive:水平有效像素;
vactive:垂直有效像素;
hback-porch/hfront-porch/hsync-len:水平同步信号;
vback-porch/vfront-porch/vsync-len:垂直同步信号;
hsync-active/vsync-active/de-active/pixelclk-active:hync、vsync、DEN、dclk极性控制,1翻转;
swap-rb/swap-rg/swap-gb:1对颜色翻转;
使能mipi的host。
(2)驱动流程分析:
//mipi dsi接口相关信息初始化
rk_mipi_screen_init -> lcd_mipi.c
platform_driver_probe -> //name是rk_mipi_screen
rk_mipi_screen_probe ->
rk_mipi_screen_init_dt //读取mipi信息, lane number, power, gpio, sceen on cmds.//fb相关信息读取
rk_fb_init -> rk_fb.c
platform_driver_register -> //name: "rockchip,rk-fb"
rk_fb_probe -> //获取disp-mode, u-boot-logo-on等参数。
rockchip_ion_client_create //创建ion client。
//timing参数初始化
//不管是那种接口类型的lcd,lcd的时序参数都是要读取的.
rk_screen_init -> rk_screen.c
platform_driver_register -> //name: "rk-screen"
rk_screen_probe ->
rk_fb_prase_timing_dt -> //读取来的配置存在结构体变量rk_screen中.
of_get_display_timing //获取时序参数,dts中可以配置多组,这里会循环读取。
display_timings_get //根据当前native-mode来选取当前使用哪组时序参数。
rk_fb_video_mode_from_timing //把timing转换到fb video mode中去供后续使用。//mipi dsi controller初始化
//如果是另外的接口那就调用相应的接口控制器驱动来初始化.
rk32_mipi_dsi_init -> rk32_mipi_dsi.c
platform_driver_register -> //name: "rk32-mipi"
rk32_mipi_dsi_probe -> //初始化struct dsi结构,包括clock, dsi ops, rk_screen传递过来的参数,
rk_fb_get_prmry_screen //获取在之前rk_screen_probe()中初始化的rk_screen变量.
rk_mipi_dsi_probe ->
register_dsi_ops //dsi->ops给dsi_ops
dsi_probe_current_chip //检车dsi chip是否存在.
rk_fb_trsm_ops_register //注册trsm_mipi_ops为trsm_dsi_ops//lcdc控制器注册:
rk3288_lcdc_module_init -> rk3288_lcdc.c
platform_driver_register -> //name: "rk3288-lcdc"
rk3288_lcdc_probe ->
rk3288_lcdc_parse_dt //读取lcdc控制器的参数
dev_drv->ops = &lcdc_drv_ops; //lcdc对应ops
devm_request_irq //lcdc对应irq是rk3288_lcdc_isr()
rk_fb_register -> //对应ops是lcdc_drv_ops
init_lcdc_device_driver ->
init_lcdc_win //一个lcdc能支持4层win.
rk_disp_pwr_ctr_parse_dt //解析lcdc power ctrl相关内容。
rk_fb_set_prmry_screen
rk_fb_trsm_ops_get //根据不同的屏幕类型选择对应的ops.
framebuffer_alloc //系统根据win的多少来创建相应数量的fb
fbi->fbops = &fb_ops; //fb ops
rkfb_create_sysfs //生成到/dev/graphics/fbx/下
register_framebuffer
rkfb_create_sysfs
//以下code只跑一次
kthread_run //创建rk_fb_wait_for_vsync_thread
dev_drv->ops->post_dspbuf //show logo
RK3288 添加backlight lcd接口相关推荐
- Standard EVB硬件开发指南(1)——LCD接口电路
Standard EVB硬件开发指南 一.LCD接口电路详解 1.VLED背光驱动电路 2.LCD多电源管理器(VCOM.VGH.VGL.AVDD) 3.MIPI.LVDS接口定义 4.LVDS显示控 ...
- LCD接口设计系列一:基于eDP接口屏的硬件电路设计
LCD的接口类型较多,主要有RGB接口.LVDS接口.eDP接口.MIPI-DSI接口.HDMI接口等,这些接口的定义/协议/特点等各有不相同,一直想对这些接口电路做一个总结.由于涉及到的内容比较多, ...
- LM7M632 模块上24PIN LCD接口定义
LCM可以连接24PIN LCD的44B0开发板和20PIN LCD的开发板,其中24PIN LCD的44B0开发板24PIN信号中包含了LCD数据和触摸屏数据,一跟排线直接连接就够了. 早期的20P ...
- LCD接口设计系列二:基于LVDS接口屏的硬件电路设计
LCD的接口类型较多,主要有RGB接口.LVDS接口.eDP接口.MIPI-DSI接口.HDMI接口等,这些接口的定义/协议/特点等各有不相同,一直想对这些接口电路做一个总结.由于涉及到的内容比较多, ...
- LCD接口和RGB介绍
LCD接口和RGB介绍 阅读目录 1. 介绍 2. 接口类型 3. RGB 4. YUV 5. FOURCC 回到顶部 1. 介绍 Video的显示离不开LCD, 所以这里简单介绍一下LCD的接口和R ...
- [RK3288][Android6.0] DVP接口摄像头OV5640添加
Platform: RK3288 OS: Android 6.0 Kernel: 3.10.92 DVP或者MIPI接口直接在camera board文件中改动就可以. cam_board_rk328 ...
- android系统平台显示驱动开发简要:Samsung LCD接口篇『三』
平台信息: 内核:linux3.4.39 系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新 ...
- Android LCD(三):LCD接口篇【转】
本文转载自:http://blog.csdn.net/xubin341719/article/details/9177085 关键词:Android LCD控制器 Framebuffer PWM 平 ...
- DBI、DPI、DSI LCD 接口简介
(1)DBI接口 也就是通常所讲的MCU借口,俗称80 system接口.The lcd interface between host processor and LCM device list as ...
最新文章
- 腾讯程序员最爱 C++,每年写 3 万行代码,70% 的技术 Leader 仍在持续编码
- Mac 技术篇-修改默认的python版本,mac最新版Python3.7.4的安装配置
- Kubuntu中thunderbird最小化到任务栏
- 基于STM32CubeMX创建STM32L496ZGTx的工程
- 计算机网络cr什么意思,现在网络上的“CR”是指什么意思
- 信息学奥赛一本通 1159:斐波那契数列
- git依赖python_python爬虫之git的安装
- 1、CSS Float(浮动),2、CSS 布局 - 水平 垂直对齐,3、CSS 伪类(Pseudo-classes),4、导航栏
- Windows Server 2008 RemoteApp(五)---远程桌面Web访问
- 读书笔记—《雷达信号处理基础》第一章 雷达系统与信号处理概述
- redis集群原理(简版)
- mecrosoft excel的单元格引用
- Python实战:导出QQ聊天记录生成词云看看你和你的女友聊了什么
- 4维俄罗斯方块 java_烧脑的方块:解析“俄罗斯方块”4种不同的基础模块
- PgAdmin3 F7
- 准备离开:致消散的梦想
- 松鼠Ai辅助公校教育,开启智慧教育3.0
- gis可达性分析步骤_消息速递 | 学院2017级城市管理本科班GIS课程作业成果汇报顺利进行...
- 常用的3D深度相机汇总
- 计算机应用基础贴吧,计算机应用基础,有会做的吗?
热门文章
- 网络驱动器问题:指定的网络文件夹目前是以其他用户名和密码进行映射的
- 关于微信小程序VM22:2 (in promise) MiniProgramError {“errMsg“:“hideLoading:fail:toast can‘t be found“
- android图片下载到本地
- 史上最糟糕简历:长度超过一页 使用过多术语
- PHPExcel导出图片
- IT修真院 Task1全资料[Java篇]
- ps计算机软件专用报告,PS笔记 计算机软件及应用 IT计算机 专业资料.docx
- mysql慢查询日志默认在哪里_MySQL 慢查询日志
- AcWing 4418. 选元素(DP)
- 我以为我对数据库索引十分了解,直到我遇到了阿里面试官。