How do I configure a 320x240 LCD in the Device Tree for i.MX6 Solo?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

How do I configure a 320x240 LCD in the Device Tree for i.MX6 Solo?

跳至解决方案
9,599 次查看
natesigrist
Contributor III

So I'm lazy, or I'm hoping to benefit from kernel changes and maintenance.  It's confusing as to what the correct way to define an LCD in the device tree for Linux.  I've read the binding documentation and managed to run `fbset' to change the resolution to 320x240 along with guessing the timings.  However, this is NOT clean and gives bad LCD flicker on startup.  Also, I am still not getting the right timing settings.

I feel like I am missing something simple.  I am using Hantronic HDA350-2S LCD panel.

Is there a way to do something like the following but ALSO with SPI?

&lcdif {

    compatible = "fsl,imx6dl-lcdif";

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_lcdif_dat_0

                 &pinctrl_lcdif_ctrl_0>;

    lcd-supply = <&reg_lcd_3v3>;

    display = <&display_conf>;

    status = "okay";

    display_conf: display-0 {

        bits-per-pixel = <24>;

        bus-width = <24>;

        display-timings {

            native-mode = <&timing0>;

            timing0: timing0 {

            clock-frequency = <6500000>;

            hactive = <320>;

            vactive = <240>;

            hback-porch = <68>;

            hfront-porch = <20>;

            vback-porch = <18>;

            vfront-porch = <4>;

            hsync-len = <10>;

            vsync-len = <10>;

            hsync-active = <0>;

            vsync-active = <0>;

            de-active = <1>;

            pixelclk-active = <0>;

        };

    };

};

标签 (4)
0 项奖励
1 解答
3,450 次查看
natesigrist
Contributor III

Turns out I didn't need half that much.  But it would have been easier to enter the LCD properties in a device tree rather than editing the driver.  The following is what I did for a Hantronic HDA350-2S LCD panel,

Device Tree:

mxcfb2: fb@1 {

     compatible = "fsl,mxc_sdc_fb";

     disp_dev = "lcd";

     interface_pix_fmt = "RGB24";

     mode_str ="CLAA-QVGA";

     default_bpp = <24>;

     int_clk = <0>;

     late_init = <0>;

     status = "okay";

};

lcd@0 {

     compatible = "fsl,lcd";

     pinctrl-names = "default";

     pinctrl-0 = <&pinctrl_ipu1_1>;

     ipu_id = <0>;

     disp_id = <0>;

     default_ifmt = "BGR24";

     status = "okay";

};

And I modified the Kernel driver (from ArchARM sources):

static struct fb_videomode lcdif_modedb[] = {

  {

  /* 320x240 @ 56 Hz , pixel clk @ 6.5MHz */

  "CLAA-QVGA", 60, 320, 240, 153846, 68, 20, 18, 4, 1, 1,

  0,

  FB_VMODE_NONINTERLACED,

  0

},} }

在原帖中查看解决方案

0 项奖励
7 回复数
3,450 次查看
pedroruizdiaz
Contributor II

Hi Nate,

Did you find a resolution? I'm fighting with the same problem, I have a generic 800x480 Chinese display but modifying my device tree doesn't modify my blank LCD screen. Changing fbset doesn't change anything but its values. Is there a generic driver with its corresponding device tree node?

0 项奖励
3,451 次查看
natesigrist
Contributor III

Turns out I didn't need half that much.  But it would have been easier to enter the LCD properties in a device tree rather than editing the driver.  The following is what I did for a Hantronic HDA350-2S LCD panel,

Device Tree:

mxcfb2: fb@1 {

     compatible = "fsl,mxc_sdc_fb";

     disp_dev = "lcd";

     interface_pix_fmt = "RGB24";

     mode_str ="CLAA-QVGA";

     default_bpp = <24>;

     int_clk = <0>;

     late_init = <0>;

     status = "okay";

};

lcd@0 {

     compatible = "fsl,lcd";

     pinctrl-names = "default";

     pinctrl-0 = <&pinctrl_ipu1_1>;

     ipu_id = <0>;

     disp_id = <0>;

     default_ifmt = "BGR24";

     status = "okay";

};

And I modified the Kernel driver (from ArchARM sources):

static struct fb_videomode lcdif_modedb[] = {

  {

  /* 320x240 @ 56 Hz , pixel clk @ 6.5MHz */

  "CLAA-QVGA", 60, 320, 240, 153846, 68, 20, 18, 4, 1, 1,

  0,

  FB_VMODE_NONINTERLACED,

  0

},} }

0 项奖励
3,450 次查看
LPs
Contributor III

Hi Nate,

  I'm fighting with a similar issue on imx6sx.

I'm trying to set up a display 320x240 with the same parameters as your lcd.

I followed your instruction and now I see a completely white scree at the end of kernel init, and /dev/fb0 is mounted.

What can I do now to test fb?

Thanks

0 项奖励
3,450 次查看
jimmychan
NXP TechSupport
NXP TechSupport

For your reference, I have a qr_test.c.

Show the QR code on the display and save in a BMP file

The program can display the QR code to display via fb0. You may modify the code to ignore the QR code and simply write your own pattern.

0 项奖励
3,450 次查看
natesigrist
Contributor III

I am also using the following,

     lcd@0 {
           compatible = "fsl,lcd";
            ipu_id = ;
           disp_id = ;
           default_ifmt = "BGR24";
           pinctrl-names = "default";
           pinctrl-0 = <&pinctrl_ipu1_1>;/*pinctrl_lcdif_dat_0
                           &pinctrl_lcdif_ctrl_0>;*/
           status = "okay";
           spics-gpios = <&gpio3 19 0>;
      };
     mxcfb1: fb@0 {
           compatible = "fsl,mxc_sdc_fb";
           disp_dev = "lcd";
           interface_pix_fmt = "BGR24";
           mode_str ="HDA350-QVGA";
           default_bpp = <24>;
           int_clk = <0>;
           late_init = <0>;
           status = "okay";
      };

lcdif doesn't seem to be working for iMX6-Solo even though it describes the connected LCD.  There are registers that can be configured for LCD as well but they are not well documented.  Anyone have any suggestions on what to do next?

Again, I get the tty login prompt but only the first 4 lines followed by a line, then blank screen, then another white line at the bottom of the screen.  Even when the display is 'stable' I still do not get a full console screen.  (I tried adjusting it using stty but this did not change anything)

0 项奖励
3,450 次查看
jimmychan
NXP TechSupport
NXP TechSupport

According to the BSP Linux reference manual, the elcdif driver only DOTCLK mode of the ELCDIF API is tested. Is your LCD is running in DOTCLK mode? please try the DOTCLK mode first.

0 项奖励
3,450 次查看
natesigrist
Contributor III

Where can I find more information about "DOTCLK mode" and ELCDIF API?

0 项奖励