From 410478adfed82499f6fbdf5b04c82c3e91fd5951 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Thu, 15 Dec 2011 00:12:02 +0200 Subject: [PATCH] staging: mrst: Add alignment argument to psb_gtt_map_pvr_memory() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The video overlay register block must be aligned on a 64K boundary. Allow the caller of psb_gtt_map_pvr_memory() to specify the desired alignment. Signed-off-by: Ville Syrjälä Acked-by: Pauli Nieminen Reviewed-by: Jani Nikula Signed-off-by: Kirill A. Shutemov --- drivers/staging/mrst/drv/psb_gtt.c | 5 +++-- drivers/staging/mrst/drv/psb_gtt.h | 3 ++- .../services4/3rdparty/linux_framebuffer_mrst/mrstlfb_displayclass.c | 3 +-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/staging/mrst/drv/psb_gtt.c b/drivers/staging/mrst/drv/psb_gtt.c index e3faa4a..73057a6 100644 --- a/drivers/staging/mrst/drv/psb_gtt.c +++ b/drivers/staging/mrst/drv/psb_gtt.c @@ -955,7 +955,8 @@ int psb_gtt_map_pvr_memory(struct drm_device *dev, unsigned int ui32TaskId, IMG_CPU_PHYADDR *pPages, unsigned int ui32PagesNum, - unsigned int *ui32Offset) + unsigned int *ui32Offset, + unsigned int ui32Align) { struct drm_psb_private * dev_priv = (struct drm_psb_private *)dev->dev_private; struct psb_gtt_mm * mm = dev_priv->gtt_mm; @@ -970,7 +971,7 @@ int psb_gtt_map_pvr_memory(struct drm_device *dev, pages = 0; /*alloc memory in TT apeture*/ - ret = psb_gtt_mm_alloc_mem(mm, ui32PagesNum, 0, &node); + ret = psb_gtt_mm_alloc_mem(mm, ui32PagesNum, ui32Align, &node); if (ret) { DRM_DEBUG("alloc TT memory error\n"); goto failed_pages_alloc; diff --git a/drivers/staging/mrst/drv/psb_gtt.h b/drivers/staging/mrst/drv/psb_gtt.h index 9dda0d4..94a74c3 100644 --- a/drivers/staging/mrst/drv/psb_gtt.h +++ b/drivers/staging/mrst/drv/psb_gtt.h @@ -103,7 +103,8 @@ extern int psb_gtt_map_pvr_memory(struct drm_device *dev, unsigned int ui32TaskId, IMG_CPU_PHYADDR *pPages, unsigned int ui32PagesNum, - unsigned int *ui32Offset); + unsigned int *ui32Offset, + unsigned int ui32Align); extern int psb_gtt_unmap_pvr_memory(struct drm_device *dev, unsigned int hHandle, 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 965a3e2..1e34dd4 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 @@ -573,7 +573,6 @@ static MRST_ERROR MRSTLFBDisableSwapChains(MRSTLFB_DEVINFO *psDevInfo) } #endif - static PVRSRV_ERROR CreateDCSwapChain(IMG_HANDLE hDevice, IMG_UINT32 ui32Flags, DISPLAY_SURF_ATTRIBUTES *psDstSurfAttrib, @@ -1823,7 +1822,7 @@ MRST_ERROR MRSTLFBAllocBuffer(struct MRSTLFB_DEVINFO_TAG *psDevInfo, IMG_UINT32 (*ppBuffer)->ui32OwnerTaskID, (IMG_CPU_PHYADDR*) (*ppBuffer)->uSysAddr.psNonCont, ulPagesNumber, - &(*ppBuffer)->sDevVAddr.uiAddr ); + &(*ppBuffer)->sDevVAddr.uiAddr, 1); (*ppBuffer)->sDevVAddr.uiAddr <<= PAGE_SHIFT; -- 2.7.4