diff options
author | Robert Morell <rmorell@nvidia.com> | 2011-10-14 18:08:04 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:31 -0800 |
commit | 3b8779f417d968db69e15c2439a72330f50cbdb5 (patch) | |
tree | 68f4c4ec2133f6070fa282f21a00fa48ac8a7c17 | |
parent | 024deb0ead1c674d42a23d9b04d14fe773957d7e (diff) |
arm: tegra: Add Harmony nvmap, host1x devices
This is necessary to use the Tegra accelerated device drivers.
Signed-off-by: Robert Morell <rmorell@nvidia.com>
Change-Id: I6c6f10f35654793b4fb713f4ac854f72640a5fef
Reviewed-on: http://git-master/r/58253
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Rebase-Id: Rab19f5b8a98914619ff3d43f5a7eeeed0114f86a
-rw-r--r-- | arch/arm/mach-tegra/board-harmony-panel.c | 41 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony.c | 10 |
2 files changed, 51 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-harmony-panel.c b/arch/arm/mach-tegra/board-harmony-panel.c index 46539a4862ea..73757c52268a 100644 --- a/arch/arm/mach-tegra/board-harmony-panel.c +++ b/arch/arm/mach-tegra/board-harmony-panel.c @@ -20,8 +20,12 @@ #include <linux/nvhost.h> #include <mach/irqs.h> #include <mach/iomap.h> +#include <mach/nvmap.h> #include <mach/tegra_fb.h> +#include "devices.h" +#include "board.h" + /* Framebuffer */ static struct resource fb_resource[] = { [0] = { @@ -59,7 +63,44 @@ static struct platform_device tegra_fb_device = { }, }; +static struct nvmap_platform_carveout harmony_carveouts[] = { + [0] = NVMAP_HEAP_CARVEOUT_IRAM_INIT, + [1] = { + .name = "generic-0", + .usage_mask = NVMAP_HEAP_CARVEOUT_GENERIC, + .buddy_size = SZ_32K, + }, +}; + +static struct nvmap_platform_data harmony_nvmap_data = { + .carveouts = harmony_carveouts, + .nr_carveouts = ARRAY_SIZE(harmony_carveouts), +}; + +static struct platform_device harmony_nvmap_device = { + .name = "tegra-nvmap", + .id = -1, + .dev = { + .platform_data = &harmony_nvmap_data, + }, +}; + +static struct platform_device *harmony_gfx_devices[] __initdata = { + &harmony_nvmap_device, + &tegra_grhost_device, +}; + int __init harmony_panel_init(void) { + int err; + + harmony_carveouts[1].base = tegra_carveout_start; + harmony_carveouts[1].size = tegra_carveout_size; + + err = platform_add_devices(harmony_gfx_devices, + ARRAY_SIZE(harmony_gfx_devices)); + if (err) + return err; + return platform_device_register(&tegra_fb_device); } diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c index d8f3865b40bc..bc598d048969 100644 --- a/arch/arm/mach-tegra/board-harmony.c +++ b/arch/arm/mach-tegra/board-harmony.c @@ -27,6 +27,7 @@ #include <linux/io.h> #include <linux/gpio.h> #include <linux/i2c.h> +#include <linux/memblock.h> #include <sound/wm8903.h> @@ -396,10 +397,19 @@ static void __init tegra_harmony_init(void) #endif } +void __init tegra_harmony_reserve(void) +{ + if (memblock_reserve(0x0, 4096) < 0) + pr_warn("Cannot reserve first 4K of memory for safety\n"); + + tegra_reserve(SZ_128M, SZ_8M, 0); +} + MACHINE_START(HARMONY, "harmony") .boot_params = 0x00000100, .fixup = tegra_harmony_fixup, .map_io = tegra_map_common_io, + .reserve = tegra_harmony_reserve, .init_early = tegra_init_early, .init_irq = tegra_init_irq, .timer = &tegra_timer, |