aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci
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
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')
-rw-r--r--arch/arm/mach-davinci/Kconfig4
-rw-r--r--arch/arm/mach-davinci/board-dm646x-evm.c24
-rw-r--r--arch/arm/mach-davinci/dm646x.c3
-rw-r--r--arch/arm/mach-davinci/include/mach/dm646x.h2
4 files changed, 31 insertions, 2 deletions
diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index 033bfede6b67..0ebe185610bf 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -91,10 +91,14 @@ config MACH_DAVINCI_DM6467_EVM
91 bool "TI DM6467 EVM" 91 bool "TI DM6467 EVM"
92 default ARCH_DAVINCI_DM646x 92 default ARCH_DAVINCI_DM646x
93 depends on ARCH_DAVINCI_DM646x 93 depends on ARCH_DAVINCI_DM646x
94 select MACH_DAVINCI_DM6467TEVM
94 help 95 help
95 Configure this option to specify the whether the board used 96 Configure this option to specify the whether the board used
96 for development is a DM6467 EVM 97 for development is a DM6467 EVM
97 98
99config MACH_DAVINCI_DM6467TEVM
100 bool
101
98config MACH_DAVINCI_DM365_EVM 102config MACH_DAVINCI_DM365_EVM
99 bool "TI DM365 EVM" 103 bool "TI DM365 EVM"
100 default ARCH_DAVINCI_DM365 104 default ARCH_DAVINCI_DM365
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
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 829a44bcf799..515d3edb9a33 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -42,7 +42,6 @@
42/* 42/*
43 * Device specific clocks 43 * Device specific clocks
44 */ 44 */
45#define DM646X_REF_FREQ 27000000
46#define DM646X_AUX_FREQ 24000000 45#define DM646X_AUX_FREQ 24000000
47 46
48static struct pll_data pll1_data = { 47static struct pll_data pll1_data = {
@@ -57,7 +56,6 @@ static struct pll_data pll2_data = {
57 56
58static struct clk ref_clk = { 57static struct clk ref_clk = {
59 .name = "ref_clk", 58 .name = "ref_clk",
60 .rate = DM646X_REF_FREQ,
61}; 59};
62 60
63static struct clk aux_clkin = { 61static struct clk aux_clkin = {
@@ -925,6 +923,7 @@ void dm646x_setup_vpif(struct vpif_display_config *display_config,
925 923
926void __init dm646x_init(void) 924void __init dm646x_init(void)
927{ 925{
926 dm646x_board_setup_refclk(&ref_clk);
928 davinci_common_init(&davinci_soc_info_dm646x); 927 davinci_common_init(&davinci_soc_info_dm646x);
929} 928}
930 929
diff --git a/arch/arm/mach-davinci/include/mach/dm646x.h b/arch/arm/mach-davinci/include/mach/dm646x.h
index 8cec746ae9d2..8221153bb2af 100644
--- a/arch/arm/mach-davinci/include/mach/dm646x.h
+++ b/arch/arm/mach-davinci/include/mach/dm646x.h
@@ -16,6 +16,7 @@
16#include <mach/asp.h> 16#include <mach/asp.h>
17#include <linux/i2c.h> 17#include <linux/i2c.h>
18#include <linux/videodev2.h> 18#include <linux/videodev2.h>
19#include <linux/clk.h>
19 20
20#define DM646X_EMAC_BASE (0x01C80000) 21#define DM646X_EMAC_BASE (0x01C80000)
21#define DM646X_EMAC_CNTRL_OFFSET (0x0000) 22#define DM646X_EMAC_CNTRL_OFFSET (0x0000)
@@ -30,6 +31,7 @@ void __init dm646x_init(void);
30void __init dm646x_init_ide(void); 31void __init dm646x_init_ide(void);
31void __init dm646x_init_mcasp0(struct snd_platform_data *pdata); 32void __init dm646x_init_mcasp0(struct snd_platform_data *pdata);
32void __init dm646x_init_mcasp1(struct snd_platform_data *pdata); 33void __init dm646x_init_mcasp1(struct snd_platform_data *pdata);
34void __init dm646x_board_setup_refclk(struct clk *clk);
33 35
34void dm646x_video_init(void); 36void dm646x_video_init(void);
35 37