TQ3568開發(fā)板設(shè)置LVDS方法
▲點擊上方“廣州天嵌”關(guān)注公眾號后回復(fù)TQ3568獲取板卡硬件資料

TQ3568支持lvds,mipi,edp,hdmi 4種不同的顯示接口,其中mipi接口又分為mipi0與mipi1。TQ3568支持的顯示功能有:(TQ3568-coreA不支持MIPI0顯示)單屏:LVDS、MIPI0、MIPI1、eDP、HDMI雙屏:(LVDS、MIPI1)、(LVDS、HDMI)、(LVDS、eDP)、(MIPI0、MIPI1)、(MIPI1、eDP)、(MIPI1、HDMI)三屏:(LVDS、MIPI1、eDP)、(LVDS、MIPI1、HDMI)。用戶可以通過2種方法設(shè)置分辨率與顯示接口,直接在u-boot菜單設(shè)置與在源碼中設(shè)置,只需要選擇其一即可,前者修改簡單,但每次燒寫鏡像都要重新設(shè)置。如果想直接生成相關(guān)鏡像,可以直接在源碼中進行相應(yīng)修改。? ? ? ??以下以LVDS為例,講述如何通過源碼修改對應(yīng)的顯示參數(shù)。? ??LVDS(Low Voltage Differential Signaling)是一種低振幅差分信號技術(shù)。它使用幅度非常低的信號傳輸數(shù)據(jù)。故產(chǎn)生極低的噪聲,消耗非常小的功率,甚至不論頻率高低功耗都幾乎不變。此外,由于LVDS以差分方式傳送數(shù)據(jù),所以不易受共模噪音影響,是一種常見的顯示接口。
相關(guān)dts文件??
Lvds的參數(shù)設(shè)置在文件kernel/arch/arm64/boot/dts/rockchip/rk3568-tqcoreX_BaseX_lvds.dtsi 不同的版本命名可能會有不同,具體可以在kernel/arch/arm64/boot/dts/rockchip/里執(zhí)行g(shù)rep -inr panel_lvds * 便可以找到對應(yīng)的文件。一般相關(guān)的屬性為:
panel_lvds: panel_lvds {
? ? ? ?compatible = "simple-panel";
? ? ? ?backlight = <&backlight_lvds>;
? ? ? ?//power-supply = <&vcc3v3_lcd1_n>;
? ? ? ?enable-delay-ms = <20>;
? ? ? ?prepare-delay-ms = <20>;
? ? ? ?unprepare-delay-ms = <20>;
? ? ? ?disable-delay-ms = <20>;
? ? ? ?//MEDIA_BUS_FMT_RGB666_1X7X3_SPWG, MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
? ? ? ?//MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA
? ? ?//格式:6位與8位, JEIDA-日標(biāo) SPWG-美標(biāo)
? ? ? ?bus-format =;
? ? ? ?width-mm = <217>;
? ? ? ?height-mm = <136>;
? ? ? ?display-timings {
? ? ? ? ? ?native-mode = <&timing0_lvds>;
? ? ? ?//時序設(shè)置
? ? ? ? ? ?timing0_lvds: timing-lvds@0 {
? ? ? ? ? ? ? ?clock-frequency = <65000000>;
? ? ? ? ? ? ? ?hactive = <1280>;
? ? ? ? ? ? ? ?vactive = <800>;
? ? ? ? ? ? ? ?hback-porch = <80>;
? ? ? ? ? ? ? ?hfront-porch = <60>;
? ? ? ? ? ? ? ?vback-porch = <20>;
? ? ? ? ? ? ? ?vfront-porch = <10>;
? ? ? ? ? ? ? ?hsync-len = <20>;
? ? ? ? ? ? ? ?vsync-len = <8>;
? ? ? ? ? ? ? ?hsync-active = <0>;
? ? ? ? ? ? ? ?vsync-active = <0>;
? ? ? ? ? ? ? ?de-active = <0>;
? ? ? ? ? ? ? ?pixelclk-active = <0>;
? ? ? ? ? ?};
? ? ? ?};
? ? ? ?ports {
? ? ? ? ? ?#address-cells = <1>;
? ? ? ? ? ?#size-cells = <0>;
? ? ? ? ? ?port@0 {
? ? ? ? ? ? ? ?reg = <0>;
? ? ? ? ? ? ? ?dual-lvds-even-pixels;
? ? ? ? ? ? ? ?panel_in_lvds: endpoint {
? ? ? ? ? ? ? ? ? ?remote-endpoint = <&lvds_out_panel>; //與下面兩兩對應(yīng)
? ? ? ? ? ? ? ?};
? ? ? ? ? ?};
? ? ? ?};
? ?};
};
&lvds {
? ?status = "okay";
? ?ports {
? ? ? ?port@1 {
? ? ? ? ? ?reg = <1>;
? ? ? ? ? ?lvds_out_panel: endpoint {
? ? ? ? ? ? ? ?remote-endpoint = <&panel_in_lvds>; //與上面兩兩對應(yīng)
? ? ? ? ? ?};
? ? ? ?};
? ?};
};
&dsi0 {
? ?status = "disabled";
};
&video_phy0 {
? ?status = "okay";
};
//通路選擇,將lvds打到vp2中
//使能vp2中的lvds,并再打?qū)vds打到vp2,lvds可以使用vp1,vp2.
//我司將vp1留給mipi1,vp2給lvds
&route_lvds {
? ?status = "okay";
? ?connect = <&vp2_out_lvds>;
};
&lvds_in_vp1 {
? ?status = "disabled";
};
&lvds_in_vp2 {
? ?status = "okay";
};
時序設(shè)置 ?
時序相關(guān)配置主要修改上面dts中藍色部分。一般在屏的手冊中會找到類似:? ? ? ? ?

