硬件篇
架构
最近研究MIPI DSI Panel Linux Driver架构,于是一边啃spec性质的官方文档,一边从dri-devel,omap-linux等邮件列表里,搜索所有的跟panel driver相关的讨论,尽力在短时间内把整个subsystem的脉络迅速掌握。
MIPI规范不止于display,也包括camera(MIPI CSI),电源管理,射频的东西。和Display相关的就是MIPI DSI,DPI,DBI等,规范了host display controller到panel之间通信时从物理层,链路层到应用层的协议。目标市场是对功耗、屏幕尺寸有特殊要求的移动设备,不同于VESA针对PC市场。
大而笼统地说,mobile display system一般可分为两种 architecture:
右边这种叫“smart panel”,左边这种叫"dumb panel"(“哑”屏)。区别是smart panel带framebuffer,“刷屏”操作由屏自己来负责,host controller成了甩手掌柜,而哑屏就和任何一种非主动设备一样,可以把它当作一块带有简单时许控制电路的玻璃。
mipis在上面两种基本architecture的基础上,扩展了四种架构。
Type1
完全的command模式,mipi规范里DBI属于这种type。
Type2
由type1的一条control-interface接口变为了video-interface + control-interface的组合,full-framebuffer也变为了partial-framebuffer,因为没有了full-framebuffer,所以不可能完全依靠panel来刷屏,这就是video-interface存在的必要;但partial-framebuffer也为panel带来了partial-update的灵活性。
control-interface和video-interface可能是在同一个物理总线上的。这里的control-interface类似I2C或者PCI,video-interface传递pixels/clock。control-interface都是传递one-shot的data/command,有请求有应答;video-interface传递continuous的data,不需要slave device的应答。Linux的设备驱动模型树总是围绕control-interface来组织的。master同slave之间的连接组织成树,内核电源管理子系统通过遍历树来得到一个正确的suspend/resume的顺序,否则会产生很多ordering issue;通过control-interface,m