aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci/board-dm646x-evm.c
diff options
context:
space:
mode:
authorSekhar Nori <nsekhar@ti.com>2009-11-24 07:55:15 -0500
committerKevin Hilman <khilman@deeprootsystems.com>2010-02-04 16:29:44 -0500
commitc1978e1dfb3d171010f6a22eb0a9eed89a245666 (patch)
treec331f9d7ad6a1dcc66a14213a5de7bcdb4dc7c0f /arch/arm/mach-davinci/board-dm646x-evm.c
parentb73b526ec36068b102e735064b61dc724d45d2db (diff)
davinci: add support for DM6467T EVM
DM6467T (T for Turbo) is a newer and faster DM6467 part from TI. The new part supports 1080p video and has the ARM running at 495MHz. More SoC information: http://focus.ti.com/docs/prod/folders/print/tms320dm6467t.html Spectrum Digital, Inc has a new EVM for this part. It is _mostly_ same as the older DM6467 EVM except for a 33MHz crystal input and THS8200 video encoder for 1080p support. The meat of this patch is dedicated to initializing the crystal frequency from EVM board file. Additional notes: I did consider some alternative ways to make the crystal input board specific including - (1) having board code initialize the crystal frequency using the first member of soc_info->cpu_clks array (2) introducing a new ref_clk_rate member in soc_info structure. But, the current way seems to be the simplest and least intruding considering that both the clock array and SoC info structure are actually private to the SoC file. Also the fact that davinci_common_init() initializes both the soc_info and clocks in one go. Signed-off-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci/board-dm646x-evm.c')
-rw-r--r--arch/arm/mach-davinci/board-dm646x-evm.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index 8c05343bb001..542bfdbbea0f 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -30,6 +30,7 @@
30#include <linux/mtd/mtd.h> 30#include <linux/mtd/mtd.h>
31#include <linux/mtd/nand.h> 31#include <linux/mtd/nand.h>
32#include <linux/mtd/partitions.h> 32#include <linux/mtd/partitions.h>
33#include <linux/clk.h>
33 34
34#include <asm/mach-types.h> 35#include <asm/mach-types.h>
35#include <asm/mach/arch.h> 36#include <asm/mach/arch.h>
@@ -40,6 +41,8 @@
40#include <mach/i2c.h> 41#include <mach/i2c.h>
41#include <mach/nand.h> 42#include <mach/nand.h>
42 43
44#include "clock.h"
45
43#define NAND_BLOCK_SIZE SZ_128K 46#define NAND_BLOCK_SIZE SZ_128K
44 47
45/* Note: We are setting first partition as 'bootloader' constituting UBL, U-Boot 48/* Note: We are setting first partition as 'bootloader' constituting UBL, U-Boot
@@ -713,6 +716,17 @@ static __init void davinci_dm646x_evm_irq_init(void)
713 davinci_irq_init(); 716 davinci_irq_init();
714} 717}
715 718
719#define DM646X_EVM_REF_FREQ 27000000
720#define DM6467T_EVM_REF_FREQ 33000000
721
722void __init dm646x_board_setup_refclk(struct clk *clk)
723{
724 if (machine_is_davinci_dm6467tevm())
725 clk->rate = DM6467T_EVM_REF_FREQ;
726 else
727 clk->rate = DM646X_EVM_REF_FREQ;
728}
729
716MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM") 730MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
717 .phys_io = IO_PHYS, 731 .phys_io = IO_PHYS,
718 .io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc, 732 .io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc,
@@ -723,3 +737,13 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
723 .init_machine = evm_init, 737 .init_machine = evm_init,
724MACHINE_END 738MACHINE_END
725 739
740MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
741 .phys_io = IO_PHYS,
742 .io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc,
743 .boot_params = (0x80000100),
744 .map_io = davinci_map_io,
745 .init_irq = davinci_dm646x_evm_irq_init,
746 .timer = &davinci_timer,
747 .init_machine = evm_init,
748MACHINE_END
749