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.

AM5728: LCD configuration

Part Number: AM5728
Other Parts Discussed in Thread: TPD12S521, OPA362, TPD12S015, TFP410, LM3630A, LM3639

Hi,

we had a kernel configuration and device tree working with TI kernel 4.14, but the LCD isn't working anymore with same changes applyed to TI kernel 4.19.
We use the TI kernel from git://git.ti.com/processor-sdk/processor-sdk-linux.git branch processor-sdk-linux-4.19.y with a few adaptations for our HW.
Our HW is a AM5728 system on module from Phytec (phyCORE-AM57x) with a custom basebord.
The LCD ETML101001DKA is connected via LVDS transmitter DS90C385 to VOUT2.

Below are the related sections of the device tree and kernel configuration. I noticed that CONFIG_DRM_OMAP_PANEL_DPI isn't supported anymore, but what else shall be selected?


Device tree:

    /* LVDS LCD Display*/
    lcd: display {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&lcd_pins &lcd_pins_iodelay_conf>;
        label = "lcd";
        compatible = "ETML101001DKA", "panel-dpi";

        panel-timing {
            clock-frequency = <71000000>;
            hactive = <1280>;
            vactive = <800>;

            hback-porch = <60>;
            hsync-len = <20>;
            hfront-porch = <80>;

            vback-porch = <12>;
            vsync-len = <2>;
            vfront-porch = <8>;

            hsync-active = <0>;
            vsync-active = <0>;
            de-active = <1>;
            pixelclk-active = <1>;
        };
        port {
            lcd_in: endpoint {
                remote-endpoint = <&dpi_out>;
            };
        };
    };

    backlight: backlight {
        status = "okay";
        compatible = "pwm-backlight";
        pwms = <&ehrpwm0 0 50000 0>;

        brightness-levels = <0 4 8 16 32 64 128 255>;
        default-brightness-level = <6>;

        enable-gpios = <&gpio8 23 GPIO_ACTIVE_HIGH>;
        post-pwm-on-delay-ms = <10>;
        pwm-off-delay-ms = <10>;
    };

    /* HDMI Output*/
    hdmi0: connector {
        compatible = "hdmi-connector";
        status = "disabled";
        label = "hdmi";

        type = "a";

        port {
            hdmi_connector_in: endpoint {
                remote-endpoint = <&tpd12s521_out>;
            };
        };
    };


