From: Sangbeom Kim <sbkim73@samsung.com>
To: 'Jassi Brar' <jassisinghbrar@gmail.com>
Cc: alsa-devel@alsa-project.org, kgene.kim@samsung.com,
broonie@opensource.wolfsonmicro.com,
linux-samsung-soc@vger.kernel.org, ben-linux@fluff.org,
lrg@slimlogic.co.uk
Subject: RE: [alsa-devel] [PATCH V2] ASoC: SAMSUNG: Add quirk to support Exynos4 PCM audio
Date: Thu, 28 Apr 2011 14:20:29 +0900 [thread overview]
Message-ID: <011d01cc0564$0646bf30$12d43d90$@com> (raw)
In-Reply-To: <BANLkTi=q6aBbe6AY1x3XYdLB_6Ao95_tHQ@mail.gmail.com>
On Thu, Apr 28, 2011 2:01 PM, Jassi Brar <jassisinghbrar@gmail.com> wrote:
> Subject: Re: [alsa-devel] [PATCH V2] ASoC: SAMSUNG: Add quirk to support
> Exynos4 PCM audio
>
> On Thu, Apr 28, 2011 at 6:53 AM, Sangbeom Kim <sbkim73@samsung.com> wrote:
> > Exynos4 pcm block is different from previous one.
> > Unlike previous one, Exynos4 doesn't have SCLK divider in the pcm block.
> > For this reason, This patch added quirk handling for Exynos4 pcm cpu
> driver.
> >
> > Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
> > ---
> > sound/soc/samsung/pcm.c | 46 +++++++++++++++++++++++++++++-----------
> ------
> > 1 files changed, 29 insertions(+), 17 deletions(-)
> >
> > diff --git a/sound/soc/samsung/pcm.c b/sound/soc/samsung/pcm.c
> > index 9c7e8b4..adfb251 100644
> > --- a/sound/soc/samsung/pcm.c
> > +++ b/sound/soc/samsung/pcm.c
> > @@ -10,7 +10,6 @@
> > * it under the terms of the GNU General Public License version 2 as
> > * published by the Free Software Foundation.
> > */
> > -
> > #include <linux/clk.h>
> > #include <linux/io.h>
> >
> > @@ -128,6 +127,7 @@ struct s3c_pcm_info {
> >
> > struct s3c_dma_params *dma_playback;
> > struct s3c_dma_params *dma_capture;
> > + u32 quirks;
> > };
> >
> > static struct s3c2410_dma_client s3c_pcm_dma_client_out = {
> > @@ -278,7 +278,7 @@ static int s3c_pcm_hw_params(struct
> snd_pcm_substream *substream,
> > struct clk *clk;
> > int sclk_div, sync_div;
> > unsigned long flags;
> > - u32 clkctl;
> > + u32 clkctl = 0;
> >
> > dev_dbg(pcm->dev, "Entered %s\n", __func__);
> >
> > @@ -299,25 +299,34 @@ static int s3c_pcm_hw_params(struct
> snd_pcm_substream *substream,
> >
> > spin_lock_irqsave(&pcm->lock, flags);
> >
> > - /* Get hold of the PCMSOURCE_CLK */
> > - clkctl = readl(regs + S3C_PCM_CLKCTL);
> > - if (clkctl & S3C_PCM_CLKCTL_SERCLKSEL_PCLK)
> > - clk = pcm->pclk;
> > - else
> > + if (pcm->quirks == QUIRK_NO_DIV) {
> > clk = pcm->cclk;
> > + if (clk_get_rate(clk) != (pcm-
> >sclk_per_fs*params_rate(params))) {
> > + clk_set_rate(clk, pcm-
> >sclk_per_fs*params_rate(params));
> > + }
> > + sync_div = clk_get_rate(clk)/(params_rate(params))-1;
> > + }
> > + else {
> > + /* Get hold of the PCMSOURCE_CLK */
> > + clkctl = readl(regs + S3C_PCM_CLKCTL);
> > + if (clkctl & S3C_PCM_CLKCTL_SERCLKSEL_PCLK)
> > + clk = pcm->pclk;
> > + else
> > + clk = pcm->cclk;
> >
> > - /* Set the SCLK divider */
> > - sclk_div = clk_get_rate(clk) / pcm->sclk_per_fs /
> > - params_rate(params) / 2 - 1;
> > + /* Set the SCLK divider */
> > + sclk_div = clk_get_rate(clk) / pcm->sclk_per_fs /
> > + params_rate(params) / 2 - 1;
> >
> > - clkctl &= ~(S3C_PCM_CLKCTL_SCLKDIV_MASK
> > - << S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
> > - clkctl |= ((sclk_div & S3C_PCM_CLKCTL_SCLKDIV_MASK)
> > - << S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
> > + clkctl &= ~(S3C_PCM_CLKCTL_SCLKDIV_MASK
> > + << S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
> > + clkctl |= ((sclk_div & S3C_PCM_CLKCTL_SCLKDIV_MASK)
> > + << S3C_PCM_CLKCTL_SCLKDIV_SHIFT);
> >
> > - /* Set the SYNC divider */
> > - sync_div = pcm->sclk_per_fs - 1;
> > + sync_div = pcm->sclk_per_fs - 1;
> > + }
> >
> > + /* Set the SYNC divider */
> > clkctl &= ~(S3C_PCM_CLKCTL_SYNCDIV_MASK
> > << S3C_PCM_CLKCTL_SYNCDIV_SHIFT);
> > clkctl |= ((sync_div & S3C_PCM_CLKCTL_SYNCDIV_MASK)
> > @@ -330,7 +339,6 @@ static int s3c_pcm_hw_params(struct
> snd_pcm_substream *substream,
> > dev_dbg(pcm->dev, "PCMSOURCE_CLK-%lu SCLK=%ufs SCLK_DIV=%d
> SYNC_DIV=%d\n",
> > clk_get_rate(clk), pcm->sclk_per_fs,
> > sclk_div, sync_div);
> > -
> > return 0;
> > }
> >
> > @@ -494,6 +502,7 @@ static __devinit int s3c_pcm_dev_probe(struct
> platform_device *pdev)
> > struct s3c_pcm_info *pcm;
> > struct resource *mem_res, *dmatx_res, *dmarx_res;
> > struct s3c_audio_pdata *pcm_pdata;
> > + struct samsung_i2s *pcm_cfg;
>
> Oh dear, perhaps you forgot to test before sending ?
I did test and PCM working is fine on SMDKV310 and SMDKV210.
But It was my mistake. samsung_i2s was used unintentionally.
I will resubmit it.
Thanks,
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
prev parent reply other threads:[~2011-04-28 5:20 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-28 1:23 [PATCH V2] ASoC: SAMSUNG: Add quirk to support Exynos4 PCM audio Sangbeom Kim
2011-04-28 5:00 ` Jassi Brar
2011-04-28 5:20 ` Sangbeom Kim [this message]
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='011d01cc0564$0646bf30$12d43d90$@com' \
--to=sbkim73@samsung.com \
--cc=alsa-devel@alsa-project.org \
--cc=ben-linux@fluff.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=jassisinghbrar@gmail.com \
--cc=kgene.kim@samsung.com \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=lrg@slimlogic.co.uk \
/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.