rk3399 lt8912 mipi->hdmi 调试

任务:

调试rk3399上lt8912 (mipi --> hdmi, lvds) 模块,配置mipi–>hdmi,完成hdmi显示

方法一:

dts中配置mipi屏参,写一个I2c驱动初始化lt8912模块

方法二:

通过dts中,mipi框架配置

方法一实现:使用自己写的初始化驱动

&i2c1 {
	status = "okay";
	clock-frequency = <100000>;			//8912要求i2c频率不得超过100k
	lt8912: lt8912@48 {
		compatible = "hdmi,lt8912";
		reg = <0x48>;		//也可以不需要该节点,因为8912需要操作3个地址,也可以在驱动中定义
		reset-gpios = <&gpio1 3 IRQ_TYPE_LEVEL_LOW>;		//根据原理图中配置复位脚
	};
};
&dsi {
	status = "okay";	
	panel@0 {
		compatible ="simple-panel-dsi";
		reg = <0>;
		power-supply = <&vcc_lcd>;
		backlight = <&backlight>;
		prepare-delay-ms = <60>;
		enable-delay-ms = <200>;
		disable-delay-ms = <200>;
		unprepare-delay-ms = <80>;
		reset-delay-ms = <80>;
		init-delay-ms = <80>;
		dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
					MIPI_DSI_MODE_VIDEO_HBP | MIPI_DSI_MODE_LPM |
					MIPI_DSI_MODE_EOT_PACKET )>;
		dsi,format = <MIPI_DSI_FMT_RGB888>;
		dsi,lanes = <4>;
		display-timings {
			native-mode = <&timing1>;
			timing1: timing1 {
				clock-frequency = <148500000>;
				hactive = <1920>;
				vactive = <1080>;
				hfront-porch = <88>;
				hsync-len = <44>;
				hback-porch = <148>;
				vfront-porch = <4>;
				vsync-len = <5>;
				vback-porch = <36>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};
		};
	};
};

&route_dsi {
		connect = <&vopb_out_dsi>;
        status = "okay";
};

&dsi_in_vopb {
	status = "okay";
};

&dsi_in_vopl {
	status = "disabled";
};

需要注意的点:
1.首先要先配好i2c,确保i2c通信没有问题。
2.在dts中将配置写好
3.在驱动中有使用到复位脚,注意获取到gpio口后需要request,后才能使用
4.8912需要使用到3个i2c地址,具体参考驱动写法
5.最后注意,如果上电方面有问题,可以查一下上电时序的问题,尤其reset脚的上电时序

方法二实现:是用rk sdk中的代码
主要的就是配置dts框架,然后打开sdk中自带8912驱动的config。
自带mipi框架的dts配置

&dsi {
	status = "okay";
	lt8912@0 {
			compatible = "lontium,lt8912";
			reg = <0>;
			reset-gpios = <&gpio1 RK_PA3 GPIO_ACTIVE_LOW>;
			i2c-bus = <&i2c1>;
			display-timings {
					native-mode = <&timing1>;
					timing1: timing1 {
							clock-frequency = <148500000>;
							hactive = <1920>;
							vactive = <1080>;
							hfront-porch = <88>;
							hsync-len = <44>;
							hback-porch = <148>;
							vfront-porch = <4>;
							vsync-len = <5>;
							vback-porch = <36>;
							hsync-active = <0>;
							vsync-active = <0>;
							de-active = <0>;
							pixelclk-active = <0>;
					};
			};
	};
};
&route_dsi {
		connect = <&vopb_out_dsi>;
        status = "okay";
};
&dsi_in_vopb {
	status = "okay";
};

&dsi_in_vopl {
	status = "disabled";
};

需要注意的是,由于使用的是官方的框架,具体的功能和配置需要查看驱动代码,或者官方的文档。出现问题主要就是dts的配置问题,需要认真核对,和检查。
最开始还遇到一个问题,就是I2c无法写入的问题,查过i2c配置也没有什么问题,后来发现是电源方面没有配置好,之后也需要注意这一点。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值