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
