From: Jason Hu <[email protected]>

Set of DSPBCNTR should be triggered by re-enabling planeB.

Signed-off-by: Jason Hu <[email protected]>
Signed-off-by: Hitesh K. Patel <[email protected]>
---
 drivers/staging/mrst/drv/psb_drv.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/mrst/drv/psb_drv.c 
b/drivers/staging/mrst/drv/psb_drv.c
index 77acf27..a744e32 100644
--- a/drivers/staging/mrst/drv/psb_drv.c
+++ b/drivers/staging/mrst/drv/psb_drv.c
@@ -2507,6 +2507,16 @@ static int psb_register_rw_ioctl(struct drm_device *dev, 
void *data,
                                temp &= ~DISPPLANE_BOTTOM;
                                temp |= DISPPLANE_32BPP;
                                PSB_WVDC32(temp, DSPBCNTR);
+
+                                temp = PSB_RVDC32(PIPEBCONF);
+                                temp |= 1 << 19;
+                                PSB_WVDC32(temp, PIPEBCONF);
+                                /*wait for a vlank period.*/
+                                udelay(20000);
+
+                                temp = PSB_RVDC32(PIPEBCONF);
+                                temp &= ~(1 << 19);
+                                PSB_WVDC32(temp, PIPEBCONF);
                        }
                        if ( arg->subpicture_enable_mask & REGRWBITS_DSPCCNTR){
                                temp =  PSB_RVDC32(DSPCCNTR);
@@ -2533,6 +2543,16 @@ static int psb_register_rw_ioctl(struct drm_device *dev, 
void *data,
                                temp &= ~DISPPLANE_PIXFORMAT_MASK;              
        
                                temp |= DISPPLANE_32BPP_NO_ALPHA;
                                PSB_WVDC32(temp, DSPBCNTR);
+
+                                temp = PSB_RVDC32(PIPEBCONF);
+                                temp |= 1 << 19;
+                                PSB_WVDC32(temp, PIPEBCONF);
+                                /*wait for a vlank period.*/
+                                udelay(20000);
+
+                                temp = PSB_RVDC32(PIPEBCONF);
+                                temp &= ~(1 << 19);
+                                PSB_WVDC32(temp, PIPEBCONF);
                        }
                        if ( arg->subpicture_disable_mask & REGRWBITS_DSPCCNTR){
                                temp =  PSB_RVDC32(DSPCCNTR);
-- 
1.7.1

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

Reply via email to