基于linux5.15.5的IMX 参考手册 --- 11

Posted chocolate2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于linux5.15.5的IMX 参考手册 --- 11相关的知识,希望对你有一定的参考价值。

基于linux5.15.5的IMX 参考手册 — 11

6.3.4 eLCDIF帧缓冲区
6.3.4.1介绍
eLCDIF是一种与并行LCD接口工作的显示控制器。该驱动程序被实现为一个显示子系统驱动程序,可以是帧缓冲区,也可以是DRM,它控制一般的LCD低级操作,允许低级硬件控制。仅对ELCDIF的DOTCLK模式进行了测试,因此理论上ELCDIF帧缓冲驱动程序可以与同步LCD面板驱动程序一起工作,以支持帧缓冲设备。同步LCD驱动程序以灵活和可扩展的方式组织,并从任何特定的同步LCD面板支持中抽象出来。为了支持另一个同步LCD面板,用户可以参考现有的同步LCD驱动程序编写一个同步LCD驱动程序。
6.3.4.2软件操作
对于作为帧缓冲驱动实现的eLCDIF,帧缓冲设备是类似于/dev/ memi的内存设备。可以从它读取、写入它,也可以使用mmap()查找和映射其中的某个位置。不同之处在于,用户可用的内存不是整个分配的内存,而只是视频硬件的帧缓冲区。通过特殊的设备节点访问设备,这些节点通常位于/dev目录/dev/fb中。/dev/fb还有几个ioctl,它们作用于它,通过它们可以查询和设置有关硬件的信息。彩色地图处理也通过ioctl操作。有关有哪些ioctl以及使用了哪些数据结构的更多信息,请参阅linux/fb.h。
i.MX ELCDIF帧缓冲驱动程序实现是从实际硬件中抽象出来的。默认面板驱动程序由平台数据中定义的视频模式拾取,或者在探测期间通过’video=mxc_elcdif_fb:resolution, bpp=bits_per_pixel’内核启动命令传入。分辨率应该是公共帧缓冲视频模式模式,bits_per_pixel应该是帧缓冲的颜色深度。
6.3.4.3菜单配置选项
下面的菜单选项将配置MXC ELCDIF帧缓冲驱动程序。该选项取决于FB和(ARCH_MXS || ARCH_MXC)。
LCD帧缓冲支持(CONFIG_FB_MXS)
6.3.4.4源代码结构
帧缓冲区的源代码在drivers/ video/fbdev/mxc中,drm驱动程序在drivers/gpu/drm/imx/lcdif中。

