]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-davinci/da850.c
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / arch / arm / mach-davinci / da850.c
index 0c4a26ddebba03ec3f082ea96735551bf474d819..a0d4f6038b608f187eedc4a0cf89b0b97ce6a49c 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),
@@ -420,8 +463,8 @@ static struct clk_lookup da850_clks[] = {
        CLK("davinci_emac.1",   NULL,           &emac_clk),
        CLK("davinci-mcasp.0",  NULL,           &mcasp_clk),
        CLK("da8xx_lcdc.0",     "fck",          &lcdc_clk),
-       CLK("davinci_mmc.0",    NULL,           &mmcsd0_clk),
-       CLK("davinci_mmc.1",    NULL,           &mmcsd1_clk),
+       CLK("da830-mmc.0",      NULL,           &mmcsd0_clk),
+       CLK("da830-mmc.1",      NULL,           &mmcsd1_clk),
        CLK(NULL,               "aemif",        &aemif_clk),
        CLK(NULL,               "usb11",        &usb11_clk),
        CLK(NULL,               "usb20",        &usb20_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),
 };
 
@@ -958,7 +1004,7 @@ static const struct da850_opp da850_opp_96 = {
 
 #define OPP(freq)              \
        {                               \
-               .index = (unsigned int) &da850_opp_##freq,      \
+               .driver_data = (unsigned int) &da850_opp_##freq,        \
                .frequency = freq * 1000, \
        }
 
@@ -970,7 +1016,7 @@ static struct cpufreq_frequency_table da850_freq_table[] = {
        OPP(200),
        OPP(96),
        {
-               .index          = 0,
+               .driver_data            = 0,
                .frequency      = CPUFREQ_TABLE_END,
        },
 };
@@ -998,7 +1044,7 @@ static int da850_set_voltage(unsigned int index)
        if (!cvdd)
                return -ENODEV;
 
-       opp = (struct da850_opp *) cpufreq_info.freq_table[index].index;
+       opp = (struct da850_opp *) cpufreq_info.freq_table[index].driver_data;
 
        return regulator_set_voltage(cvdd, opp->cvdd_min, opp->cvdd_max);
 }
@@ -1079,7 +1125,7 @@ static int da850_set_pll0rate(struct clk *clk, unsigned long index)
        struct pll_data *pll = clk->pll_data;
        int ret;
 
-       opp = (struct da850_opp *) cpufreq_info.freq_table[index].index;
+       opp = (struct da850_opp *) cpufreq_info.freq_table[index].driver_data;
        prediv = opp->prediv;
        mult = opp->mult;
        postdiv = opp->postdiv;