AnsweredAssumed Answered

i.MX6Q, Linux 4.9 and Etnaviv

Question asked by maddie on Nov 15, 2017
Latest reply on Jan 31, 2018 by Chris Healy

Hi,

 

Over a month ago I posted almost same discussion, but for i.MX53. At the time I didn't remember that i.MX53 has different graphics what Etnaviv supports.

 

Well, now I'm doing same for i.MX6Q based HW and this time HW has what Etnaviv needs.

 

Short recap. I have i.MX6Q based custom HW that is running image built with Yocto 2.3, Linux 4.9 that has Etnaviv driver built-in.

 

Problem is that there is no picture. This can be due at least two different things. Either the Etnaviv driver or my device tree is not correct because it has changed from 4.1.x what I was driving before. I cannot test the NXP drivers since they don't exist on Linux 4.9.

 

So I was wondering if here is someone that could help me out a little.

 

With Linux 4.9 the result is that when device boots up the display is completely with so no display signal at all. Also in Linux SW complains that it cannot find /dev/fb0. No errors are shown from Device Tree and seems that EtnaViv driver is loaded also okay.

 

This is what Linux 4.9 prints at startup:

 

[ 2.776244] [drm] Initialized
[ 2.784420] etnaviv gpu-subsystem: bound 134000.gpu (ops gpu_ops)
[ 2.790645] etnaviv gpu-subsystem: bound 130000.gpu (ops gpu_ops)
[ 2.796848] etnaviv gpu-subsystem: bound 2204000.gpu (ops gpu_ops)
[ 2.803051] etnaviv-gpu 134000.gpu: model: GC320, revision: 5007
[ 2.857439] etnaviv-gpu 130000.gpu: model: GC2000, revision: 5108
[ 2.908405] etnaviv-gpu 2204000.gpu: model: GC355, revision: 1215
[ 2.914523] etnaviv-gpu 2204000.gpu: Ignoring GPU with VG and FE2.0
[ 2.926180] imx-ipuv3 2400000.ipu: IPUv3H probed
[ 2.940790] imx-ipuv3 2800000.ipu: IPUv3H probed

 

This is how I configure the Display to LVDS0. (I use sabresd as a base so I changed this to match my display):

 

 

panel {
  compatible = "mitsubishi,aa121td11";

  port {
    panel_in: endpoint {
      remote-endpoint = <&lvds0_out>;
    };
  };
};

 

I added the 'mitsubishi,aa121td11' display to file: drivers/gpu/drm/panel/panel-simple.c that seems that the default panel is also (hannstar,hsd100pxn1). Although I'm not sure if problem is this since even if the panel would have wrong settings and couldn't show any picture, the /dev/fb0 should still be there.

 

Also changed this to match 24-bit format that display is using:

 

&ldb {
  status = "okay";

  lvds-channel@0 {
    fsl,data-mapping = "spwg";
    fsl,data-width = <24>;
    primary;
    status = "okay";

    port@0 {
      reg = <0>;

      lvds0_out: endpoint {
        remote-endpoint = <&panel_in>;
      };

    };
  };
};

 

Rest of the ldb/ipu settings are like they are for imx6q-sabresd.

 

One thing I noticed that in Linue 4.9 the mxcfb wasn't no longer used so that might explain why /dev/fb0 isn't there, but what is the replacement or how this device tree should be configured or is there missing something?

 

In Linux 4.1.x I have the display configured like this (LVDS display) and it's working with Vivante gpu - driver.

 

mxcfb1: fb@0 {
  compatible = "fsl,mxc_sdc_fb";
  disp_dev = "ldb";
  interface_pix_fmt = "RGB24";
  default_bpp = <32>;
  int_clk = <0>;
  late_init = <0>;
  status = "enabled";
};  

&ldb {
status = "okay";
lvds-channel@0 {
   fsl,data-mapping = "spwg";
   fsl,data-width = <24>;
   primary;
   status = "okay";

   display-timings {
     native-mode = <&timing0>;
     timing0: mitsubishi {
       clock-frequency = <71500000>;
       hactive = <1280>;
       vactive = <800>;
       hback-porch = <40>;
       hfront-porch = <40>;
       vback-porch = <3>;
       vfront-porch = <10>;
       hsync-len = <80>;
       vsync-len = <10>;
     };
   };
};
};

Outcomes