All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Mack <daniel@caiaq.de>
To: Mark Brown <broonie@sirena.org.uk>
Cc: alsa-devel@alsa-project.org, Tim Ruetz <tim@caiaq.de>,
	Liam Girdwood <lrg@kernel.org>
Subject: Re: [PATCH 2/4] soc-dai: add bitfields for hardware	I2S formats
Date: Thu, 5 Mar 2009 00:12:23 +0100	[thread overview]
Message-ID: <20090304231223.GB20915@buzzloop.caiaq.de> (raw)
In-Reply-To: <20090304223057.GD10731@sirena.org.uk>

Hi Mark,

On Wed, Mar 04, 2009 at 10:30:58PM +0000, Mark Brown wrote:
> On Wed, Mar 04, 2009 at 09:16:58PM +0100, Daniel Mack wrote:
> > This patch adds bitfields for I2S serial formats that differ from the
> > amount of data actually sent on the line. Some codecs (namely the
> > cs4270) require 64 sysclks being sent during each frame period, even
> > though the number of acutal data bits might be less.
> 
> Hrm.  This is normally handled via the clock divider interface - it's
> often much more straightforward to work with when dealing with devices
> with very flexible clocking, especially if there are more than two
> devices on the link.  Have you considered handling this through that,
> perhaps through adding a virtual thing to configure (eg, a
> PXA_SSP_FRAME_CLOCKS)?

I thought about that but then I condidered it's actually the wrong place
for such a setting. I see two statements the board file has to make:

1) "We need to have 64 bits per frame for the codec"
2) "The sample data you'll be finding in the FIFO is 16 bits"

It could be possible to express that in clk division rations, but it is
actually a lot more straight forward to make that setting once rather
then changing it over and over again.

> Normally this would be a network mode but it
> seems clear that that has some issues on this hardware and an
> alternative solution is required.
> 
> The other downside of this approach is that it makes all existing
> drivers theoretically instabuggy in that they don't reject invalid
> configurations, although that's not such a big issue since it really
> only makes life easier when writing board drivers.

Well, it won't break things - the worst thing that can happen is that
things are silently ignored. That bitfield was meant to be extended,
wasn't it ;)

> I guess cs4270.c ought to be enforcing this if it's added...

cs4270.c would need that flag to be set or fail otherwise. Don't know if
that really makes life easier for board support files that are not
mainline. Want me to do that?

> > +#define SND_SOC_DAIFMT_FF_SAMPLE	(0 << 16)
> > +#define SND_SOC_DAIFMT_FF_I2S_16	(1 << 16)
> > +#define SND_SOC_DAIFMT_FF_I2S_32	(2 << 16)
> 
> FF_SAMPLE should probably be FF_UNSPEC or something to preserve the
> existing semantics.

Could do that, yes.

> FF_I2S should probably be something else since something might need this
> for non-I2S devices - _BIT, perhaps?

For non-I2S devices, we could re-use the same bit space as they will
never appear in the same format word anyway, right?

Anyway, I'm totally open to any other approach, this one just seems most
straight forward :)

Thanks,
Daniel

  reply	other threads:[~2009-03-04 23:12 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-04 20:15 PXA SSP and external clocked I2S again Daniel Mack
2009-03-04 20:16 ` [PATCH 1/4] pxa-ssp: fix name of register bit Daniel Mack
2009-03-04 20:16   ` [PATCH 2/4] soc-dai: add bitfields for hardware I2S formats Daniel Mack
2009-03-04 20:16     ` [PATCH 3/4] pxa-ssp: don't touch ssp registers when stream is running Daniel Mack
2009-03-04 20:17       ` [PATCH 4/4] pxa-ssp: switch from network mode to psp Daniel Mack
2009-03-04 20:56         ` pHilipp Zabel
2009-03-04 23:03           ` Daniel Mack
2009-03-05 10:36             ` Daniel Mack
2009-03-05 11:21             ` Mark Brown
2009-03-05 11:26               ` Daniel Mack
2009-03-05 16:01             ` pHilipp Zabel
2009-03-05 13:21         ` Daniel Mack
2009-03-05 13:34           ` Mark Brown
2009-03-04 20:33       ` [PATCH 3/4] pxa-ssp: don't touch ssp registers when stream is running Mark Brown
2009-03-04 20:39         ` Daniel Mack
2009-03-04 20:42           ` Mark Brown
2009-03-05 10:23             ` Daniel Mack
2009-03-10 15:41               ` Daniel Mack
2009-03-10 15:56                 ` Mark Brown
2009-03-04 22:30     ` [PATCH 2/4] soc-dai: add bitfields for hardware I2S formats Mark Brown
2009-03-04 23:12       ` Daniel Mack [this message]
2009-03-05 10:53         ` Mark Brown
2009-03-05 11:31           ` Daniel Mack
2009-03-05 12:03             ` Mark Brown
2009-03-05 12:55               ` Daniel Mack
2009-03-05 12:57                 ` Mark Brown
2009-03-05 15:58                 ` pHilipp Zabel
2009-03-05 11:40   ` [PATCH 1/4] pxa-ssp: fix name of register bit 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=20090304231223.GB20915@buzzloop.caiaq.de \
    --to=daniel@caiaq.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@sirena.org.uk \
    --cc=lrg@kernel.org \
    --cc=tim@caiaq.de \
    /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.