aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut@gmail.com>2009-07-22 07:01:03 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-07-23 06:30:56 -0400
commit474828a40f6ddab6e2a3475a19c5c84aa3ec7d60 (patch)
tree15da7b963bbe20704bca139b355a020686f97a52
parenta7569afa8b79ca9272b0d7544335bc05b5b721d6 (diff)
ALSA: Allow passing platform_data to devices attached to AC97 bus
This patch allows passing platform_data to devices attached to AC97 bus (like touchscreens, battery measurement chips ...). Signed-off-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--include/sound/ac97_codec.h6
-rw-r--r--include/sound/soc-dai.h1
-rw-r--r--sound/soc/soc-core.c6
3 files changed, 12 insertions, 1 deletions
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h
index 251fc1cd5002..9b1c0985480c 100644
--- a/include/sound/ac97_codec.h
+++ b/include/sound/ac97_codec.h
@@ -642,4 +642,10 @@ int snd_ac97_pcm_double_rate_rules(struct snd_pcm_runtime *runtime);
642/* ad hoc AC97 device driver access */ 642/* ad hoc AC97 device driver access */
643extern struct bus_type ac97_bus_type; 643extern struct bus_type ac97_bus_type;
644 644
645/* AC97 platform_data adding function */
646static inline void snd_ac97_dev_add_pdata(struct snd_ac97 *ac97, void *data)
647{
648 ac97->dev.platform_data = data;
649}
650
645#endif /* __SOUND_AC97_CODEC_H */ 651#endif /* __SOUND_AC97_CODEC_H */
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index 05991b0925e0..25d62ac53fc5 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -179,6 +179,7 @@ struct snd_soc_dai {
179 int ac97_control; 179 int ac97_control;
180 180
181 struct device *dev; 181 struct device *dev;
182 void *ac97_pdata; /* platform_data for the ac97 codec */
182 183
183 /* DAI callbacks */ 184 /* DAI callbacks */
184 int (*probe)(struct platform_device *pdev, 185 int (*probe)(struct platform_device *pdev,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 8bf49a4e664a..5eabb7117608 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -28,6 +28,7 @@
28#include <linux/bitops.h> 28#include <linux/bitops.h>
29#include <linux/debugfs.h> 29#include <linux/debugfs.h>
30#include <linux/platform_device.h> 30#include <linux/platform_device.h>
31#include <sound/ac97_codec.h>
31#include <sound/core.h> 32#include <sound/core.h>
32#include <sound/pcm.h> 33#include <sound/pcm.h>
33#include <sound/pcm_params.h> 34#include <sound/pcm_params.h>
@@ -1461,8 +1462,11 @@ int snd_soc_init_card(struct snd_soc_device *socdev)
1461 continue; 1462 continue;
1462 } 1463 }
1463 } 1464 }
1464 if (card->dai_link[i].codec_dai->ac97_control) 1465 if (card->dai_link[i].codec_dai->ac97_control) {
1465 ac97 = 1; 1466 ac97 = 1;
1467 snd_ac97_dev_add_pdata(codec->ac97,
1468 card->dai_link[i].cpu_dai->ac97_pdata);
1469 }
1466 } 1470 }
1467 snprintf(codec->card->shortname, sizeof(codec->card->shortname), 1471 snprintf(codec->card->shortname, sizeof(codec->card->shortname),
1468 "%s", card->name); 1472 "%s", card->name);