From: 陈恒明 Date: Fri, 25 Mar 2011 03:51:31 +0000 (+0800) Subject: rk29: vpu: add dsb for flush write buffer X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0786e79564cd67656f3a1a0811c4e046ea5e2bea;p=firefly-linux-kernel-4.4.55.git rk29: vpu: add dsb for flush write buffer --- 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;