diff options
author | Haley Teng <hteng@nvidia.com> | 2011-09-27 12:20:32 +0800 |
---|---|---|
committer | Rohan Somvanshi <rsomvanshi@nvidia.com> | 2012-01-12 09:50:08 -0800 |
commit | 290e96f9916b2cd410aaa8a6e573a75e904cbdd4 (patch) | |
tree | 00f61be3a850398031dcb862ff32a24e61813d96 /arch/arm/mach-tegra/common.c | |
parent | 68b611ff55f049b6da29ebf8226549bea9d6342a (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.c | 45 |
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. */ |