[U-Boot] [PATCH v3] rockchip: rk3288: set isp/vop qos priority level

Nickey Yang nickey.yang at rock-chips.com
Tue Dec 13 08:24:28 CET 2016


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.yang at 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)
+
+#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);
+
+	/* 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




More information about the U-Boot mailing list