diff mbox

[U-Boot,v4] rockchip: rk3288: set isp/vop qos priority level

Message ID 1482979650-3648-1-git-send-email-nickey.yang@rock-chips.com
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Nickey Yang Dec. 29, 2016, 2:47 a.m. UTC
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@rock-chips.com>
---
 arch/arm/include/asm/arch-rockchip/qos_rk3288.h | 20 ++++++++++++++++++++
 arch/arm/mach-rockchip/rk3288-board.c           | 20 ++++++++++++++++++++
 2 files changed, 40 insertions(+)
 create mode 100644 arch/arm/include/asm/arch-rockchip/qos_rk3288.h

Comments

Simon Glass Jan. 12, 2017, 5:08 a.m. UTC | #1
On 28 December 2016 at 19:47, Nickey Yang <nickey.yang@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.yang@rock-chips.com>
> ---
>  arch/arm/include/asm/arch-rockchip/qos_rk3288.h | 20 ++++++++++++++++++++
>  arch/arm/mach-rockchip/rk3288-board.c           | 20 ++++++++++++++++++++
>  2 files changed, 40 insertions(+)
>  create mode 100644 arch/arm/include/asm/arch-rockchip/qos_rk3288.h

Applied to u-boot-rockchip, thanks!

(please do include a change log in future)
diff mbox

Patch

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..b3094fc
--- /dev/null
+++ b/arch/arm/include/asm/arch-rockchip/qos_rk3288.h
@@ -0,0 +1,20 @@ 
+/*
+ * 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 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..018ac88 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>
@@ -50,9 +51,28 @@  __weak int rk_board_late_init(void)
 	return 0;
 }
 
+int rk3288_qos_init(void)
+{
+	int val = 2 << PRIORITY_HIGH_SHIFT | 2 << PRIORITY_LOW_SHIFT;
+	/* set vop qos to higher priority */
+	writel(val, CPU_AXI_QOS_PRIORITY + VIO0_VOP_QOS);
+	writel(val, CPU_AXI_QOS_PRIORITY + VIO1_VOP_QOS);
+
+	if (!fdt_node_check_compatible(gd->fdt_blob, 0,
+				       "rockchip,rk3288-miniarm"))
+	{
+		/* set isp qos to higher priority */
+		writel(val, CPU_AXI_QOS_PRIORITY + VIO1_ISP_R_QOS);
+		writel(val, CPU_AXI_QOS_PRIORITY + VIO1_ISP_W0_QOS);
+		writel(val, CPU_AXI_QOS_PRIORITY + VIO1_ISP_W1_QOS);
+	}
+	return 0;
+}
+
 int board_late_init(void)
 {
 	setup_boot_mode();
+	rk3288_qos_init();
 
 	return rk_board_late_init();
 }