From 0786e79564cd67656f3a1a0811c4e046ea5e2bea Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=99=88=E6=81=92=E6=98=8E?= Date: Fri, 25 Mar 2011 11:51:31 +0800 Subject: [PATCH] rk29: vpu: add dsb for flush write buffer --- arch/arm/mach-rk29/vpu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm/mach-rk29/vpu.c b/arch/arm/mach-rk29/vpu.c index 402dcd0ce1b1..a839ee2c4543 100644 --- a/arch/arm/mach-rk29/vpu.c +++ b/arch/arm/mach-rk29/vpu.c @@ -244,6 +244,8 @@ static long vpu_write_dec(u32 *src) for (i = REG_NUM_DEC - 1; i > VPU_REG_DEC_GATE; i--) dst[i] = src[i]; + dsb(); + dst[VPU_REG_DEC_GATE] = src[VPU_REG_DEC_GATE] | VPU_REG_DEC_GATE_BIT; dst[VPU_REG_EN_DEC] = src[VPU_REG_EN_DEC]; @@ -258,6 +260,8 @@ static long vpu_write_dec_pp(u32 *src) for (i = VPU_REG_EN_DEC_PP + 1; i < REG_NUM_DEC_PP; i++) dst[i] = src[i]; + dsb(); + dst[VPU_REG_DEC_PP_GATE] = src[VPU_REG_DEC_PP_GATE] | VPU_REG_PP_GATE_BIT; dst[VPU_REG_DEC_GATE] = src[VPU_REG_DEC_GATE] | VPU_REG_DEC_GATE_BIT; dst[VPU_REG_EN_DEC] = src[VPU_REG_EN_DEC]; @@ -278,6 +282,8 @@ static long vpu_write_enc(u32 *src) for (i = VPU_REG_EN_ENC + 1; i < REG_NUM_ENC; i++) dst[i] = src[i]; + dsb(); + dst[VPU_REG_ENC_GATE] = src[VPU_REG_ENC_GATE] | VPU_REG_ENC_GATE_BIT; dst[VPU_REG_EN_ENC] = src[VPU_REG_EN_ENC]; @@ -294,6 +300,8 @@ static long vpu_write_pp(u32 *src) for (i = VPU_REG_PP_GATE + 1; i < REG_NUM_PP; i++) dst[i] = src[i]; + dsb(); + dst[VPU_REG_EN_PP] = src[VPU_REG_EN_PP]; return 0; -- 2.34.1