imx8mq - how to change resolution mipi dsi display fb0 device

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

imx8mq - how to change resolution mipi dsi display fb0 device

4,593 Views
ksw1
Contributor I

I'm using customized LCD (1024*600) 

Display signal : imx8mq(mipi_dsi) ->>  sn65dsi (lvds) ->> LCD

How can I change fb0 video mode resolution ?

evk_8mq:/ # cat /sys/class/graphics/fb0/modes
U:1200x1920p-0

So, now only displayed partial screen of android full screen (1920*1200)

What driver or dts .. can I modify???

I want to display android image on 1024*600 LCD.

my dts file is below

&dcss {
 status = "okay";
 disp-dev = "mipi_disp";

 dcss_disp0: port@0 {
  reg = <0>;

  dcss_disp0_mipi_dsi: mipi_dsi {
   remote-endpoint = <&mipi_dsi_in>;
  };
 };
};

&mipi_dsi_phy {
 status = "okay";
};

&mipi_dsi {
 status = "okay";
 assigned-clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF_SRC>,
     <&clk IMX8MQ_CLK_DSI_CORE_SRC>,
     <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>,
     <&clk IMX8MQ_VIDEO_PLL1>;
 assigned-clock-parents = <&clk IMX8MQ_VIDEO_PLL1_OUT>,
     <&clk IMX8MQ_SYS1_PLL_266M>,
     <&clk IMX8MQ_CLK_25M>;
 assigned-clock-rates = <24000000>,
          <266000000>,
          <0>,
          <599999999>;

 port@1 {
  mipi_dsi_in: endpoint {
   remote-endpoint = <&dcss_disp0_mipi_dsi>;
  };
 };

};

&i2c2 {
 clock-frequency = <100000>;
 pinctrl-names = "default";
 pinctrl-0 = <&pinctrl_i2c2>;
    status = "okay";

    sn65dsi:sn65dsi8x@2c{
  compatible = "ti,sn65dsi8x"; /* instantiate the dsi85 driver */
     reg = <0x2c>;
  status = "okay";
    };

}

&mipi_dsi_bridge {
 status = "okay";

 panel@0 {
  //compatible = "raydium,rm67191";
  compatible = "ti,panel-sn65dsi8x";
  reg = <0>;
  pinctrl-0 = <&pinctrl_mipi_dsi_en>;
  reset-gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>;
  dsi-lanes = <4>;
  panel-width-mm = <68>;
  panel-height-mm = <121>;

        //target = <&i2c2>;
  device_en   = <&gpio5 6 GPIO_ACTIVE_HIGH>;
  backlight = <&lvds_backlight0>;
  client-device  = <&sn65dsi>;

  port {
   panel1_in: endpoint {
    remote-endpoint = <&mipi_dsi_bridge_out>;
   };
  };
 };

 port@1 {
  mipi_dsi_bridge_out: endpoint {
   remote-endpoint = <&panel1_in>;
  };
 };
};

Labels (1)
0 Kudos
Reply
5 Replies

3,201 Views
ksw1
Contributor I

Sure, I already checked reference manual.

so, android screen displayed in my target board.

Now, problem is partial displayed (only left upper side of full screen)

evk_8mq:/ # cat /sys/class/graphics/fb0/modes
U:1200x1920p-0

I want to change fb0 device frame buffer video mode

Now, default 1200x1920

I want to  change  600x1024 or 768x1024

please how can I change fb0 video mode???

0 Kudos
Reply

3,201 Views
igorpadykov
NXP Employee
NXP Employee

>please how can I change fb0 video mode?

had you changed struct display_timing rad_default_timing[] ?

Best regards
igor

0 Kudos
Reply

3,201 Views
ksw1
Contributor I

yes, done.

modified panel drm driver (based on panel-radium-rm67191.c)

video timing

static const struct display_timing sn65_7inchmip_timing = {

#if 1 //7inch
       .pixelclock = { 80000000, 100000000, 132000000 },
       .hactive = { 600, 600, 600 },
       .hfront_porch = { 100, 100, 100 },
       .hsync_len = { 8, 8, 8 },
       .hback_porch = { 45, 45, 45 },
       .vactive = { 1024, 1024, 1024 },
       .vfront_porch = { 4, 4, 4 },
       .vsync_len = { 1, 1, 1 },
       .vback_porch = { 4, 4, 4 },
#endif

 .flags = DISPLAY_FLAGS_HSYNC_LOW |
   DISPLAY_FLAGS_VSYNC_LOW |
   DISPLAY_FLAGS_DE_LOW |
   DISPLAY_FLAGS_PIXDATA_NEGEDGE,
};

i don't know why  fb0 video U:1200x1920p-0

#cat /sys/class/graphics/fb0/modes

#U:1200x1920p-0

0 Kudos
Reply

3,201 Views
igorpadykov
NXP Employee
NXP Employee

are you using android O8, it has L4.9.51 kernel.

One can try L4.14.78 (Android P9.0.0 Pie P9.0.0_1.0.0, 4.14 kernel)

linux-imx - i.MX Linux kernel 

0 Kudos
Reply

3,201 Views
igorpadykov
NXP Employee
NXP Employee

Hi sangwook

for LVDS bridge one can look and debug if necessary next linux drivers (panel-raydium-rm67191.c):

fsl-imx8mq-evk-dcss-rm67191.dts\freescale\dts\boot\arm64\arch - linux-imx - i.MX Linux kernel 

timings are in  struct display_timing rad_default_timing[] for adjusting custom panel timings.

panel-raydium-rm67191.c\panel\drm\gpu\drivers - linux-imx - i.MX Linux kernel 

AN4553 Using Open Source Debugging Tools for Linux on i.MX Processors
https://www.nxp.com/docs/en/application-note/AN4553.pdf 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply