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
189 lines
5.1 KiB
Diff
189 lines
5.1 KiB
Diff
>From 59676ad5a44e83eecf4a2ed5d5b9b87e22e2d7de Mon Sep 17 00:00:00 2001
|
|
From: Alexandre Courbot <acourbot@nvidia.com>
|
|
Date: Thu, 9 Jul 2015 16:33:01 +0900
|
|
Subject: [PATCH 2/2] ARM: tegra: enable GPU DT node when appropriate
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
T124/210 requires some specific configuration (VPR setup) to
|
|
be performed by the bootloader before the GPU can be used.
|
|
For this reason, the GPU node in the device tree is disabled
|
|
by default. This patch enables the node if U-boot has performed
|
|
VPR configuration.
|
|
|
|
Boards enabled by this patch are T124's Jetson TK1 and Venice2
|
|
and T210's P2571.
|
|
|
|
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 caa6770fca0ed491a6c9e7f3993c02a627b898e2)
|
|
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
|
---
|
|
arch/arm/include/asm/arch-tegra/gpu.h | 15 +++++++++++++++
|
|
arch/arm/mach-tegra/gpu.c | 19 +++++++++++++++++++
|
|
board/nvidia/jetson-tk1/jetson-tk1.c | 8 ++++++++
|
|
board/nvidia/p2571/p2571.c | 7 +++++++
|
|
board/nvidia/venice2/venice2.c | 8 ++++++++
|
|
include/configs/jetson-tk1.h | 2 ++
|
|
include/configs/p2571.h | 1 +
|
|
include/configs/venice2.h | 2 ++
|
|
8 files changed, 62 insertions(+)
|
|
|
|
diff --git a/arch/arm/include/asm/arch-tegra/gpu.h b/arch/arm/include/asm/arch-tegra/gpu.h
|
|
index b347a21..52280f4 100644
|
|
--- a/arch/arm/include/asm/arch-tegra/gpu.h
|
|
+++ b/arch/arm/include/asm/arch-tegra/gpu.h
|
|
@@ -25,3 +25,18 @@ static inline bool gpu_configured(void)
|
|
}
|
|
|
|
#endif /* CONFIG_TEGRA_GPU */
|
|
+
|
|
+#if defined(CONFIG_OF_LIBFDT)
|
|
+
|
|
+int gpu_enable_node(void *blob, const char *gpupath);
|
|
+
|
|
+#else /* CONFIG_OF_LIBFDT */
|
|
+
|
|
+static inline int gpu_enable_node(void *blob, const char *gpupath)
|
|
+{
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#endif /* CONFIG_OF_LIBFDT */
|
|
+
|
|
+#endif /* __ASM_ARCH_TEGRA_GPU_H */
|
|
diff --git a/arch/arm/mach-tegra/gpu.c b/arch/arm/mach-tegra/gpu.c
|
|
index b2fa50b..4ea046d 100644
|
|
--- a/arch/arm/mach-tegra/gpu.c
|
|
+++ b/arch/arm/mach-tegra/gpu.c
|
|
@@ -45,3 +45,22 @@ bool vpr_configured(void)
|
|
{
|
|
return _configured;
|
|
}
|
|
+
|
|
+#if defined(CONFIG_OF_LIBFDT)
|
|
+
|
|
+int gpu_enable_node(void *blob, const char *gpupath)
|
|
+{
|
|
+ int offset;
|
|
+
|
|
+ if (vpr_configured()) {
|
|
+ offset = fdt_path_offset(blob, gpupath);
|
|
+ if (offset > 0) {
|
|
+ fdt_status_okay(blob, offset);
|
|
+ debug("enabled GPU node %s\n", gpupath);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#endif
|
|
diff --git a/board/nvidia/jetson-tk1/jetson-tk1.c b/board/nvidia/jetson-tk1/jetson-tk1.c
|
|
index 52425a8..3c21767 100644
|
|
--- a/board/nvidia/jetson-tk1/jetson-tk1.c
|
|
+++ b/board/nvidia/jetson-tk1/jetson-tk1.c
|
|
@@ -11,6 +11,7 @@
|
|
|
|
#include <asm/arch/gpio.h>
|
|
#include <asm/arch/pinmux.h>
|
|
+#include <asm/arch-tegra/gpu.h>
|
|
|
|
#include "pinmux-config-jetson-tk1.h"
|
|
|
|
@@ -79,3 +80,10 @@ int board_eth_init(bd_t *bis)
|
|
return pci_eth_init(bis);
|
|
}
|
|
#endif /* PCI */
|
|
+
|
|
+int ft_board_setup(void *blob, bd_t *bd)
|
|
+{
|
|
+ gpu_enable_node(blob, "/gpu@0,57000000");
|
|
+
|
|
+ return 0;
|
|
+}
|
|
diff --git a/board/nvidia/p2571/p2571.c b/board/nvidia/p2571/p2571.c
|
|
index fc710c1..6ec9159 100644
|
|
--- a/board/nvidia/p2571/p2571.c
|
|
+++ b/board/nvidia/p2571/p2571.c
|
|
@@ -8,6 +8,7 @@
|
|
#include <common.h>
|
|
#include <asm/arch/gpio.h>
|
|
#include <asm/arch/pinmux.h>
|
|
+#include <asm/arch-tegra/gpu.h>
|
|
#include "pinmux-config-p2571.h"
|
|
|
|
/*
|
|
@@ -27,3 +28,9 @@ void pinmux_init(void)
|
|
pinmux_config_drvgrp_table(p2571_drvgrps,
|
|
ARRAY_SIZE(p2571_drvgrps));
|
|
}
|
|
+
|
|
+int ft_board_setup(void *blob, bd_t *bd)
|
|
+{
|
|
+ gpu_enable_node(blob, "/gpu@0,57000000");
|
|
+ return 0;
|
|
+}
|
|
diff --git a/board/nvidia/venice2/venice2.c b/board/nvidia/venice2/venice2.c
|
|
index c56ef12..3e2b9a7 100644
|
|
--- a/board/nvidia/venice2/venice2.c
|
|
+++ b/board/nvidia/venice2/venice2.c
|
|
@@ -8,6 +8,7 @@
|
|
#include <common.h>
|
|
#include <asm/arch/gpio.h>
|
|
#include <asm/arch/pinmux.h>
|
|
+#include <asm/arch-tegra/gpu.h>
|
|
#include "pinmux-config-venice2.h"
|
|
|
|
/*
|
|
@@ -27,3 +28,10 @@ void pinmux_init(void)
|
|
pinmux_config_drvgrp_table(venice2_drvgrps,
|
|
ARRAY_SIZE(venice2_drvgrps));
|
|
}
|
|
+
|
|
+int ft_board_setup(void *blob, bd_t *bd)
|
|
+{
|
|
+ gpu_enable_node(blob, "/gpu@0,57000000");
|
|
+
|
|
+ return 0;
|
|
+}
|
|
diff --git a/include/configs/jetson-tk1.h b/include/configs/jetson-tk1.h
|
|
index 3bbff28..b3e6496 100644
|
|
--- a/include/configs/jetson-tk1.h
|
|
+++ b/include/configs/jetson-tk1.h
|
|
@@ -82,4 +82,6 @@
|
|
#define CONFIG_ARMV7_SECURE_BASE 0xfff00000
|
|
#define CONFIG_ARMV7_SECURE_RESERVE_SIZE 0x00100000
|
|
|
|
+#define CONFIG_OF_BOARD_SETUP
|
|
+
|
|
#endif /* __CONFIG_H */
|
|
diff --git a/include/configs/p2571.h b/include/configs/p2571.h
|
|
index 77faf5f..1bf4d98 100644
|
|
--- a/include/configs/p2571.h
|
|
+++ b/include/configs/p2571.h
|
|
@@ -71,5 +71,6 @@
|
|
#include "tegra-common-post.h"
|
|
|
|
#define COUNTER_FREQUENCY 38400000
|
|
+#define CONFIG_OF_BOARD_SETUP
|
|
|
|
#endif /* _P2571_H */
|
|
diff --git a/include/configs/venice2.h b/include/configs/venice2.h
|
|
index 1d9d053..bc5080a 100644
|
|
--- a/include/configs/venice2.h
|
|
+++ b/include/configs/venice2.h
|
|
@@ -64,4 +64,6 @@
|
|
#include "tegra-common-usb-gadget.h"
|
|
#include "tegra-common-post.h"
|
|
|
|
+#define CONFIG_OF_BOARD_SETUP
|
|
+
|
|
#endif /* __CONFIG_H */
|
|
--
|
|
2.1.4
|
|
|