summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/fuse.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2011-04-29 10:45:50 +0300
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:42:48 -0800
commita147ecc954b36b0d36c5bf7510d97d9af705bc8e (patch)
tree9beb1b6b7abd33590c1b0ca7860034b9a1d02e71 /arch/arm/mach-tegra/fuse.c
parentf1f372675ef9d6a61bd2c37727642742190371f1 (diff)
nvhost: Add checks for # of GPU register sets.
Checks from a fuse whether we have one or two register sets. - fuse.h/fuse.c: Implement tegra_register_sets() - nvhost_3dctx.c: Use tegra_register_sets() to determine number of sets to save. - dev.c: Create entry /sys/module/nvhost/parameters/register_sets to return to user space the number of sets. Change-Id: Ibd9a50cfe77a642335bd85b5814e8fdd8d2c35e6 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/29786 Reviewed-by: Niket Sirsi <nsirsi@nvidia.com> Tested-by: Niket Sirsi <nsirsi@nvidia.com> Rebase-Id: R0a53bbe37d8d83599b85514dad33bcd04a2f67f4
Diffstat (limited to 'arch/arm/mach-tegra/fuse.c')
-rw-r--r--arch/arm/mach-tegra/fuse.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/fuse.c b/arch/arm/mach-tegra/fuse.c
index 44107448e310..a628880f403f 100644
--- a/arch/arm/mach-tegra/fuse.c
+++ b/arch/arm/mach-tegra/fuse.c
@@ -48,6 +48,8 @@
#define FUSE_X_COORDINATE_MASK 0x1ff
#define FUSE_Y_COORDINATE 0x218
#define FUSE_Y_COORDINATE_MASK 0x1ff
+#define FUSE_GPU_INFO 0x390
+#define FUSE_GPU_INFO_MASK (1<<2)
#define FUSE_SPARE_BIT 0x244
#endif
@@ -209,6 +211,21 @@ int tegra_sku_id(void)
return sku_id;
}
+int tegra_gpu_register_sets(void)
+{
+#if defined(CONFIG_ARCH_TEGRA_2x_SOC)
+ return 1;
+#elif defined(CONFIG_ARCH_TEGRA_3x_SOC)
+ u32 reg = readl(IO_TO_VIRT(TEGRA_CLK_RESET_BASE + FUSE_GPU_INFO));
+ if (reg & FUSE_GPU_INFO_MASK)
+ return 1;
+ else
+ return 2;
+#else
+#error ERROR! Neither 2x or 3x Tegra present
+#endif
+}
+
static enum tegra_revision tegra_decode_revision(const struct tegra_id *id)
{
#ifdef CONFIG_ARCH_TEGRA_2x_SOC