Merge remote-tracking branches 'asoc/topic/msm8916', 'asoc/topic/mtk', 'asoc/topic/nau8824', 'asoc/topic/nau8825' and 'asoc/topic/of-graph' into asoc-next
This commit is contained in:
@@ -118,13 +118,13 @@ static int asoc_simple_card_startup(struct snd_pcm_substream *substream)
|
||||
simple_priv_to_props(priv, rtd->num);
|
||||
int ret;
|
||||
|
||||
ret = clk_prepare_enable(dai_props->cpu_dai.clk);
|
||||
ret = asoc_simple_card_clk_enable(&dai_props->cpu_dai);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = clk_prepare_enable(dai_props->codec_dai.clk);
|
||||
ret = asoc_simple_card_clk_enable(&dai_props->codec_dai);
|
||||
if (ret)
|
||||
clk_disable_unprepare(dai_props->cpu_dai.clk);
|
||||
asoc_simple_card_clk_disable(&dai_props->cpu_dai);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -136,9 +136,9 @@ static void asoc_simple_card_shutdown(struct snd_pcm_substream *substream)
|
||||
struct simple_dai_props *dai_props =
|
||||
simple_priv_to_props(priv, rtd->num);
|
||||
|
||||
clk_disable_unprepare(dai_props->cpu_dai.clk);
|
||||
asoc_simple_card_clk_disable(&dai_props->cpu_dai);
|
||||
|
||||
clk_disable_unprepare(dai_props->codec_dai.clk);
|
||||
asoc_simple_card_clk_disable(&dai_props->codec_dai);
|
||||
}
|
||||
|
||||
static int asoc_simple_card_hw_params(struct snd_pcm_substream *substream,
|
||||
@@ -233,13 +233,19 @@ static int asoc_simple_card_dai_link_of(struct device_node *node,
|
||||
snprintf(prop, sizeof(prop), "%scpu", prefix);
|
||||
cpu = of_get_child_by_name(node, prop);
|
||||
|
||||
if (!cpu) {
|
||||
ret = -EINVAL;
|
||||
dev_err(dev, "%s: Can't find %s DT node\n", __func__, prop);
|
||||
goto dai_link_of_err;
|
||||
}
|
||||
|
||||
snprintf(prop, sizeof(prop), "%splat", prefix);
|
||||
plat = of_get_child_by_name(node, prop);
|
||||
|
||||
snprintf(prop, sizeof(prop), "%scodec", prefix);
|
||||
codec = of_get_child_by_name(node, prop);
|
||||
|
||||
if (!cpu || !codec) {
|
||||
if (!codec) {
|
||||
ret = -EINVAL;
|
||||
dev_err(dev, "%s: Can't find %s DT node\n", __func__, prop);
|
||||
goto dai_link_of_err;
|
||||
@@ -265,17 +271,11 @@ static int asoc_simple_card_dai_link_of(struct device_node *node,
|
||||
if (ret < 0)
|
||||
goto dai_link_of_err;
|
||||
|
||||
ret = snd_soc_of_parse_tdm_slot(cpu, &cpu_dai->tx_slot_mask,
|
||||
&cpu_dai->rx_slot_mask,
|
||||
&cpu_dai->slots,
|
||||
&cpu_dai->slot_width);
|
||||
ret = asoc_simple_card_of_parse_tdm(cpu, cpu_dai);
|
||||
if (ret < 0)
|
||||
goto dai_link_of_err;
|
||||
|
||||
ret = snd_soc_of_parse_tdm_slot(codec, &codec_dai->tx_slot_mask,
|
||||
&codec_dai->rx_slot_mask,
|
||||
&codec_dai->slots,
|
||||
&codec_dai->slot_width);
|
||||
ret = asoc_simple_card_of_parse_tdm(codec, codec_dai);
|
||||
if (ret < 0)
|
||||
goto dai_link_of_err;
|
||||
|
||||
@@ -341,12 +341,12 @@ static int asoc_simple_card_parse_aux_devs(struct device_node *node,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int asoc_simple_card_parse_of(struct device_node *node,
|
||||
struct simple_card_data *priv)
|
||||
static int asoc_simple_card_parse_of(struct simple_card_data *priv)
|
||||
{
|
||||
struct device *dev = simple_priv_to_dev(priv);
|
||||
struct snd_soc_card *card = simple_priv_to_card(priv);
|
||||
struct device_node *dai_link;
|
||||
struct device_node *node = dev->of_node;
|
||||
int ret;
|
||||
|
||||
if (!node)
|
||||
@@ -354,21 +354,13 @@ static int asoc_simple_card_parse_of(struct device_node *node,
|
||||
|
||||
dai_link = of_get_child_by_name(node, PREFIX "dai-link");
|
||||
|
||||
/* The off-codec widgets */
|
||||
if (of_property_read_bool(node, PREFIX "widgets")) {
|
||||
ret = snd_soc_of_parse_audio_simple_widgets(card,
|
||||
PREFIX "widgets");
|
||||
if (ret)
|
||||
goto card_parse_end;
|
||||
}
|
||||
ret = asoc_simple_card_of_parse_widgets(card, PREFIX);
|
||||
if (ret < 0)
|
||||
goto card_parse_end;
|
||||
|
||||
/* DAPM routes */
|
||||
if (of_property_read_bool(node, PREFIX "routing")) {
|
||||
ret = snd_soc_of_parse_audio_routing(card,
|
||||
PREFIX "routing");
|
||||
if (ret)
|
||||
goto card_parse_end;
|
||||
}
|
||||
ret = asoc_simple_card_of_parse_routing(card, PREFIX, 1);
|
||||
if (ret < 0)
|
||||
goto card_parse_end;
|
||||
|
||||
/* Factor to mclk, used in hw_params() */
|
||||
of_property_read_u32(node, PREFIX "mclk-fs", &priv->mclk_fs);
|
||||
@@ -445,7 +437,7 @@ static int asoc_simple_card_probe(struct platform_device *pdev)
|
||||
|
||||
if (np && of_device_is_available(np)) {
|
||||
|
||||
ret = asoc_simple_card_parse_of(np, priv);
|
||||
ret = asoc_simple_card_parse_of(priv);
|
||||
if (ret < 0) {
|
||||
if (ret != -EPROBE_DEFER)
|
||||
dev_err(dev, "parse error %d\n", ret);
|
||||
|
Reference in New Issue
Block a user