Commit 26206705 authored by Sekhar Nori's avatar Sekhar Nori Committed by Kevin Hilman

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: default avatarSekhar Nori <nsekhar@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent c1df6fd9
...@@ -91,10 +91,14 @@ config MACH_DAVINCI_DM6467_EVM ...@@ -91,10 +91,14 @@ config MACH_DAVINCI_DM6467_EVM
bool "TI DM6467 EVM" bool "TI DM6467 EVM"
default ARCH_DAVINCI_DM646x default ARCH_DAVINCI_DM646x
depends on ARCH_DAVINCI_DM646x depends on ARCH_DAVINCI_DM646x
select MACH_DAVINCI_DM6467TEVM
help help
Configure this option to specify the whether the board used Configure this option to specify the whether the board used
for development is a DM6467 EVM for development is a DM6467 EVM
config MACH_DAVINCI_DM6467TEVM
bool
config MACH_DAVINCI_DM365_EVM config MACH_DAVINCI_DM365_EVM
bool "TI DM365 EVM" bool "TI DM365 EVM"
default ARCH_DAVINCI_DM365 default ARCH_DAVINCI_DM365
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h> #include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/clk.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
...@@ -40,6 +41,8 @@ ...@@ -40,6 +41,8 @@
#include <mach/i2c.h> #include <mach/i2c.h>
#include <mach/nand.h> #include <mach/nand.h>
#include "clock.h"
#define NAND_BLOCK_SIZE SZ_128K #define NAND_BLOCK_SIZE SZ_128K
/* Note: We are setting first partition as 'bootloader' constituting UBL, U-Boot /* 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,6 +716,17 @@ static __init void davinci_dm646x_evm_irq_init(void)
davinci_irq_init(); davinci_irq_init();
} }
#define DM646X_EVM_REF_FREQ 27000000
#define DM6467T_EVM_REF_FREQ 33000000
void __init dm646x_board_setup_refclk(struct clk *clk)
{
if (machine_is_davinci_dm6467tevm())
clk->rate = DM6467T_EVM_REF_FREQ;
else
clk->rate = DM646X_EVM_REF_FREQ;
}
MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM") MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
.phys_io = IO_PHYS, .phys_io = IO_PHYS,
.io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc, .io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc,
...@@ -723,3 +737,13 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM") ...@@ -723,3 +737,13 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
.init_machine = evm_init, .init_machine = evm_init,
MACHINE_END MACHINE_END
MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
.phys_io = IO_PHYS,
.io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc,
.boot_params = (0x80000100),
.map_io = davinci_map_io,
.init_irq = davinci_dm646x_evm_irq_init,
.timer = &davinci_timer,
.init_machine = evm_init,
MACHINE_END
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
/* /*
* Device specific clocks * Device specific clocks
*/ */
#define DM646X_REF_FREQ 27000000
#define DM646X_AUX_FREQ 24000000 #define DM646X_AUX_FREQ 24000000
static struct pll_data pll1_data = { static struct pll_data pll1_data = {
...@@ -57,7 +56,6 @@ static struct pll_data pll2_data = { ...@@ -57,7 +56,6 @@ static struct pll_data pll2_data = {
static struct clk ref_clk = { static struct clk ref_clk = {
.name = "ref_clk", .name = "ref_clk",
.rate = DM646X_REF_FREQ,
}; };
static struct clk aux_clkin = { static struct clk aux_clkin = {
...@@ -925,6 +923,7 @@ void dm646x_setup_vpif(struct vpif_display_config *display_config, ...@@ -925,6 +923,7 @@ void dm646x_setup_vpif(struct vpif_display_config *display_config,
void __init dm646x_init(void) void __init dm646x_init(void)
{ {
dm646x_board_setup_refclk(&ref_clk);
davinci_common_init(&davinci_soc_info_dm646x); davinci_common_init(&davinci_soc_info_dm646x);
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <mach/asp.h> #include <mach/asp.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev2.h> #include <linux/videodev2.h>
#include <linux/clk.h>
#define DM646X_EMAC_BASE (0x01C80000) #define DM646X_EMAC_BASE (0x01C80000)
#define DM646X_EMAC_CNTRL_OFFSET (0x0000) #define DM646X_EMAC_CNTRL_OFFSET (0x0000)
...@@ -30,6 +31,7 @@ void __init dm646x_init(void); ...@@ -30,6 +31,7 @@ void __init dm646x_init(void);
void __init dm646x_init_ide(void); void __init dm646x_init_ide(void);
void __init dm646x_init_mcasp0(struct snd_platform_data *pdata); void __init dm646x_init_mcasp0(struct snd_platform_data *pdata);
void __init dm646x_init_mcasp1(struct snd_platform_data *pdata); void __init dm646x_init_mcasp1(struct snd_platform_data *pdata);
void __init dm646x_board_setup_refclk(struct clk *clk);
void dm646x_video_init(void); void dm646x_video_init(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment