forked from pool/u-boot
5add83b6bf
OBS-URL: https://build.opensuse.org/request/show/321230 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/u-boot?expand=0&rev=52
208 lines
6.1 KiB
Diff
208 lines
6.1 KiB
Diff
>From 5f49fb7ed89bd75e77bda5353877e85fbe921866 Mon Sep 17 00:00:00 2001
|
|
From: Alexandre Courbot <acourbot@nvidia.com>
|
|
Date: Thu, 9 Jul 2015 16:33:00 +0900
|
|
Subject: [PATCH 1/2] ARM: tegra: move VPR configuration to a later stage
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
U-boot is responsible for enabling the GPU DT node after all necessary
|
|
configuration (VPR setup for T124) is performed. In order to be able to
|
|
check whether this configuration has been performed right before booting
|
|
the kernel, make it happen during board_init().
|
|
|
|
Also move VPR configuration into the more generic gpu.c file, which will
|
|
also host other GPU-related functions, and let boards specify
|
|
individually whether they need VPR setup or not.
|
|
|
|
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
|
|
Cc: Stephen Warren <swarren@nvidia.com>
|
|
Cc: Tom Warren <twarren@nvidia.com>
|
|
Signed-off-by: Tom Warren <twarren@nvidia.com>
|
|
(cherry picked from commit bd2787143ef5f73d74c8376e32d38ec05b712162)
|
|
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
|
---
|
|
arch/arm/include/asm/arch-tegra/ap.h | 9 ---------
|
|
arch/arm/include/asm/arch-tegra/gpu.h | 27 +++++++++++++++++++++++++++
|
|
arch/arm/mach-tegra/Makefile | 4 +---
|
|
arch/arm/mach-tegra/ap.c | 3 ---
|
|
arch/arm/mach-tegra/board2.c | 3 +++
|
|
arch/arm/mach-tegra/{vpr.c => gpu.c} | 18 +++++++++++++++---
|
|
include/configs/tegra124-common.h | 3 +++
|
|
include/configs/tegra210-common.h | 3 +++
|
|
8 files changed, 52 insertions(+), 18 deletions(-)
|
|
create mode 100644 arch/arm/include/asm/arch-tegra/gpu.h
|
|
rename arch/arm/mach-tegra/{vpr.c => gpu.c} (80%)
|
|
|
|
diff --git a/arch/arm/include/asm/arch-tegra/ap.h b/arch/arm/include/asm/arch-tegra/ap.h
|
|
index 76773b7..8c2586c 100644
|
|
--- a/arch/arm/include/asm/arch-tegra/ap.h
|
|
+++ b/arch/arm/include/asm/arch-tegra/ap.h
|
|
@@ -64,15 +64,6 @@ int tegra_get_sku_info(void);
|
|
/* Do any chip-specific cache config */
|
|
void config_cache(void);
|
|
|
|
-#if defined(CONFIG_TEGRA124) || defined(CONFIG_TEGRA210)
|
|
-/* Do chip-specific vpr config */
|
|
-void config_vpr(void);
|
|
-#else
|
|
-static inline void config_vpr(void)
|
|
-{
|
|
-}
|
|
-#endif
|
|
-
|
|
#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
|
|
bool tegra_cpu_is_non_secure(void);
|
|
#endif
|
|
diff --git a/arch/arm/include/asm/arch-tegra/gpu.h b/arch/arm/include/asm/arch-tegra/gpu.h
|
|
new file mode 100644
|
|
index 0000000..b347a21
|
|
--- /dev/null
|
|
+++ b/arch/arm/include/asm/arch-tegra/gpu.h
|
|
@@ -0,0 +1,27 @@
|
|
+/*
|
|
+ * (C) Copyright 2015
|
|
+ * NVIDIA Corporation <www.nvidia.com>
|
|
+ *
|
|
+ * SPDX-License-Identifier: GPL-2.0+
|
|
+ */
|
|
+
|
|
+#ifndef __ASM_ARCH_TEGRA_GPU_H
|
|
+#define __ASM_ARCH_TEGRA_GPU_H
|
|
+
|
|
+#if defined(CONFIG_TEGRA_GPU)
|
|
+
|
|
+void config_gpu(void);
|
|
+bool gpu_configured(void);
|
|
+
|
|
+#else /* CONFIG_TEGRA_GPU */
|
|
+
|
|
+static inline void config_gpu(void)
|
|
+{
|
|
+}
|
|
+
|
|
+static inline bool gpu_configured(void)
|
|
+{
|
|
+ return false;
|
|
+}
|
|
+
|
|
+#endif /* CONFIG_TEGRA_GPU */
|
|
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile
|
|
index 0db8ee0..75924ad 100644
|
|
--- a/arch/arm/mach-tegra/Makefile
|
|
+++ b/arch/arm/mach-tegra/Makefile
|
|
@@ -24,9 +24,7 @@ obj-y += pinmux-common.o
|
|
obj-y += powergate.o
|
|
obj-y += xusb-padctl.o
|
|
obj-$(CONFIG_DISPLAY_CPUINFO) += sys_info.o
|
|
-#TCW Fix this to use a common config switch (CONFIG_LOCK_VPR?)
|
|
-obj-$(CONFIG_TEGRA124) += vpr.o
|
|
-obj-$(CONFIG_TEGRA210) += vpr.o
|
|
+obj-$(CONFIG_TEGRA_GPU) += gpu.o
|
|
obj-$(CONFIG_TEGRA_CLOCK_SCALING) += emc.o
|
|
|
|
ifndef CONFIG_SPL_BUILD
|
|
diff --git a/arch/arm/mach-tegra/ap.c b/arch/arm/mach-tegra/ap.c
|
|
index e62dda5..b4229f4 100644
|
|
--- a/arch/arm/mach-tegra/ap.c
|
|
+++ b/arch/arm/mach-tegra/ap.c
|
|
@@ -226,8 +226,5 @@ void s_init(void)
|
|
|
|
/* enable SMMU */
|
|
smmu_enable();
|
|
-
|
|
- /* init vpr */
|
|
- config_vpr();
|
|
}
|
|
#endif
|
|
diff --git a/arch/arm/mach-tegra/board2.c b/arch/arm/mach-tegra/board2.c
|
|
index 36bcfb0..4e73d1a 100644
|
|
--- a/arch/arm/mach-tegra/board2.c
|
|
+++ b/arch/arm/mach-tegra/board2.c
|
|
@@ -29,6 +29,7 @@
|
|
#include <asm/arch-tegra/sys_proto.h>
|
|
#include <asm/arch-tegra/uart.h>
|
|
#include <asm/arch-tegra/warmboot.h>
|
|
+#include <asm/arch-tegra/gpu.h>
|
|
#ifdef CONFIG_TEGRA_CLOCK_SCALING
|
|
#include <asm/arch/emc.h>
|
|
#endif
|
|
@@ -125,6 +126,8 @@ int board_init(void)
|
|
clock_init();
|
|
clock_verify();
|
|
|
|
+ config_gpu();
|
|
+
|
|
#ifdef CONFIG_TEGRA_SPI
|
|
pin_mux_spi();
|
|
#endif
|
|
diff --git a/arch/arm/mach-tegra/vpr.c b/arch/arm/mach-tegra/gpu.c
|
|
similarity index 80%
|
|
rename from arch/arm/mach-tegra/vpr.c
|
|
rename to arch/arm/mach-tegra/gpu.c
|
|
index f695811..b2fa50b 100644
|
|
--- a/arch/arm/mach-tegra/vpr.c
|
|
+++ b/arch/arm/mach-tegra/gpu.c
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved.
|
|
+ * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms and conditions of the GNU General Public License,
|
|
@@ -21,8 +21,11 @@
|
|
#include <asm/arch/tegra.h>
|
|
#include <asm/arch/mc.h>
|
|
|
|
-/* Configures VPR. Right now, all we do is turn it off. */
|
|
-void config_vpr(void)
|
|
+#include <fdt_support.h>
|
|
+
|
|
+static bool _configured;
|
|
+
|
|
+void config_gpu(void)
|
|
{
|
|
struct mc_ctlr *mc = (struct mc_ctlr *)NV_PA_MC_BASE;
|
|
|
|
@@ -32,4 +35,13 @@ void config_vpr(void)
|
|
&mc->mc_video_protect_reg_ctrl);
|
|
/* read back to ensure the write went through */
|
|
readl(&mc->mc_video_protect_reg_ctrl);
|
|
+
|
|
+ debug("configured VPR\n");
|
|
+
|
|
+ _configured = true;
|
|
+}
|
|
+
|
|
+bool vpr_configured(void)
|
|
+{
|
|
+ return _configured;
|
|
}
|
|
diff --git a/include/configs/tegra124-common.h b/include/configs/tegra124-common.h
|
|
index af7698d..39e74f0 100644
|
|
--- a/include/configs/tegra124-common.h
|
|
+++ b/include/configs/tegra124-common.h
|
|
@@ -70,4 +70,7 @@
|
|
#define CONFIG_USB_EHCI_TXFIFO_THRESH 0x10
|
|
#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
|
|
|
|
+/* GPU needs setup */
|
|
+#define CONFIG_TEGRA_GPU
|
|
+
|
|
#endif /* _TEGRA124_COMMON_H_ */
|
|
diff --git a/include/configs/tegra210-common.h b/include/configs/tegra210-common.h
|
|
index 0348d47..d95056c 100644
|
|
--- a/include/configs/tegra210-common.h
|
|
+++ b/include/configs/tegra210-common.h
|
|
@@ -73,4 +73,7 @@
|
|
#define CONFIG_USB_EHCI_TXFIFO_THRESH 0x10
|
|
#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
|
|
|
|
+/* GPU needs setup */
|
|
+#define CONFIG_TEGRA_GPU
|
|
+
|
|
#endif /* _TEGRA210_COMMON_H_ */
|
|
--
|
|
2.1.4
|
|
|