ARM: davinci: da850: add ECAP & EHRPWM clock nodes
authorPhilip Avinash <avinashphilip@ti.com>
Mon, 25 Mar 2013 07:49:48 +0000 (13:19 +0530)
committerSekhar Nori <nsekhar@ti.com>
Mon, 1 Apr 2013 11:47:10 +0000 (17:17 +0530)
Add ECAP and EHRPWM module clock nodes. Also add a clock
node for TBCLK for EHRWPM.

Signed-off-by: Philip Avinash <avinashphilip@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
arch/arm/mach-davinci/da850.c
arch/arm/mach-davinci/include/mach/da8xx.h

index 0c4a26ddebba03ec3f082ea96735551bf474d819..2a2f60c54ec6a1b1b6c829403996ba0916fddabb 100644 (file)
@@ -383,6 +383,49 @@ static struct clk dsp_clk = {
        .flags          = PSC_LRST | PSC_FORCE,
 };
 
+static struct clk ehrpwm_clk = {
+       .name           = "ehrpwm",
+       .parent         = &pll0_sysclk2,
+       .lpsc           = DA8XX_LPSC1_PWM,
+       .gpsc           = 1,
+       .flags          = DA850_CLK_ASYNC3,
+};
+
+#define DA8XX_EHRPWM_TBCLKSYNC BIT(12)
+
+static void ehrpwm_tblck_enable(struct clk *clk)
+{
+       u32 val;
+
+       val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP1_REG));
+       val |= DA8XX_EHRPWM_TBCLKSYNC;
+       writel(val, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP1_REG));
+}
+
+static void ehrpwm_tblck_disable(struct clk *clk)
+{
+       u32 val;
+
+       val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP1_REG));
+       val &= ~DA8XX_EHRPWM_TBCLKSYNC;
+       writel(val, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP1_REG));
+}
+
+static struct clk ehrpwm_tbclk = {
+       .name           = "ehrpwm_tbclk",
+       .parent         = &ehrpwm_clk,
+       .clk_enable     = ehrpwm_tblck_enable,
+       .clk_disable    = ehrpwm_tblck_disable,
+};
+
+static struct clk ecap_clk = {
+       .name           = "ecap",
+       .parent         = &pll0_sysclk2,
+       .lpsc           = DA8XX_LPSC1_ECAP,
+       .gpsc           = 1,
+       .flags          = DA850_CLK_ASYNC3,
+};
+
 static struct clk_lookup da850_clks[] = {
        CLK(NULL,               "ref",          &ref_clk),
        CLK(NULL,               "pll0",         &pll0_clk),
@@ -430,6 +473,9 @@ static struct clk_lookup da850_clks[] = {
        CLK("vpif",             NULL,           &vpif_clk),
        CLK("ahci",             NULL,           &sata_clk),
        CLK("davinci-rproc.0",  NULL,           &dsp_clk),
+       CLK("ehrpwm",           "fck",          &ehrpwm_clk),
+       CLK("ehrpwm",           "tbclk",        &ehrpwm_tbclk),
+       CLK("ecap",             "fck",          &ecap_clk),
        CLK(NULL,               NULL,           NULL),
 };
 
index de439b7b9af190810407dc95ccca5a50693ccda2..be77ce269cb0302282ec12aa1affec04bbe5db58 100644 (file)
@@ -55,6 +55,7 @@ extern unsigned int da850_max_speed;
 #define DA8XX_SYSCFG0_VIRT(x)  (da8xx_syscfg0_base + (x))
 #define DA8XX_JTAG_ID_REG      0x18
 #define DA8XX_CFGCHIP0_REG     0x17c
+#define DA8XX_CFGCHIP1_REG     0x180
 #define DA8XX_CFGCHIP2_REG     0x184
 #define DA8XX_CFGCHIP3_REG     0x188