Hi,
I’m currently doing a proof-of-concept project with a colibri imx8x module (on an Iris v2 carrier board) where I’m limited to use a specific dual-channel lvds vesa-24 display. Since the colibri SODIMM interface is only 18bit, I was hoping to use the X2 FFC connector until we get a PCB designed.
I found quite some information already using the forum, however I still can’t seem to be able to enable the interface, on the contrary, it seems some other stuff gets disabled as well in the process.
Here is a snippet of the kernel boot log:
[ 0.331623] platform bus@56220000:ldb@562210e0: Fixing up cyclic dependency with 56180000.dpu
[ 0.341479] platform panel-dpi: Fixing up cyclic dependency with 5a180000.lcdif
[ 0.350264] platform lvds0_panel: Fixing up cyclic dependency with bus@56220000:ldb@562210e0
Only the panel-dpi
message was there before. Not sure if I can ignore this, because in drivers/base/core.c
, it’s actually returning an -EINVAL
Before applying my device-tree patch, I had 3 DRM devices (using the standard imx8dx-colibri-eval-v3.dts
as a base and also leaving the default colibri-imx8x_vg-640x480_overlay.dtsi
in place), after application I had only 2. Obviously I didn’t get a signal on X2 either.
I’m building a custom linux with yocto kirkstone, I’m currently on toradex kirkstone-6.x.y
(latest), below is the patch file I’m using. I’m patching the dts
file because using an overlay throws away the lvds0_panel
definition, still need to figure that out as well. Also, this is a slimmed down version of my full patch file, just to debug the ldb issue. (I started with the dual-lvds example in kernel 4.x)
diff --git a/arch/arm64/boot/dts/freescale/imx8dx-colibri-eval-v3.dts b/arch/arm64/boot/dts/freescale/imx8dx-colibri-eval-v3.dts
index a03e08694623..41ab32242147 100644
--- a/arch/arm64/boot/dts/freescale/imx8dx-colibri-eval-v3.dts
+++ b/arch/arm64/boot/dts/freescale/imx8dx-colibri-eval-v3.dts
@@ -13,4 +13,38 @@ / {
compatible = "toradex,colibri-imx8x-eval-v3",
"toradex,colibri-imx8x",
"fsl,imx8qxp", "fsl,imx8dx";
+
+ lvds0_panel {
+ compatible = "jdi,tx26d202vm0bwa";
+ status = "okay";
+
+ port {
+ panel_lvds0_in: endpoint {
+ remote-endpoint = <&lvds0_out>;
+ };
+ };
+ };
};
+
+&ldb1 {
+ fsl,dual-channel;
+ status = "okay";
+
+ lvds-channel@0 {
+ fsl,data-mapping = "spwg";
+ fsl,data-width = <24>;
+ status = "okay";
+
+ port@1 {
+ reg = <1>;
+
+ lvds0_out: endpoint {
+ remote-endpoint = <&panel_lvds0_in>;
+ };
+ };
+ };
+};
+
+&ldb1_phy {
+ status = "okay";
+};
Hints, tips, tricks, solutions,…all are welcome! More info available upon request.
Cheers!
Nic