aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci
diff options
context:
space:
mode:
authorNageswari Srinivasan <nageswari@ti.com>2010-01-06 06:49:49 -0500
committerKevin Hilman <khilman@deeprootsystems.com>2010-02-04 16:29:59 -0500
commit77a92c710b65864fe07491864f3bbac9fbac51bc (patch)
treeb301c728ab36d1526ca5379cea56273881be77db /arch/arm/mach-davinci
parent5b8972d1b6461d0081d2d49dde4d129290da26f0 (diff)
davinci: add CDCE949 support on DM6467 EVM
This patch adds the CDCE949 reference oscillator to the davinci clock list. On the DM6467T EVM, the CDCE949 is responsible for generating the pixel clock for display. On the DM6467 EVM, this pixel clock was being obtained from an internal source. This is not possible on the DM6467T EVM because of the presence of a 33MHz oscillator. The TSIF module also requires the CDCE949 to generate the data clocks. The actual clock definitions will be added by patches adding support for DM6467T VPIF and TSIF. This patch mearly lays the foundation for that work. Signed-off-by: Nageswari Srinivasan <nageswari@ti.com> 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/Makefile2
-rw-r--r--arch/arm/mach-davinci/board-dm646x-evm.c31
2 files changed, 32 insertions, 1 deletions
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index d0fed3a67100..6aac880eb794 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -26,7 +26,7 @@ obj-$(CONFIG_MACH_SFFSDR) += board-sffsdr.o
26obj-$(CONFIG_MACH_NEUROS_OSD2) += board-neuros-osd2.o 26obj-$(CONFIG_MACH_NEUROS_OSD2) += board-neuros-osd2.o
27obj-$(CONFIG_MACH_DAVINCI_DM355_EVM) += board-dm355-evm.o 27obj-$(CONFIG_MACH_DAVINCI_DM355_EVM) += board-dm355-evm.o
28obj-$(CONFIG_MACH_DM355_LEOPARD) += board-dm355-leopard.o 28obj-$(CONFIG_MACH_DM355_LEOPARD) += board-dm355-leopard.o
29obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM) += board-dm646x-evm.o 29obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM) += board-dm646x-evm.o cdce949.o
30obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o 30obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o
31obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o 31obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o
32obj-$(CONFIG_MACH_DAVINCI_DA850_EVM) += board-da850-evm.o 32obj-$(CONFIG_MACH_DAVINCI_DA850_EVM) += board-da850-evm.o
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index 542bfdbbea0f..815067b2413e 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -40,6 +40,8 @@
40#include <mach/serial.h> 40#include <mach/serial.h>
41#include <mach/i2c.h> 41#include <mach/i2c.h>
42#include <mach/nand.h> 42#include <mach/nand.h>
43#include <mach/clock.h>
44#include <mach/cdce949.h>
43 45
44#include "clock.h" 46#include "clock.h"
45 47
@@ -389,6 +391,9 @@ static struct i2c_board_info __initdata i2c_info[] = {
389 { 391 {
390 I2C_BOARD_INFO("cpld_video", 0x3b), 392 I2C_BOARD_INFO("cpld_video", 0x3b),
391 }, 393 },
394 {
395 I2C_BOARD_INFO("cdce949", 0x6c),
396 },
392}; 397};
393 398
394static struct davinci_i2c_platform_data i2c_pdata = { 399static struct davinci_i2c_platform_data i2c_pdata = {
@@ -681,9 +686,35 @@ static void __init evm_init_i2c(void)
681 evm_init_video(); 686 evm_init_video();
682} 687}
683 688
689#define CDCE949_XIN_RATE 27000000
690
691/* CDCE949 support - "lpsc" field is overridden to work as clock number */
692static struct clk cdce_clk_in = {
693 .name = "cdce_xin",
694 .rate = CDCE949_XIN_RATE,
695};
696
697static struct davinci_clk cdce_clks[] = {
698 CLK(NULL, "xin", &cdce_clk_in),
699 CLK(NULL, NULL, NULL),
700};
701
702static void __init cdce_clk_init(void)
703{
704 struct davinci_clk *c;
705 struct clk *clk;
706
707 for (c = cdce_clks; c->lk.clk; c++) {
708 clk = c->lk.clk;
709 clkdev_add(&c->lk);
710 clk_register(clk);
711 }
712}
713
684static void __init davinci_map_io(void) 714static void __init davinci_map_io(void)
685{ 715{
686 dm646x_init(); 716 dm646x_init();
717 cdce_clk_init();
687} 718}
688 719
689static struct davinci_uart_config uart_config __initdata = { 720static struct davinci_uart_config uart_config __initdata = {