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

Reply via email to