[alsa-devel] [PATCH 1/2] ASoC: Pay attention to driver supplied DAI IDs

The driver can specify a DAI ID number so use that.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com --- sound/soc/soc-core.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 4f6ea8c..c20cf7f 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -3015,7 +3015,10 @@ int snd_soc_register_dais(struct device *dev, }
dai->dev = dev; - dai->id = i; + if (dai->driver->id) + dai->id = dai->driver->id; + else + dai->id = i; dai->driver = &dai_drv[i]; if (!dai->driver->ops) dai->driver->ops = &null_dai_ops;

WM8994 relies on the DAIs having IDs that match the AIF numbers.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com --- sound/soc/codecs/wm8994.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index cb9338e..9ccda44 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -3850,6 +3850,7 @@ static struct snd_soc_dai_ops wm8994_aif3_dai_ops = { static struct snd_soc_dai_driver wm8994_dai[] = { { .name = "wm8994-aif1", + .id = 1, .playback = { .stream_name = "AIF1 Playback", .channels_min = 2, @@ -3868,6 +3869,7 @@ static struct snd_soc_dai_driver wm8994_dai[] = { }, { .name = "wm8994-aif2", + .id = 2, .playback = { .stream_name = "AIF2 Playback", .channels_min = 2, @@ -3886,6 +3888,7 @@ static struct snd_soc_dai_driver wm8994_dai[] = { }, { .name = "wm8994-aif3", + .id = 3, .playback = { .stream_name = "AIF3 Playback", .channels_min = 2,

On Tue, 2010-10-12 at 15:57 +0100, Mark Brown wrote:
WM8994 relies on the DAIs having IDs that match the AIF numbers.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com
sound/soc/codecs/wm8994.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index cb9338e..9ccda44 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -3850,6 +3850,7 @@ static struct snd_soc_dai_ops wm8994_aif3_dai_ops = { static struct snd_soc_dai_driver wm8994_dai[] = { { .name = "wm8994-aif1",
.playback = { .stream_name = "AIF1 Playback", .channels_min = 2,.id = 1,
@@ -3868,6 +3869,7 @@ static struct snd_soc_dai_driver wm8994_dai[] = { }, { .name = "wm8994-aif2",
.playback = { .stream_name = "AIF2 Playback", .channels_min = 2,.id = 2,
@@ -3886,6 +3888,7 @@ static struct snd_soc_dai_driver wm8994_dai[] = { }, { .name = "wm8994-aif3",
.playback = { .stream_name = "AIF3 Playback", .channels_min = 2,.id = 3,
Acked-by: Liam Girdwood lrg@slimlogic.co.uk

On Tue, Oct 12, 2010 at 03:57:55PM +0100, Mark Brown wrote:
dai->dev = dev;
dai->id = i;
if (dai->driver->id)
dai->id = dai->driver->id;
else
dai->driver = &dai_drv[i];dai->id = i;
Sorry, sent the wrong version of this - obviously the new check should go after the assignment.

On Tue, Oct 12, 2010 at 9:57 AM, Mark Brown broonie@opensource.wolfsonmicro.com wrote:
The driver can specify a DAI ID number so use that.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com
sound/soc/soc-core.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 4f6ea8c..c20cf7f 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -3015,7 +3015,10 @@ int snd_soc_register_dais(struct device *dev, }
dai->dev = dev;
- dai->id = i;
- if (dai->driver->id)
- dai->id = dai->driver->id;
- else
- dai->id = i;
I haven't looked at the code, but doesn't this assume that a DAI ID of 0 is invalid?
I have a suspicion I need to retest my driver to make sure it still works.

On Tue, Oct 12, 2010 at 01:49:52PM -0500, Timur Tabi wrote:
On Tue, Oct 12, 2010 at 9:57 AM, Mark Brown
- dai->id = i;
- if (dai->driver->id)
- dai->id = dai->driver->id;
- else
- dai->id = i;
I haven't looked at the code, but doesn't this assume that a DAI ID of 0 is invalid?
I have a suspicion I need to retest my driver to make sure it still works.
This makes no change to the behaviour when the DAI ID is zero. Previously it would be overwritten with i, with the new code it is still overwritten with i. You can specify a DAI ID of zero, but only for the first DAI. This is a limitation but avoids having to manually set the DAI ID in the simple case where they're all numbered sequentially from zero.
participants (3)
-
Liam Girdwood
-
Mark Brown
-
Timur Tabi