iMX6QuadPlus and Video LVDS in Linux 4.12

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

iMX6QuadPlus and Video LVDS in Linux 4.12

778 Views
gianlucarenzi71
Contributor II

I have a big issue bringing up video output and framebuffer in a custom board with iMX6QuadPlus based board.

I have another board with iMX6DualLite CPU with the same bootloader, the same kernel and the same distribution and everything is working as expected.

Basically both boards are different by the flash-header (for memory layout and registers) and they are using the same kernel and bootloader. I can switch the sd-card for boot, simply rewriting the flash-header to boot the iMX6QP or iMX6DL...

 

I have used  the Barebox Bootloader (2017.02) and the video on the Barebox Bootloader is working good in both boards. So I can exclude an hardware issue.

 

The device-tree are different by an include (for imx6qp.dtsi or imx6dl.dtsi).

The kernel linux and the rootfilesystem are the same.

 

Can anybody explain something about this issue??

 

In attachment the dmesg output and the dts files passed by Barebox to Linux on both processors.

 

Hope this helps someone...

Original Attachment has been moved to: dts-imx6dl.zip

Original Attachment has been moved to: dmesg-imx6q.zip

Original Attachment has been moved to: dts-imx6q.zip

Original Attachment has been moved to: dmesg-imx6dl.zip

0 Kudos
1 Reply

474 Views
gianlucarenzi71
Contributor II

Now everything is clear. The device-tree for iMX6QP need some extra stuff like prg and pre:

soc {

/*
* Those definitions pre-prg are for usage the display controller
* in Linux Kernel higher than 4.11...
*/
aips-bus@02100000 {
pre1: pre@21c8000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021c8000 0x1000>;
interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE0>;
clock-names = "axi";
fsl,iram = <&ocram2>;
};

pre2: pre@21c9000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021c9000 0x1000>;
interrupts = <GIC_SPI 97 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE1>;
clock-names = "axi";
fsl,iram = <&ocram2>;
};

pre3: pre@21ca000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021ca000 0x1000>;
interrupts = <GIC_SPI 98 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE2>;
clock-names = "axi";
fsl,iram = <&ocram3>;
};

pre4: pre@21cb000 {
compatible = "fsl,imx6qp-pre";
reg = <0x021cb000 0x1000>;
interrupts = <GIC_SPI 99 IRQ_TYPE_EDGE_RISING>;
clocks = <&clks IMX6QDL_CLK_PRE3>;
clock-names = "axi";
fsl,iram = <&ocram3>;
};

prg1: prg@21cc000 {
compatible = "fsl,imx6qp-prg";
reg = <0x021cc000 0x1000>;
clocks = <&clks IMX6QDL_CLK_PRG0_APB>,
<&clks IMX6QDL_CLK_PRG0_AXI>;
clock-names = "ipg", "axi";
fsl,pres = <&pre1>, <&pre2>, <&pre3>;
};

prg2: prg@21cd000 {
compatible = "fsl,imx6qp-prg";
reg = <0x021cd000 0x1000>;
clocks = <&clks IMX6QDL_CLK_PRG1_APB>,
<&clks IMX6QDL_CLK_PRG1_AXI>;
clock-names = "ipg", "axi";
fsl,pres = <&pre4>, <&pre2>, <&pre3>;
};
};

&ipu1 {
compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
fsl,prg = <&prg1>;
};

&ipu2 {
compatible = "fsl,imx6qp-ipu", "fsl,imx6q-ipu";
fsl,prg = <&prg2>;
};

And the kernel 4.12-rc7 works like a charm!!!

0 Kudos