Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
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

      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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox