From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Subject: Re: [PATCH 3.17] drm/msm: Fix fbdev for 16- and 24-bit modes. Date: Fri, 17 Oct 2014 15:47:09 +0100 Message-ID: <54412BED.5000704@linaro.org> References: <1413556088-30194-1-git-send-email-daniel.thompson@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-wg0-f51.google.com (mail-wg0-f51.google.com [74.125.82.51]) by gabe.freedesktop.org (Postfix) with ESMTP id 0406C6E336 for ; Fri, 17 Oct 2014 07:47:01 -0700 (PDT) Received: by mail-wg0-f51.google.com with SMTP id b13so1090907wgh.22 for ; Fri, 17 Oct 2014 07:47:01 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Clark Cc: linaro-kernel@lists.linaro.org, Linux Kernel Mailing List , "dri-devel@lists.freedesktop.org" , "patches@linaro.org" List-Id: dri-devel@lists.freedesktop.org On 17/10/14 15:43, Rob Clark wrote: > On Fri, Oct 17, 2014 at 10:28 AM, Daniel Thompson > wrote: >> Currently forcing the video mode from the kernel command line (for example >> video=HDMI-A-1:1280x720-16@60) does not correctly set the number of bits >> per pixel. This is due to a rather aggressive override in >> msm_fbdev_create(). This is a particular problem for Android bring up >> because the software EGL fallbacks don't support 32bpp. >> >> This problem could be trivially fixed by removing the override completely. >> However to avoid regressing commit 96673ecbd7f6 ("drm/msm: default to >> XR24 rather than AR24") this patch continues to override the depth if >> there are 32 bits per pixel. >> >> Change was tested by dd'ing a test image to /dev/fb0 with no video= >> (still 32bpp, DBG() message observed), video=1920x1080-32@60 (message >> observed), video=1920x1080-24@60 and video=1920x1080-16@60 . >> >> Signed-off-by: Daniel Thompson >> Cc: David Airlie >> Cc: Rob Clark >> --- >> drivers/gpu/drm/msm/msm_fbdev.c | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c >> index ab5bfd2..ed0171d 100644 >> --- a/drivers/gpu/drm/msm/msm_fbdev.c >> +++ b/drivers/gpu/drm/msm/msm_fbdev.c >> @@ -93,8 +93,10 @@ static int msm_fbdev_create(struct drm_fb_helper *helper, >> uint32_t paddr; >> int ret, size; >> >> - sizes->surface_bpp = 32; >> - sizes->surface_depth = 24; >> + if (sizes->surface_bpp == 32) { >> + DBG("forcing surface depth to 24\n"); >> + sizes->surface_depth = 24; >> + } > > Thanks.. we could probably even drop this forcing depth to 24.. from a > quick check in drm_fb_helper_single_fb_probe() the default is 24/32 > which should be enough for the "flicker-free" handover from splash > screen to X. Interesting... I probably should have checked that myself. "git blame" told me that the change to surface_depth came a long time after forcing the surface_bpp so I figured it was needed. v2 may be forthcoming shortly. > Not really sure why I was forcing the depth/bpp.. I think copy/paste > of a hack from another driver to do video 'underlays' ;-) > > BR, > -R > >> >> DBG("create fbdev: %dx%d@%d (%dx%d)", sizes->surface_width, >> sizes->surface_height, sizes->surface_bpp, >> -- >> 1.9.3 >>