Skip to content

Commit

Permalink
[mach-tegra/ventana] use tegra_reserve() to handle carveout memory al…
Browse files Browse the repository at this point in the history
…location

For K36, the kernel command line will pass "mem=size@base" from bootloader
to kernel. Apparently, we were having two different ways to interpret
it
    1) size = total physical memory size - carveout size
    2) Or size = total physical memory size

Ventana is the only platform to use #1. Switch it to #2 which requires
tegra_reserve() to handle carveout memory allocation.

Change carveout size to 256MB as well.

Original-Change-Id: Ifc24c1a5f6300d827068c67c0580cae7eb4ec229
Reviewed-on: http://git-master/r/17444
Reviewed-by: Varun Colbert <[email protected]>
Tested-by: Varun Colbert <[email protected]>

Rebase-Id: Rc02c5fb338f88ac0175f9cb01fbb4d2c5b9c9c67
  • Loading branch information
Peter Zu authored and Dan Willemsen committed Dec 1, 2011
1 parent 86013b6 commit 14fa52e
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 6 deletions.
24 changes: 18 additions & 6 deletions arch/arm/mach-tegra/board-ventana-panel.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@

#include "devices.h"
#include "gpio-names.h"
#include "board.h"

#define ventana_pnl_pwr_enb TEGRA_GPIO_PC6
#define ventana_bl_enb TEGRA_GPIO_PD4
#define ventana_lvds_shutdown TEGRA_GPIO_PB2
Expand Down Expand Up @@ -154,8 +156,6 @@ static struct resource ventana_disp1_resources[] = {
},
{
.name = "fbmem",
.start = 0x18012000,
.end = 0x18414000 - 1, /* enough for 1080P 16bpp */
.flags = IORESOURCE_MEM,
},
};
Expand All @@ -176,8 +176,6 @@ static struct resource ventana_disp2_resources[] = {
{
.name = "fbmem",
.flags = IORESOURCE_MEM,
.start = 0x18414000,
.end = 0x18BFD000 - 1,
},
{
.name = "hdmi_regs",
Expand Down Expand Up @@ -287,8 +285,6 @@ static struct nvmap_platform_carveout ventana_carveouts[] = {
[1] = {
.name = "generic-0",
.usage_mask = NVMAP_HEAP_CARVEOUT_GENERIC,
.base = 0x18C00000,
.size = SZ_128M - 0xC00000,
.buddy_size = SZ_32K,
},
};
Expand Down Expand Up @@ -316,6 +312,8 @@ static struct platform_device *ventana_gfx_devices[] __initdata = {
int __init ventana_panel_init(void)
{
int err;
struct resource *res;

gpio_request(ventana_pnl_pwr_enb, "pnl_pwr_enb");
gpio_direction_output(ventana_pnl_pwr_enb, 1);
tegra_gpio_enable(ventana_pnl_pwr_enb);
Expand All @@ -332,9 +330,23 @@ int __init ventana_panel_init(void)
gpio_request(ventana_hdmi_hpd, "hdmi_hpd");
gpio_direction_input(ventana_hdmi_hpd);

ventana_carveouts[1].base = tegra_carveout_start;
ventana_carveouts[1].size = tegra_carveout_size;

err = platform_add_devices(ventana_gfx_devices,
ARRAY_SIZE(ventana_gfx_devices));


res = nvhost_get_resource_byname(&ventana_disp1_device,
IORESOURCE_MEM, "fbmem");
res->start = tegra_fb_start;
res->end = tegra_fb_start + tegra_fb_size - 1;

res = nvhost_get_resource_byname(&ventana_disp2_device,
IORESOURCE_MEM, "fbmem");
res->start = tegra_fb2_start;
res->end = tegra_fb2_start + tegra_fb2_size - 1;

if (!err)
err = nvhost_device_register(&ventana_disp1_device);

Expand Down
17 changes: 17 additions & 0 deletions arch/arm/mach-tegra/board-ventana.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include <linux/input.h>
#include <linux/tegra_usb.h>
#include <linux/mfd/tps6586x.h>
#include <linux/memblock.h>

#include <mach/clk.h>
#include <mach/iomap.h>
Expand Down Expand Up @@ -445,12 +446,28 @@ static void __init tegra_ventana_init(void)
ventana_emc_init();
}

int __init tegra_ventana_protected_aperture_init(void)
{
tegra_protected_aperture_init(tegra_grhost_aperture);
return 0;
}
late_initcall(tegra_ventana_protected_aperture_init);

void __init tegra_ventana_reserve(void)
{
if (memblock_reserve(0x0, 4096) < 0)
pr_warn("Cannot reserve first 4K of memory for safety\n");

tegra_reserve(SZ_256M, SZ_8M, SZ_16M);
}

MACHINE_START(VENTANA, "ventana")
.boot_params = 0x00000100,
.phys_io = IO_APB_PHYS,
.io_pg_offst = ((IO_APB_VIRT) >> 18) & 0xfffc,
.init_irq = tegra_init_irq,
.init_machine = tegra_ventana_init,
.map_io = tegra_map_common_io,
.reserve = tegra_ventana_reserve,
.timer = &tegra_timer,
MACHINE_END

0 comments on commit 14fa52e

Please sign in to comment.