Adding clocks specific to DM355

Signed-off-by: Sandeep Paulraj <[EMAIL PROTECTED]>
---
 arch/arm/mach-davinci/clock.c            |  113 ++++++++++++++++++++++++++++++
 arch/arm/mach-davinci/include/mach/psc.h |    3 +
 arch/arm/mach-davinci/time.c             |    2 +
 3 files changed, 118 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/clock.c b/arch/arm/mach-davinci/clock.c
index 6e56830..d5a5121 100644
--- a/arch/arm/mach-davinci/clock.c
+++ b/arch/arm/mach-davinci/clock.c
@@ -293,6 +293,108 @@ static struct clk davinci_dm6467_clks[] = {
                .usecount = 1,
        },
 };
+static struct clk davinci_dm355_clks[] = {
+       {
+               .name = "ARMCLK",
+               .rate = &armrate,
+               .lpsc = -1,
+               .flags = ALWAYS_ENABLED,
+       },
+       {
+               .name = "UART0",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_UART0,
+               .usecount = 1,
+       },
+       {
+               .name = "UART1",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_UART1,
+               .usecount = 1,
+       },
+       {
+               .name = "UART2",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_UART2,
+               .usecount = 1,
+       },
+       {
+               .name = "EMACCLK",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_EMAC_WRAPPER,
+       },
+       {
+               .name = "I2CCLK",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_I2C,
+       },
+       {
+               .name = "IDECLK",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_ATA,
+       },
+       {
+               .name = "McBSPCLK0",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_McBSP,
+       },
+       {
+               .name = "McBSPCLK1",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_McBSP1,
+       },
+       {
+               .name = "MMCSDCLK0",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_MMC_SD,
+       },
+       {
+               .name = "MMCSDCLK1",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_MMC_SD1,
+       },
+       {
+               .name = "SPICLK",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_SPI,
+       },
+       {
+               .name = "gpio",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_GPIO,
+       },
+       {
+               .name = "AEMIFCLK",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_AEMIF,
+               .usecount = 1,
+       },
+       {
+               .name = "PWM0_CLK",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_PWM0,
+       },
+       {
+               .name = "PWM1_CLK",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_PWM1,
+       },
+       {
+               .name = "PWM2_CLK",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_PWM2,
+       },
+       {
+               .name = "PWM3_CLK",
+               .rate = &fixedrate,
+               .lpsc = DAVINCI_LPSC_PWM3,
+       },
+       {
+               .name = "USBCLK",
+               .rate = &commonrate,
+               .lpsc = DAVINCI_LPSC_USB,
+       },
+};
 
 #ifdef CONFIG_DAVINCI_RESET_CLOCKS
 /*
@@ -338,6 +440,17 @@ int __init davinci_clk_init(void)
 
                board_clks = davinci_dm6467_clks;
                num_clks = ARRAY_SIZE(davinci_dm6467_clks);
+       } else if (cpu_is_davinci_dm355()) {
+               unsigned long postdiv;
+
+               postdiv = (davinci_readl(DAVINCI_PLL_CNTRL0_BASE + 0x128)
+                          & 0x1f) + 1;
+
+               fixedrate = 24000000;
+               armrate = (pll_mult + 1) * (fixedrate / (16 * postdiv));
+               commonrate = armrate / 2;
+               board_clks = davinci_dm355_clks;
+               num_clks = ARRAY_SIZE(davinci_dm355_clks);
        } else {
                fixedrate = OSC_FREQ;
                armrate = (pll_mult + 1) * (fixedrate / 2);
diff --git a/arch/arm/mach-davinci/include/mach/psc.h 
b/arch/arm/mach-davinci/include/mach/psc.h
index 4977aa0..bf8b24d 100644
--- a/arch/arm/mach-davinci/include/mach/psc.h
+++ b/arch/arm/mach-davinci/include/mach/psc.h
@@ -39,9 +39,12 @@
 #define DAVINCI_LPSC_EMAC           5
 #define DAVINCI_LPSC_EMAC_WRAPPER   6
 #define DAVINCI_LPSC_MDIO           7
+#define DAVINCI_LPSC_MMC_SD1        7
 #define DAVINCI_LPSC_IEEE1394       8
+#define DAVINCI_LPSC_McBSP1         8
 #define DAVINCI_LPSC_USB            9
 #define DAVINCI_LPSC_ATA            10
+#define DAVINCI_LPSC_PWM3           10
 #define DAVINCI_LPSC_VLYNQ          11
 #define DAVINCI_LPSC_UHPI           12
 #define DAVINCI_LPSC_DDR_EMIF       13
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 7b17225..22c41eb 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -313,6 +313,8 @@ static void __init davinci_timer_init(void)
                davinci_clock_tick_rate = 27000000;
        else if (cpu_is_davinci_dm6467())
                davinci_clock_tick_rate = 148500000;
+       else if (cpu_is_davinci_dm355())
+               davinci_clock_tick_rate = 24000000;
 
        /* setup clocksource */
        clocksource_davinci.mult =
-- 
1.5.6.4

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to