From: Guoqiang Cao <[email protected]>

Set pDeviceInfo.asDisplayformat accordinly based on the color depth passed
psb_user_framebuffer_create via ioctrl from x-server

Signed-off-by: Guoqiang Cao <[email protected]>
Signed-off-by: Hitesh K. Patel <[email protected]>
---
 drivers/staging/mrst/drv/psb_fb.c                  |    4 ++++
 .../linux_framebuffer_mrst/mrstlfb_displayclass.c  |   10 ++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/mrst/drv/psb_fb.c 
b/drivers/staging/mrst/drv/psb_fb.c
index 013bbe5..ec90f20 100644
--- a/drivers/staging/mrst/drv/psb_fb.c
+++ b/drivers/staging/mrst/drv/psb_fb.c
@@ -45,6 +45,8 @@
 #include "mdfld_dsi_output.h"
 #include "mdfld_output.h"
 
+extern int MRSTLFBHandleChangeFB(struct drm_device* dev, struct 
psb_framebuffer *psbfb);
+
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
 static int fill_fb_bitfield(struct fb_var_screeninfo *var, int depth)
 {
@@ -856,6 +858,8 @@ static struct drm_framebuffer *psb_user_framebuffer_create
        psbfb->size = size;
        psbfb->hKernelMemInfo = hKernelMemInfo;
 
+       MRSTLFBHandleChangeFB(dev, psbfb);
+
        DRM_DEBUG("Mapping to gtt..., KernelMemInfo %p\n", psKernelMemInfo);
 
        /*if not VRAM, map it into tt aperture*/
diff --git 
a/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_mrst/mrstlfb_displayclass.c
 
b/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_mrst/mrstlfb_displayclass.c
index 4385153..f757ac5 100644
--- 
a/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_mrst/mrstlfb_displayclass.c
+++ 
b/drivers/staging/mrst/pvr/services4/3rdparty/linux_framebuffer_mrst/mrstlfb_displayclass.c
@@ -1321,7 +1321,7 @@ void MRSTLFBResume(void)
 
 #ifdef DRM_PVR_USE_INTEL_FB
 #include "mm.h"
-static int MRSTLFBHandleChangeFB(struct drm_device* dev, struct 
psb_framebuffer *psbfb)
+int MRSTLFBHandleChangeFB(struct drm_device* dev, struct psb_framebuffer 
*psbfb)
 {
        MRSTLFB_DEVINFO *psDevInfo = GetAnchorPtr();
        int i;
@@ -1330,7 +1330,8 @@ static int MRSTLFBHandleChangeFB(struct drm_device* dev, 
struct psb_framebuffer
        if( !psDevInfo->sSystemBuffer.bIsContiguous )
                MRSTLFBFreeKernelMem( 
psDevInfo->sSystemBuffer.uSysAddr.psNonCont );
 
-       
+       psDevInfo->sDisplayFormat.pixelformat = (psbfb->base.depth == 16) ? 
PVRSRV_PIXEL_FORMAT_RGB565 : PVRSRV_PIXEL_FORMAT_ARGB8888;
+
        psDevInfo->sDisplayDim.ui32ByteStride = psbfb->base.pitch;
        psDevInfo->sDisplayDim.ui32Width = psbfb->base.width;
        psDevInfo->sDisplayDim.ui32Height = psbfb->base.height;
@@ -1368,7 +1369,7 @@ static int MRSTLFBHandleChangeFB(struct drm_device* dev, 
struct psb_framebuffer
 
 #else
 
-static int MRSTLFBHandleChangeFB(struct drm_device* dev, struct 
psb_framebuffer *psbfb)
+int MRSTLFBHandleChangeFB(struct drm_device* dev, struct psb_framebuffer 
*psbfb)
 {
        MRSTLFB_DEVINFO *psDevInfo = GetAnchorPtr();
        int i;
@@ -1381,7 +1382,8 @@ static int MRSTLFBHandleChangeFB(struct drm_device* dev, 
struct psb_framebuffer
        dev_priv = (struct drm_psb_private *)dev->dev_private;
        pg = dev_priv->pg;
 
-       
+       psDevInfo->sDisplayFormat.pixelformat = (psbfb->base.depth == 16) ? 
PVRSRV_PIXEL_FORMAT_RGB565 : PVRSRV_PIXEL_FORMAT_ARGB8888;
+
        psDevInfo->sDisplayDim.ui32ByteStride = psbfb->base.pitch;
        psDevInfo->sDisplayDim.ui32Width = psbfb->base.width;
        psDevInfo->sDisplayDim.ui32Height = psbfb->base.height;
-- 
1.7.1

_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to