This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5728: Dual display configuration

Part Number: AM5728
Other Parts Discussed in Thread: THS8200

Tool/software: Linux

HI ,

    Good Day, we are interfacing two display unit with AM5728. we are using Vout1 for LCD and Vout2 for VGA. we added ths8200 chip for converting 8:8:8 RGB to VGA RGB format and we are able to get signal.

we added both display panel timings to am57xx-beagle-x15-common.dtsi file.

in dss tree structure

&dss {                                                             
    ports {                                                        
        #address-cells = <1>;                                      
        #size-cells = <0>;                                         
                                                                   
        port {                                                     
            reg = <0>;                                             
                                                                   
            dpi_out: endpoint {                                    
                remote-endpoint = <&lcd_in>;                       
                data-lines = <24>;                                 
            };                                                     
        };                                                         
    };                                                             
};

if  reg = <0> the signal is getting in vout1(LCD)

if  reg = <1> the signal is getting in vout2(VGA)


How to enable both vout1 and vout2 parallel?

Thanks & Regards

    Aslam

  • The software team have been notified. They will respond here.
  • Hello Aslam,

    Have you tried something like this:

    &dss {
        ports {                                                        
            #address-cells = <1>;                                      
            #size-cells = <0>;                                         
                                                                       
            port@0 {                                                     
                reg = <0>;                                             
                                                                       
                dpi_out0: endpoint {                                    
                    remote-endpoint = <&lcd_in>;                       
                    data-lines = <24>;                                 
                };                                                     
            };      
            port@1 {                                                     
                reg = <1>;                                             
                                                                       
                dpi_out1: endpoint {                                    
                    remote-endpoint = <&lcd_in>;                       
                    data-lines = <24>;                                 
                };                                                     
            };                                                    
        };      
    };

    Best regards,
    Kemal

  • Hi Kemal,
    I edited the am57xx-beagle-x15-common.dtsi as you mentoned. Now I am able to compile the dtsi file without any error.
    Now the vga(VOUT2) is coming but LCD(VOUT1) is not coming(Not geting any signal like Hsync,Vsync).

    Is there anything else i want to add into the dtsi file to enable both display.

    Thanks & regards
    Aslam
  • Hi Aslam,

    AM5728 has two PLLs and three VOUTs. By default, the dss driver uses PLL1  for VOUT1 and VOUT2, and PLL2 for VOUT3. For your scenario, you would like to use PLL2 for VOUT2. To do so, please modify the dpi_get_clk_src_dra7xx ()  function inside the board-support\linux-zzzz\drivers\gpu\drm\omapdrm\dss\dpi.c file as shown below.  Here PLL2_3 means "clockout 3 from PLL2".

     

    static enum dss_clk_source dpi_get_clk_src_dra7xx(enum omap_channel channel)

    {

          /*

          * Possible clock sources:

          * LCD1: FCK/PLL1_1/HDMI_PLL

          * LCD2: FCK/PLL1_3/HDMI_PLL (DRA74x: PLL2_3)

          * LCD3: FCK/PLL1_3/HDMI_PLL (DRA74x: PLL2_1)

          */

     

          switch (channel) {

          case OMAP_DSS_CHANNEL_LCD:

          {

                if (dss_pll_find_by_src(DSS_CLK_SRC_PLL1_1))

                      return DSS_CLK_SRC_PLL1_1;

                break;

          }

          case OMAP_DSS_CHANNEL_LCD2:

          {

                if (dss_pll_find_by_src(DSS_CLK_SRC_PLL2_3))

                      return DSS_CLK_SRC_PLL2_3;

                if (dss_pll_find_by_src(DSS_CLK_SRC_PLL1_3))

                      return DSS_CLK_SRC_PLL1_3;

                break;

          }

          case OMAP_DSS_CHANNEL_LCD3:

          {

                if (dss_pll_find_by_src(DSS_CLK_SRC_PLL2_1))

                      return DSS_CLK_SRC_PLL2_1;

                if (dss_pll_find_by_src(DSS_CLK_SRC_PLL1_3))

                      return DSS_CLK_SRC_PLL1_3;

                break;

          }

          default:

                break;

          }

     

          return DSS_CLK_SRC_FCK;

    }

     

  • Hi Manisha,

    I did the changes for dpi.c as you mentioned .
    and added two panel timings lcd1 and lcd2 shown below to am57xx-beaglex15-common.dtsi

    aliases {

    display0 = &lcd0;
    display1 = &lcd1;
    };

    lcd0: display {
    compatible = "osddisplays,osd070t1718-19ts", "panel-dpi";

    label = "lcd";

    backlight = <&lcd_bl>;

    enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;

    panel-timing {
    clock-frequency = <33000000>;
    hactive = <800>;
    vactive = <480>;
    hfront-porch = <210>;
    hback-porch = <16>;
    hsync-len = <30>;
    vback-porch = <10>;
    vfront-porch = <22>;
    vsync-len = <13>;
    hsync-active = <0>;
    vsync-active = <0>;
    de-active = <1>;
    pixelclk-active = <1>;
    };

    port {
    lcd_in: endpoint {
    remote-endpoint = <&dpi_out0>;
    };
    };
    };

    lcd_bl: backlight {
    compatible = "pwm-backlight";
    pwms = <&ehrpwm1 0 50000 0>;

    /* Anything lower than 241 is no longer visible */
    brightness-levels = <0 243 245 247 249 251 252 253 255>;

    default-brightness-level = <8>;
    };

    lcd1: display {
    compatible = " ", "panel-dpi";

    label = "lcd";

    backlight = <&lcd_bl>;


    panel-timing {
    clock-frequency = <33000000>;
    hactive = <800>;
    vactive = <480>;
    hfront-porch = <210>;
    hback-porch = <16>;
    hsync-len = <30>;
    vback-porch = <10>;
    vfront-porch = <22>;
    vsync-len = <13>;
    hsync-active = <0>;
    vsync-active = <0>;
    de-active = <1>;
    pixelclk-active = <1>;
    };

    port {
    lcd_in: endpoint {
    remote-endpoint = <&dpi_out1>;
    };
    };
    };

    and dss as shown below

    &dss {
    ports {
    #address-cells = <1>;
    #size-cells = <0>;

    port@0 {
    reg = <0>;

    dpi_out0: endpoint {
    remote-endpoint = <&lcd_in>;
    data-lines = <24>;
    };
    };
    port@1 {
    reg = <1>;

    dpi_out1: endpoint {
    remote-endpoint = <&lcd_in>;
    data-lines = <24>;
    };
    };
    };
    };

    After adding this it's not generating any of the signal on the both display.
    What i did so far is right or i need to make any changes for this?
    Please help me to resolve the issue.

    Thanks & Regards
    Mohamed Aslam
  • Can you try renaming the lcd0 and lcd1 port endpoint names different?

    port {

    lcd_in0: endpoint {

    remote-endpoint = <&dpi_out0>;

    };

    port {

    lcd_in1: endpoint {

    remote-endpoint = <&dpi_out1>;

    };

    dpi_out0: endpoint { 
    remote-endpoint = <&lcd_in0>; 
    data-lines = <24>;

    dpi_out1: endpoint { 
    remote-endpoint = <&lcd_in1>; 
    data-lines = <24>; 

     

  • Hi Manisha,

    I did the changes as you mentioned on my am57xx-beagle-x15-common.dtsi , vout2 is getting the signal but vou1 signal is not generating.
    Is am5728 can generate vout1 and vout2 simultaneously?
  • We have other customers who have successfully able to drive  VOUT1 and VOUT2 outputs using different PLL simultaneously . Please review and debug your setup.