TMDSSK3358: How the LCD pins are assigned by the device tree?

Part Number: TMDSSK3358

Tool/software:

Hi,

I bought the AM335X-EVMSK to test some components. One of the components I'm interested in is the TFT screen. The starter kit uses NHD-2.4-240320CF-CSXN#-F the PINS connected to Processor are

I revised the DTS file:

			AM33XX_PADCONF(AM335X_PIN_GPMC_AD8, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad8.lcd_data23 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD9, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad9.lcd_data22 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD10, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad10.lcd_data21 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad11.lcd_data20 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad12.lcd_data19 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad13.lcd_data18 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad14.lcd_data17 */
			AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad15.lcd_data16 */
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT, MUX_MODE0)
			AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT, MUX_MODE0)

How is the display PIN linked to the processor PIN? For example, how to be the processor PIN corresponds to the DB0 PIN?

Thanks, 

  • Hi Xavier,

    I have assigned your query to our expert. While he is out of office, could you get started, referring the following DT:

    1. https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/am335x-evmsk.dts?h=ti-linux-6.1.y#n723 (Helps setup the Pin mux and LCDC node)

    2. Timing is defined here: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/panel/panel-simple.c?h=ti-linux-6.1.y#n2927 (LCDC specific timing) 

    Best Regards,

    Suren

  • Thanks Suren,

    I want to connect NHD-2.4-240320CF-CSXN#-F to Texas processor and the connection tree is different and not included in the kernel support list. 

    I need to understand how to assign the PINs and how to add the parameters to the Kernel. Luckily, I noticed that the driver is included in the Kernel.

    I am waiting for your colleague to be able to solve my doubts.

    Regards

  • Hi Xavier,

    My colleague is out of office for a week. Please expect a response when he returns to office in 10 days.

    Apologies for the delay.

    Best Regards,

    Suren

  • Hi Krunal, 

    Yes, I know how to assign the PINs with pinmux tool but I need to know how these pins are used by drivers.

    The starter kit LCD uses 8RGB, DR, DG and DB. My question is how the system knows the PIN AM335X_PIN_LCD_DATA0 is DR0, if this corresponding PIN with DR0. How to change this PIN order?

    In a previous comment, Suren shared a file and I show this value:

    bus_format = MEDIA_BUS_FMT_RGB888_1X24.

    This value is what links the pins according to the order in which they are added in the devicetree?

    Thanks, 

    Xavier

  • Hi,

    Yes your understanding is correct. Also, here is the init code for the LCDC driver where it reads to bus formats: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/tilcdc/tilcdc_drv.c?h=ti-linux-5.10.y#n169

    Regards,
    Krunal

  • Hi, 

    Thanks for confirming it. When I plug the new display, will the OS detect it and auto-configure, or do I need to configure some OS files to make it work?

    Where can I find documentation on how to set up new screen?

    Thanks, 

  • Hi,

    I am assuming you are planning on connecting a LCD panel. If that's the case, there is no EDID information that gets passed between the driver and LCD panel. The driver will use the timing information defined in panels-simple.c to generate the appropriate clock and data signals. We don't have any documents but you can refer to our DTS: 

    1. Panel: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/am335x-evmsk.dts?h=ti-linux-6.1.y#n190

    2. LCD: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/am335x-evmsk.dts?h=ti-linux-6.1.y#n723 

    Regards,
    Krunal

  • Ok, thank you.

    In July, I will receive the LCD and LCD Adapter to connect and test the configuration options. 

  • Hi Krunal, 

    Finally, I have the PCB with LCD and Texas processor connected. I charged the driver but when started the system I didn't show information about a new display or driver in /var/log/message. How to debug the LCD configuration?

    Thanks, 

  • Hi,

    What happens if you run kmstest and any boot logs you can share?

    Regards,
    Krunal

  • Hi Krunal,

    I tested the command kmstest and I had this error:

    root@am335x-evm:~# kmstest
    Could not get DRM master permission. Card already in use

    In the other commands, I have this result. For size, the settings still use the default LCD for EVM kit.

    root@am335x-evm:~# modetest -c
    trying to open device 'i915'...failed
    trying to open device 'amdgpu'...failed
    trying to open device 'radeon'...failed
    trying to open device 'nouveau'...failed
    trying to open device 'vmwgfx'...failed
    trying to open device 'omapdrm'...failed
    trying to open device 'exynos'...failed
    trying to open device 'tilcdc'...done
    Connectors:
    id encoder status name size (mm) modes encoders
    34 33 connected DPI-1 155x90 1 33
    modes:
    index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
    #0 800x480 61.89 800 839 886 925 480 493 495 524 30000 flags: ; type: preferred, driver
    props:
    1 EDID:
    flags: immutable blob
    blobs:
    
    value:
    2 DPMS:
    flags: enum
    enums: On=0 Standby=1 Suspend=2 Off=3
    value: 0
    5 link-status:
    flags: enum
    enums: Good=0 Bad=1
    value: 0
    6 non-desktop:
    flags: immutable range
    values: 0 1
    value: 0
    4 TILE:
    flags: immutable blob
    blobs:
    
    value:
    20 CRTC_ID:
    flags: object
    value: 32
    
    root@am335x-evm:~# modetest -p
    trying to open device 'i915'...failed
    trying to open device 'amdgpu'...failed
    trying to open device 'radeon'...failed
    trying to open device 'nouveau'...failed
    trying to open device 'vmwgfx'...failed
    trying to open device 'omapdrm'...failed
    trying to open device 'exynos'...failed
    trying to open device 'tilcdc'...done
    CRTCs:
    id fb pos size
    32 36 (0,0) (800x480)
    #0 800x480 61.89 800 839 886 925 480 493 495 524 30000 flags: ; type: preferred, driver
    props:
    22 ACTIVE:
    flags: range
    values: 0 1
    value: 1
    23 MODE_ID:
    flags: blob
    blobs:
    
    value:
    307500002003470376039d030000e001
    ed01ef010c0200003e00000000000000
    48000000383030783438300000000000
    00000000000000000000000000000000
    00000000
    19 OUT_FENCE_PTR:
    flags: range
    values: 0 18446744073709551615
    value: 0
    24 VRR_ENABLED:
    flags: range
    values: 0 1
    value: 0
    
    Planes:
    id crtc fb CRTC x,y x,y gamma size possible crtcs
    31 32 36 0,0 0,0 0 0x00000001
    formats: BG16 RG24 XR24
    props:
    8 type:
    flags: immutable enum
    enums: Overlay=0 Primary=1 Cursor=2
    value: 1
    17 FB_ID:
    flags: object
    value: 36
    18 IN_FENCE_FD:
    flags: signed range
    values: -1 2147483647
    value: -1
    20 CRTC_ID:
    flags: object
    value: 32
    13 CRTC_X:
    flags: signed range
    values: -2147483648 2147483647
    value: 0
    14 CRTC_Y:
    flags: signed range
    values: -2147483648 2147483647
    value: 0
    15 CRTC_W:
    flags: range
    values: 0 2147483647
    value: 800
    16 CRTC_H:
    flags: range
    values: 0 2147483647
    value: 480
    9 SRC_X:
    flags: range
    values: 0 4294967295
    value: 0
    10 SRC_Y:
    flags: range
    values: 0 4294967295
    value: 0
    11 SRC_W:
    flags: range
    values: 0 4294967295
    value: 52428800
    12 SRC_H:
    flags: range
    values: 0 4294967295
    value: 31457280
    
    root@am335x-evm:~# kmscube
    Using display 0x19af98 with EGL version 1.5
    ===================================
    EGL information:
    version: "1.5"
    vendor: "Mesa Project"
    client extensions: "EGL_EXT_client_extensions EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug EGL_EXT_platform_wayland EGL_MESA_platform_gbm EGL_MESA_platform_surfaceless"
    display extensions: "EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_IMG_cl_image EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_WL_bind_wayland_display "
    ===================================
    OpenGL ES 2.x information:
    version: "OpenGL ES 2.0 build 1.17@4948957"
    shading language version: "OpenGL ES GLSL ES 1.00 build 1.17@4948957"
    vendor: "Imagination Technologies"
    renderer: "PowerVR SGX 530"
    extensions: "GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth_texture GL_OES_egl_sync GL_OES_element_index_uint GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_required_internalformat GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_half_float GL_OES_vertex_array_object GL_OES_vertex_half_float GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_EXT_multi_draw_arrays GL_EXT_multisampled_render_to_texture GL_EXT_shader_texture_lod GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_IMG_multisampled_render_to_texture GL_IMG_program_binary GL_IMG_read_format GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_IMG_texture_npot GL_IMG_uniform_buffer_object GL_KHR_debug GL_EXT_texture_storage"
    ===================================
    Using modifier ffffffffffffff
    Modifiers failed!
    failed to set mode: Permission denied
    root@am335x-evm:~# kmscube -a
    Using display 0x19bf98 with EGL version 1.5
    ===================================
    EGL information:
    version: "1.5"
    vendor: "Mesa Project"
    client extensions: "EGL_EXT_client_extensions EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug EGL_EXT_platform_wayland EGL_MESA_platform_gbm EGL_MESA_platform_surfaceless"
    display extensions: "EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_IMG_cl_image EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_WL_bind_wayland_display "
    ===================================
    OpenGL ES 2.x information:
    version: "OpenGL ES 2.0 build 1.17@4948957"
    shading language version: "OpenGL ES GLSL ES 1.00 build 1.17@4948957"
    vendor: "Imagination Technologies"
    renderer: "PowerVR SGX 530"
    extensions: "GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth_texture GL_OES_egl_sync GL_OES_element_index_uint GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_required_internalformat GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float GL_OES_texture_half_float GL_OES_vertex_array_object GL_OES_vertex_half_float GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_EXT_multi_draw_arrays GL_EXT_multisampled_render_to_texture GL_EXT_shader_texture_lod GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_IMG_multisampled_render_to_texture GL_IMG_program_binary GL_IMG_read_format GL_IMG_shader_binary GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_IMG_texture_npot GL_IMG_uniform_buffer_object GL_KHR_debug GL_EXT_texture_storage"
    ===================================
    no eglDupNativeFenceFDANDROID

    What step can I have wrong?

    Thanks,

  • Hi,

    It seems like weston is running, can you try to disable weston? Next, try running kmsprint again.

    Regards,
    Krunal

  • Hi Krunal, 

    Now if I executed the command kmsprint, I have this error:

    root@am335x-evm:~# kmsprint
    terminate called after throwing an instance of 'std::runtime_error'
      what():  No modesetting DRM card found
    Aborted (core dumped)

    I tried to add these lines in panel-simple.c.

    static const struct drm_display_mode newhaven_nhd_24_240320cf_csxn_f_mode = { 
        .clock = 6000,
        .hdisplay = 240, 
        .hsync_start = 240 + 2, 
        .hsync_end = 240 + 2 + 20, 
        .htotal = 240 + 2 + 20 + 2, 
        .vdisplay = 320, 
        .vsync_start = 320 + 2, 
        .vsync_end = 320 + 2 + 10, 
        .vtotal = 320 + 2 + 10 + 2, 
        .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, 
    };
    static const struct panel_desc newhaven_nhd_24_240320cf_csxn_f = {
        .modes = &newhaven_nhd_24_240320cf_csxn_f_mode, 
        .num_modes = 1, 
        .bpc = 8, 
        .size = { 
            .width = 36, 
            .height = 48, 
        }, 
        .bus_format = MEDIA_BUS_FMT_RGB888_1X24, 
        .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE | DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE, 
        .connector_type = DRM_MODE_CONNECTOR_DPI,
    };

    In menuconfig, I enable the support to panel simple and ST7789Vi driver.

    In devicetree, I added these lines:

          backlight: backlight {
                compatible = "pwm-backlight";
                pwms = <&ecap0 0 50000 0>;
                brightness-levels = <0 51 53 56 62 75 101 152 255>;
                default-brightness-level = <8>;
          };
    
          panel {
                compatible = "newhaven,nhd-2.4-240320cd-csxn-f";
    
                pinctrl-names = "default", "sleep";
                pinctrl-0 = <&lcd_pins_default>;
                pinctrl-1 = <&lcd_pins_sleep>;
                backlight = <&backlight>;
    
                port {
                      panel_0: endpoint@0 {
                            remote-endpoint = <&lcdc_0>;
                      };
                };
          };
    
          lcd_pins_default: lcd_pins_default {
                pinctrl-single,pins = <
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD8, PIN_OUTPUT, MUX_MODE1)  /* gpmc_ad8.lcd_data23 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD9, PIN_OUTPUT, MUX_MODE1)  /* gpmc_ad9.lcd_data22 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD10, PIN_OUTPUT, MUX_MODE1) /* gpmc_ad10.lcd_data21 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_OUTPUT, MUX_MODE1) /* gpmc_ad11.lcd_data20 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_OUTPUT, MUX_MODE1) /* gpmc_ad12.lcd_data19 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_OUTPUT, MUX_MODE1) /* gpmc_ad13.lcd_data18 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_OUTPUT, MUX_MODE1) /* gpmc_ad14.lcd_data17 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_OUTPUT, MUX_MODE1) /* gpmc_ad15.lcd_data16 */
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT, MUX_MODE0)
                      AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT, MUX_MODE0)
                >;
          };
    
          lcd_pins_sleep: lcd_pins_sleep {
                pinctrl-single,pins = <
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD8, PIN_INPUT_PULLDOWN, MUX_MODE7)      /* gpmc_ad8.lcd_data23 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD9, PIN_INPUT_PULLDOWN, MUX_MODE7)      /* gpmc_ad9.lcd_data22 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD10, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* gpmc_ad10.lcd_data21 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* gpmc_ad11.lcd_data20 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* gpmc_ad12.lcd_data19 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* gpmc_ad13.lcd_data18 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* gpmc_ad14.lcd_data17 */
                      AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* gpmc_ad15.lcd_data16 */
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PULL_DISABLE, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
                      AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
                >;
          };
    
          ecap0_pins: backlight_pins {
                pinctrl-single,pins = <
                      AM33XX_PADCONF(AM335X_PIN_ECAP0_IN_PWM0_OUT, 0x0, MUX_MODE0)
                >;
          };
    

    I think I need to somehow connect the simple panel with the device tree.

    Thanks, 

  • Hi,

    What's the purpose of the ST7789Vi driver? Also, could you share your boot log for further investigation?

    Regards,

    Krunal

  • Hi, 

    Do I not need a driver?

    I attach the boot log.

    1538.bootlog.txt
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 5.10.100-rt62-g204ec708dc (root@Powertek) (arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025, GNU ld (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 2.33.1.20191209) #1 PREEMPT_RT Tue Jul 23 12:20:23 CEST 2024
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM335x EVM
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] efi: UEFI not found.
    [    0.000000] cma: Reserved 48 MiB at 0xbd000000
    [    0.000000] Zone ranges:
    [    0.000000]   Normal   [mem 0x0000000080000000-0x00000000afefffff]
    [    0.000000]   HighMem  [mem 0x00000000aff00000-0x00000000bfffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000afefffff]
    [    0.000000]   node   0: [mem 0x00000000b0000000-0x00000000bfffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
    [    0.000000] On node 0 totalpages: 261888
    [    0.000000]   Normal zone: 1726 pages used for memmap
    [    0.000000]   Normal zone: 0 pages reserved
    [    0.000000]   Normal zone: 196352 pages, LIFO batch:63
    [    0.000000]   HighMem zone: 65536 pages, LIFO batch:15
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (sgx neon)
    [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [    0.000000] pcpu-alloc: [0] 0 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 260162
    [    0.000000] Kernel command line: root=PARTUUID=f5e97491-02 rootwait rw console=ttyO0,115200n8,115200
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 972760K/1047552K available (9216K kernel code, 716K rwdata, 3396K rodata, 1024K init, 279K bss, 25640K reserved, 49152K cma-reserved, 212992K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] rcu: 	RCU priority boosting: priority 1 delay 500 ms.
    [    0.000000] rcu: 	RCU_SOFTIRQ processing moved to rcuc kthreads.
    [    0.000000] 	No expedited grace period (rcu_normal_after_boot).
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    [    0.000000] IRQ: Found an INTC at 0x(ptrval) (revision 5.0) with 128 interrupts
    [    0.000000] random: get_random_bytes called from start_kernel+0x318/0x4d4 with crng_init=0
    [    0.000000] TI gptimer clocksource: always-on /ocp/interconnect@44c00000/segment@200000/target-module@31000
    [    0.000003] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000024] clocksource: dmtimer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000347] TI gptimer clockevent: 24000000 Hz at /ocp/interconnect@48000000/segment@0/target-module@40000
    [    0.001311] Console: colour dummy device 80x30
    [    0.001355] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'
    [    0.001361] This ensures that you still see kernel messages. Please
    [    0.001364] update your kernel commandline.
    [    0.001399] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
    [    0.090429] pid_max: default: 32768 minimum: 301
    [    0.090614] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.090637] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.091663] CPU: Testing write buffer coherency: ok
    [    0.091735] CPU0: Spectre v2: using BPIALL workaround
    [    0.092680] Setting up static identity map for 0x80100000 - 0x80100060
    [    0.092845] rcu: Hierarchical SRCU implementation.
    [    0.093205] EFI services will not be available.
    [    0.093666] devtmpfs: initialized
    [    0.107075] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.107308] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.107339] futex hash table entries: 256 (order: 1, 8192 bytes, linear)
    [    0.111117] pinctrl core: initialized pinctrl subsystem
    [    0.112043] DMI not present or invalid.
    [    0.112559] NET: Registered protocol family 16
    [    0.115270] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.133595] l3-aon-clkctrl:0000:0: failed to disable
    [    0.134955] thermal_sys: Registered thermal governor 'fair_share'
    [    0.134968] thermal_sys: Registered thermal governor 'bang_bang'
    [    0.134972] thermal_sys: Registered thermal governor 'step_wise'
    [    0.134976] thermal_sys: Registered thermal governor 'user_space'
    [    1.366908] No ATAGs?
    [    1.366928] hw-breakpoint: debug architecture 0x4 unsupported.
    [    1.392796] reg-fixed-voltage fixedregulator0: GPIO lookup for consumer (null)
    [    1.392821] reg-fixed-voltage fixedregulator0: using device tree for GPIO lookup
    [    1.392838] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator0[0]'
    [    1.392872] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator0[0]'
    [    1.392888] reg-fixed-voltage fixedregulator0: using lookup tables for GPIO lookup
    [    1.392896] reg-fixed-voltage fixedregulator0: No GPIO consumer (null) found
    [    1.393260] reg-fixed-voltage fixedregulator1: GPIO lookup for consumer (null)
    [    1.393272] reg-fixed-voltage fixedregulator1: using device tree for GPIO lookup
    [    1.393285] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator1[0]'
    [    1.393305] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator1[0]'
    [    1.393319] reg-fixed-voltage fixedregulator1: using lookup tables for GPIO lookup
    [    1.393325] reg-fixed-voltage fixedregulator1: No GPIO consumer (null) found
    [    1.393605] reg-fixed-voltage fixedregulator2: GPIO lookup for consumer (null)
    [    1.393615] reg-fixed-voltage fixedregulator2: using device tree for GPIO lookup
    [    1.393627] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator2[0]'
    [    1.393657] reg-fixed-voltage fixedregulator2: No GPIO consumer (null) found
    [    1.393752] reg-fixed-voltage fixedregulator-v1_8d: GPIO lookup for consumer (null)
    [    1.393761] reg-fixed-voltage fixedregulator-v1_8d: using device tree for GPIO lookup
    [    1.393774] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-v1_8d[0]'
    [    1.393793] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-v1_8d[0]'
    [    1.393808] reg-fixed-voltage fixedregulator-v1_8d: using lookup tables for GPIO lookup
    [    1.393814] reg-fixed-voltage fixedregulator-v1_8d: No GPIO consumer (null) found
    [    1.393989] v1_8d: supplied by vbat
    [    1.394554] reg-fixed-voltage fixedregulator-v3_3d: GPIO lookup for consumer (null)
    [    1.394568] reg-fixed-voltage fixedregulator-v3_3d: using device tree for GPIO lookup
    [    1.394582] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-v3_3d[0]'
    [    1.394602] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-v3_3d[0]'
    [    1.394617] reg-fixed-voltage fixedregulator-v3_3d: using lookup tables for GPIO lookup
    [    1.394624] reg-fixed-voltage fixedregulator-v3_3d: No GPIO consumer (null) found
    [    1.394822] v3_3d: supplied by vbat
    [    1.395973] iommu: Default domain type: Translated 
    [    1.398182] SCSI subsystem initialized
    [    1.398681] mc: Linux media interface: v0.10
    [    1.398720] videodev: Linux video capture interface: v2.00
    [    1.398843] pps_core: LinuxPPS API ver. 1 registered
    [    1.398851] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    1.398873] PTP clock support registered
    [    1.398942] EDAC MC: Ver: 3.0.0
    [    1.400764] Advanced Linux Sound Architecture Driver Initialized.
    [    1.402259] clocksource: Switched to clocksource dmtimer
    [    1.411074] NET: Registered protocol family 2
    [    1.411366] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    1.412786] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 14336 bytes, linear)
    [    1.412834] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    1.412930] TCP bind hash table entries: 8192 (order: 5, 196608 bytes, linear)
    [    1.413130] TCP: Hash tables configured (established 8192 bind 8192)
    [    1.413299] UDP hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    1.413347] UDP-Lite hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    1.413520] NET: Registered protocol family 1
    [    1.414130] RPC: Registered named UNIX socket transport module.
    [    1.414143] RPC: Registered udp transport module.
    [    1.414147] RPC: Registered tcp transport module.
    [    1.414150] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    1.414166] PCI: CLS 0 bytes, default 64
    [    1.415176] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    1.416518] Initialise system trusted keyrings
    [    1.416898] workingset: timestamp_bits=14 max_order=18 bucket_order=4
    [    1.421517] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    1.422680] NFS: Registering the id_resolver key type
    [    1.422728] Key type id_resolver registered
    [    1.422733] Key type id_legacy registered
    [    1.422823] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    1.422832] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    1.422875] ntfs: driver 2.1.32 [Flags: R/O].
    [    1.423505] Key type asymmetric registered
    [    1.423521] Asymmetric key parser 'x509' registered
    [    1.423593] bounce: pool size: 64 pages
    [    1.423656] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
    [    1.423666] io scheduler mq-deadline registered
    [    1.423672] io scheduler kyber registered
    [    1.839382] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    1.946734] debugfs: Directory '49000000.dma' with parent 'dmaengine' already present!
    [    1.946772] edma 49000000.dma: TI EDMA DMA engine driver
    [    1.992428] pinctrl-single 44e10800.pinmux: 142 pins, size 568
    [    1.996807] pwm-backlight backlight: GPIO lookup for consumer enable
    [    1.996831] pwm-backlight backlight: using device tree for GPIO lookup
    [    1.996860] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/backlight[0]'
    [    1.996890] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/backlight[0]'
    [    1.996907] pwm-backlight backlight: using lookup tables for GPIO lookup
    [    1.996916] pwm-backlight backlight: No GPIO consumer enable found
    [    1.996945] pwm-backlight backlight: supply power not found, using dummy regulator
    [    2.054189] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    2.058627] omap8250 44e09000.serial: GPIO lookup for consumer rs485-term
    [    2.058651] omap8250 44e09000.serial: using device tree for GPIO lookup
    [    2.058673] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@9000/serial@0[0]'
    [    2.058718] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@9000/serial@0[0]'
    [    2.058749] omap8250 44e09000.serial: using lookup tables for GPIO lookup
    [    2.058757] omap8250 44e09000.serial: No GPIO consumer rs485-term found
    [    2.058811] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 21, base_baud = 3000000) is a 8250
    [    2.058971] printk: console [ttyS0] enabled
    [    2.060647] omap8250 48022000.serial: GPIO lookup for consumer rs485-term
    [    2.060667] omap8250 48022000.serial: using device tree for GPIO lookup
    [    2.060685] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@22000/serial@0[0]'
    [    2.060725] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@22000/serial@0[0]'
    [    2.060754] omap8250 48022000.serial: using lookup tables for GPIO lookup
    [    2.060761] omap8250 48022000.serial: No GPIO consumer rs485-term found
    [    2.060806] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 28, base_baud = 3000000) is a 8250
    [    2.064397] omap_rng 48310000.rng: Random Number Generator ver. 20
    [    2.067591] random: fast init done
    [    2.072477] random: crng init done
    [    2.088271] brd: module loaded
    [    2.097951] loop: module loaded
    [    2.104204] mdio_bus fixed-0: GPIO lookup for consumer reset
    [    2.104228] mdio_bus fixed-0: using lookup tables for GPIO lookup
    [    2.104236] mdio_bus fixed-0: No GPIO consumer reset found
    [    2.112595] mdio_bus 4a101000.mdio: GPIO lookup for consumer reset
    [    2.112617] mdio_bus 4a101000.mdio: using device tree for GPIO lookup
    [    2.112637] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000[0]'
    [    2.112673] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000[0]'
    [    2.112705] mdio_bus 4a101000.mdio: using lookup tables for GPIO lookup
    [    2.112713] mdio_bus 4a101000.mdio: No GPIO consumer reset found
    [    2.172295] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.173635] mdio_bus 4a101000.mdio:00: GPIO lookup for consumer reset
    [    2.173653] mdio_bus 4a101000.mdio:00: using device tree for GPIO lookup
    [    2.173671] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@0[0]'
    [    2.173719] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@0[0]'
    [    2.173752] mdio_bus 4a101000.mdio:00: using lookup tables for GPIO lookup
    [    2.173760] mdio_bus 4a101000.mdio:00: No GPIO consumer reset found
    [    2.178388] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Qualcomm Atheros AR8031/AR8033
    [    2.179050] cpsw-switch 4a100000.switch: initialized cpsw ale version 1.4
    [    2.179066] cpsw-switch 4a100000.switch: ALE Table size 1024
    [    2.179191] cpsw-switch 4a100000.switch: cpts: overflow check period 500 (jiffies)
    [    2.179204] cpsw-switch 4a100000.switch: CPTS: ref_clk_freq:250000000 calc_mult:2147483648 calc_shift:29 error:0 nsec/sec
    [    2.179282] cpsw-switch 4a100000.switch: Detected MACID = 0c:1c:57:08:4c:6c
    [    2.180761] cpsw-switch 4a100000.switch: initialized (regs 0x4a100000, pool size 256) hw_ver:0019010C 1.12 (0)
    [    2.182068] i2c /dev entries driver
    [    2.184587] sdhci: Secure Digital Host Controller Interface driver
    [    2.184601] sdhci: Copyright(c) Pierre Ossman
    [    2.185626] sdhci-pltfm: SDHCI platform and OF driver helper
    [    2.187141] sdhci-omap 48060000.mmc: GPIO lookup for consumer cd
    [    2.187159] sdhci-omap 48060000.mmc: using device tree for GPIO lookup
    [    2.187191] sdhci-omap 48060000.mmc: No GPIO consumer cd found
    [    2.187715] sdhci-omap 47810000.mmc: GPIO lookup for consumer wp
    [    2.187730] sdhci-omap 47810000.mmc: using device tree for GPIO lookup
    [    2.187747] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/target-module@47810000/mmc@0[0]'
    [    2.187784] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/target-module@47810000/mmc@0[0]'
    [    2.187805] sdhci-omap 47810000.mmc: using lookup tables for GPIO lookup
    [    2.187813] sdhci-omap 47810000.mmc: No GPIO consumer wp found
    [    2.188010] sdhci-omap 47810000.mmc: supply vqmmc not found, using dummy regulator
    [    2.194529] davinci-mcasp 4803c000.mcasp: IRQ common not found
    [    2.196365] NET: Registered protocol family 10
    [    2.197917] Segment Routing with IPv6
    [    2.198006] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    2.198759] NET: Registered protocol family 17
    [    2.199175] Key type dns_resolver registered
    [    2.199795] omap_voltage_late_init: Voltage driver support not added
    [    2.200505] printk: console [ttyS0]: printing thread started
    [    2.200552] Loading compiled-in X.509 certificates
    [    2.250317] omap-gpmc 50000000.gpmc: GPMC revision 6.0
    [    2.250352] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    2.250396] gpiochip_find_base: found new base at 510
    [    2.250751] gpio gpiochip0: (omap-gpmc): added GPIO chardev (254:0)
    [    2.250858] gpio gpiochip0: registered GPIOs 510 to 511 on omap-gpmc
    [    2.255683] omap2-nand 8000000.nand: GPIO lookup for consumer rb
    [    2.255709] omap2-nand 8000000.nand: using device tree for GPIO lookup
    [    2.255743] of_get_named_gpiod_flags: parsed 'rb-gpios' property of node '/ocp/gpmc@50000000/nand@0,0[0]' - status (0)
    [    2.255975] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
    [    2.255985] nand: Micron MT29F2G08ABAEAWP
    [    2.255989] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
    [    2.256148] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme
    [    2.256277] 10 fixed-partitions partitions found on MTD device omap2-nand.0
    [    2.256288] Creating 10 MTD partitions on "omap2-nand.0":
    [    2.256299] 0x000000000000-0x000000020000 : "NAND.SPL"
    [    2.256818] mtd mtd0: GPIO lookup for consumer wp
    [    2.256832] mtd mtd0: using device tree for GPIO lookup
    [    2.256848] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@0[0]'
    [    2.256876] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@0[0]'
    [    2.256900] mtd mtd0: using lookup tables for GPIO lookup
    [    2.256908] mtd mtd0: No GPIO consumer wp found
    [    2.258318] 0x000000020000-0x000000040000 : "NAND.SPL.backup1"
    [    2.258669] mtd mtd1: GPIO lookup for consumer wp
    [    2.258681] mtd mtd1: using device tree for GPIO lookup
    [    2.258699] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@1[0]'
    [    2.258726] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@1[0]'
    [    2.258750] mtd mtd1: using lookup tables for GPIO lookup
    [    2.258756] mtd mtd1: No GPIO consumer wp found
    [    2.259975] 0x000000040000-0x000000060000 : "NAND.SPL.backup2"
    [    2.260335] mtd mtd2: GPIO lookup for consumer wp
    [    2.260347] mtd mtd2: using device tree for GPIO lookup
    [    2.260365] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@2[0]'
    [    2.260392] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@2[0]'
    [    2.260414] mtd mtd2: using lookup tables for GPIO lookup
    [    2.260421] mtd mtd2: No GPIO consumer wp found
    [    2.261582] 0x000000060000-0x000000080000 : "NAND.SPL.backup3"
    [    2.261910] mtd mtd3: GPIO lookup for consumer wp
    [    2.261922] mtd mtd3: using device tree for GPIO lookup
    [    2.261937] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@3[0]'
    [    2.261964] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@3[0]'
    [    2.261986] mtd mtd3: using lookup tables for GPIO lookup
    [    2.261993] mtd mtd3: No GPIO consumer wp found
    [    2.263461] 0x000000080000-0x0000000c0000 : "NAND.u-boot-spl-os"
    [    2.263843] mtd mtd4: GPIO lookup for consumer wp
    [    2.263854] mtd mtd4: using device tree for GPIO lookup
    [    2.263871] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@4[0]'
    [    2.263898] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@4[0]'
    [    2.263921] mtd mtd4: using lookup tables for GPIO lookup
    [    2.263929] mtd mtd4: No GPIO consumer wp found
    [    2.265126] 0x0000000c0000-0x0000001c0000 : "NAND.u-boot"
    [    2.265887] mtd mtd5: GPIO lookup for consumer wp
    [    2.265898] mtd mtd5: using device tree for GPIO lookup
    [    2.265915] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@5[0]'
    [    2.265942] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@5[0]'
    [    2.265965] mtd mtd5: using lookup tables for GPIO lookup
    [    2.265972] mtd mtd5: No GPIO consumer wp found
    [    2.267129] 0x0000001c0000-0x0000001e0000 : "NAND.u-boot-env"
    [    2.267462] mtd mtd6: GPIO lookup for consumer wp
    [    2.267475] mtd mtd6: using device tree for GPIO lookup
    [    2.267490] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@6[0]'
    [    2.267517] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@6[0]'
    [    2.267540] mtd mtd6: using lookup tables for GPIO lookup
    [    2.267547] mtd mtd6: No GPIO consumer wp found
    [    2.268737] 0x0000001e0000-0x000000200000 : "NAND.u-boot-env.backup1"
    [    2.269088] mtd mtd7: GPIO lookup for consumer wp
    [    2.269099] mtd mtd7: using device tree for GPIO lookup
    [    2.269115] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@7[0]'
    [    2.269142] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@7[0]'
    [    2.269165] mtd mtd7: using lookup tables for GPIO lookup
    [    2.269171] mtd mtd7: No GPIO consumer wp found
    [    2.270342] 0x000000200000-0x000000a00000 : "NAND.kernel"
    [    2.282432] mtd mtd8: GPIO lookup for consumer wp
    [    2.282448] mtd mtd8: using device tree for GPIO lookup
    [    2.282467] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@8[0]'
    [    2.282495] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@8[0]'
    [    2.282518] mtd mtd8: using lookup tables for GPIO lookup
    [    2.282525] mtd mtd8: No GPIO consumer wp found
    [    2.283835] 0x000000a00000-0x000010000000 : "NAND.file-system"
    [    2.532663] mtd mtd9: GPIO lookup for consumer wp
    [    2.532677] mtd mtd9: using device tree for GPIO lookup
    [    2.532695] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/gpmc@50000000/nand@0,0/partition@9[0]'
    [    2.532723] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/gpmc@50000000/nand@0,0/partition@9[0]'
    [    2.532746] mtd mtd9: using lookup tables for GPIO lookup
    [    2.532754] mtd mtd9: No GPIO consumer wp found
    [    2.534709] reg-fixed-voltage fixedregulator2: GPIO lookup for consumer (null)
    [    2.534731] reg-fixed-voltage fixedregulator2: using device tree for GPIO lookup
    [    2.534748] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator2[0]'
    [    2.534783] reg-fixed-voltage fixedregulator2: No GPIO consumer (null) found
    [    2.535714] gpio gpiochip1: (gpio-0-31): created GPIO range 0->7 ==> 44e10800.pinmux PIN 82->89
    [    2.535743] gpio gpiochip1: (gpio-0-31): created GPIO range 8->11 ==> 44e10800.pinmux PIN 52->55
    [    2.535756] gpio gpiochip1: (gpio-0-31): created GPIO range 12->15 ==> 44e10800.pinmux PIN 94->97
    [    2.535768] gpio gpiochip1: (gpio-0-31): created GPIO range 16->17 ==> 44e10800.pinmux PIN 71->72
    [    2.535780] gpio gpiochip1: (gpio-0-31): created GPIO range 18->18 ==> 44e10800.pinmux PIN 135->135
    [    2.535793] gpio gpiochip1: (gpio-0-31): created GPIO range 19->20 ==> 44e10800.pinmux PIN 108->109
    [    2.535805] gpio gpiochip1: (gpio-0-31): created GPIO range 21->21 ==> 44e10800.pinmux PIN 73->73
    [    2.535818] gpio gpiochip1: (gpio-0-31): created GPIO range 22->23 ==> 44e10800.pinmux PIN 8->9
    [    2.535832] gpio gpiochip1: (gpio-0-31): created GPIO range 26->27 ==> 44e10800.pinmux PIN 10->11
    [    2.535845] gpio gpiochip1: (gpio-0-31): created GPIO range 28->28 ==> 44e10800.pinmux PIN 74->74
    [    2.535859] gpio gpiochip1: (gpio-0-31): created GPIO range 29->29 ==> 44e10800.pinmux PIN 81->81
    [    2.535872] gpio gpiochip1: (gpio-0-31): created GPIO range 30->31 ==> 44e10800.pinmux PIN 28->29
    [    2.536231] gpio gpiochip1: (gpio-0-31): added GPIO chardev (254:1)
    [    2.536356] gpio gpiochip1: registered GPIOs 0 to 31 on gpio-0-31
    [    2.536884] OMAP GPIO hardware version 0.1
    [    2.538285] i2c i2c-0: GPIO lookup for consumer scl
    [    2.538305] i2c i2c-0: using device tree for GPIO lookup
    [    2.538324] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.538357] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.538385] i2c i2c-0: using lookup tables for GPIO lookup
    [    2.538394] i2c i2c-0: No GPIO consumer scl found
    [    2.538414] i2c i2c-0: GPIO lookup for consumer sda
    [    2.538420] i2c i2c-0: using device tree for GPIO lookup
    [    2.538431] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.538459] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.538483] i2c i2c-0: using lookup tables for GPIO lookup
    [    2.538489] i2c i2c-0: No GPIO consumer sda found
    [    2.565673] tps65910 0-002d: No interrupt support, no core IRQ
    [    2.565892] tps65910-gpio tps65910-gpio: ti,en-gpio-sleep not specified
    [    2.565929] gpiochip_find_base: found new base at 504
    [    2.566201] gpio gpiochip2: (tps65910): added GPIO chardev (254:2)
    [    2.566293] gpio gpiochip2: registered GPIOs 504 to 509 on tps65910
    [    2.567766] vrtc: supplied by vbat
    [    2.573788] vio: supplied by vbat
    [    2.580295] vdd_mpu: supplied by vbat
    [    2.585590] vdd_core: supplied by vbat
    [    2.598957] vdig1: supplied by vbat
    [    2.606521] vdig2: supplied by vbat
    [    2.615060] vpll: supplied by vbat
    [    2.625077] vdac: supplied by vbat
    [    2.633171] vaux1: supplied by vbat
    [    2.642744] vaux2: supplied by vbat
    [    2.652662] vaux33: supplied by vbat
    [    2.657500] vmmc: supplied by vbat
    [    2.664463] vbb: supplied by vbat
    [    2.665137] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    2.676206] i2c i2c-1: GPIO lookup for consumer scl
    [    2.676224] i2c i2c-1: using device tree for GPIO lookup
    [    2.676245] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.676278] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.676307] i2c i2c-1: using lookup tables for GPIO lookup
    [    2.676315] i2c i2c-1: No GPIO consumer scl found
    [    2.676335] i2c i2c-1: GPIO lookup for consumer sda
    [    2.676340] i2c i2c-1: using device tree for GPIO lookup
    [    2.676351] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.676379] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.676403] i2c i2c-1: using lookup tables for GPIO lookup
    [    2.676408] i2c i2c-1: No GPIO consumer sda found
    [    2.677800] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
    [    2.678493] gpio gpiochip3: (gpio-32-63): created GPIO range 0->7 ==> 44e10800.pinmux PIN 0->7
    [    2.678516] gpio gpiochip3: (gpio-32-63): created GPIO range 8->11 ==> 44e10800.pinmux PIN 90->93
    [    2.678531] gpio gpiochip3: (gpio-32-63): created GPIO range 12->27 ==> 44e10800.pinmux PIN 12->27
    [    2.678544] gpio gpiochip3: (gpio-32-63): created GPIO range 28->31 ==> 44e10800.pinmux PIN 30->33
    [    2.678863] gpio gpiochip3: (gpio-32-63): added GPIO chardev (254:3)
    [    2.678966] gpio gpiochip3: registered GPIOs 32 to 63 on gpio-32-63
    [    2.679845] gpio gpiochip4: (gpio-64-95): created GPIO range 0->17 ==> 44e10800.pinmux PIN 34->51
    [    2.679870] gpio gpiochip4: (gpio-64-95): created GPIO range 18->21 ==> 44e10800.pinmux PIN 77->80
    [    2.679883] gpio gpiochip4: (gpio-64-95): created GPIO range 22->31 ==> 44e10800.pinmux PIN 56->65
    [    2.680172] gpio gpiochip4: (gpio-64-95): added GPIO chardev (254:4)
    [    2.680258] gpio gpiochip4: registered GPIOs 64 to 95 on gpio-64-95
    [    2.681018] gpio gpiochip5: (gpio-96-127): created GPIO range 0->4 ==> 44e10800.pinmux PIN 66->70
    [    2.681049] gpio gpiochip5: (gpio-96-127): created GPIO range 5->6 ==> 44e10800.pinmux PIN 98->99
    [    2.681063] gpio gpiochip5: (gpio-96-127): created GPIO range 7->8 ==> 44e10800.pinmux PIN 75->76
    [    2.681076] gpio gpiochip5: (gpio-96-127): created GPIO range 13->13 ==> 44e10800.pinmux PIN 141->141
    [    2.681089] gpio gpiochip5: (gpio-96-127): created GPIO range 14->21 ==> 44e10800.pinmux PIN 100->107
    [    2.681381] gpio gpiochip5: (gpio-96-127): added GPIO chardev (254:5)
    [    2.681474] gpio gpiochip5: registered GPIOs 96 to 127 on gpio-96-127
    [    2.687881] sdhci-omap 48060000.mmc: GPIO lookup for consumer cd
    [    2.687909] sdhci-omap 48060000.mmc: using device tree for GPIO lookup
    [    2.687941] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/mmc@0[0]' - status (0)
    [    2.688050] gpio gpiochip1: Persistence not supported for GPIO 6
    [    2.688068] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
    [    2.688078] sdhci-omap 48060000.mmc: Got CD GPIO
    [    2.688085] sdhci-omap 48060000.mmc: GPIO lookup for consumer wp
    [    2.688091] sdhci-omap 48060000.mmc: using device tree for GPIO lookup
    [    2.688104] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/mmc@0[0]'
    [    2.688135] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/mmc@0[0]'
    [    2.688162] sdhci-omap 48060000.mmc: using lookup tables for GPIO lookup
    [    2.688171] sdhci-omap 48060000.mmc: No GPIO consumer wp found
    [    2.688364] sdhci-omap 48060000.mmc: supply vqmmc not found, using dummy regulator
    [    2.693407] reg-fixed-voltage fixedregulator2: GPIO lookup for consumer (null)
    [    2.693431] reg-fixed-voltage fixedregulator2: using device tree for GPIO lookup
    [    2.693449] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator2[0]'
    [    2.693495] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator2[0]' - status (0)
    [    2.693589] gpio gpiochip3: Persistence not supported for GPIO 16
    [    2.703314] sdhci-omap 47810000.mmc: GPIO lookup for consumer wp
    [    2.703337] sdhci-omap 47810000.mmc: using device tree for GPIO lookup
    [    2.703359] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/target-module@47810000/mmc@0[0]'
    [    2.703396] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/target-module@47810000/mmc@0[0]'
    [    2.703418] sdhci-omap 47810000.mmc: using lookup tables for GPIO lookup
    [    2.703426] sdhci-omap 47810000.mmc: No GPIO consumer wp found
    [    2.703620] sdhci-omap 47810000.mmc: supply vqmmc not found, using dummy regulator
    [    2.725556] of_get_named_gpiod_flags: parsed 'gpios' property of node '/volume_keys0/switch9[0]' - status (0)
    [    2.725623] gpio gpiochip1: Persistence not supported for GPIO 2
    [    2.726184] of_get_named_gpiod_flags: parsed 'gpios' property of node '/volume_keys0/switch10[0]' - status (0)
    [    2.726223] gpio gpiochip1: Persistence not supported for GPIO 3
    [    2.726685] input: volume_keys0 as /devices/platform/volume_keys0/input/input0
    [    2.728297] ALSA device list:
    [    2.728315]   No soundcards found.
    [    2.818298] mmc0: SDHCI controller on 48060000.mmc [48060000.mmc] using External DMA
    [    2.878764] mmc0: new high speed SDHC card at address 0001
    [    2.889363] mmcblk0: mmc0:0001 00000 29.8 GiB 
    [    2.891467]  mmcblk0: p1 p2
    [    2.902377] mmc2: SDHCI controller on 47810000.mmc [47810000.mmc] using External DMA
    [    3.361868] EXT4-fs (mmcblk0p2): recovery complete
    [    3.363448] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    3.363567] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.365255] devtmpfs: mounted
    [    3.366797] Freeing unused kernel memory: 1024K
    [    3.367310] Run /sbin/init as init process
    [    3.367317]   with arguments:
    [    3.367319]     /sbin/init
    [    3.367322]   with environment:
    [    3.367324]     HOME=/
    [    3.367327]     TERM=linux
    [    3.697302] systemd[1]: System time before build time, advancing clock.
    [    3.735104] systemd[1]: systemd 244 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
    [    3.735903] systemd[1]: Detected architecture arm.
    [    3.793744] systemd[1]: Set hostname to <am335x-evm>.
    [    4.708084] systemd[1]: system-getty.slice: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    4.708136] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    4.726057] systemd[1]: Created slice system-getty.slice.
    [    4.764846] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [    4.794556] systemd[1]: Created slice User and Session Slice.
    [    4.823209] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    4.853045] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    4.883002] systemd[1]: Reached target Paths.
    [    4.912659] systemd[1]: Reached target Remote File Systems.
    [    4.942610] systemd[1]: Reached target Slices.
    [    4.972653] systemd[1]: Reached target Swap.
    [    5.013453] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    5.042689] systemd[1]: Reached target RPC Port Mapper.
    [    5.082106] systemd[1]: Listening on Process Core Dump Socket.
    [    5.123244] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.197401] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [    5.198794] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.243719] systemd[1]: Listening on Journal Socket.
    [    5.273959] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.303790] systemd[1]: Listening on udev Control Socket.
    [    5.333384] systemd[1]: Listening on udev Kernel Socket.
    [    5.363415] systemd[1]: Condition check resulted in Huge Pages File System being skipped.
    [    5.370977] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.430004] systemd[1]: Mounting Kernel Debug File System...
    [    5.490881] systemd[1]: Mounting Temporary Directory (/tmp)...
    [    5.543502] systemd[1]: Condition check resulted in Create list of static device nodes for the current kernel being skipped.
    [    5.551003] systemd[1]: Starting Start psplash boot splash screen...
    [    5.610131] systemd[1]: Starting RPC Bind...
    [    5.653161] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [    5.684153] systemd[1]: Starting Journal Service...
    [    5.716544] systemd[1]: Starting Load Kernel Modules...
    [    5.770022] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    5.787161] cryptodev: loading out-of-tree module taints kernel.
    [    5.809718] cryptodev: driver 1.10 loaded.
    [    5.845118] systemd[1]: Starting udev Coldplug all Devices...
    [    5.921149] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
    [    6.013210] systemd[1]: Started RPC Bind.
    [    6.047612] systemd[1]: Mounted POSIX Message Queue File System.
    [    6.084058] systemd[1]: Mounted Kernel Debug File System.
    [    6.124588] systemd[1]: Mounted Temporary Directory (/tmp).
    [    6.154176] systemd[1]: psplash-start.service: Main process exited, code=exited, status=255/EXCEPTION
    [    6.155205] systemd[1]: psplash-start.service: Failed with result 'exit-code'.
    [    6.172713] systemd[1]: Failed to start Start psplash boot splash screen.
    [    6.283021] systemd[1]: Dependency failed for Start psplash-systemd progress communication helper.
    [    6.313087] systemd[1]: psplash-systemd.service: Job psplash-systemd.service/start failed with result 'dependency'.
    [    6.322709] systemd[1]: Started Load Kernel Modules.
    [    6.387037] systemd[1]: Started Remount Root and Kernel File Systems.
    [    6.459731] systemd[1]: Condition check resulted in FUSE Control File System being skipped.
    [    6.513663] systemd[1]: Mounting Kernel Configuration File System...
    [    6.545961] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
    [    6.594388] systemd[1]: Starting Apply Kernel Variables...
    [    6.623379] systemd[1]: Condition check resulted in Create System Users being skipped.
    [    6.630642] systemd[1]: Starting Create Static Device Nodes in /dev...
    [    6.697873] systemd[1]: Mounted Kernel Configuration File System.
    [    6.794380] systemd[1]: Started Journal Service.
    [    7.109498] systemd-journald[110]: Received client request to flush runtime journal.
    [    9.584230] of_get_named_gpiod_flags: parsed 'row-gpios' property of node '/matrix_keypad0[0]' - status (0)
    [    9.584292] of_get_named_gpiod_flags: parsed 'row-gpios' property of node '/matrix_keypad0[1]' - status (0)
    [    9.584315] of_get_named_gpiod_flags: parsed 'row-gpios' property of node '/matrix_keypad0[2]' - status (0)
    [    9.584337] of_get_named_gpiod_flags: parsed 'col-gpios' property of node '/matrix_keypad0[0]' - status (0)
    [    9.584360] of_get_named_gpiod_flags: parsed 'col-gpios' property of node '/matrix_keypad0[1]' - status (0)
    [    9.662777] input: matrix_keypad0 as /devices/platform/matrix_keypad0/input/input1
    [   10.121707] remoteproc remoteproc0: wkup_m3 is available
    [   11.136834] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [   11.173346] omap_rtc 44e3e000.rtc: char device (252:0)
    [   11.173393] omap_rtc 44e3e000.rtc: registered as rtc0
    [   11.173960] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01T00:00:00 UTC (946684800)
    [   11.174005] omap_rtc 44e3e000.rtc: GPIO lookup for consumer wp
    [   11.174013] omap_rtc 44e3e000.rtc: using device tree for GPIO lookup
    [   11.174040] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@3e000/rtc@0[0]'
    [   11.174091] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@44c00000/segment@200000/target-module@3e000/rtc@0[0]'
    [   11.174122] omap_rtc 44e3e000.rtc: using lookup tables for GPIO lookup
    [   11.174131] omap_rtc 44e3e000.rtc: No GPIO consumer wp found
    [   11.517591] remoteproc remoteproc0: powering up wkup_m3
    [   11.549504] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 243276
    [   11.549813] remoteproc remoteproc0: remote processor wkup_m3 is now up
    [   11.549890] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x192
    [   11.825159] tps65910-rtc tps65910-rtc: Enabling rtc-tps65910.
    [   11.828545] tps65910-rtc tps65910-rtc: char device (252:1)
    [   11.828572] tps65910-rtc tps65910-rtc: registered as rtc1
    [   12.060719] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset
    [   12.060751] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [   12.060772] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/target-module@47400000/usb-phy@1300[0]'
    [   12.060817] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/target-module@47400000/usb-phy@1300[0]'
    [   12.060840] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [   12.060850] am335x-phy-driver 47401300.usb-phy: No GPIO consumer reset found
    [   12.060859] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect
    [   12.060866] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [   12.060877] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/target-module@47400000/usb-phy@1300[0]'
    [   12.060899] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/target-module@47400000/usb-phy@1300[0]'
    [   12.060917] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [   12.060923] am335x-phy-driver 47401300.usb-phy: No GPIO consumer vbus-detect found
    [   12.061080] am335x-phy-driver 47401300.usb-phy: supply vcc not found, using dummy regulator
    [   12.142430] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer reset
    [   12.142461] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
    [   12.142489] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/target-module@47400000/usb-phy@1b00[0]'
    [   12.142538] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/target-module@47400000/usb-phy@1b00[0]'
    [   12.142562] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
    [   12.142571] am335x-phy-driver 47401b00.usb-phy: No GPIO consumer reset found
    [   12.142579] am335x-phy-driver 47401b00.usb-phy: GPIO lookup for consumer vbus-detect
    [   12.142585] am335x-phy-driver 47401b00.usb-phy: using device tree for GPIO lookup
    [   12.142597] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/target-module@47400000/usb-phy@1b00[0]'
    [   12.142620] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/target-module@47400000/usb-phy@1b00[0]'
    [   12.142638] am335x-phy-driver 47401b00.usb-phy: using lookup tables for GPIO lookup
    [   12.142644] am335x-phy-driver 47401b00.usb-phy: No GPIO consumer vbus-detect found
    [   12.142813] am335x-phy-driver 47401b00.usb-phy: supply vcc not found, using dummy regulator
    [   12.219268] usbcore: registered new interface driver usbfs
    [   12.219360] usbcore: registered new interface driver hub
    [   12.219453] usbcore: registered new device driver usb
    [   12.400961] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
    [   12.401053] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
    [   12.401341] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
    [   12.401357] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   12.401366] usb usb1: Product: MUSB HDRC host driver
    [   12.401372] usb usb1: Manufacturer: Linux 5.10.100-rt62-g204ec708dc musb-hcd
    [   12.401380] usb usb1: SerialNumber: musb-hdrc.0
    [   12.412363] hub 1-0:1.0: USB hub found
    [   12.412502] hub 1-0:1.0: 1 port detected
    [   12.468190] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
    [   12.468277] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 2
    [   12.468556] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
    [   12.468574] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   12.468583] usb usb2: Product: MUSB HDRC host driver
    [   12.468589] usb usb2: Manufacturer: Linux 5.10.100-rt62-g204ec708dc musb-hcd
    [   12.468597] usb usb2: SerialNumber: musb-hdrc.1
    [   12.469441] hub 2-0:1.0: USB hub found
    [   12.482400] hub 2-0:1.0: 1 port detected
    [   13.785768] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@2a000/i2c@0/tlv320aic3106@1b[0]'
    [   13.785835] of_get_named_gpiod_flags: can't parse 'gpio-reset' property of node '/ocp/interconnect@48000000/segment@0/target-module@2a000/i2c@0/tlv320aic3106@1b[0]'
    [   14.488628] CAN device driver interface
    [   14.612847] c_can_platform 481d0000.can: c_can_platform device registered (regs=1a579d0b, irq=43)
    [   15.794805] PM: bootloader does not support rtc-only!
    [   15.882674] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
    [   15.885112] omap-sham 53100000.sham: will run requests pump with realtime priority
    [   15.985089] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
    [   16.012430] omap-aes 53500000.aes: will run requests pump with realtime priority
    [   16.222840] [drm] Initialized pvr 1.17.4948957 20110701 for 56000000.gpu on minor 0
    [   18.368390] of_get_named_gpiod_flags: can't parse 'simple-audio-card,hp-det-gpio' property of node '/sound[0]'
    [   18.368446] of_get_named_gpiod_flags: can't parse 'simple-audio-card,mic-det-gpio' property of node '/sound[0]'
    [   24.733714] input: ti-tsc as /devices/platform/ocp/44c00000.interconnect/44c00000.interconnect:segment@200000/44e0d000.target-module/44e0d000.tscadc/TI-am335x-tsc.0.auto/input/input2
    [   25.348900] remoteproc remoteproc1: 4a334000.pru is available
    [   25.391178] remoteproc remoteproc2: 4a338000.pru is available
    [   28.890919] PVR_K: UM DDK-(4948957) and KM DDK-(4948957) match. [ OK ]
    [   30.336208] cpsw-switch 4a100000.switch: starting ndev. mode: dual_mac
    [   30.497285] Qualcomm Atheros AR8031/AR8033 4a101000.mdio:00: attached PHY driver [Qualcomm Atheros AR8031/AR8033] (mii_bus:phy_addr=4a101000.mdio:00, irq=POLL)
    [   32.613544] gpio gpiochip5: Persistence not supported for GPIO 21
    [   33.122498] lis3_reg: disabling
    [   33.122535] v1_8d: disabling
    [   33.122543] v3_3d: disabling
    [   33.124156] wlan-en-regulator: disabling
    [   98.083664] cpsw-switch 4a100000.switch eth0: Link is Up - 1Gbps/Full - flow control off
    [   98.083743] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    [  112.983767] cryptd: max_cpu_qlen set to 1000
    [  113.340100] Initializing XFRM netlink socket
    

    Thanks, 

  • Hi,

    The display driver is called lcdc and Ido you have that enabled?

    Regards,
    Krunal

  • Hi, 

    Yes, I use the default am335x-evm.dts and only edit the lcd and backlight configuration. 

    Thanks, 

  • Hi,

    What I mean is did you enable DRM_TILCDC in the Kernel config? That's the main display driver to use and not ST7789Vi.

    Regards,
    Krunal

  • Hi,

    I checked the .config file of the kernel and yes I have DRM_TILCDC activated and the ST7789Vi driver is not activated because the driver is in Stating Drivers and I didn't enable this config now. 

    CONFIG_DRM_TILCDC=y
    CONFIG_DRM_PANEL=y
    CONFIG_DRM_PANEL_SIMPLE=y
    #CONFIG_STAGING is not set

    I made some change in panel-simple.c and device tree because. I started the configuration using RGB888, but the panel I will use only has 16 Pins when RGB888 needs 24 Pins. For these, I change the panel-simple.c to work in RGB565:

    static const struct drm_display_mode newhaven_nhd_43_480272ef_atxl_mode = {
            .clock = 9000,
            .hdisplay = 480,
            .hsync_start = 480 + 2,
            .hsync_end = 480 + 2 + 41,
            .htotal = 480 + 2 + 41 + 2,
            .vdisplay = 272,
            .vsync_start = 272 + 2,
            .vsync_end = 272 + 2 + 10,
            .vtotal = 272 + 2 + 10 + 2,
            .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
    };
    
    static const struct panel_desc newhaven_nhd_43_480272ef_atxl = {
            .modes = &newhaven_nhd_43_480272ef_atxl_mode,
            .num_modes = 1,
            .bpc = 8,
            .size = {
                    .width = 95,
                    .height = 54,
            },
            .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
            .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE |
                         DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE,
            .connector_type = DRM_MODE_CONNECTOR_DPI,
    };
    

    and the device tree to

            panel {
                    compatible = "newhaven_nhd_24_240320cf_csxn_f";
    
                    pinctrl-names = "default", "sleep";
                    pinctrl-0 = <&lcd_pins_default>;
                    pinctrl-1 = <&lcd_pins_sleep>;
                    backlight = <&lcd_bl>;
    
                    port {
                            panel_0: endpoint@0 {
                                    remote-endpoint = <&lcdc_0>;
                            };
                    };
            };
    ...
    
            lcd_pins_default: lcd_pins_default {
                    pinctrl-single,pins = <
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT, MUX_MODE0)
                            AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_OUTPUT, MUX_MODE1)     /* gpmc_ad15.lcd_data16 */
                    >;
            };
    
            lcd_pins_sleep: lcd_pins_sleep {
                    pinctrl-single,pins = <
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PULL_DISABLE, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
                            AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT_PULLDOWN, MUX_MODE7)     /* gpmc_ad15.lcd_data16 */
    
                    >;
            };

    But I keep having some wrong settings why I keep seeing nothing on the screen.

    Thanks, 

  • Hi,

    In the panel-simple, I still see the bus format as RGB888 so did you change that to RTB565? Also, could you add printk statements in the following: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/tilcdc/tilcdc_drv.c?h=ti-linux-5.10.y#n169. I don't see any lcdc prints in your boot logs so not sure if something is not configured. 

    Regards,
    Krunal

  • Hi Krunal, 

    Thank you very much for your reply.

    Sorry, I copied another code instead of the code with the change to RGB565. The correct code is:

    static const struct drm_display_mode newhaven_nhd_24_240320cf_csxn_f_mode = {
        .clock = 6000, // Adjust based on your display's datasheet
        .hdisplay = 240,
        .hsync_start = 240 + 2,
        .hsync_end = 240 + 2 + 20,
        .htotal = 240 + 2 + 20 + 2,
        .vdisplay = 320,
        .vsync_start = 320 + 2,
        .vsync_end = 320 + 2 + 10,
        .vtotal = 320 + 2 + 10 + 2,
        .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
    };
    
    static const struct panel_desc newhaven_nhd_24_240320cf_csxn_f = {
        .modes = &newhaven_nhd_24_240320cf_csxn_f_mode,
        .num_modes = 1,
        .bpc = 8,
        .size = {
            .width = 36, // Adjust based on the physical dimensions of your display
            .height = 48,
        },
        .bus_format = MEDIA_BUS_FMT_RGB565_1X16,
        .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE | DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE,
        .connector_type = DRM_MODE_CONNECTOR_DPI,
    };

    I've debugged the tilcdc_drv.c file and the execution hangs on the following line.https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/tilcdc/tilcdc_drv.c?h=ti-linux-5.10.y#n317

    What could be the reason for it to fail at this point?

    Thanks, 

    Xavier

  • Hi Xavier,

    Just to confirm, in the panel-simple file you added the two functions but did you also define an entry here: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/panel/panel-simple.c?h=ti-linux-5.10.y#n3994.

    Regards,
    Krunal

  • Hi Kurnal, 

    The lines you mention were already added because without them the Kernel would not compile.

    	}, {
    		.compatible = "newhaven,nhd-2.4-240320cf-csxn-f",
    		.data = &newhaven_nhd_24_240320cf_csxn_f,
    	}, {

    Today, I did new tests, I copied the settings I had for the nhd_24_240320cf_csxn_f panel to the nhd_43_480272ef_atxl panel in panel-simple.c. I have compiled the Kernel and modified the device tree to use the
    compatible = "newhaven,nhd-4.3-480272ef-atxl";
    is place of
    compatible = "newhaven,nhd-2.4-240320cd-csxn-f";

    After that, I executed de modetest and I saw the correct screen dimensions for nhd-4.3.

    Maybe the nhd_24_240320cf_csxn_f should be declared somewhere else?

    Thanks, 

  • Hi,

    Thanks for the update and that's strange how changing name worked. Did you try to grep that compatible field in Kernel to see if anyone else is using it?

    Regards,
    Krunal