/* LCD & HDMI */
&dss {
    status = "okay";
    vdda_video-supply = <&ldoln_reg>;

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

&hdmi {
    status = "disabled";

    vdda-supply = <&ldo4_reg>;
    pinctrl-names = "default";
    pinctrl-0 = <&hdmi_pins &i2c2_pins>;

    port {
        hdmi_out: endpoint {
            remote-endpoint = <&tpd12s521_in>;
        };
    };
};



Kernel config:

CONFIG_DRM_OMAP=y
CONFIG_OMAP2_DSS_INIT=y
CONFIG_OMAP_DSS_BASE=y
CONFIG_OMAP2_DSS=y
# CONFIG_OMAP2_DSS_DEBUG is not set
# CONFIG_OMAP2_DSS_DEBUGFS is not set
CONFIG_OMAP2_DSS_DPI=y
# CONFIG_OMAP2_DSS_VENC is not set
CONFIG_OMAP2_DSS_HDMI_COMMON=y
CONFIG_OMAP4_DSS_HDMI=y
CONFIG_OMAP4_DSS_HDMI_CEC=y
CONFIG_OMAP5_DSS_HDMI=y
# CONFIG_OMAP2_DSS_SDI is not set
# CONFIG_OMAP2_DSS_DSI is not set
CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y

#
# OMAPDRM External Display Device Drivers
#
# CONFIG_DRM_OMAP_ENCODER_OPA362 is not set
# CONFIG_DRM_OMAP_ENCODER_TPD12S015 is not set
# CONFIG_DRM_OMAP_ENCODER_TPD12S521 is not set
# CONFIG_DRM_OMAP_ENCODER_TC358768 is not set
# CONFIG_DRM_OMAP_ENCODER_SII9022 is not set
# CONFIG_DRM_OMAP_CONNECTOR_DVI is not set
CONFIG_DRM_OMAP_CONNECTOR_HDMI=y
# CONFIG_DRM_OMAP_CONNECTOR_ANALOG_TV is not set
# CONFIG_DRM_OMAP_PANEL_DSI_CM is not set
# CONFIG_DRM_OMAP_PANEL_SONY_ACX565AKM is not set
# CONFIG_DRM_OMAP_PANEL_LGPHILIPS_LB035Q02 is not set
# CONFIG_DRM_OMAP_PANEL_SHARP_LS037V7DW01 is not set
# CONFIG_DRM_OMAP_PANEL_TPO_TD028TTEC1 is not set
# CONFIG_DRM_OMAP_PANEL_TPO_TD043MTEA1 is not set
# CONFIG_DRM_OMAP_PANEL_NEC_NL8048HL11 is not set
# CONFIG_DRM_TILCDC is not set
# CONFIG_DRM_QXL is not set
# CONFIG_DRM_BOCHS is not set
# CONFIG_DRM_FSL_DCU is not set
# CONFIG_DRM_STM is not set
CONFIG_DRM_PANEL=y

#
# Display Panels
#
# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
# CONFIG_DRM_PANEL_LVDS is not set
CONFIG_DRM_PANEL_SIMPLE=y
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set
# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
CONFIG_DRM_BRIDGE=y
CONFIG_DRM_PANEL_BRIDGE=y

#
# Display Interface Bridges
#
# CONFIG_DRM_ANALOGIX_ANX78XX is not set
# CONFIG_DRM_CDNS_DSI is not set
# CONFIG_DRM_DUMB_VGA_DAC is not set
# CONFIG_DRM_LVDS_ENCODER is not set
# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
# CONFIG_DRM_NXP_PTN3460 is not set
# CONFIG_DRM_PARADE_PS8622 is not set
# CONFIG_DRM_SIL_SII8620 is not set
# CONFIG_DRM_SII902X is not set
# CONFIG_DRM_SII9234 is not set
# CONFIG_DRM_THINE_THC63LVD1024 is not set
# CONFIG_DRM_TOSHIBA_TC358767 is not set
# CONFIG_DRM_TOSHIBA_TC358768 is not set
# CONFIG_DRM_TI_TFP410 is not set
# CONFIG_DRM_I2C_ADV7511 is not set
# CONFIG_DRM_STI is not set
# CONFIG_DRM_ARCPGU is not set
# CONFIG_DRM_HISI_HIBMC is not set
# CONFIG_DRM_MXSFB is not set
# CONFIG_DRM_TINYDRM is not set
# CONFIG_DRM_PL111 is not set
# CONFIG_DRM_TVE200 is not set
# CONFIG_DRM_TIDSS is not set
CONFIG_DRM_LEGACY=y
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y

#
# Frame buffer Devices
#
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=y
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_EFI is not set
# CONFIG_FB_OPENCORES is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I740 is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CARMINE is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not set
# CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_SIMPLE is not set
# CONFIG_FB_SSD1307 is not set
# CONFIG_FB_SM712 is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=y
CONFIG_BACKLIGHT_PWM=y
# CONFIG_BACKLIGHT_PM8941_WLED is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
# CONFIG_BACKLIGHT_LP855X is not set
# CONFIG_BACKLIGHT_GPIO is not set
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_BD6107 is not set
# CONFIG_BACKLIGHT_ARCXCNN is not set
# CONFIG_BACKLIGHT_LED is not set
CONFIG_VIDEOMODE_HELPERS=y
CONFIG_HDMI=y


From the bootlog I can see, that the dss isn't initialized, I just get:
[    3.953097] omapdss_dss 58000000.dss: Linked as a consumer to regulator.26
[    3.960638] omapdss_dss 58000000.dss: Dropping the link to regulator.26

  • Hi Marcus,

    I apologize for the delayed response but in Kernel 4.19, timing data from DT is no longer used. The panel simple driver has a list of panels with the details for each panel. For example, if you look at the am57xx-evm-common.dtso file, we define our display as "osddisplays,osd070t1718-19ts". The same name is defined in the file <kernel_dir>/drivers/gpu/drm/panel/panel-simple.c and the timing is defined in the structure osddisplays_osd070t1718_19ts_mode. For your case, please add a new entry to panel-simple driver. 

    Regards,
    Krunal

  • Hi Krunal,

    thank's for your help, the LCD is working now. I got confused by the timing information that is still defined in am57xx-evm-common.dtso.

    In the end I just had to add our display to panel-simple.c, enable CONFIG_DRM_PANEL_SIMPLE in the Kernel and clean up our DT,

    which is now looking like this:

    /* LVDS LCD Display*/
    lcd: display {
    status = "okay";
    compatible = "edt,etml101001dka", "panel-dpi";
    backlight = <&backlight>;

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

    backlight: backlight {
    status = "okay";
    compatible = "pwm-backlight";
    pwms = <&ehrpwm0 0 50000 0>;

    brightness-levels = <0 4 8 16 32 64 128 255>;
    default-brightness-level = <6>;

    enable-gpios = <&gpio8 23 GPIO_ACTIVE_HIGH>;
    post-pwm-on-delay-ms = <10>;
    pwm-off-delay-ms = <10>;
    };