All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars@metafoo.de>
To: thomas chen <tchen61@gmail.com>,
	Clemens Ladisch <clemens@ladisch.de>,
	alsa-devel@alsa-project.org
Subject: Re: I2S frame configuration
Date: Mon, 08 Dec 2014 20:37:58 +0100	[thread overview]
Message-ID: <5485FE16.1040005@metafoo.de> (raw)
In-Reply-To: <5485E7E5.7020406@gmail.com>

On 12/08/2014 07:03 PM, thomas chen wrote:
>
> Thanks for the info... so it is possible for Asoc to handle such format...

Yes, its not a special format, it is just plain and simple I2S like it is 
supported by the majority of all drivers/devices.

>
> So where does one specify number of bits in a FRAME/WORD (epsecially if we
> were to be master instead of slave ?)

That's typically specified in the format that is used, e.g. in your case 
SNDRV_PCM_FORMAT_S24_3LE. This is not necessarily ideal for all cases, but 
has work well enough so far.

>
> and, how does one specify number of bits to ignore (before the valid data)

There are no bits to ignore the valid data. I2S has a delay of 1 bit clock 
cycle between the first bit of the sample and the frame sync signal. So the 
data bit that is transmitted on the same clock cycle as the frame sync is 
actually the last bit of the previous sample. So in your case your sample 
has 16 valid bits followed by 8 ignored bits.

>
> and also how many valid bits (ie size of data word) ???

You can set a snd_pcm_hw_constraint_msbits() constraint to tell userspace 
that only a certain amount of bits are actually going to be used.

If you are using ASoC you can do this by setting the sig_bits property on 
your snd_soc_dai_driver.

- Lars

>
> Thanks...
>
>
>
>
> On 12/8/2014 12:01 PM, Clemens Ladisch wrote:
>> thomas chen wrote:
>>> I am working on a ALSA interface to a particular codec over I2S
>>>
>>> the audio stream format is a bit peculiar...
>>>
>>> there are 24 BCLK cycle between transition of FSYNC...   howver, there
>>> are only 16 bit that are valid
>>>
>>> bit 0: ignore
>>> bit 1-16:   valid pcm data (MSB....LSB)
>>> bit 17-23: ignore
>> This is the 'original' I²S format.  The format where the sample begins
>> with the 1st BCLK usually is called left-justified (and uses the
>> opposite FSYNC polarity).
>>
>> Having ignored bits is common.  (Typically, there are 32 BCLK cycles per
>> sample.)
>>
>> In ASoC, this would be SND_SOC_DAIFMT_I2S and SND_SOC_DAIFMT_LEFT_J.
>>
>>
>> Regards,
>> Clemens
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2014-12-08 19:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-08 15:37 I2S frame configuration thomas chen
2014-12-08 17:01 ` Clemens Ladisch
2014-12-08 18:03   ` thomas chen
2014-12-08 19:37     ` Lars-Peter Clausen [this message]
2014-12-09 13:51       ` thomas chen
2014-12-09 15:12         ` Lars-Peter Clausen

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=5485FE16.1040005@metafoo.de \
    --to=lars@metafoo.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=clemens@ladisch.de \
    --cc=tchen61@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.