diff --git a/arch/arm/include/asm/arch-tegra/ap.h b/arch/arm/include/asm/arch-tegra/ap.h index 76773b7ec7c90f3c96a589d1d36700ddba8a957f..8c2586c6f548edd66762cde9803f336acb15e605 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 0000000000000000000000000000000000000000..b347a21835f56fc5f034489825a1157174db5feb --- /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 0db8ee05bd3155d19786154cc502a10b1208aa7e..75924ad848007305f5988d3bdae16e749f387dcd 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 e62dda5a6b24d93fcb43eca7ea47e03917caa049..b4229f4575e83b373385e465c09a08892a13ab9f 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 41e9341874e55b6a661f154b755dff4f6597b688..37953cfda8a1d43109646a9b69b16dad7cefddf8 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 @@ -126,6 +127,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 f695811c9b6d1f73d63cf7dd611fa535f23deda3..b2fa50b5400e23fbcaba3bc39dd975926016a8e4 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 af7698d95c7b7bfa5b1ce2fb2eb5d3643da17596..39e74f023fdad6c0ff1f9a8ba6bf4cfe9daaca37 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 0348d4783bf10f7f16d093ba5640fc821a15aa5d..d95056c0026128b7cfc37b09ab4031f417b1f3d6 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_ */