imx6q修改LVDS接口数据格式
LVDS数据格式有两种:VESA标准和JEIDA标准,飞凌支持的10.1寸lvds屏,默认的数据格式是VESA,所以源码中默认也是VESA格式,如果替换的一些屏是JIEDA格式,则需要修改。
由于需要显示logo,所以显示是分成两部分,UBOOT阶段的显示和内核阶段的显示
UBOOT:
修改board/freescale/mx6sabresd/mx6sabresd.c文件。默认是VESA格式,需要添加JEIDA格式的相关配置:
static void enable_lvds(struct display_info_t const *dev)writel(reg, &iomux->gpr[2]);}
+static void enable_lvds_jeida(struct display_info_t const *dev)
+{+ struct iomuxc *iomux = (struct iomuxc *)
+ IOMUXC_BASE_ADDR;
+ u32 reg = readl(&iomux->gpr[2]);
+ reg |= IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT
+ |IOMUXC_GPR2_BIT_MAPPING_CH0_JEIDA;
+ writel(reg, &iomux->gpr[2]);
+}
+static void msleep(int count){int i;struct display_info_t const displays[] = {{.addr = 0,.pixfmt = IPU_PIX_FMT_RGB24,.detect = NULL,
- .enable = enable_lvds,
+ .enable = enable_lvds_jeida,.mode = {.name = "LDB-WXGA",.refresh = 60,
再修改内核:
打开设备树文件arch/arm/boot/dts/imx6qdl-sabresd.dtsi
lvds-channel@0 {//fsl,data-mapping = "spwg";fsl,data-mapping = "jeida";fsl,data-width = <24>;status = "okay";display-timings {native-mode = <&timing0>;timing0: hsd100pxn1 {clock-frequency = <71000000>;hactive = <1280>;vactive = <800>;hback-porch = <40>;hfront-porch = <40>;vback-porch = <10>;vfront-porch = <3>;hsync-len = <80>;vsync-len = <10>;};};};
把spwg修改为geida即可输出geida格式。
实际上我们配置的是fsl,data-mapping这个变量,然后看一下驱动源码,是如何读取的:
源码路径为:driver/video/fbdev/mxc/ldb.c
mapping = of_get_data_mapping(child);switch (mapping) {case LVDS_BIT_MAP_SPWG:if (data_width == 24) {if (i == 0 || ldb->spl_mode || ldb->dual_mode)ldb->ctrl |= LDB_DATA_WIDTH_CH0_24;if (i == 1 || ldb->spl_mode || ldb->dual_mode)ldb->ctrl |= LDB_DATA_WIDTH_CH1_24;}break;case LVDS_BIT_MAP_JEIDA:if (data_width == 18) {dev_err(dev, "JEIDA only support 24bit\n");return -EINVAL;}
在probe函数中有这样一段,通过一个of_get_data_mapping函数来判断数据格式:
static const char *ldb_bit_mappings[] = {[LVDS_BIT_MAP_SPWG] = "spwg",[LVDS_BIT_MAP_JEIDA] = "jeida",
};static int of_get_data_mapping(struct device_node *np)
{const char *bm;int ret, i;ret = of_property_read_string(np, "fsl,data-mapping", &bm);if (ret < 0)return ret;for (i = 0; i < ARRAY_SIZE(ldb_bit_mappings); i++)if (!strcasecmp(bm, ldb_bit_mappings[i]))return i;return -EINVAL;
}
可以看到用of_property_read_string函数去读取了设备树中的字符串,这个是一个标准函数,关于这个函数后边会单独分析一下。
imx6q修改LVDS接口数据格式相关推荐
- LVDS接口分类与数据格式
转发路径:https://blog.csdn.net/a617996505/article/details/82386952 1.LVDS接口分类与数据格式 单路6it LVDS 这种接口电路中,采用 ...
- LVDS接口液晶屏定义(lcd)
转载于:https://blog.csdn.net/linphusen/article/details/6389032 LVDS接口液晶屏定义 LVDS接口又称RS-644总线接口 20PIN单6定义 ...
- Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏
点LVDS接口液晶屏 1.硬件准备 (1)准备屏.屏规格书.背光规格书和屏线 (2)准备主板 2.软件调试 (1)增加新屏驱动文件 (2)屏显示原理 (3)屏参分析 (4)点屏 1.硬件准备 (1)准 ...
- JESD204B与LVDS接口并行 管线式ADC延迟问题分析及解答
JESD204B为业界标准序列通信链接,数据转换器与现场可编程门阵列(FPGA).数字信号处理器(DSP).特定应用集成电路(ASIC)等装置间的数字数据接口因此能化繁为简,这项标准减少装置间路由进而 ...
- 手机屏和大屏LCD显示面板接口(和处理器连接的接口类似12864等单片机处理器和屏接口的8086,SPI等并口串口屏以及RGB屏接口)LVDS接口常见于液晶电视中。eDP,LVDS,MIPI,HDMI
mipi是手机液晶屏最常见的接口了 现在普遍的16:9或者16:10的宽屏,LCD接口大部分都是LVDS,也有RSDS接口,不过比较少.接口一般都是30PIN,不过由于尺寸不同,分辨率的不同,所用到的 ...
- Java之 XML与JSON(公众平台接口数据格式)
Java之 XML与JSON(公众平台接口数据格式) 1. XML 2. XML语法 2.1XML文档声明 2.2 标记(元素/标签/节点) 2.3 一个XML文档中,必须有且且仅允许有一个根标记 2 ...
- (b)液晶屏是LVDS接口如何实现点屏?
接上一篇 解释为什么Minihotal 加20: 设置PanelMinHTotal需要一个更小的Htotal面板加20.液晶屏幕有许多分辨率,试图满足面板的不同属性,PanelMinHTotal根据P ...
- lvds接口屏线安装图解_液晶屏LVDS线类型图文讲解
说明: 1.本资料是部分显示屏所使用的LVDS 线汇总表,其中对LVDS 接口插座.特征.编码等作 了介绍.如果这些显示屏的LVDS 线损坏,可参考: 2.由于1920X1080高清屏对应的数字板LV ...
- LVDS接口和LVDS技术
LVDS接口 目前6.5寸及以上尺寸的液晶屏大多都是LVDS接口的了,而LVDS接口的屏主要是应用于工控行业. 如下图就是LVDS接口的使用场景: 下图所示为五通道LVDS发送芯片(DS90C385) ...
最新文章
- Qt学习笔记,Qt国际化
- 将远程桌面客户端配置为连接到特定端口
- C#中排序的多种实现方式
- 用PyTorch实现的李沐《动手学深度学习》,登上GitHub热榜,获得700+星
- 正则表达式基本语法元字符
- 小程序mysql+php测试,分享微信小程序的一些常见辅助测试功能:chance
- shiro添加注解@RequiresPermissions无效
- 为什么objc_msgSend必须用汇编实现
- (转载)说说char
- 码表的理解(ASCII,GBK,Unicode,UTF-8等)。
- 安装ISA2004后,加入域时提示:远程过程调用失败且未运行的解决办法
- 创业公司如何切入巨头垄断的芯片市场?
- Android性能优化系列---管理你的app内存(一)
- oracle游标特点,oracle游标应用 sys_refcursor 和 cursor比较
- 图书信息管理系统设计
- 抖音自拍特效如何java实现_抖音特效在 Web 端的实现
- Unity TouchScript 123木头人算法
- 微信小程序 java nodejs校园自动点餐系统
- mac 不显示 外接屏幕_mac连接投影仪不显示怎么办-mac外接显示器设置教程 - 河东软件园...
- Fuchsia OS 编译教程 2019 年版