這個屏是1024*600的單路lvds屏。從時序圖可以看到它支持de模式也支持sync模式。滿足sync也會同滿足de格式,滿足de不一定同滿足sync格式,所以如果有sync則會以sync格式設(shè)置。此處我們以sync模式來設(shè)置?? ?
?//時序設(shè)置
? ? ? ? ? ?timing0_lvds: timing-lvds@0 {
? ? ? ? ? ? ? ?clock-frequency = <51200000>; ? ? //Dot clk 時鐘 51.2M
? ? ? ? ? ? ? ?hactive = <1024>; ? ? ? ? ? ? ? //行
? ? ? ? ? ? ? ?vactive = <600>; ? ? ? ? ? ? ? ? ?//列
? ? ? ? ? ? ? ?hback-porch = <140>; ? ? ? ? ? ?//H Back Porch ?水平后肩
? ? ? ? ? ? ? ?hfront-porch = <160>; ? ? ? ? ? ? //H Front Porch 水平前肩
? ? ? ? ? ? ? ?vback-porch = <20>; ? ? ? ? ? ? ? //V Back Porch ?豎直后肩
? ? ? ? ? ? ? ?vfront-porch = <12>; ? ? ? ? ? ?//V Front Porch 豎直前肩
? ? ? ? ? ? ? ?hsync-len = <20>; ? ? ? ? ? ? ? //H Pulse Width
? ? ? ? ? ? ? ?vsync-len = <8>; ? ? ? ? ? ? ? ? ?//V Pulse Width
? ? ? ? ? ? ? ?hsync-active = <0>; ? ? ? ? ? ? ? //水平同步是否要反相,0是不需要
? ? ? ? ? ? ? ?vsync-active = <0>; ? ? ? ? ? ? ? //豎直同步是否要反相
? ? ? ? ? ? ? ?de-active = <0>; ? ? ? ? ? ? ? ? ?//de信號是否要反相
? ? ? ? ? ? ? ?pixelclk-active = <0>; ? ? ? ? ? ?//時鐘是否反相
? ? ? ? ? ?};
如果沒有支持sync模式,則只要滿足hback-porch + hfront-porch + hsync-le =H Blank Time就可以了,值可以隨意設(shè),但建議不要設(shè)置得太極端,不要有0的參數(shù)H/V Pulse Width 不宜太大。如上面可以設(shè)置成hback-porch = 150, hfront-porch=150, hsync-le=20。
格式設(shè)置 ?
Dts中與格式相關(guān)的參數(shù)是:
panel_lvds: panel_lvds {
...........
? ? ? ?unprepare-delay-ms = <20>;
? ? ? ?disable-delay-ms = <20>;
? ? ? ?//MEDIA_BUS_FMT_RGB666_1X7X3_SPWG, MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
? ? ? ?//MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA
? ? ?//格式:6位與8位, JEIDA-日標(biāo) SPWG-美標(biāo)
? ? ? ?bus-format =;
? ? ? ?width-mm = <217>;
? ? ? ?height-mm = <136>;
.............
? ? ? ? ?
常用的格式有:MEDIA_BUS_FMT_RGB666_1X7X3_SPWG, MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA, MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA對應(yīng)見下圖。

一般芯片手冊會有類似的:

通過上表找到對應(yīng)顯示格式的就可以了。
通路設(shè)置 ?
Dts中與通路相關(guān)的參數(shù)有:?? ? ? ??
//通路選擇,將lvds打到vp2中
//使能vp2中的lvds,并再打?qū)vds打到vp2,lvds可以使用vp1,vp2.
//我司將vp1留給mipi1,vp2給lvds
&route_lvds { ? ? ? ? ??
? ?status = "okay";
? ?connect = <&vp2_out_lvds>;
};
&lvds_in_vp1 {
? ?status = "disabled";
};
&lvds_in_vp2 {
? ?status = "okay";
};
Lvds可以連接到vp1或者vp2,設(shè)置route_lvds 中的connect ,然后打開/關(guān)閉對應(yīng)的lvds_in_vpx即可,默認vp1連接到mipi,如果要將lvds連到vp1,要先關(guān)閉mipi顯示。以下是連接vp1的例子:
&route_lvds
{ ? ? ? ? ?
? ?status = "okay";
??
?connect = <&vp1_out_lvds>;
};
&lvds_in_vp1 {
? ?status = "ok";
};
&lvds_in_vp2 {
? ?status = "disabled";
};