文件结构
目录:drivers/staging/fbtft
其中文件分为核心驱动与面板驱动
- 核心(通用件,共性):
fbtft-core.c
,fbtft-bus.c
,fbtft-sysfs.c
,fbtft-io.c
,fbtft.h
- 面板驱动(下级,特性):(e.g.)
fb_st7789v.c
fbtftops
write_reg -> fbtftops.write_register
fbtftops.write_register -> fbtft_write_reg8_bus8 -> fbtft_write_buf_dc -> fbtftops.write
fbtft_update_display -> fbtftops.write_vmem -> fbtft_write_vmem16_bus8 -> fbtftops.write
reg,value对本质上就是两个u8参数.fbtft_merge_fbtftops
用于覆盖默认的ops
fbtft_update_display
这个是更新整个屏幕的核心函数,首先调用特定的display驱动的set_addr_win,来指定行列起始(x start/end; y start/end)
在设置完起始后write_reg(par, MIPI_DCS_WRITE_MEMORY_START);
来直接写入屏幕的VRAM
流程图如下(MIPI_DCS_WRITE_MEMORY_START)(0x2C)(RAMWR)
deferred_io 上层接口
deferred_io 每次调用会回调
fbtftops.update_display
来更新屏幕. deferred_io 是整个驱动的上层接口
见https://docs.kernel.org/fb/deferred_io.htmldirty机制以及局部更新
TBD
注册流程 registration process
TBD
在fbtft.h
有一个FBTFT_REGISTER_DRIVER
宏,在每个display驱动里面调用这个.