Hi Nickey, On 13 December 2016 at 00:24, Nickey Yang <nickey.y...@rock-chips.com> wrote: > Isp-camera preview image will be broken when dual screen display mode. > This patch set isp/vop qos level higher to solve this problem. > We have verified this patch on rk3288-miniarm board. > > Signed-off-by: Nickey Yang <nickey.y...@rock-chips.com> > --- > arch/arm/include/asm/arch-rockchip/qos_rk3288.h | 26 > +++++++++++++++++++++++++ > arch/arm/mach-rockchip/rk3288-board.c | 15 ++++++++++++++ > 2 files changed, 41 insertions(+) > create mode 100644 arch/arm/include/asm/arch-rockchip/qos_rk3288.h > > diff --git a/arch/arm/include/asm/arch-rockchip/qos_rk3288.h > b/arch/arm/include/asm/arch-rockchip/qos_rk3288.h > new file mode 100644 > index 0000000..f0420ba > --- /dev/null > +++ b/arch/arm/include/asm/arch-rockchip/qos_rk3288.h > @@ -0,0 +1,26 @@ > +/* > + * Copyright 2016 Rockchip Inc. > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > +#ifndef _ASM_ARCH_QOS_RK3288_H > +#define _ASM_ARCH_QOS_RK3288_H > + > +#define PRIORITY_HIGH_SHIFT 2 > +#define PRIORITY_LOW_SHIFT 0 > +#define PRIORITY_MASK 3 > + > +#define PRIORITY_HIGH_VAL(h) \ > + (((h) & PRIORITY_MASK) << PRIORITY_HIGH_SHIFT) > +#define PRIORITY_LOW_VAL(l) \ > + (((l) & PRIORITY_MASK) << PRIORITY_LOW_SHIFT)
I'm not keen on these two. Please see below. > + > +#define CPU_AXI_QOS_PRIORITY 0x08 > + > +#define VIO0_VOP_QOS 0xffad0400 > +#define VIO1_VOP_QOS 0xffad0000 > +#define VIO1_ISP_R_QOS 0xffad0900 > +#define VIO1_ISP_W0_QOS 0xffad0100 > +#define VIO1_ISP_W1_QOS 0xffad0180 > + > +#endif > diff --git a/arch/arm/mach-rockchip/rk3288-board.c > b/arch/arm/mach-rockchip/rk3288-board.c > index 411bb29..b54c40a 100644 > --- a/arch/arm/mach-rockchip/rk3288-board.c > +++ b/arch/arm/mach-rockchip/rk3288-board.c > @@ -13,6 +13,7 @@ > #include <asm/arch/clock.h> > #include <asm/arch/periph.h> > #include <asm/arch/pmu_rk3288.h> > +#include <asm/arch/qos_rk3288.h> > #include <asm/arch/boot_mode.h> > #include <asm/arch/timer.h> > #include <asm/gpio.h> > @@ -54,6 +55,20 @@ int board_late_init(void) > { > setup_boot_mode(); > > + /* set vop qos to higher priority */ > + writel(PRIORITY_HIGH_VAL(2) | PRIORITY_LOW_VAL(2), > + VIO0_VOP_QOS + CPU_AXI_QOS_PRIORITY); > + writel(PRIORITY_HIGH_VAL(2) | PRIORITY_LOW_VAL(2), > + VIO1_VOP_QOS + CPU_AXI_QOS_PRIORITY); How about: int val = 2 << PRIORITY_HIGH_SHIFT | 2 << PRIORITY_LOW_SHIFT; writel(val, CPU_AXI_QOS_PRIORITY + VIO0_VOP_QOS) i.e. put the register base first (before the +). > + > + /* set isp qos to higher priority */ > + writel(PRIORITY_HIGH_VAL(2) | PRIORITY_LOW_VAL(2), > + VIO1_ISP_R_QOS + CPU_AXI_QOS_PRIORITY); > + writel(PRIORITY_HIGH_VAL(2) | PRIORITY_LOW_VAL(2), > + VIO1_ISP_W0_QOS + CPU_AXI_QOS_PRIORITY); > + writel(PRIORITY_HIGH_VAL(2) | PRIORITY_LOW_VAL(2), > + VIO1_ISP_W1_QOS + CPU_AXI_QOS_PRIORITY); > + > return rk_board_late_init(); > } > > -- > 1.9.1 > > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot