From: Ashish Chavan <ashish.chavan@kpitcummins.com>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: alsa-devel <alsa-devel@alsa-project.org>,
"kuninori.morimoto.gx" <kuninori.morimoto.gx@renesas.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
David@alsa-project.org, Chen <david.chen@diasemi.com>,
lrg <lrg@ti.com>
Subject: Re: [PATCH v3] ASoC: da7210: Add support for PLL and SRM
Date: Tue, 7 Feb 2012 18:55:49 +0530 [thread overview]
Message-ID: <1328621149.26721.18.camel@matrix> (raw)
In-Reply-To: <20120201115035.GC5648@opensource.wolfsonmicro.com>
On Wed, 2012-02-01 at 11:50 +0000, Mark Brown wrote:
> On Wed, Feb 01, 2012 at 04:55:29PM +0530, Ashish Chavan wrote:
>
> > +static const u32 da7210_pll_div[][COL_CNT] = {
> > + /* for MASTER mode, fs = 44.1Khz */
> > + { 12000000, 0xE8, 0x6C, 0x2, }, /* MCLK=12Mhz */
>
> Even better than defines to index into the array would be an array of
> structs with named members...
>
OK, will do that.
> > + if (da7210->mclk_rate) {
> > + /* PLL mode, disable PLL bypass */
> > + snd_soc_update_bits(codec, DA7210_PLL_DIV3, DA7210_PLL_BYP, 0);
> > + } else {
> > + /* PLL bypass mode, enable PLL bypass */
> > + snd_soc_update_bits(codec, DA7210_PLL_DIV3, DA7210_PLL_BYP,
> > + DA7210_PLL_BYP);
> > + }
>
> This is really weird - if anything it looks the wrong way round.
> mclk_rate is what's set by set_sysclk() so if the user has configured
> MCLK we will never use it even if it's at a suitable rate but if the
> user hasn't configured one we rely on it directly. If anything I'd
> expect this code to enable the PLL only if the MCLK is not a suitable
> rate.
>
Actually it worked fine for me because of the way platform driver is
written. It basically uses static configurations for PLL and PLL bypass
modes. It calls set_sysclk() only in case of PLL. So the codec driver
more or less uses mckl_rate as a flag to see if PLL is enabled. I know
it's not clean and may be I can update it to comply with rest of the
stuff.
> The normal pattern is that set_sysclk() specifies the clock the bulk of
> the device will be using, when used with the PLL that'd be the PLL
> output not the PLL input. Alternatively just specify the MCLK always
> and let the driver figure out when to use the PLL.
Yes, got the point.
>
> > + if (da7210->master) {
> > + /* In PLL master mode, use master mode PLL dividers */
> > + switch (fout) {
> > + case 2822400:
> > + row_idx = MASTER_2822400_DIV_OFFSET;
> > + break;
> > + case 3072000:
> > + row_idx = MASTER_3072000_DIV_OFFSET;
> > + break;
> > + default:
> > + dev_err(codec_dai->dev,
> > + "Unsupported PLL output frequency %d\n", fout);
> > + return -EINVAL;
> > + }
> > + } else {
> > + /* In PLL slave mode, use SRM mode PLL dividers */
> > + row_idx = SLAVE_SRM_DIV_OFFSET;
> > + }
>
> You need checks elsewhere to make sure that the user doesn't try to
> reconfigure master/slave while the PLL is active.
AFAIK master/slave configuration is static(depending on the board
configuration) and done via set_fmt() from hw_params() of platform
driver. Can you please point me to an example where dynamic/runtime
setting of I2S master/slave mode is supported?
next prev parent reply other threads:[~2012-02-07 13:14 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-01 11:25 [PATCH v3] ASoC: da7210: Add support for PLL and SRM Ashish Chavan
2012-02-01 11:50 ` Mark Brown
2012-02-01 11:50 ` [alsa-devel] " Mark Brown
2012-02-07 13:25 ` Ashish Chavan [this message]
2012-02-07 19:19 ` Mark Brown
2012-02-07 19:19 ` [alsa-devel] " Mark Brown
2012-02-09 12:42 ` Ashish Chavan
2012-02-09 12:50 ` Mark Brown
2012-02-09 12:50 ` [alsa-devel] " Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1328621149.26721.18.camel@matrix \
--to=ashish.chavan@kpitcummins.com \
--cc=David@alsa-project.org \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=david.chen@diasemi.com \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lrg@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.