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/AM5708: VOUT3 device tree configuration

Part Number: AM5708
Other Parts Discussed in Thread: AM5728

Does reg = <2> correspond to VOUT3? I see that there are VOUT1, VOUT2 and VOUT3, which I interpret as reg 0, 1, 2 respectively.

Tool/software: Linux




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

  • Hi Adam,

    Yes, your interpretation is correct. reg=<2> corresponds to VOUT3.

    Regards,

    Manisha

  • Thank you Manisha. Can you check my pinmux of  VOUT3 as my RGB output? I don't know if I should set them as "input", but all the references are as such.

            {GPMC_AD0, (M3 | PIN_INPUT)},   /* gpmc_ad0.vout3_d0 */                                                                                                                                                                                                                           
            {GPMC_AD1, (M3 | PIN_INPUT)},   /* gpmc_ad1.vout3_d1 */                                                                                                                                                                                                                           
            {GPMC_AD2, (M3 | PIN_INPUT)},   /* gpmc_ad2.vout3_d2 */                                                                                                                                                                                                                           
            {GPMC_AD3, (M3 | PIN_INPUT)},   /* gpmc_ad3.vout3_d3 */                                                                                                                                                                                                                           
            {GPMC_AD4, (M3 | PIN_INPUT)},   /* gpmc_ad4.vout3_d4 */                                                                                                                                                                                                                           
            {GPMC_AD5, (M3 | PIN_INPUT)},   /* gpmc_ad5.vout3_d5 */                                                                                                                                                                                                                           
            {GPMC_AD6, (M3 | PIN_INPUT)},   /* gpmc_ad6.vout3_d6 */                                                                                                                                                                                                                           
            {GPMC_AD7, (M3 | PIN_INPUT)},   /* gpmc_ad7.vout3_d7 */                                                                                                                                                                                                                           
            {GPMC_AD8, (M3 | PIN_INPUT)},   /* gpmc_ad8.vout3_d8 */                                                                                                                                                                                                                           
            {GPMC_AD9, (M3 | PIN_INPUT)},   /* gpmc_ad9.vout3_d9 */                                                                                                                                                                                                                           
            {GPMC_AD10, (M3 | PIN_INPUT)},  /* gpmc_ad10.vout3_d10 */                                                                                                                                                                                                                         
            {GPMC_AD11, (M3 | PIN_INPUT)},  /* gpmc_ad11.vout3_d11 */                                                                                                                                                                                                                         
            {GPMC_AD12, (M3 | PIN_INPUT)},  /* gpmc_ad12.vout3_d12 */                                                                                                                                                                                                                         
            {GPMC_AD13, (M3 | PIN_INPUT)},  /* gpmc_ad13.vout3_d13 */                                                                                                                                                                                                                         
            {GPMC_AD14, (M3 | PIN_INPUT)},  /* gpmc_ad14.vout3_d14 */                                                                                                                                                                                                                         
            {GPMC_AD15, (M3 | PIN_INPUT)},  /* gpmc_ad15.vout3_d15 */                                                                                                                                                                                                                         
            {GPMC_A0, (M3 | PIN_INPUT)},    /* gpmc_a0.vout3_d16 */                                                                                                                                                                                                                           
            {GPMC_A1, (M3 | PIN_INPUT)},    /* gpmc_a1.vout3_d17 */                                                                                                                                                                                                                           
            {GPMC_A2, (M3 | PIN_INPUT)},    /* gpmc_a2.vout3_d18 */                                                                                                                                                                                                                           
            {GPMC_A3, (M3 | PIN_INPUT)},    /* gpmc_a3.vout3_d19 */                                                                                                                                                                                                                           
            {GPMC_A4, (M3 | PIN_INPUT)},    /* gpmc_a4.vout3_d20 */                                                                                                                                                                                                                           
            {GPMC_A5, (M3 | PIN_INPUT)},    /* gpmc_a5.vout3_d21 */                                                                                                                                                                                                                           
            {GPMC_A6, (M3 | PIN_INPUT)},    /* gpmc_a6.vout3_d22 */                                                                                                                                                                                                                           
            {GPMC_A7, (M3 | PIN_INPUT)},    /* gpmc_a7.vout3_d23 */  

  • Here is relevant boot log:

    [    2.737741] pwm-backlight backlight: GPIO lookup for consumer enable
    [    2.737747] pwm-backlight backlight: using device tree for GPIO lookup
    [    2.737779] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/backlight[0]' - status (0)
    [    2.737829] backlight supply power not found, using dummy regulator
    [    4.062770] [drm] Initialized
    [    4.066606] omapdss_dss 58000000.dss: master bind failed: -517
    [    4.073025] panel-dpi display: GPIO lookup for consumer enable
    [    4.073032] panel-dpi display: using device tree for GPIO lookup
    [    4.073061] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/display[0]' - status (0)
    [    4.073096] panel-dpi display: GPIO lookup for consumer reset
    [    4.073102] panel-dpi display: using device tree for GPIO lookup
    [    4.073110] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/display[0]'
    [    4.073117] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/display[0]'
    [    4.073122] panel-dpi display: using lookup tables for GPIO lookup
    [    4.073129] panel-dpi display: lookup for GPIO reset failed
    [    4.073146] display supply vcc not found, using dummy regulator
    [    4.079238] panel-dpi display: failed to find video source
    [    5.057888] OMAP DSS rev 6.1
    [    5.064607] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops)
    [    5.074781] panel-dpi display: GPIO lookup for consumer enable
    [    5.074788] panel-dpi display: using device tree for GPIO lookup
    [    5.074818] of_get_named_gpiod_flags: parsed 'enable-gpios' property of node '/display[0]' - status (0)
    [    5.074862] panel-dpi display: GPIO lookup for consumer reset
    [    5.074869] panel-dpi display: using device tree for GPIO lookup
    [    5.074876] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/display[0]'
    [    5.074882] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/display[0]'
    [    5.074887] panel-dpi display: using lookup tables for GPIO lookup
    [    5.074894] panel-dpi display: lookup for GPIO reset failed
    [    5.074919] display supply vcc not found, using dummy regulator
    [    5.102260] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [    5.108934] [drm] No driver support for vblank timestamp query.
    [    5.132070] [drm] Enabling DMM ywrap scrolling
    [    5.259023] omapdrm omapdrm.0: fb0: omapdrm frame buffer device
    

    Basically, I have nothing showing on the screen (connected to VOUT3). Please help.

  • Here is modetest:

    root@am57xx-evm:~# modetest
    trying to open device 'i915'...failed
    trying to open device 'radeon'...failed
    trying to open device 'nouveau'...failed
    trying to open device 'vmwgfx'...failed
    trying to open device 'omapdrm'...done
    Encoders:
    id      crtc    type    possible crtcs  possible clones
    30      34      TMDS    0x00000001      0x00000000
    
    Connectors:
    id      encoder status          name            size (mm)       modes   encoders
    31      30      connected       (null)-1        0x0             1       30
      modes:
            name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
      1280x800 119 1280 1490 1520 1536 800 822 835 845 flags: nhsync, nvsync; 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
    
    CRTCs:
    id      fb      pos     size
    34      49      (0,0)   (1280x800)
      1280x800 119 1280 1490 1520 1536 800 822 835 845 flags: nhsync, nvsync; type: preferred, driver
      props:
            20 CTM:
                    flags: blob
                    blobs:
    
                    value:
            21 GAMMA_LUT:
                    flags: blob
                    blobs:
    
                    value:
            22 GAMMA_LUT_SIZE:
                    flags: immutable range
                    values: 0 4294967295
                    value: 256
            26 background:
                    flags: range
                    values: 0 16777215
                    value: 0
            27 trans-key-mode:
                    flags: enum
                    enums: disable=0 gfx-dst=1 vid-src=2
                    value: 0
            28 trans-key:
                    flags: range
                    values: 0 16777215
                    value: 0
            29 alpha_blender:
                    flags: range
                    values: 0 1
                    value: 0
            33 rotation:
                    flags: bitmask
                    values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                    value: 1
            23 zorder:
                    flags: range
                    values: 0 3
                    value: 0
    
    Planes:
    id      crtc    fb      CRTC x,y        x,y     gamma size      possible crtcs
    32      34      49      0,0             0,0     0               0x00000001
      formats: RX12 AR12 RG16 XR24 RG24 AR24 RA24 RX24 AR15 XR12 RA12 XR15
      props:
            5 type:
                    flags: immutable enum
                    enums: Overlay=0 Primary=1 Cursor=2
                    value: 1
            33 rotation:
                    flags: bitmask
                    values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                    value: 1
            23 zorder:
                    flags: range
                    values: 0 3
                    value: 0
            24 global_alpha:
                    flags: range
                    values: 0 255
                    value: 255
            25 pre_mult_alpha:
                    flags: range
                    values: 0 1
                    value: 0
    35      0       0       0,0             0,0     0               0x00000001
      formats: RG16 RX12 YUYV AR15 RA24 NV12 RA12 XR24 RG24 UYVY AR12 XR15 AR24 XR12 RX24
      props:
            5 type:
                    flags: immutable enum
                    enums: Overlay=0 Primary=1 Cursor=2
                    value: 0
            36 rotation:
                    flags: bitmask
                    values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                    value: 1
            23 zorder:
                    flags: range
                    values: 0 3
                    value: 1
            24 global_alpha:
                    flags: range
                    values: 0 255
                    value: 255
            25 pre_mult_alpha:
                    flags: range
                    values: 0 1
                    value: 0
    39      0       0       0,0             0,0     0               0x00000001
      formats: RG16 RX12 YUYV AR15 RA24 NV12 RA12 XR24 RG24 UYVY AR12 XR15 AR24 XR12 RX24
      props:
            5 type:
                    flags: immutable enum
                    enums: Overlay=0 Primary=1 Cursor=2
                    value: 0
            40 rotation:
                    flags: bitmask
                    values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                    value: 1
            23 zorder:
                    flags: range
                    values: 0 3
                    value: 2
            24 global_alpha:
                    flags: range
                    values: 0 255
                    value: 255
            25 pre_mult_alpha:
                    flags: range
                    values: 0 1
                    value: 0
    43      0       0       0,0             0,0     0               0x00000001
      formats: RG16 RX12 YUYV AR15 RA24 NV12 RA12 XR24 RG24 UYVY AR12 XR15 AR24 XR12 RX24
      props:
            5 type:
                    flags: immutable enum
                    enums: Overlay=0 Primary=1 Cursor=2
                    value: 0
            44 rotation:
                    flags: bitmask
                    values: rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
                    value: 1
            23 zorder:
                    flags: range
                    values: 0 3
                    value: 3
            24 global_alpha:
                    flags: range
                    values: 0 255
                    value: 255
            25 pre_mult_alpha:
                    flags: range
                    values: 0 1
                    value: 0
    
    Frame buffers:
    id      size    pitch
    
    root@am57xx-evm:~# 
    

  • Please check if pins are toggling. Also, in your pinmux settings, didn't see settings for hsync/vysnc. Are you setting it up?
  • Here are my settings:

    {GPMC_A8, (M3 | PIN_INPUT_PULLDOWN)},   /* gpmc_a8.vout3_hsync */ 
    {GPMC_A9, (M3 | PIN_INPUT_PULLDOWN)},   /* gpmc_a9.vout3_vsync */
    {GPMC_A10, (M3 | PIN_INPUT_PULLDOWN)},  /* gpmc_a10.vout3_de */
    {GPMC_CS3, (M3 | PIN_INPUT_PULLDOWN)},  /* gpmc_cs3.vout3_clk */

    Let me check toggles on pins. What do you suggest I check first? D0 - D23 on VOUT3?

    Additionally, here is the latest relevant boot log - I was able to eliminate error message "omapdss_dss 58000000.dss: master bind failed: -517" by building the DRM as Kernel modules (I was building it into the Kernel before). On the latest log, I do not see any obvious errors. However when I run "drmdevice", I get this:

    root@am57xx-evm:~# drmdevice 
    drmGetDevices() has returned 0
    

    Please keep in mind that this is a custom AM5708 board with SN65LVDS between VOUT3 and the LCD. Logic voltage is 3v3.

  • Do you have all the vout3 pins muxed? Looking at another board I see
    {GPMC_CS3, (M3 | PIN_INPUT_PULLUP)}, /* gpmc_cs3.vout3_clk */
    {GPMC_A10, (M3 | PIN_INPUT_PULLDOWN)}, /* gpmc_a10.vout3_de */

    Steve K.
  • {GPMC_A8, (M3 | PIN_INPUT_PULLDOWN)},   /* gpmc_a8.vout3_hsync */ 
    {GPMC_A9, (M3 | PIN_INPUT_PULLDOWN)},   /* gpmc_a9.vout3_vsync */
    {GPMC_A10, (M3 | PIN_INPUT_PULLDOWN)},  /* gpmc_a10.vout3_de */
    {GPMC_CS3, (M3 | PIN_INPUT_PULLDOWN)},  /* gpmc_cs3.vout3_clk */
    

    I got these above. Let me try to set GPMC_CS3 with PULLUP.

  • Tried with GPMC_CS3 with PULLUP. No observable difference (nothing on the screen).

    That said, does gpmc_a10.vout3_de translate to "enable-gpios" in my lcd/connector node in DTS?

    Also, I guess now is the good time to ask - What should I see on the screen? Console?

    Additionally, these are my U-Boot settings:

    omapdss.debug=y
    omapdss.def_disp=lcd

  • Adam Lee5 said:
    What do you suggest I check first? D0 - D23 on VOUT3?

    I suggest to check first the data pins toggling at  VOUT3 and at the output of SN65LVDS. Check LCD is clocked and backlight is working.

    Adam Lee5 said:
    root@am57xx-evm:~# drmdevice drmGetDevices() has returned 0

    It seems  DSS driver is not loaded as DRM cannot find any device. Check this wiki page on driver configuration and loading the module.  

    Things can go wrong at any of these steps for you - hardware level, DSS kernel drive build and dts settings, LVDS driver and it's configuration and at the LCD driver side. You need to validate individual step. If everything is good at hardware and software side, then at minimum you should see the LCD lit up (if you are not displaying anything). 

  • Thanks, will follow your steps. The backlight is working as expected. Funny enough, the output of "drmdevice" is the exact same on AM5728 IDK (with working LCD).

    I failed to mention earlier that we are using DEN mode. So VSYNC and HSYNC are not used. Should I explicitly configure this somewhere?
  • If HSYNC and VSYNC are not needed, then they can be ignored.
  • Great. Can you check on the INPUT/OUPUT directions for the pins? Google search shows conflicting results - some show INPUT and others show OUTPUT. Confusing!
  • I figured out and the display is now working. There was nothing wrong on the software front. The LCD panel was faulty.
  • Adam Lee5 said:
    Can you check on the INPUT/OUPUT directions for the pins? Google search shows conflicting results - some show INPUT and others show OUTPUT. Confusing!

    If you’re using a pin as an output, then this bit (INPUTENABLE) is a “don’t care.”  

     

    When INPUTENABLE = 0, it’s output only.  When INPUTENABLE = 1, it can operate either as an input or output.

  • Hi Adam,

    Glad that you are able to resolve the issue. For benefit of larger audience, I have replied to your previous query on pinmux settings.
  • I always wondered about this and now it makes a lot of sense. Thank you!