Hello Anuj,
On Thu, 7 Jan 2010, Aggarwal, Anuj wrote:
In the interim, I would suggest that you remove the the clock source
and
receiver source change functions from omap-mcbsp.c, split them into
OMAP1
and OMAP2/3 variants, and place them into arch/arm/mach-omap*/mcbsp.c. Expand struct omap_mcbsp_ops to add function pointers to those
functions.
Call those from soc/omap-mcbsp.c via mcbsp->pdata->ops. That way you
won't
need those exports.
Paul: What's your opinnion, would it be possible or would it be wise to handle these McBSP clock route setups with the clock framework instead?
Functions omap_mcbsp_dai_set_clks_src and omap_mcbsp_dai_set_rcvr_src are basically just setting up the input clock for McBSP SRG or McBSP1 receiver.
Sure. There already should be some support for it in clock34xx.h, but I doubt anyone's tested it:
static struct clk mcbsp1_fck = { .name = "mcbsp_fck", .ops = &clkops_omap2_dflt_wait, .id = 1, .init = &omap2_init_clksel_parent, .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), .enable_bit = OMAP3430_EN_MCBSP1_SHIFT, .clksel_reg = OMAP343X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0), .clksel_mask = OMAP2_MCBSP1_CLKS_MASK, .clksel = mcbsp_15_clksel, .clkdm_name = "core_l4_clkdm", .recalc = &omap2_clksel_recalc, };
etc. Some similar entries would need to be added to the clock24xx.h file.
[Aggarwal, Anuj] One problem which I found in trying the above discussed approach is that I am not able to get mcbsp clock handles in omap-mcbsp.c file.
Why not? Looks like there are init and exit functions in there. Those would seem like logical places for clk_get()/clk_put().
To call clk_set_parent() with the new parent clock as "mcbsp_clks" (in case of an external clock), I need the mcbsp_fck clock handle. But this handle is not shared with the omap_mcbsp_dai[].
Have you considered static variable(s)?
What should be the right method of getting this handle in omap_mcbsp_dai_set_dai_sysclk(), in case I understood the concept properly. Basically, we want to get rid of the low level stuff in this function and instead use standard clock framework APIs?
Yep, the contents of both the omap_mcbsp_dai_set_clks_src() function and the omap_mcbsp_dai_set_rcvr_src() should be implementable with standard clock framework APIs.
- Paul