|
|
@@ -221,24 +221,6 @@ static struct snd_ac97_bus_ops s3c_ac97_ops = {
|
|
|
.reset = s3c_ac97_cold_reset,
|
|
|
};
|
|
|
|
|
|
-static int s3c_ac97_hw_params(struct snd_pcm_substream *substream,
|
|
|
- struct snd_pcm_hw_params *params,
|
|
|
- struct snd_soc_dai *dai)
|
|
|
-{
|
|
|
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
|
|
- struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
|
|
- struct s3c_dma_params *dma_data;
|
|
|
-
|
|
|
- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
|
|
- dma_data = &s3c_ac97_pcm_out;
|
|
|
- else
|
|
|
- dma_data = &s3c_ac97_pcm_in;
|
|
|
-
|
|
|
- snd_soc_dai_set_dma_data(cpu_dai, substream, dma_data);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static int s3c_ac97_trigger(struct snd_pcm_substream *substream, int cmd,
|
|
|
struct snd_soc_dai *dai)
|
|
|
{
|
|
|
@@ -279,21 +261,6 @@ static int s3c_ac97_trigger(struct snd_pcm_substream *substream, int cmd,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int s3c_ac97_hw_mic_params(struct snd_pcm_substream *substream,
|
|
|
- struct snd_pcm_hw_params *params,
|
|
|
- struct snd_soc_dai *dai)
|
|
|
-{
|
|
|
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
|
|
- struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
|
|
-
|
|
|
- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
|
|
- return -ENODEV;
|
|
|
- else
|
|
|
- snd_soc_dai_set_dma_data(cpu_dai, substream, &s3c_ac97_mic_in);
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static int s3c_ac97_mic_trigger(struct snd_pcm_substream *substream,
|
|
|
int cmd, struct snd_soc_dai *dai)
|
|
|
{
|
|
|
@@ -329,15 +296,27 @@ static int s3c_ac97_mic_trigger(struct snd_pcm_substream *substream,
|
|
|
}
|
|
|
|
|
|
static const struct snd_soc_dai_ops s3c_ac97_dai_ops = {
|
|
|
- .hw_params = s3c_ac97_hw_params,
|
|
|
.trigger = s3c_ac97_trigger,
|
|
|
};
|
|
|
|
|
|
static const struct snd_soc_dai_ops s3c_ac97_mic_dai_ops = {
|
|
|
- .hw_params = s3c_ac97_hw_mic_params,
|
|
|
.trigger = s3c_ac97_mic_trigger,
|
|
|
};
|
|
|
|
|
|
+static int s3c_ac97_dai_probe(struct snd_soc_dai *dai)
|
|
|
+{
|
|
|
+ samsung_asoc_init_dma_data(dai, &s3c_ac97_pcm_out, &s3c_ac97_pcm_in);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int s3c_ac97_mic_dai_probe(struct snd_soc_dai *dai)
|
|
|
+{
|
|
|
+ samsung_asoc_init_dma_data(dai, NULL, &s3c_ac97_mic_in);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static struct snd_soc_dai_driver s3c_ac97_dai[] = {
|
|
|
[S3C_AC97_DAI_PCM] = {
|
|
|
.name = "samsung-ac97",
|
|
|
@@ -354,6 +333,7 @@ static struct snd_soc_dai_driver s3c_ac97_dai[] = {
|
|
|
.channels_max = 2,
|
|
|
.rates = SNDRV_PCM_RATE_8000_48000,
|
|
|
.formats = SNDRV_PCM_FMTBIT_S16_LE,},
|
|
|
+ .probe = s3c_ac97_dai_probe,
|
|
|
.ops = &s3c_ac97_dai_ops,
|
|
|
},
|
|
|
[S3C_AC97_DAI_MIC] = {
|
|
|
@@ -365,6 +345,7 @@ static struct snd_soc_dai_driver s3c_ac97_dai[] = {
|
|
|
.channels_max = 1,
|
|
|
.rates = SNDRV_PCM_RATE_8000_48000,
|
|
|
.formats = SNDRV_PCM_FMTBIT_S16_LE,},
|
|
|
+ .probe = s3c_ac97_mic_dai_probe,
|
|
|
.ops = &s3c_ac97_mic_dai_ops,
|
|
|
},
|
|
|
};
|