Merge remote-tracking branch 'asoc/topic/fsl' into tmp
This commit is contained in:
@@ -930,6 +930,10 @@ struct snd_soc_dai_link {
|
|||||||
/* machine stream operations */
|
/* machine stream operations */
|
||||||
const struct snd_soc_ops *ops;
|
const struct snd_soc_ops *ops;
|
||||||
const struct snd_soc_compr_ops *compr_ops;
|
const struct snd_soc_compr_ops *compr_ops;
|
||||||
|
|
||||||
|
/* For unidirectional dai links */
|
||||||
|
bool playback_only;
|
||||||
|
bool capture_only;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct snd_soc_codec_conf {
|
struct snd_soc_codec_conf {
|
||||||
|
@@ -45,7 +45,7 @@ snd-soc-mx27vis-aic32x4-objs := mx27vis-aic32x4.o
|
|||||||
snd-soc-wm1133-ev1-objs := wm1133-ev1.o
|
snd-soc-wm1133-ev1-objs := wm1133-ev1.o
|
||||||
snd-soc-imx-sgtl5000-objs := imx-sgtl5000.o
|
snd-soc-imx-sgtl5000-objs := imx-sgtl5000.o
|
||||||
snd-soc-imx-wm8962-objs := imx-wm8962.o
|
snd-soc-imx-wm8962-objs := imx-wm8962.o
|
||||||
snd-soc-imx-spdif-objs :=imx-spdif.o
|
snd-soc-imx-spdif-objs := imx-spdif.o
|
||||||
snd-soc-imx-mc13783-objs := imx-mc13783.o
|
snd-soc-imx-mc13783-objs := imx-mc13783.o
|
||||||
|
|
||||||
obj-$(CONFIG_SND_SOC_EUKREA_TLV320) += snd-soc-eukrea-tlv320.o
|
obj-$(CONFIG_SND_SOC_EUKREA_TLV320) += snd-soc-eukrea-tlv320.o
|
||||||
|
@@ -411,7 +411,7 @@ static int spdif_set_sample_rate(struct snd_pcm_substream *substream,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fsl_spdif_startup(struct snd_pcm_substream *substream,
|
static int fsl_spdif_startup(struct snd_pcm_substream *substream,
|
||||||
struct snd_soc_dai *cpu_dai)
|
struct snd_soc_dai *cpu_dai)
|
||||||
{
|
{
|
||||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||||
@@ -546,7 +546,7 @@ static int fsl_spdif_trigger(struct snd_pcm_substream *substream,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct snd_soc_dai_ops fsl_spdif_dai_ops = {
|
static struct snd_soc_dai_ops fsl_spdif_dai_ops = {
|
||||||
.startup = fsl_spdif_startup,
|
.startup = fsl_spdif_startup,
|
||||||
.hw_params = fsl_spdif_hw_params,
|
.hw_params = fsl_spdif_hw_params,
|
||||||
.trigger = fsl_spdif_trigger,
|
.trigger = fsl_spdif_trigger,
|
||||||
@@ -919,7 +919,7 @@ static int fsl_spdif_dai_probe(struct snd_soc_dai *dai)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct snd_soc_dai_driver fsl_spdif_dai = {
|
static struct snd_soc_dai_driver fsl_spdif_dai = {
|
||||||
.probe = &fsl_spdif_dai_probe,
|
.probe = &fsl_spdif_dai_probe,
|
||||||
.playback = {
|
.playback = {
|
||||||
.channels_min = 2,
|
.channels_min = 2,
|
||||||
@@ -1071,9 +1071,9 @@ static int fsl_spdif_probe_txclk(struct fsl_spdif_priv *spdif_priv,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(&pdev->dev, "use rxtx%d as tx clock source for %dHz sample rate",
|
dev_dbg(&pdev->dev, "use rxtx%d as tx clock source for %dHz sample rate\n",
|
||||||
spdif_priv->txclk_src[index], rate[index]);
|
spdif_priv->txclk_src[index], rate[index]);
|
||||||
dev_dbg(&pdev->dev, "use divisor %d for %dHz sample rate",
|
dev_dbg(&pdev->dev, "use divisor %d for %dHz sample rate\n",
|
||||||
spdif_priv->txclk_div[index], rate[index]);
|
spdif_priv->txclk_div[index], rate[index]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -105,11 +105,13 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = {
|
|||||||
.stream_name = "HiFi Playback",
|
.stream_name = "HiFi Playback",
|
||||||
.codec_dai_name = "sgtl5000",
|
.codec_dai_name = "sgtl5000",
|
||||||
.ops = &mxs_sgtl5000_hifi_ops,
|
.ops = &mxs_sgtl5000_hifi_ops,
|
||||||
|
.playback_only = true,
|
||||||
}, {
|
}, {
|
||||||
.name = "HiFi Rx",
|
.name = "HiFi Rx",
|
||||||
.stream_name = "HiFi Capture",
|
.stream_name = "HiFi Capture",
|
||||||
.codec_dai_name = "sgtl5000",
|
.codec_dai_name = "sgtl5000",
|
||||||
.ops = &mxs_sgtl5000_hifi_ops,
|
.ops = &mxs_sgtl5000_hifi_ops,
|
||||||
|
.capture_only = true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2020,6 +2020,16 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
|
|||||||
capture = 1;
|
capture = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rtd->dai_link->playback_only) {
|
||||||
|
playback = 1;
|
||||||
|
capture = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rtd->dai_link->capture_only) {
|
||||||
|
playback = 0;
|
||||||
|
capture = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* create the PCM */
|
/* create the PCM */
|
||||||
if (rtd->dai_link->no_pcm) {
|
if (rtd->dai_link->no_pcm) {
|
||||||
snprintf(new_name, sizeof(new_name), "(%s)",
|
snprintf(new_name, sizeof(new_name), "(%s)",
|
||||||
|
Reference in New Issue
Block a user