diff options
author | Nageswari Srinivasan <nageswari@ti.com> | 2010-01-06 06:49:49 -0500 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2010-02-04 16:29:59 -0500 |
commit | 77a92c710b65864fe07491864f3bbac9fbac51bc (patch) | |
tree | b301c728ab36d1526ca5379cea56273881be77db /arch/arm/mach-davinci/board-dm646x-evm.c | |
parent | 5b8972d1b6461d0081d2d49dde4d129290da26f0 (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/board-dm646x-evm.c')
-rw-r--r-- | arch/arm/mach-davinci/board-dm646x-evm.c | 31 |
1 files changed, 31 insertions, 0 deletions
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 | ||
394 | static struct davinci_i2c_platform_data i2c_pdata = { | 399 | static 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 */ | ||
692 | static struct clk cdce_clk_in = { | ||
693 | .name = "cdce_xin", | ||
694 | .rate = CDCE949_XIN_RATE, | ||
695 | }; | ||
696 | |||
697 | static struct davinci_clk cdce_clks[] = { | ||
698 | CLK(NULL, "xin", &cdce_clk_in), | ||
699 | CLK(NULL, NULL, NULL), | ||
700 | }; | ||
701 | |||
702 | static 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 | |||
684 | static void __init davinci_map_io(void) | 714 | static void __init davinci_map_io(void) |
685 | { | 715 | { |
686 | dm646x_init(); | 716 | dm646x_init(); |
717 | cdce_clk_init(); | ||
687 | } | 718 | } |
688 | 719 | ||
689 | static struct davinci_uart_config uart_config __initdata = { | 720 | static struct davinci_uart_config uart_config __initdata = { |