aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/801-audio-0048-MLK-17580-ASoC-fsl-sai-Use-DSD-helper.patch
diff options
context:
space:
mode:
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.patch96
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