alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* asoc: problem with snd_soc_dai_set_fmt()
@ 2010-04-29 21:22 Timur Tabi
  2010-04-29 22:18 ` Mark Brown
  0 siblings, 1 reply; 6+ messages in thread
From: Timur Tabi @ 2010-04-29 21:22 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, ALSA development

There is a problem with snd_soc_dai_set_fmt():

int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
	if (dai->driver && dai->driver->ops->set_fmt)
		return dai->driver->ops->set_fmt(dai, fmt);
	else
		return -EINVAL;
}

Let's say the DAI driver has not defined a .set_fmt() function.  This means
that if the fabric driver does this:

ret = snd_soc_dai_set_fmt(cpu_dai, machine_data->dai_format);
if (ret < 0) {
	dev_err(dev, "could not set CPU driver audio format\n");
	return ret;
}

It's going to think that the DAI driver *rejected* the DAI format.  What
this means is that I cannot make this function optional.  I have to define
this function in my CPU driver.

May I propose this:

int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
	if (dai->driver && dai->driver->ops->set_fmt)
		return dai->driver->ops->set_fmt(dai, fmt);
	else
		return 0;
}

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-04-30 10:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-29 21:22 asoc: problem with snd_soc_dai_set_fmt() Timur Tabi
2010-04-29 22:18 ` Mark Brown
2010-04-29 23:30   ` Timur Tabi
2010-04-30 10:37     ` Mark Brown
2010-04-30  1:28   ` jassi brar
2010-04-30  8:58     ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).