6.3.5显示控制子系统(dcs)
6.3.5.1介绍
显示控制子系统(dccs)是i.MX 8M Quad的一个显示控件,它通过DRM显示框架集成。
DCSS提供了一种机制,将内存中的帧缓冲区显示到超高清或高清电视,并能够将最多3层图形或视频覆盖到HDMI输出。dcs控制器的主要特点包括:
•支持最多3层图形或视频
——任意偏移量
-一个平面可以是8位alpha支持的图形
-将1920x1080p60视频或图形升级到3840x2160p60
-将3840x2160p30视频缩小到1920x1080p30或1280x720p30
•HDR支持:

  • 具有2084和2020颜色空间的HDR10
    -杜比视觉单层和双层格式
    — HLG
    •HDMI 2.0a支持单显示器:
    -分辨率:640x480p60, 720x480p60, 1280x720p60, 1920x1080p60,3840x2160p60, 4096x2160p60
    —HDCP 2.2和HDCP 1.4
    •像素时钟高达596 MHz
    •输出也可以转到MIPI DSI输出
    •帧缓冲区压缩-缓冲区的无损压缩
    6.3.5.2源代码结构
    DCSS的drm驱动在drivers/gpu/drm/imx/dcss中,DCSS的核心驱动在drivers/gpu/imx/dcss中

    6.3.6 DCNANO
    6.3.6.1介绍
    LCDIF是一个高性能的图形核心,可用于从帧缓冲区读取渲染图像。除了提供硬件光标模式外,显示控制器还执行格式转换、抖动和gamma校正。
    显示控制器的关键功能有:
    •视频定时生成
  • HSYNC, VSYNC, DE信号
  • 可编程定时器
    •MIPI显示协议
    —显示DPI-2格式
  • DPI 24位,18位(2个配置)和16位支持(3个配置)
    —(可选)显示总线接口2.0 (DBI-2)
    •显示界面
    -并行像素输出24位数据,高同步,垂直同步,数据启用
    -易于适应外部串行逻辑,如HDMI
    •显示
    -显示尺寸为1024x480
    -同步和空白信号
  • Gamma和抖动表
    •输入格式
    —ARGB2101010 / ARGB8888 ARGB1555 / RGB565 / ARGB4444
  • YUV422封装半平面(YUY2, UYVY)
    •格式转换
    -接受多种RGB格式的像素输入
    -像素输出是24位RGB多种格式
    •输出格式
    —rgb888 / dpi_d16cfg1 / dpi_d16cfg2 / dpi_d16cfg3 / dpi_d18cfg1 / dpi_d18cfg2 / dpi_d24 . rgb888 / dpi_d16cfg1 / dpi_d16cfg2 / dpi_d16cfg3 / dpi_d18cfg1 / dpi_d18cfg2 / dpi_d24
    •硬件光标
    —支持ARGB888和Mask光标格式
    •颜色
    -覆盖与坐标生成器
    -阿尔法混合:8Porter Duff混合模式
    •抖动和Gamma校正
    -一个独立的查找表抖动
    -一个单独的伽玛校正查找表
    6.3.6.2源代码结构
    DCNANO drm驱动位于drivers/gpu/drm/imx/ dcnano。

    6.4显示接口
    6.4.1平行LCD接口
    6.4.1.1介绍
    并行接口支持LCD显示。通过显示控制器支持并行显示界面,并使用显示框架(i.MX 6和i.MX 7上的fbdev框架和i.MX8上的drm框架)实现。
    以下控制器支持并行接口
    •i.MX上的IPU
    •所有i.MX8上的DPU
    •带有PxP的i.MX上的ElCDIF
    并口支持i.MX SoC上至少一个端口,该端口使能并口,并支持带IPU的i.MX的两个端口。启用的SoC每个端口的比特率从18位到24位不等。在带有IPU的i.MX 6上,Parallel接口还支持显示刷新的同步模式和内存的异步模式,并且非常灵活,可以通过无胶水连接到无ram显示器、显示控制器和电视编码器。
    6.4.2 MIPI DSI接口
    6.4.2.1介绍
    MIPI DSI (MIPI Display Interface)是一个驱动接口,用于与显示面板上的MIPI设备控制器通信。
    MIPI DSI显示面板驱动程序提供了通过MIPI DSI配置显示面板的接口。
    MIPI DSI接口是一个带有多通道D-PHY的数字核心,实现了MIPI DSI规范中定义的所有协议功能,提供了系统和MIPI DSI兼容显示器之间的接口。MIPI DSI概述可以在这里找到,但规范只对MIPI成员可用。

