From: Li Zeng <[email protected]> 1. VC1 playback enabled on DE2.0 firmware 2. fix a ttm buffer code defect.
Change-Id: I8cb9f1b3b41f91adf100145b17c4841fb19c9523 Signed-off-by: Hitesh K. Patel <[email protected]> --- drivers/staging/mrst/drv/psb_drv.c | 2 ++ drivers/staging/mrst/imgv/psb_buffer.c | 4 +++- drivers/staging/mrst/imgv/psb_msvdx.c | 2 ++ drivers/staging/mrst/imgv/psb_msvdx.h | 2 ++ drivers/staging/mrst/imgv/psb_msvdxinit.c | 6 ++++-- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/staging/mrst/drv/psb_drv.c b/drivers/staging/mrst/drv/psb_drv.c index 6aa1baa..c17d3b8 100644 --- a/drivers/staging/mrst/drv/psb_drv.c +++ b/drivers/staging/mrst/drv/psb_drv.c @@ -63,6 +63,7 @@ int drm_psb_no_fb; int drm_psb_force_pipeb; int drm_idle_check_interval = 5; int drm_msvdx_pmpolicy = PSB_PMPOLICY_POWERDOWN; +int drm_msvdx_delay = 250; int drm_topaz_pmpolicy = PSB_PMPOLICY_POWERDOWN; int drm_topaz_sbuswa; int drm_psb_ospm = 1; @@ -85,6 +86,7 @@ module_param_named(no_fb, drm_psb_no_fb, int, 0600); module_param_named(trap_pagefaults, drm_psb_trap_pagefaults, int, 0600); module_param_named(force_pipeb, drm_psb_force_pipeb, int, 0600); module_param_named(msvdx_pmpolicy, drm_msvdx_pmpolicy, int, 0600); +module_param_named(msvdx_command_delay, drm_msvdx_delay, int, 0600); module_param_named(topaz_pmpolicy, drm_topaz_pmpolicy, int, 0600); module_param_named(topaz_sbuswa, drm_topaz_sbuswa, int, 0600); module_param_named(ospm, drm_psb_ospm, int, 0600); diff --git a/drivers/staging/mrst/imgv/psb_buffer.c b/drivers/staging/mrst/imgv/psb_buffer.c index 70a007d..f6db5dd 100644 --- a/drivers/staging/mrst/imgv/psb_buffer.c +++ b/drivers/staging/mrst/imgv/psb_buffer.c @@ -104,7 +104,9 @@ static int psb_init_mem_type(struct ttm_bo_device *bdev, uint32_t type, static void psb_evict_mask(struct ttm_buffer_object *bo, struct ttm_placement* placement) { - uint32_t cur_placement = bo->mem.placement & ~TTM_PL_MASK_MEM; + static uint32_t cur_placement; + + cur_placement = bo->mem.placement & ~TTM_PL_MASK_MEM; cur_placement |= TTM_PL_FLAG_SYSTEM; placement->fpfn = 0; diff --git a/drivers/staging/mrst/imgv/psb_msvdx.c b/drivers/staging/mrst/imgv/psb_msvdx.c index 70a62b7..ab66e3d 100644 --- a/drivers/staging/mrst/imgv/psb_msvdx.c +++ b/drivers/staging/mrst/imgv/psb_msvdx.c @@ -464,6 +464,8 @@ static int psb_msvdx_send(struct drm_device *dev, void *cmd, cmd += 32; cmd_size -= 32; } + if(cmd_size && IS_MDFLD(dev)) + udelay(drm_msvdx_delay); } out: diff --git a/drivers/staging/mrst/imgv/psb_msvdx.h b/drivers/staging/mrst/imgv/psb_msvdx.h index 91cb277..a702b36 100644 --- a/drivers/staging/mrst/imgv/psb_msvdx.h +++ b/drivers/staging/mrst/imgv/psb_msvdx.h @@ -29,6 +29,7 @@ #endif extern int drm_msvdx_pmpolicy; +extern int drm_msvdx_delay; typedef enum { @@ -331,6 +332,7 @@ MSVDX_CORE_CR_MSVDX_MAN_CLK_ENABLE_CR_MTX_MAN_CLK_ENABLE_MASK) #define MSVDX_COMMS_AREA_ADDR (0x02fe0) #define MSVDX_COMMS_CORE_WTD (MSVDX_COMMS_AREA_ADDR - 0x08) +#define MSVDX_COMMS_ERROR_TRIG (MSVDX_COMMS_AREA_ADDR - 0x08) #define MSVDX_COMMS_OFFSET_FLAGS (MSVDX_COMMS_AREA_ADDR + 0x18) #define MSVDX_COMMS_MSG_COUNTER (MSVDX_COMMS_AREA_ADDR - 0x04) #define MSVDX_COMMS_FW_STATUS (MSVDX_COMMS_AREA_ADDR - 0x10) diff --git a/drivers/staging/mrst/imgv/psb_msvdxinit.c b/drivers/staging/mrst/imgv/psb_msvdxinit.c index 4dae367..f6bb173 100644 --- a/drivers/staging/mrst/imgv/psb_msvdxinit.c +++ b/drivers/staging/mrst/imgv/psb_msvdxinit.c @@ -518,8 +518,10 @@ int psb_setup_fw(struct drm_device *dev) } */ - if(IS_MDFLD(dev)) - PSB_WMSVDX32(5, MSVDX_COMMS_CORE_WTD); + if(IS_MDFLD(dev)) { + PSB_WMSVDX32(0, MSVDX_COMMS_ERROR_TRIG); + PSB_WMSVDX32(199, 0x208); /* MTX_SYSC_TIMERDIV */ + } PSB_WMSVDX32(0, MSVDX_COMMS_MSG_COUNTER); PSB_WMSVDX32(0, MSVDX_COMMS_SIGNATURE); PSB_WMSVDX32(0, MSVDX_COMMS_TO_HOST_RD_INDEX); -- 1.7.1 _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
