aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lechner <david@lechnology.com>2018-01-19 22:20:22 -0500
committerSekhar Nori <nsekhar@ti.com>2018-02-19 05:55:15 -0500
commit96c081735d5197d9d4fa0b6ce84cffa3bb197474 (patch)
tree54606e24a0afc246be11cb3f80f0560c2ccbe323
parent4b785cc55e85e8be065a38ce9df29a2c32c7956a (diff)
ARM: davinci: move davinci_clk_init() to init_time
This moves the call of davinci_clk_init() from map_io to init_time for all boards. This is the proper place to init clocks. This is also done in preparation for moving to the common clock framework. dm646x is a special case because we need to handle different ref_clk rates depending on which board is being used. The clock init in this case is modified to set the rate before registering the clocks instead of using davinci_set_refclk_rate() to recalculate the entire clock tree after all of the clocks are registered. Also, the cpu_clks field is removed from struct davinci_soc_info since it is no longer needed. Signed-off-by: David Lechner <david@lechnology.com> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
-rw-r--r--arch/arm/mach-davinci/board-da830-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm355-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm355-leopard.c2
-rw-r--r--arch/arm/mach-davinci/board-dm365-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm644x-evm.c2
-rw-r--r--arch/arm/mach-davinci/board-dm646x-evm.c19
-rw-r--r--arch/arm/mach-davinci/board-mityomapl138.c2
-rw-r--r--arch/arm/mach-davinci/board-neuros-osd2.c2
-rw-r--r--arch/arm/mach-davinci/board-omapl138-hawk.c2
-rw-r--r--arch/arm/mach-davinci/board-sffsdr.c2
-rw-r--r--arch/arm/mach-davinci/da830.c7
-rw-r--r--arch/arm/mach-davinci/da850.c7
-rw-r--r--arch/arm/mach-davinci/da8xx-dt.c2
-rw-r--r--arch/arm/mach-davinci/davinci.h4
-rw-r--r--arch/arm/mach-davinci/dm355.c8
-rw-r--r--arch/arm/mach-davinci/dm365.c8
-rw-r--r--arch/arm/mach-davinci/dm644x.c8
-rw-r--r--arch/arm/mach-davinci/dm646x.c22
-rw-r--r--arch/arm/mach-davinci/include/mach/common.h1
-rw-r--r--arch/arm/mach-davinci/include/mach/da8xx.h3
21 files changed, 70 insertions, 39 deletions
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index 4a640af80be2..004f9c8de032 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -634,7 +634,7 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
634 .atag_offset = 0x100, 634 .atag_offset = 0x100,
635 .map_io = da830_evm_map_io, 635 .map_io = da830_evm_map_io,
636 .init_irq = cp_intc_init, 636 .init_irq = cp_intc_init,
637 .init_time = davinci_timer_init, 637 .init_time = da830_init_time,
638 .init_machine = da830_evm_init, 638 .init_machine = da830_evm_init,
639 .init_late = davinci_init_late, 639 .init_late = davinci_init_late,
640 .dma_zone_size = SZ_128M, 640 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index b3a764feae11..3063478bcc36 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -1477,7 +1477,7 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
1477 .atag_offset = 0x100, 1477 .atag_offset = 0x100,
1478 .map_io = da850_evm_map_io, 1478 .map_io = da850_evm_map_io,
1479 .init_irq = cp_intc_init, 1479 .init_irq = cp_intc_init,
1480 .init_time = davinci_timer_init, 1480 .init_time = da850_init_time,
1481 .init_machine = da850_evm_init, 1481 .init_machine = da850_evm_init,
1482 .init_late = davinci_init_late, 1482 .init_late = davinci_init_late,
1483 .dma_zone_size = SZ_128M, 1483 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c
index 29dbfc944e02..9ef24513ade7 100644
--- a/arch/arm/mach-davinci/board-dm355-evm.c
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -427,7 +427,7 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
427 .atag_offset = 0x100, 427 .atag_offset = 0x100,
428 .map_io = dm355_evm_map_io, 428 .map_io = dm355_evm_map_io,
429 .init_irq = davinci_irq_init, 429 .init_irq = davinci_irq_init,
430 .init_time = davinci_timer_init, 430 .init_time = dm355_init_time,
431 .init_machine = dm355_evm_init, 431 .init_machine = dm355_evm_init,
432 .init_late = davinci_init_late, 432 .init_late = davinci_init_late,
433 .dma_zone_size = SZ_128M, 433 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c
index 1e7e9b8f3bae..3ebc89d0bb94 100644
--- a/arch/arm/mach-davinci/board-dm355-leopard.c
+++ b/arch/arm/mach-davinci/board-dm355-leopard.c
@@ -271,7 +271,7 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
271 .atag_offset = 0x100, 271 .atag_offset = 0x100,
272 .map_io = dm355_leopard_map_io, 272 .map_io = dm355_leopard_map_io,
273 .init_irq = davinci_irq_init, 273 .init_irq = davinci_irq_init,
274 .init_time = davinci_timer_init, 274 .init_time = dm355_init_time,
275 .init_machine = dm355_leopard_init, 275 .init_machine = dm355_leopard_init,
276 .init_late = davinci_init_late, 276 .init_late = davinci_init_late,
277 .dma_zone_size = SZ_128M, 277 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index 17b2c29f4053..3daeac747b1e 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -774,7 +774,7 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
774 .atag_offset = 0x100, 774 .atag_offset = 0x100,
775 .map_io = dm365_evm_map_io, 775 .map_io = dm365_evm_map_io,
776 .init_irq = davinci_irq_init, 776 .init_irq = davinci_irq_init,
777 .init_time = davinci_timer_init, 777 .init_time = dm365_init_time,
778 .init_machine = dm365_evm_init, 778 .init_machine = dm365_evm_init,
779 .init_late = davinci_init_late, 779 .init_late = davinci_init_late,
780 .dma_zone_size = SZ_128M, 780 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index 35e1274183e1..95b55aae1366 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -828,7 +828,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
828 .atag_offset = 0x100, 828 .atag_offset = 0x100,
829 .map_io = davinci_evm_map_io, 829 .map_io = davinci_evm_map_io,
830 .init_irq = davinci_irq_init, 830 .init_irq = davinci_irq_init,
831 .init_time = davinci_timer_init, 831 .init_time = dm644x_init_time,
832 .init_machine = davinci_evm_init, 832 .init_machine = davinci_evm_init,
833 .init_late = davinci_init_late, 833 .init_late = davinci_init_late,
834 .dma_zone_size = SZ_128M, 834 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index 003bbe5c24fd..2d37f5b0e1f5 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -44,10 +44,8 @@
44#include <mach/common.h> 44#include <mach/common.h>
45#include <mach/irqs.h> 45#include <mach/irqs.h>
46#include <mach/serial.h> 46#include <mach/serial.h>
47#include <mach/clock.h>
48 47
49#include "davinci.h" 48#include "davinci.h"
50#include "clock.h"
51 49
52#define NAND_BLOCK_SIZE SZ_128K 50#define NAND_BLOCK_SIZE SZ_128K
53 51
@@ -716,14 +714,23 @@ static void __init evm_init_i2c(void)
716} 714}
717#endif 715#endif
718 716
717#define DM646X_REF_FREQ 27000000
718#define DM646X_AUX_FREQ 24000000
719#define DM6467T_EVM_REF_FREQ 33000000 719#define DM6467T_EVM_REF_FREQ 33000000
720 720
721static void __init davinci_map_io(void) 721static void __init davinci_map_io(void)
722{ 722{
723 dm646x_init(); 723 dm646x_init();
724}
724 725
725 if (machine_is_davinci_dm6467tevm()) 726static void __init dm646x_evm_init_time(void)
726 davinci_set_refclk_rate(DM6467T_EVM_REF_FREQ); 727{
728 dm646x_init_time(DM646X_REF_FREQ, DM646X_AUX_FREQ);
729}
730
731static void __init dm6467t_evm_init_time(void)
732{
733 dm646x_init_time(DM6467T_EVM_REF_FREQ, DM646X_AUX_FREQ);
727} 734}
728 735
729#define DM646X_EVM_PHY_ID "davinci_mdio-0:01" 736#define DM646X_EVM_PHY_ID "davinci_mdio-0:01"
@@ -797,7 +804,7 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
797 .atag_offset = 0x100, 804 .atag_offset = 0x100,
798 .map_io = davinci_map_io, 805 .map_io = davinci_map_io,
799 .init_irq = davinci_irq_init, 806 .init_irq = davinci_irq_init,
800 .init_time = davinci_timer_init, 807 .init_time = dm646x_evm_init_time,
801 .init_machine = evm_init, 808 .init_machine = evm_init,
802 .init_late = davinci_init_late, 809 .init_late = davinci_init_late,
803 .dma_zone_size = SZ_128M, 810 .dma_zone_size = SZ_128M,
@@ -807,7 +814,7 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
807 .atag_offset = 0x100, 814 .atag_offset = 0x100,
808 .map_io = davinci_map_io, 815 .map_io = davinci_map_io,
809 .init_irq = davinci_irq_init, 816 .init_irq = davinci_irq_init,
810 .init_time = davinci_timer_init, 817 .init_time = dm6467t_evm_init_time,
811 .init_machine = evm_init, 818 .init_machine = evm_init,
812 .init_late = davinci_init_late, 819 .init_late = davinci_init_late,
813 .dma_zone_size = SZ_128M, 820 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index 72748e5df43c..d1c85484c2e2 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -566,7 +566,7 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
566 .atag_offset = 0x100, 566 .atag_offset = 0x100,
567 .map_io = mityomapl138_map_io, 567 .map_io = mityomapl138_map_io,
568 .init_irq = cp_intc_init, 568 .init_irq = cp_intc_init,
569 .init_time = davinci_timer_init, 569 .init_time = da850_init_time,
570 .init_machine = mityomapl138_init, 570 .init_machine = mityomapl138_init,
571 .init_late = davinci_init_late, 571 .init_late = davinci_init_late,
572 .dma_zone_size = SZ_128M, 572 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c
index 51a3ae19d765..f2875770fbff 100644
--- a/arch/arm/mach-davinci/board-neuros-osd2.c
+++ b/arch/arm/mach-davinci/board-neuros-osd2.c
@@ -227,7 +227,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
227 .atag_offset = 0x100, 227 .atag_offset = 0x100,
228 .map_io = davinci_ntosd2_map_io, 228 .map_io = davinci_ntosd2_map_io,
229 .init_irq = davinci_irq_init, 229 .init_irq = davinci_irq_init,
230 .init_time = davinci_timer_init, 230 .init_time = dm644x_init_time,
231 .init_machine = davinci_ntosd2_init, 231 .init_machine = davinci_ntosd2_init,
232 .init_late = davinci_init_late, 232 .init_late = davinci_init_late,
233 .dma_zone_size = SZ_128M, 233 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index ae37bc46bc8c..e2ba9da6c717 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -330,7 +330,7 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
330 .atag_offset = 0x100, 330 .atag_offset = 0x100,
331 .map_io = omapl138_hawk_map_io, 331 .map_io = omapl138_hawk_map_io,
332 .init_irq = cp_intc_init, 332 .init_irq = cp_intc_init,
333 .init_time = davinci_timer_init, 333 .init_time = da850_init_time,
334 .init_machine = omapl138_hawk_init, 334 .init_machine = omapl138_hawk_init,
335 .init_late = davinci_init_late, 335 .init_late = davinci_init_late,
336 .dma_zone_size = SZ_128M, 336 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c
index 1f02d4ec6144..2922da9d1684 100644
--- a/arch/arm/mach-davinci/board-sffsdr.c
+++ b/arch/arm/mach-davinci/board-sffsdr.c
@@ -150,7 +150,7 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
150 .atag_offset = 0x100, 150 .atag_offset = 0x100,
151 .map_io = davinci_sffsdr_map_io, 151 .map_io = davinci_sffsdr_map_io,
152 .init_irq = davinci_irq_init, 152 .init_irq = davinci_irq_init,
153 .init_time = davinci_timer_init, 153 .init_time = dm644x_init_time,
154 .init_machine = davinci_sffsdr_init, 154 .init_machine = davinci_sffsdr_init,
155 .init_late = davinci_init_late, 155 .init_late = davinci_init_late,
156 .dma_zone_size = SZ_128M, 156 .dma_zone_size = SZ_128M,
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index 57ab18cf2a89..350d7673aa4d 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -1200,7 +1200,6 @@ static const struct davinci_soc_info davinci_soc_info_da830 = {
1200 .jtag_id_reg = DA8XX_SYSCFG0_BASE + DA8XX_JTAG_ID_REG, 1200 .jtag_id_reg = DA8XX_SYSCFG0_BASE + DA8XX_JTAG_ID_REG,
1201 .ids = da830_ids, 1201 .ids = da830_ids,
1202 .ids_num = ARRAY_SIZE(da830_ids), 1202 .ids_num = ARRAY_SIZE(da830_ids),
1203 .cpu_clks = da830_clks,
1204 .psc_bases = da830_psc_bases, 1203 .psc_bases = da830_psc_bases,
1205 .psc_bases_num = ARRAY_SIZE(da830_psc_bases), 1204 .psc_bases_num = ARRAY_SIZE(da830_psc_bases),
1206 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120, 1205 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120,
@@ -1220,6 +1219,10 @@ void __init da830_init(void)
1220 1219
1221 da8xx_syscfg0_base = ioremap(DA8XX_SYSCFG0_BASE, SZ_4K); 1220 da8xx_syscfg0_base = ioremap(DA8XX_SYSCFG0_BASE, SZ_4K);
1222 WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module"); 1221 WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module");
1222}
1223 1223
1224 davinci_clk_init(davinci_soc_info_da830.cpu_clks); 1224void __init da830_init_time(void)
1225{
1226 davinci_clk_init(da830_clks);
1227 davinci_timer_init();
1225} 1228}
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index aa37cbdf7d4d..34117e614e08 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -1353,7 +1353,6 @@ static const struct davinci_soc_info davinci_soc_info_da850 = {
1353 .jtag_id_reg = DA8XX_SYSCFG0_BASE + DA8XX_JTAG_ID_REG, 1353 .jtag_id_reg = DA8XX_SYSCFG0_BASE + DA8XX_JTAG_ID_REG,
1354 .ids = da850_ids, 1354 .ids = da850_ids,
1355 .ids_num = ARRAY_SIZE(da850_ids), 1355 .ids_num = ARRAY_SIZE(da850_ids),
1356 .cpu_clks = da850_clks,
1357 .psc_bases = da850_psc_bases, 1356 .psc_bases = da850_psc_bases,
1358 .psc_bases_num = ARRAY_SIZE(da850_psc_bases), 1357 .psc_bases_num = ARRAY_SIZE(da850_psc_bases),
1359 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120, 1358 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120,
@@ -1392,6 +1391,10 @@ void __init da850_init(void)
1392 v = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG)); 1391 v = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG));
1393 v &= ~CFGCHIP3_PLL1_MASTER_LOCK; 1392 v &= ~CFGCHIP3_PLL1_MASTER_LOCK;
1394 __raw_writel(v, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG)); 1393 __raw_writel(v, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG));
1394}
1395 1395
1396 davinci_clk_init(davinci_soc_info_da850.cpu_clks); 1396void __init da850_init_time(void)
1397{
1398 davinci_clk_init(da850_clks);
1399 davinci_timer_init();
1397} 1400}
diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
index 779e8ce887c3..ab199f4b9ce4 100644
--- a/arch/arm/mach-davinci/da8xx-dt.c
+++ b/arch/arm/mach-davinci/da8xx-dt.c
@@ -96,7 +96,7 @@ static const char *const da850_boards_compat[] __initconst = {
96 96
97DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x") 97DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x")
98 .map_io = da850_init, 98 .map_io = da850_init,
99 .init_time = davinci_timer_init, 99 .init_time = da850_init_time,
100 .init_machine = da850_init_machine, 100 .init_machine = da850_init_machine,
101 .dt_compat = da850_boards_compat, 101 .dt_compat = da850_boards_compat,
102 .init_late = davinci_init_late, 102 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/davinci.h b/arch/arm/mach-davinci/davinci.h
index c62b90c6118a..270cef85750a 100644
--- a/arch/arm/mach-davinci/davinci.h
+++ b/arch/arm/mach-davinci/davinci.h
@@ -83,6 +83,7 @@ int davinci_init_wdt(void);
83 83
84/* DM355 function declarations */ 84/* DM355 function declarations */
85void dm355_init(void); 85void dm355_init(void);
86void dm355_init_time(void);
86void dm355_init_spi0(unsigned chipselect_mask, 87void dm355_init_spi0(unsigned chipselect_mask,
87 const struct spi_board_info *info, unsigned len); 88 const struct spi_board_info *info, unsigned len);
88void dm355_init_asp1(u32 evt_enable); 89void dm355_init_asp1(u32 evt_enable);
@@ -91,6 +92,7 @@ int dm355_gpio_register(void);
91 92
92/* DM365 function declarations */ 93/* DM365 function declarations */
93void dm365_init(void); 94void dm365_init(void);
95void dm365_init_time(void);
94void dm365_init_asp(void); 96void dm365_init_asp(void);
95void dm365_init_vc(void); 97void dm365_init_vc(void);
96void dm365_init_ks(struct davinci_ks_platform_data *pdata); 98void dm365_init_ks(struct davinci_ks_platform_data *pdata);
@@ -102,12 +104,14 @@ int dm365_gpio_register(void);
102 104
103/* DM644x function declarations */ 105/* DM644x function declarations */
104void dm644x_init(void); 106void dm644x_init(void);
107void dm644x_init_time(void);
105void dm644x_init_asp(void); 108void dm644x_init_asp(void);
106int dm644x_init_video(struct vpfe_config *, struct vpbe_config *); 109int dm644x_init_video(struct vpfe_config *, struct vpbe_config *);
107int dm644x_gpio_register(void); 110int dm644x_gpio_register(void);
108 111
109/* DM646x function declarations */ 112/* DM646x function declarations */
110void dm646x_init(void); 113void dm646x_init(void);
114void dm646x_init_time(unsigned long ref_clk_rate, unsigned long aux_clkin_rate);
111void dm646x_init_mcasp0(struct snd_platform_data *pdata); 115void dm646x_init_mcasp0(struct snd_platform_data *pdata);
112void dm646x_init_mcasp1(struct snd_platform_data *pdata); 116void dm646x_init_mcasp1(struct snd_platform_data *pdata);
113int dm646x_init_edma(struct edma_rsv_info *rsv); 117int dm646x_init_edma(struct edma_rsv_info *rsv);
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index 938747f20c22..f29480495c18 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -1012,7 +1012,6 @@ static const struct davinci_soc_info davinci_soc_info_dm355 = {
1012 .jtag_id_reg = 0x01c40028, 1012 .jtag_id_reg = 0x01c40028,
1013 .ids = dm355_ids, 1013 .ids = dm355_ids,
1014 .ids_num = ARRAY_SIZE(dm355_ids), 1014 .ids_num = ARRAY_SIZE(dm355_ids),
1015 .cpu_clks = dm355_clks,
1016 .psc_bases = dm355_psc_bases, 1015 .psc_bases = dm355_psc_bases,
1017 .psc_bases_num = ARRAY_SIZE(dm355_psc_bases), 1016 .psc_bases_num = ARRAY_SIZE(dm355_psc_bases),
1018 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 1017 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
@@ -1043,7 +1042,12 @@ void __init dm355_init(void)
1043{ 1042{
1044 davinci_common_init(&davinci_soc_info_dm355); 1043 davinci_common_init(&davinci_soc_info_dm355);
1045 davinci_map_sysmod(); 1044 davinci_map_sysmod();
1046 davinci_clk_init(davinci_soc_info_dm355.cpu_clks); 1045}
1046
1047void __init dm355_init_time(void)
1048{
1049 davinci_clk_init(dm355_clks);
1050 davinci_timer_init();
1047} 1051}
1048 1052
1049int __init dm355_init_video(struct vpfe_config *vpfe_cfg, 1053int __init dm355_init_video(struct vpfe_config *vpfe_cfg,
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 5d9f96df08e9..1e3df9df1e10 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -1116,7 +1116,6 @@ static const struct davinci_soc_info davinci_soc_info_dm365 = {
1116 .jtag_id_reg = 0x01c40028, 1116 .jtag_id_reg = 0x01c40028,
1117 .ids = dm365_ids, 1117 .ids = dm365_ids,
1118 .ids_num = ARRAY_SIZE(dm365_ids), 1118 .ids_num = ARRAY_SIZE(dm365_ids),
1119 .cpu_clks = dm365_clks,
1120 .psc_bases = dm365_psc_bases, 1119 .psc_bases = dm365_psc_bases,
1121 .psc_bases_num = ARRAY_SIZE(dm365_psc_bases), 1120 .psc_bases_num = ARRAY_SIZE(dm365_psc_bases),
1122 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 1121 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
@@ -1168,7 +1167,12 @@ void __init dm365_init(void)
1168{ 1167{
1169 davinci_common_init(&davinci_soc_info_dm365); 1168 davinci_common_init(&davinci_soc_info_dm365);
1170 davinci_map_sysmod(); 1169 davinci_map_sysmod();
1171 davinci_clk_init(davinci_soc_info_dm365.cpu_clks); 1170}
1171
1172void __init dm365_init_time(void)
1173{
1174 davinci_clk_init(dm365_clks);
1175 davinci_timer_init();
1172} 1176}
1173 1177
1174static struct resource dm365_vpss_resources[] = { 1178static struct resource dm365_vpss_resources[] = {
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index 6b41e1ca511e..b409801649e1 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -905,7 +905,6 @@ static const struct davinci_soc_info davinci_soc_info_dm644x = {
905 .jtag_id_reg = 0x01c40028, 905 .jtag_id_reg = 0x01c40028,
906 .ids = dm644x_ids, 906 .ids = dm644x_ids,
907 .ids_num = ARRAY_SIZE(dm644x_ids), 907 .ids_num = ARRAY_SIZE(dm644x_ids),
908 .cpu_clks = dm644x_clks,
909 .psc_bases = dm644x_psc_bases, 908 .psc_bases = dm644x_psc_bases,
910 .psc_bases_num = ARRAY_SIZE(dm644x_psc_bases), 909 .psc_bases_num = ARRAY_SIZE(dm644x_psc_bases),
911 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 910 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
@@ -931,7 +930,12 @@ void __init dm644x_init(void)
931{ 930{
932 davinci_common_init(&davinci_soc_info_dm644x); 931 davinci_common_init(&davinci_soc_info_dm644x);
933 davinci_map_sysmod(); 932 davinci_map_sysmod();
934 davinci_clk_init(davinci_soc_info_dm644x.cpu_clks); 933}
934
935void __init dm644x_init_time(void)
936{
937 davinci_clk_init(dm644x_clks);
938 davinci_timer_init();
935} 939}
936 940
937int __init dm644x_init_video(struct vpfe_config *vpfe_cfg, 941int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 6fc06a6ad4f8..109ab1fa0d2c 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -39,12 +39,6 @@
39#define VSCLKDIS_MASK (BIT_MASK(11) | BIT_MASK(10) | BIT_MASK(9) |\ 39#define VSCLKDIS_MASK (BIT_MASK(11) | BIT_MASK(10) | BIT_MASK(9) |\
40 BIT_MASK(8)) 40 BIT_MASK(8))
41 41
42/*
43 * Device specific clocks
44 */
45#define DM646X_REF_FREQ 27000000
46#define DM646X_AUX_FREQ 24000000
47
48#define DM646X_EMAC_BASE 0x01c80000 42#define DM646X_EMAC_BASE 0x01c80000
49#define DM646X_EMAC_MDIO_BASE (DM646X_EMAC_BASE + 0x4000) 43#define DM646X_EMAC_MDIO_BASE (DM646X_EMAC_BASE + 0x4000)
50#define DM646X_EMAC_CNTRL_OFFSET 0x0000 44#define DM646X_EMAC_CNTRL_OFFSET 0x0000
@@ -64,13 +58,12 @@ static struct pll_data pll2_data = {
64 58
65static struct clk ref_clk = { 59static struct clk ref_clk = {
66 .name = "ref_clk", 60 .name = "ref_clk",
67 .rate = DM646X_REF_FREQ, 61 /* rate is initialized in dm646x_init_time() */
68 .set_rate = davinci_simple_set_rate,
69}; 62};
70 63
71static struct clk aux_clkin = { 64static struct clk aux_clkin = {
72 .name = "aux_clkin", 65 .name = "aux_clkin",
73 .rate = DM646X_AUX_FREQ, 66 /* rate is initialized in dm646x_init_time() */
74}; 67};
75 68
76static struct clk pll1_clk = { 69static struct clk pll1_clk = {
@@ -888,7 +881,6 @@ static const struct davinci_soc_info davinci_soc_info_dm646x = {
888 .jtag_id_reg = 0x01c40028, 881 .jtag_id_reg = 0x01c40028,
889 .ids = dm646x_ids, 882 .ids = dm646x_ids,
890 .ids_num = ARRAY_SIZE(dm646x_ids), 883 .ids_num = ARRAY_SIZE(dm646x_ids),
891 .cpu_clks = dm646x_clks,
892 .psc_bases = dm646x_psc_bases, 884 .psc_bases = dm646x_psc_bases,
893 .psc_bases_num = ARRAY_SIZE(dm646x_psc_bases), 885 .psc_bases_num = ARRAY_SIZE(dm646x_psc_bases),
894 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 886 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
@@ -956,7 +948,15 @@ void __init dm646x_init(void)
956{ 948{
957 davinci_common_init(&davinci_soc_info_dm646x); 949 davinci_common_init(&davinci_soc_info_dm646x);
958 davinci_map_sysmod(); 950 davinci_map_sysmod();
959 davinci_clk_init(davinci_soc_info_dm646x.cpu_clks); 951}
952
953void __init dm646x_init_time(unsigned long ref_clk_rate,
954 unsigned long aux_clkin_rate)
955{
956 ref_clk.rate = ref_clk_rate;
957 aux_clkin.rate = aux_clkin_rate;
958 davinci_clk_init(dm646x_clks);
959 davinci_timer_init();
960} 960}
961 961
962static int __init dm646x_init_devices(void) 962static int __init dm646x_init_devices(void)
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index 19b9346e147e..f0d5e858f158 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -53,7 +53,6 @@ struct davinci_soc_info {
53 u32 jtag_id_reg; 53 u32 jtag_id_reg;
54 struct davinci_id *ids; 54 struct davinci_id *ids;
55 unsigned long ids_num; 55 unsigned long ids_num;
56 struct clk_lookup *cpu_clks;
57 u32 *psc_bases; 56 u32 *psc_bases;
58 unsigned long psc_bases_num; 57 unsigned long psc_bases_num;
59 u32 pinmux_base; 58 u32 pinmux_base;
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index fe2d77654c06..9fd6d0125762 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -88,7 +88,10 @@ extern unsigned int da850_max_speed;
88#define DA8XX_ARM_RAM_BASE 0xffff0000 88#define DA8XX_ARM_RAM_BASE 0xffff0000
89 89
90void da830_init(void); 90void da830_init(void);
91void da830_init_time(void);
92
91void da850_init(void); 93void da850_init(void);
94void da850_init_time(void);
92 95
93int da830_register_edma(struct edma_rsv_info *rsv); 96int da830_register_edma(struct edma_rsv_info *rsv);
94int da850_register_edma(struct edma_rsv_info *rsv[2]); 97int da850_register_edma(struct edma_rsv_info *rsv[2]);