MIPI DSI模块提供主机处理器与显示模块之间的高速串行接口。与并联总线相比,它具有更高的性能、更低的功率、更少的电磁干扰和更少的引脚。它被设计为与标准MIPI DSI协议兼容,并建立在现有的MIPI DPI-2、MIPI DPI-2和MIPI DCS标准之上。该模块向外设发送像素或命令,并从外设读取状态或像素信息。MIPI DSI序列化所有像素数据、命令和事件,包含两种基本模式:命令模式和视频模式。它使用命令模式将寄存器和存储器写入显示控制器,同时读取显示模块状态信息。它还使用视频模式以高速模式将实时像素流从主机传输到外围设备,并在发生错误时生成中断。
对于i.MX MIPI, DSI由各种驱动程序支持,这些驱动程序将在以下章节中描述。MIPI DSI驱动程序支持以下特性:
•MIPI DSI通信协议
•MIPI DSI命令模式和视频模式
•MIPI DCS命令操作
MIPI DSI驱动程序对i.MX 6和i.MX 7使用帧缓冲驱动程序,对i.MX8使用drm驱动程序。两个驱动程序都支持以下功能。
•驱动程序不公开给用户界面,而是通过drm或framebuffer接口。
•MIPI DSI IP驱动低电平接口,用于与显示面板上的MIPI设备控制器通信
•MIPI DSI显示面板驱动程序提供了通过MIPI DSI配置显示面板的接口
驱动程序启用平台相关的调节器和时钟。它请求操作系统相关的系统资源,并注册缓冲区事件通知程序以进行空白/取消空白操作。驱动初始化MIPI D-PHY,并根据MIPI DSI显示面板配置MIPI DSI IP。
MIPI DSI驱动程序支持以下特性:
•兼容MIPI联盟DSI规范,版本1.01.0r11
•兼容MIPI联盟规范的D-PHY版本1.00.00
•根据SoC能力,支持1 ~ 4个D-PHY数据通道。
•通过0号数据通道支持双向通信和逃生模式
•可编程显示分辨率
•视频模式像素格式,16bpp (565 RGB),18bpp (666 RGB)打包,18bpp (666 RGB)松散,24bpp (888 RGB)。
•支持所有通用命令的传输
•支持ECC和校验和功能
•支持传输结束包(EoTp)
•支持超低功耗模式
•支持PMS控制接口PLL配置字节时钟频率
•支持Prescaler从字节时钟生成转义时钟
端口和通道的数量在位于arch/arm/boot/dts和arch/arm64/boot/dts的设备树中指定。
6.4.2.2软件操作
MIPI DSI驱动由两部分组成:MIPI DSI IP驱动和MIPI DSI显示面板驱动。
MIPI DSI IP驱动程序有一个名为mipi_dsi_info的私有结构。MIPI DSI IP所附加的实例在字段int dev_id中描述,而IPU内部的DI实例在字段int dist_id中描述。
在启动期间,MIPI DSI IP驱动程序在加载驱动程序时通过字段结构mxc_disdrv_handle注册到framebuffer驱动程序。它还向framebuffer核心注册一个framebuffer事件通知器,以执行显示面板空白/非空白操作。字段struct fb_videomodemode和struct mipi_lcd_configlcd_cconfig从显示面板回调接收。MIPI DSI IP需要这些信息来配置MIPI DSI硬件寄存器。
MIPI DSI IP初始化MIPI DSI IP控制器和显示模块后,通过DPI-2接口获取来自IPU的像素流,通过高速数据链路序列化像素数据和视频事件进行显示。当出现framebuffer空白/非空白事件时,将调用已注册的通知器以进入/离开低功耗模式。
MIPI DSI IP驱动为MIPI DSI显示面板驱动提供3个接口,用于配置显示模块。
驱动程序使用MIPI DSI IP驱动程序提供的api来读写显示模块寄存器。通常,在显示面板上集成有一个MIPI DSI从控制器。上电复位后,需要根据厂商的规格,通过标准的MIPI DCS命令或MIPI DSI Generic命令配置MIPI DSI显示面板。
6.4.2.3源代码结构
下表显示了drivers/video/fbdev/mxc中可用的MIPI DSI驱动程序源文件。

6.4.2.4菜单配置选项
在菜单配置中,启用以下模块:

Device Drivers > Graphics support > MXC Framebuffer support > Synchronous Panel Framebuffer > MXC MIPI_DSI 
Device Drivers > Graphics support > MXC Framebuffer support > Synchronous Panel Framebuffer > MXC MIPI_DSI_SAMSUNG 
Device Drivers > Graphics support > DRM Support for Freescale i.MX > Support for Northwest Logic MIPI DSI displays
Device Drivers > Graphics support > DRM Support for Freescale i.MX > Support for Samsung MIPI DSIM displays

