Adding a display resolution setting

Nov 2, 2016 at 10:32 PM
I got a cheap HDMI display for my Beaglebone Black, but then noticed that there wasn't a DVI 800x480 display.

I made the following modifications to my clone of the CE7 BSP:
  • Inserted a new element OMAP_DVI_800W_480H in the OMAP_LCD_DVI_RES enumerations in bsp_def.h
  • Inserted a macro:
    #define OMAP_FIRST_DVI_MODE OMAP_DVI_800W_480H
    into bsp_def.h
  • Changed the function IsDVIMode() in main.c to
    return (dispRes >= OMAP_FIRST_DVI_MODE);
  • Inserted
    case OMAP_DVI_800W_480H:
        tda998x_drm_to_panel(&drm_800x480, &panel_init);
        panel_init.dispRes = dispRes;
        panel_init.IsDVI = TRUE;
        pActivePanel = &panel_init;
        break;
    
in the select_panel function in lcd-timing.c
  • Inserted:
        case OMAP_DVI_800W_480H:
            mode = &drm_800x480;
            break;
    
in the get_drm_mode function in lcd-timing.c
  • Inserted the initialization :
    struct drm_display_mode drm_800x480 = {
    33260,
    800,
    840,
    968,
    1056,
    0x80, // HSKEW = hsync_end-hsync_start fixup
    480,
    490,
    492,
    525,
    0,
    (DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_HSKEW)
    };
in lcd-timing.c

Now my question:
Everything works correctly, except I don't get the logo during bootup. The function ShowLogo fails the:
if( wSignature != 0x4D42 )
test (wSignature is 0) so I get the checkerboard pattern instead of the logo.

If I change back to 800x600 resolution, I get the logo during bootup,

What else am I missing?
Nov 3, 2016 at 5:25 PM
I tried another couple of timing settings including:
40000, 
800, 
839,
878,
886, 
0x27,       // HSKEW = hsync_end-hsync_start fixup 
480, 
493, 
495, 
522, 
0,
(DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_HSKEW) 
It still works after it's been booted, so it's perhaps a minor issue. I just know I'm missing something though.
Nov 15, 2016 at 11:03 PM
Got it. Changed the size of the logo image to 800x480 and I now get the logo image (unless I don't use 800x480 display settings).