diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/801-audio-0048-MLK-17580-ASoC-fsl-sai-Use-DSD-helper.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/801-audio-0048-MLK-17580-ASoC-fsl-sai-Use-DSD-helper.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/801-audio-0048-MLK-17580-ASoC-fsl-sai-Use-DSD-helper.patch b/target/linux/layerscape/patches-5.4/801-audio-0048-MLK-17580-ASoC-fsl-sai-Use-DSD-helper.patch new file mode 100644 index 0000000000..ffd74f81d1 --- /dev/null +++ b/target/linux/layerscape/patches-5.4/801-audio-0048-MLK-17580-ASoC-fsl-sai-Use-DSD-helper.patch @@ -0,0 +1,96 @@ +From 0a71cfbd55ba50414bfcb4ecccf656a580930790 Mon Sep 17 00:00:00 2001 +From: Viorel Suman <viorel.suman@nxp.com> +Date: Thu, 8 Mar 2018 14:43:34 +0200 +Subject: [PATCH] MLK-17580: ASoC: fsl: sai: Use DSD helper + +Replace DSD related code with calls to DSD helper functions. + +Signed-off-by: Viorel Suman <viorel.suman@nxp.com> +Reviewed-by: Shengjiu Wang <shengjiu.wang@nxp.com +--- + sound/soc/fsl/fsl_sai.c | 34 +++++++++++----------------------- + sound/soc/fsl/fsl_sai.h | 2 +- + 2 files changed, 12 insertions(+), 24 deletions(-) + +--- a/sound/soc/fsl/fsl_sai.c ++++ b/sound/soc/fsl/fsl_sai.c +@@ -22,6 +22,7 @@ + #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> + #include <linux/pm_runtime.h> + ++#include "fsl_dsd.h" + #include "fsl_sai.h" + #include "imx-pcm.h" + +@@ -523,31 +524,21 @@ static int fsl_sai_hw_params(struct snd_ + int ret; + int i; + int trce_mask = 0; +- snd_pcm_format_t format = params_format(params); + + if (sai->slots) + slots = sai->slots; + + pins = DIV_ROUND_UP(channels, slots); ++ sai->is_dsd = fsl_is_dsd(params); ++ sai->pins_state = fsl_get_pins_state(sai->pinctrl, params); + +- if (format == SNDRV_PCM_FORMAT_DSD_U8 || +- format == SNDRV_PCM_FORMAT_DSD_U16_LE || +- format == SNDRV_PCM_FORMAT_DSD_U16_BE || +- format == SNDRV_PCM_FORMAT_DSD_U32_LE || +- format == SNDRV_PCM_FORMAT_DSD_U32_BE) { +- sai->is_dsd = true; +- +- if (!IS_ERR_OR_NULL(sai->pins_dsd)) { +- ret = pinctrl_select_state(sai->pinctrl, sai->pins_dsd); +- if (ret) { +- dev_err(cpu_dai->dev, +- "failed to set proper pins state: %d\n", ret); +- return ret; +- } ++ if (!IS_ERR_OR_NULL(sai->pins_state)) { ++ ret = pinctrl_select_state(sai->pinctrl, sai->pins_state); ++ if (ret) { ++ dev_err(cpu_dai->dev, ++ "failed to set proper pins state: %d\n", ret); ++ return ret; + } +- } else { +- pinctrl_pm_select_default_state(cpu_dai->dev); +- sai->is_dsd = false; + } + + if (sai->is_dsd) +@@ -929,8 +920,8 @@ static int fsl_sai_dai_resume(struct snd + struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); + int ret; + +- if (sai->is_dsd && !IS_ERR_OR_NULL(sai->pins_dsd)) { +- ret = pinctrl_select_state(sai->pinctrl, sai->pins_dsd); ++ if (!IS_ERR_OR_NULL(sai->pins_state)) { ++ ret = pinctrl_select_state(sai->pinctrl, sai->pins_state); + if (ret) { + dev_err(cpu_dai->dev, + "failed to set proper pins state: %d\n", ret); +@@ -1356,9 +1347,6 @@ static int fsl_sai_probe(struct platform + + sai->pinctrl = devm_pinctrl_get(&pdev->dev); + +- if (!IS_ERR_OR_NULL(sai->pinctrl)) +- sai->pins_dsd = pinctrl_lookup_state(sai->pinctrl, "dsd"); +- + platform_set_drvdata(pdev, sai); + + pm_runtime_enable(&pdev->dev); +--- a/sound/soc/fsl/fsl_sai.h ++++ b/sound/soc/fsl/fsl_sai.h +@@ -211,7 +211,7 @@ struct fsl_sai { + const struct fsl_sai_soc_data *soc; + struct pm_qos_request pm_qos_req; + struct pinctrl *pinctrl; +- struct pinctrl_state *pins_dsd; ++ struct pinctrl_state *pins_state; + }; + + #define TX 1 |