Hello, working with the new imx8m mini SOM, LVDS panel display integration is on going to get prototype alive. Custom embedded Yocto Linux image is the way to go.
- Yocto reference project fetched from Index of /toradex-manifest.git -b dunfell-5.x.y -m tdxref/default.xml
- tdx-reference-minimal-image created ok, and it boots nice, display is not yet connected.
- Verdin DSI to LVDS adapter will be used to connect custom display, Evervision panel at this time
- kernel and devshell bitbaked ($bitbake linux-toradex ; $bitbake linux-toradex -c devshell)
- Tried to follow instructions on Display Output, Resolution and Timings (Linux) | Toradex Developer Center to create device tree overlay. I have idea what to put into DTS to get proper timings but building device tree blob using …kernel-source] $make dtbs fails.
Problem: Linux device tree modification or overlay definition not possible to support bridged LVDS panel. Reason: There is not found DTS node to overlay in any of the .dtsi files for imx8mm. Node ‘i2c4/bridge@2c’ is not defined in any dtsi file under arch/arm64/boot/dts/freescale, neither there is not defined any ‘ldb’ node to overlay.
Question: ldb node is defined for different SOC’s, e.g. for imx8qm in the imx8qm-ss-lvds.dtsi file, but not for imx8mm. lvds_subsystem node is therefore missing. How to define timings and bridge adapter for imx8mm ?
If there is something in progress related to this topic, what is ETA release ? Is there any workaround or patch file to get DTS modified for LVDS panel ?
Br Vesa
First, I would recommend starting with our regular 10-inch capacitive touch screen which should really work more or less out-of-the-box (e.g. you still have to manually configure which exact device tree overlay(s) is/are applied).
More information concerning device tree overlays may be found in the following article on our developer website:
Starting with 10 inch panel is not an option just because we are doing proof of hardware, and it’s mandatory we are able to integrate the display panel which will end-up into the final product and into final selection of SOM provider, in this case 4.3 inch panel from Evervision should be able to be connected with SOM with iMX8mm.
From Variscite I can figure they define something like this for MPI DSI to LVDS display while using nxp i8mm and same DSI to LVDS adapter, their device tree contain this node and it’s easy to modify display settings by overwriting properties but not able to find same from Toradex delivery for imx8mm.
*variscite*: dsi_lvds_bridge: sn65dsi84@2c {
compatible = "ti,sn65dsi83";
reg = <...removed part...>
status = "okay";
display-timings {
lvds {
clock-frequency = <33000000>;
hactive = <800>;
vactive = <480>;
<...removed part...>
};
};
port {
dsi_lvds_bridge_in: endpoint {
remote-endpoint = <&mipi_dsi_out>;
};
};
};
Now I need to know what is correspond definition for Toradex/Verdin DSI to LVDS adapter. I can assume I2C4 should be used instead and address is the same 2c, sn65dsi83 compatibility seems to be ok for sn65dsi84. Even if i have 10" LVDS panel I will end-up this same problem, there is no reference with ‘bridge@2c’ or ‘lvds’ in any imx8mm files. I can find lvds_ti_sn65dsi83 node from imx8mp-verdin.dtsi but not sure if all the needed pins are compatible with imx8mm and whole concept in imx8mm should be different ?
We are also working with Variscite SOM’s and therefore it was easy to find that DTS fragment, but I assume also Toradex should provide DTS fragment to support their DSI LVDS bridge.
Br Vesa
Greetings @veskola!
This is the device tree overlay we currently provide for the Verdin DSI to LVDS adapter. On this overlay, the display timings begin to be defined on this line. The LVDS bridge I2C node is defined here.
Thank You,
I was able to bring-up the 4.3" 800x480 LVDS display panel (VGG804830-0TSLWG) with this DTS overlay by using custom hardware on top of Verdin adapter to adapt LVDS connectors.
/* Verdin I2C_4 */
&i2c4 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
bridge@2c {
compatible = "ti,sn65dsi83";
/* Verdin MEZ_GPIO_1 (SODIMM 206) */
enable-gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mez_gpio1>;
reg = <0x2c>;
ti,dsi-lanes = <4>;
ti,height-mm = <67>;
ti,lvds-bpp = <24>;
ti,lvds-format = <2>;
ti,width-mm = <105>;
display-timings {
native-mode = <&lvds_timing0>;
lvds_timing0: lt170410_2whc {
clock-frequency = <29700000>;
hactive = <800 800 800>;
hfront-porch = <18 18 18>;
hback-porch = <88 88 88>;
hsync-len = <22 22 22>;
vactive = <480 480 480>;
vfront-porch = <10 10 10>;
vback-porch = <32 32 32>;
vsync-len = <3 3 3>;
de-active = <1>;
pixelclk-active = <0>;
};
};
port {
dsi85_in: endpoint {
remote-endpoint = <&mipi_dsi_bridge1_out>;
};
};
};
touch@38 {
Next step is to integrate this change into Yocto project, but I will open other topic if face problems (it seems there is not yet clear instructions what is best practice to modify device-tree-overlays_git.bb recipe )
@veskola,
Glad that this works for you! Please do open another topic if you face any issues. We’re still working daily on documentation for our new BSP release.