drm/rockchip: fix vop value mask
authorMark Yao <mark.yao@rock-chips.com>
Tue, 21 Jun 2016 06:26:54 +0000 (14:26 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Fri, 1 Jul 2016 11:25:41 +0000 (19:25 +0800)
Change-Id: Iedfb871f2909a427ca97f3014f4b0e0b565d06f0
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/gpu/drm/rockchip/rockchip_drm_vop.c

index c816b3db4b28f4a09d1298b6cd5aeed9d36efee2..181c582a71a44a8c37817eaecad448ed4b178b7a 100644 (file)
@@ -191,11 +191,11 @@ static inline void vop_mask_write(struct vop *vop, uint32_t offset,
                return;
 
        if (write_mask) {
-               v = (v << shift) | (mask << (shift + 16));
+               v = ((v & mask) << shift) | (mask << (shift + 16));
        } else {
                uint32_t cached_val = vop->regsbak[offset >> 2];
 
-               v = (cached_val & ~(mask << shift)) | (v << shift);
+               v = (cached_val & ~(mask << shift)) | ((v & mask) << shift);
                vop->regsbak[offset >> 2] = v;
        }