display-kms: Call SetCrtc at init time
authorNikhil Devshatwar <nikhil.nd@ti.com>
Thu, 4 May 2017 09:38:01 +0000 (15:08 +0530)
committerNikhil Devshatwar <nikhil.nd@ti.com>
Thu, 11 May 2017 09:33:38 +0000 (15:03 +0530)
Some monitors have a preferred mode which can be different than
the application selected mode.
It might be the case the selected mode is not
It is expected that the DRM application should set the right mode
before starting to use any of the planes.

Make sure that the display-kms backend sets up the right mode by
calling setCrtc before using any of the planes.
This is done by allocating a buffer and calling post_buffer as part
of the init hook.

Fixes: LCPD-9401
Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
util/display-kms.c

index 58746edc4c3524315705a3396022f34ac3a7845e..89c480e25e57e7a58464e408084f2b660895d4d4 100644 (file)
@@ -564,6 +564,7 @@ disp_kms_open(int argc, char **argv)
 {
        struct display_kms *disp_kms = NULL;
        struct display *disp;
+       struct buffer **bufs;
        int i;
 
        disp_kms = calloc(1, sizeof(*disp_kms));
@@ -687,6 +688,9 @@ disp_kms_open(int argc, char **argv)
        MSG("using %d connectors, %dx%d display, multiplanar: %d",
                        disp_kms->connectors_count, disp->width, disp->height, disp->multiplanar);
 
+       bufs = disp_get_buffers(disp, 1);
+       disp_post_buffer(disp, bufs[0]);
+
        return disp;
 
 fail: