summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/common.c
diff options
context:
space:
mode:
authorHaley Teng <hteng@nvidia.com>2011-09-27 12:20:32 +0800
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-01-12 09:50:08 -0800
commit290e96f9916b2cd410aaa8a6e573a75e904cbdd4 (patch)
tree00f61be3a850398031dcb862ff32a24e61813d96 /arch/arm/mach-tegra/common.c
parent68b611ff55f049b6da29ebf8226549bea9d6342a (diff)
arm: tegra: move ram console to common codes
cleanup ram console related source codes and move most of the implementation in board files to common.c since ram console is a common debug mechanism. bug 873307 Signed-off-by: Haley Teng <hteng@nvidia.com> Reviewed-on: http://git-master/r/54598 Reviewed-on: http://git-master/r/66588 (cherry picked from commit 119ce36b7bed370a528dfebc80bd79698118248d) Change-Id: I8b769b422305101a97f1fbc99db4af48dc7d4f25 Reviewed-on: http://git-master/r/71961 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com> Reviewed-on: http://git-master/r/74552 Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com> Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/common.c')
-rw-r--r--arch/arm/mach-tegra/common.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c
index ea3ca06328ef..2acf4bdcef94 100644
--- a/arch/arm/mach-tegra/common.c
+++ b/arch/arm/mach-tegra/common.c
@@ -896,6 +896,51 @@ void __init tegra_reserve(unsigned long carveout_size, unsigned long fb_size,
#endif
}
+static struct resource ram_console_resources[] = {
+ {
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+static struct platform_device ram_console_device = {
+ .name = "ram_console",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(ram_console_resources),
+ .resource = ram_console_resources,
+};
+
+void __init tegra_ram_console_debug_reserve(unsigned long ram_console_size)
+{
+ struct resource *res;
+ long ret;
+
+ res = platform_get_resource(&ram_console_device, IORESOURCE_MEM, 0);
+ if (!res)
+ goto fail;
+ res->start = memblock_end_of_DRAM() - ram_console_size;
+ res->end = res->start + ram_console_size - 1;
+ ret = memblock_remove(res->start, ram_console_size);
+ if (ret)
+ goto fail;
+
+ return;
+
+fail:
+ ram_console_device.resource = NULL;
+ ram_console_device.num_resources = 0;
+ pr_err("Failed to reserve memory block for ram console\n");
+}
+
+void __init tegra_ram_console_debug_init(void)
+{
+ int err;
+
+ err = platform_device_register(&ram_console_device);
+ if (err) {
+ pr_err("%s: ram console registration failed (%d)!\n", __func__, err);
+ }
+}
+
void __init tegra_release_bootloader_fb(void)
{
/* Since bootloader fb is reserved in common.c, it is freed here. */