From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Daniel Mack <zonque@gmail.com>, broonie@kernel.org
Cc: alsa-devel@alsa-project.org
Subject: Re: [PATCH v2] ASoC: davinci-mcasp: set up channel status bits for S/PDIF mode
Date: Thu, 27 Mar 2014 11:56:56 +0200 [thread overview]
Message-ID: <5333F5E8.8080506@ti.com> (raw)
In-Reply-To: <1395913744-29720-1-git-send-email-zonque@gmail.com>
Hi Daniel,
On 03/27/2014 11:49 AM, Daniel Mack wrote:
> In DIT (S/PDIF) mode, program the transmitted user bits to reflect the
> configured sample rate, along with some other details.
>
> Signed-off-by: Daniel Mack <zonque@gmail.com>
> ---
> Thanks to Peter for the review and bearing with my confusion :)
>
> sound/soc/davinci/davinci-mcasp.c | 49 +++++++++++++++++++++++++++++++++++++--
> 1 file changed, 47 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
> index 375e197..1fbded0 100644
> --- a/sound/soc/davinci/davinci-mcasp.c
> +++ b/sound/soc/davinci/davinci-mcasp.c
> @@ -27,6 +27,7 @@
> #include <linux/of_platform.h>
> #include <linux/of_device.h>
>
> +#include <sound/asoundef.h>
> #include <sound/core.h>
> #include <sound/pcm.h>
> #include <sound/pcm_params.h>
> @@ -576,8 +577,12 @@ static int mcasp_i2s_hw_param(struct davinci_mcasp *mcasp, int stream)
> }
>
> /* S/PDIF */
> -static int mcasp_dit_hw_param(struct davinci_mcasp *mcasp)
> +static int mcasp_dit_hw_param(struct davinci_mcasp *mcasp,
> + unsigned int rate)
> {
> + u32 val = 0;
> + u8 *bytes = (u8*) &val;
Would it be better to call these variables as:
u32 cs; /* as in Channel Status */
u8 *cs_bytes = (u8*) &cs; /* Channel Status in bytes */
Without the comments of course.
Sorry, I did not noticed this previously...
Otherwise it looks good, does it work? ;)
Regards,
Péter
> +
> /* Set the TX format : 24 bit right rotation, 32 bit slot, Pad 0
> and LSB first */
> mcasp_set_bits(mcasp, DAVINCI_MCASP_TXFMT_REG, TXROT(6) | TXSSZ(15));
> @@ -599,6 +604,46 @@ static int mcasp_dit_hw_param(struct davinci_mcasp *mcasp)
> /* Enable the DIT */
> mcasp_set_bits(mcasp, DAVINCI_MCASP_TXDITCTL_REG, DITEN);
>
> + /* Set S/PDIF channel status bits */
> + bytes[0] = IEC958_AES0_CON_NOT_COPYRIGHT;
> + bytes[1] = IEC958_AES1_CON_PCM_CODER;
> +
> + switch (rate) {
> + case 22050:
> + bytes[3] |= IEC958_AES3_CON_FS_22050;
> + break;
> + case 24000:
> + bytes[3] |= IEC958_AES3_CON_FS_24000;
> + break;
> + case 32000:
> + bytes[3] |= IEC958_AES3_CON_FS_32000;
> + break;
> + case 44100:
> + bytes[3] |= IEC958_AES3_CON_FS_44100;
> + break;
> + case 48000:
> + bytes[3] |= IEC958_AES3_CON_FS_48000;
> + break;
> + case 88200:
> + bytes[3] |= IEC958_AES3_CON_FS_88200;
> + break;
> + case 96000:
> + bytes[3] |= IEC958_AES3_CON_FS_96000;
> + break;
> + case 176400:
> + bytes[3] |= IEC958_AES3_CON_FS_176400;
> + break;
> + case 192000:
> + bytes[3] |= IEC958_AES3_CON_FS_192000;
> + break;
> + default:
> + printk(KERN_WARNING "unsupported sampling rate: %d\n", rate);
> + return -EINVAL;
> + }
> +
> + mcasp_set_reg(mcasp, DAVINCI_MCASP_DITCSRA_REG, val);
> + mcasp_set_reg(mcasp, DAVINCI_MCASP_DITCSRB_REG, val);
> +
> return 0;
> }
>
> @@ -634,7 +679,7 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,
> return ret;
>
> if (mcasp->op_mode == DAVINCI_MCASP_DIT_MODE)
> - ret = mcasp_dit_hw_param(mcasp);
> + ret = mcasp_dit_hw_param(mcasp, params_rate(params));
> else
> ret = mcasp_i2s_hw_param(mcasp, substream->stream);
>
>
next prev parent reply other threads:[~2014-03-27 9:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 9:49 [PATCH v2] ASoC: davinci-mcasp: set up channel status bits for S/PDIF mode Daniel Mack
2014-03-27 9:56 ` Peter Ujfalusi [this message]
2014-03-27 10:26 ` Daniel Mack
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=5333F5E8.8080506@ti.com \
--to=peter.ujfalusi@ti.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=zonque@gmail.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.