diff options
author | Simon Glass <sjg@chromium.org> | 2011-09-01 14:02:41 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2011-09-13 12:13:03 -0700 |
commit | f905ed0787fafff4e550e2e016994d00846982fa (patch) | |
tree | 2e58a4d4216571c254906e40d3aa85339e5d4230 /arch | |
parent | 1c9d94fd0e6c1d6f8a6592fc653ed2c14252a1eb (diff) |
tegra: Refactor board.c
This moves everything except the query_sdram_size() function into a common
board.c file.
BUG=chromium-os:19004
TEST=build and boot on Seaboard
Change-Id: I4578f08cd4cfde5e9e28ff800d7a12dbb8e13841
Reviewed-on: http://gerrit.chromium.org/gerrit/7125
Reviewed-by: Yen Lin <yelin@nvidia.com>
Reviewed-by: Che-Liang Chiou <clchiou@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/cpu/armv7/tegra-common/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/tegra-common/board.c | 53 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/tegra2/board.c | 28 | ||||
-rw-r--r-- | arch/arm/include/asm/arch-tegra/board.h | 27 |
4 files changed, 83 insertions, 27 deletions
diff --git a/arch/arm/cpu/armv7/tegra-common/Makefile b/arch/arm/cpu/armv7/tegra-common/Makefile index 5c390304855..8d22a661115 100644 --- a/arch/arm/cpu/armv7/tegra-common/Makefile +++ b/arch/arm/cpu/armv7/tegra-common/Makefile @@ -29,7 +29,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)libtegra-common.o SOBJS-y := lowlevel_init.o -COBJS-y := ap20.o clock.o timer.o +COBJS-y := ap20.o board.o clock.o timer.o SOBJS := $(SOBJS-y) COBJS := $(COBJS-y) diff --git a/arch/arm/cpu/armv7/tegra-common/board.c b/arch/arm/cpu/armv7/tegra-common/board.c new file mode 100644 index 00000000000..29208025275 --- /dev/null +++ b/arch/arm/cpu/armv7/tegra-common/board.c @@ -0,0 +1,53 @@ +/* + * (C) Copyright 2010,2011 + * NVIDIA Corporation <www.nvidia.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/tegra.h> +#include <asm/arch/pmc.h> +#include <fdt_decode.h> + +/* + * Boot ROM initializes the odmdata in APBDEV_PMC_SCRATCH20_0, + * so we are using this value to identify memory size. + */ + +unsigned int board_query_sdram_size(void) +{ + struct pmc_ctlr *const pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE; + u32 reg; + + reg = readl(&pmc->pmc_scratch20); + debug("pmc->pmc_scratch20 (ODMData) = 0x%08X\n", reg); + + /* bits 31:28 in OdmData are used for RAM size */ + switch ((reg) >> 28) { + case 1: + return 0x10000000; /* 256 MB */ + case 2: + return 0x20000000; /* 512 MB */ + case 3: + default: + return 0x40000000; /* 1GB */ + } +} diff --git a/arch/arm/cpu/armv7/tegra2/board.c b/arch/arm/cpu/armv7/tegra2/board.c index cc3d8dd86fb..844a3492df3 100644 --- a/arch/arm/cpu/armv7/tegra2/board.c +++ b/arch/arm/cpu/armv7/tegra2/board.c @@ -26,43 +26,19 @@ #include <asm/arch-tegra/ap20.h> #include <asm/arch/sys_proto.h> #include <asm/arch/tegra.h> +#include <asm/arch-tegra/board.h> #include <asm/arch/pmc.h> #include <fdt_decode.h> DECLARE_GLOBAL_DATA_PTR; -/* - * Boot ROM initializes the odmdata in APBDEV_PMC_SCRATCH20_0, - * so we are using this value to identify memory size. - */ - -unsigned int query_sdram_size(void) -{ - struct pmc_ctlr *const pmc = (struct pmc_ctlr *)NV_PA_PMC_BASE; - u32 reg; - - reg = readl(&pmc->pmc_scratch20); - debug("pmc->pmc_scratch20 (ODMData) = 0x%08X\n", reg); - - /* bits 31:28 in OdmData are used for RAM size */ - switch ((reg) >> 28) { - case 1: - return 0x10000000; /* 256 MB */ - case 2: - return 0x20000000; /* 512 MB */ - case 3: - default: - return 0x40000000; /* 1GB */ - } -} - int dram_init(void) { unsigned long rs; /* We do not initialise DRAM here. We just query the size */ gd->bd->bi_dram[0].start = PHYS_SDRAM_1; - gd->bd->bi_dram[0].size = gd->ram_size = query_sdram_size(); + gd->bd->bi_dram[0].size = gd->ram_size = board_query_sdram_size(); /* Now check it dynamically */ rs = get_ram_size(CONFIG_SYS_SDRAM_BASE, gd->ram_size); diff --git a/arch/arm/include/asm/arch-tegra/board.h b/arch/arm/include/asm/arch-tegra/board.h new file mode 100644 index 00000000000..2705aa25f04 --- /dev/null +++ b/arch/arm/include/asm/arch-tegra/board.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2011 The Chromium OS Authors. + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * This file contains generic board defitions which apply across all Tegra + * family SOCs + */ + +unsigned int board_query_sdram_size(void); |