6.4.3 LVDS接口
6.4.3.1介绍
低压差分信号(LVDS)支持高带宽、高清晰度图形和低功耗的快速帧速率。内隐使用的是一对导线,其中每一对导线携带另一根导线的反向信号。这会减少干扰和噪音。LVDS接口使用四、六或八条线,另外一条带时钟和地线。
LVDS接口的目的是支持通过LVDS接口从显示控制器到外部显示设备的同步RGB数据流。
该支持涵盖了这些活动的所有方面:

  1. 与相关设备的连接-带有LVDS接收器的显示器
  2. 外部显示接收器和LVDS显示标准要求的数据排列。
    3.同步和控制功能。
    LVDS接口支持下面列出的多个控制器。
    •LDB – double 带IPU 的i.MX 6
    •在i.MX 8QuadMax上的混音器
    •i.MX 8QuadXPlus上的混音组合
    LVDS驱动程序与支持的显示框架(i.m.mx 6和i.m.mx 7的framebuffer和i.m.mx 8的drm)一起工作。
    LVDS接口具有以下支持结构
    •通道-通常为2个通道
    •每个通道支持多个数据对
    •数据像素率,可以在每个数据对上变化
    •控制信号为HSYNC,VSYNC, DE
    LVDS接口支持以下显示。
    IT6263 LVDS到HDMI桥接-使用我们的LDB驱动程序实现
    •LVDS双通道面板
    LVDS的相关标准如下。
    •PHY标准:ANSI EIA-644A
    •显示协议标准:
    SPWG标准工作组3.8规范(2007年5月)
  • VESA PSWG——面板标准化工作组——使用LVDS的面板的一套标准。
  • JEIDA/JEITA DISM标准JEIDA-59-1999
  • OpenLDI(国家版)- 0.95修订版1999年5月13日支持不平衡的工作模式(与绝大多数LCD供应商一致)。
    LVDS接口通过i.m. mx 6和i.m. mx 7上的framebuffer框架和i.m. mx 8上的drm框架支持。
    6.4.3.2软件操作
    如果LVDS驱动程序是内置的,并且设备树状态设置为“ok”,则该LVDS驱动程序是有效的。
    当LVDS设备驱动程序被正确探测时,驱动程序为LVDS配置时钟。LVDS驱动探测功能将默认模式设置为1080p60。LVDS通道映射模式和位映射模式设置为使用30位JEIDA模式。
    驱动程序采取以下步骤来启用LVDS通道:
  1. 打开LVDS电源。
  2. 设置ldb_di_clk的父clk和父clk的速率。
    3.设定ldb_di_clk速率。
  3. 同时启用ldb_di_clk及其父clk。
  4. 将LVDS设置在合适的模式,包括显示信号的极性、通道映射模式和位映射模式。
  5. 启用相关的i.MX LVDS通道。
    6.4.3.3源代码结构

    6.4.3.4菜单配置选项
    在菜单配置中,启用以下模块:
Device Drivers > Graphics support > DRM Support for Freescale i.MX > Support for LVDS displays

6.4.4 LVDS显示桥(LDB)
6.4.4.1介绍
介绍LDB (LVDS Display Bridge)驱动,用于控制LDB模块通过LVDS接口与外部显示设备连接。LDB的目的是支持同步RGB数据从IPU或LCDIF通过LVDS接口流向外部显示设备。
这种支持包括以下内容:
•与相关设备的连接 — 带有LVDS接收器的显示器。
•根据外部显示接收器和LVDS显示标准安排数据。
•同步和控制能力。
6.4.4.2软件操作
如果LDB驱动程序是内置的,则该LDB驱动程序是有效的。
当LDB设备被正确探测时,驱动器通过使用平台数据信息配置LDB参考电阻器模式和LDB调节器。LDB驱动器探测功能尝试将外部显示设备的视频模式与LVDS接口匹配。根据匹配的视频模式设置LDB的显示信号极性控制位。根据用户设置的LDB设备树节点设置LDB的LVDS信道映射模式和比特映射模式。当驱动程序识别具有LVDS接口的显示设备为主显示设备时,则探测功能中LDB已完全启用。
驱动程序启用LVDS通道的步骤是:

  1. 设置ldb_di_clk的父clk和父clk的速率。
  2. 设定ldb_di_clk速率。
    3.同时启用ldb_di_clk及其父clk。
  3. 将LDB设置为合适的模式,包括显示信号的极性、LVDS通道映射模式、位映射模式和参考电阻模式。
  4. 启用相关LVDS通道。
    6.4.4.3源代码结构

    6.4.4.4菜单配置选项
    此模块提供了以下Linux内核配置选项。
    在菜单配置中启用以下模块:
Device Drivers -> Graphics support -> MXC Framebufer support ->Synchronous Panel Framebuffer -> MXC LDB

以上是关于基于linux5.15.5的IMX 参考手册 --- 11的主要内容,如果未能解决你的问题,请参考以下文章

基于linux5.15.5的IMX 参考手册 ---20

基于linux5.15.5的IMX 参考手册 --- 7

基于linux5.15.5的IMX 参考手册 --- 19

基于linux5.15.5的IMX 参考手册 ---21

基于linux5.15.5的IMX 参考手册 --- 6

基于linux5.15.5的IMX 参考手册 --- 14