Hello,

I have only one question...

On Saturday 02 October 2010 00:35:32 ext Paul Walmsley wrote:
...

> +/* McBSP CLKS source switching function */
> +
> +int omap2_mcbsp_set_clks_src(u8 id, u8 fck_src_id)
> +{
> +     struct omap_mcbsp *mcbsp;
> +     struct clk *fck_src;
> +     char *fck_src_name;
> +     int r;
> +
> +     if (!omap_mcbsp_check_valid_id(id)) {
> +             pr_err("%s: Invalid id (%d)\n", __func__, id + 1);
> +             return -EINVAL;
> +     }
> +     mcbsp = id_to_mcbsp_ptr(id);
> +
> +     if (fck_src_id == MCBSP_CLKS_PAD_SRC)
> +             fck_src_name = "pad_fck";
> +     else if (fck_src_id == MCBSP_CLKS_PRCM_SRC)
> +             fck_src_name = "prcm_fck";
> +     else
> +             return -EINVAL;
> +
> +     fck_src = clk_get(mcbsp->dev, fck_src_name);
> +     if (IS_ERR_OR_NULL(fck_src)) {
> +             pr_err("omap-mcbsp: %s: could not clk_get() %s\n", "clks",
> +                    fck_src_name);
> +             return -EINVAL;
> +     }
> +
> +     clk_disable(mcbsp->fclk);
> +
> +     r = clk_set_parent(mcbsp->fclk, fck_src);
> +     if (IS_ERR_VALUE(r)) {
> +             pr_err("omap-mcbsp: %s: could not clk_set_parent() to %s\n",
> +                    "clks", fck_src_name);
> +             clk_put(fck_src);
> +             return -EINVAL;
> +     }
> +
> +     clk_enable(mcbsp->fclk);
> +
> +     clk_put(fck_src);
> +
> +     return 0;
> +}
> +EXPORT_SYMBOL(omap2_mcbsp_set_clks_src);

...

>  static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
>                                        int clk_id, unsigned int freq,
>                                        int dir)
>  {
>       struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
>       struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
> -     struct omap_mcbsp_platform_data *pdata = cpu_dai->dev->platform_data;
>       int err = 0;
> 
>       /* The McBSP signal muxing functions are only available on McBSP1 */
> @@ -685,8 +630,20 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct
> snd_soc_dai *cpu_dai, regs->srgr2     |= CLKSM;
>               break;
>       case OMAP_MCBSP_SYSCLK_CLKS_FCLK:
> +             if (cpu_class_is_omap1()) {
> +                     err = -EINVAL;
> +                     break;
> +             }
> +             err = omap2_mcbsp_set_clks_src(mcbsp_data->bus_id,
> +                                            MCBSP_CLKS_PRCM_SRC);
> +             break;
>       case OMAP_MCBSP_SYSCLK_CLKS_EXT:
> -             err = omap_mcbsp_dai_set_clks_src(mcbsp_data, clk_id);
> +             if (cpu_class_is_omap1()) {
> +                     err = 0;
> +                     break;
> +             }
> +             err = omap2_mcbsp_set_clks_src(mcbsp_data->bus_id,
> +                                            MCBSP_CLKS_PAD_SRC);
>               break;
> 
>       case OMAP_MCBSP_SYSCLK_CLKX_EXT:

What is the fclk source by default.
What I mean is that most of the machine drivers are not calling the 
snd_soc_dai_set_sysclk for the cpu_dai.
It has been by default to prcm_fclk (core_96 or per_96).
Is this still the case after this series?
Do we need to go through the ASoC machine drivers, and need to select 
explicitly 
the prcm_fclk from now on?

-- 
Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to