All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicolin Chen <nicoleotsuka@gmail.com>
To: timur@tabi.org, broonie@kernel.org, mail@maciej.szmigiero.name
Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	alsa-devel@alsa-project.org, lgirdwood@gmail.com,
	fabio.estevam@nxp.com, caleb@crome.org,
	arnaud.mouiche@invoxia.com, lukma@denx.de, kernel@pengutronix.de
Subject: [PATCH v4 12/17] ASoC: fsl_ssi: Move one-time configurations to probe()
Date: Mon, 15 Jan 2018 15:16:27 -0800	[thread overview]
Message-ID: <1516058192-65519-13-git-send-email-nicoleotsuka@gmail.com> (raw)
In-Reply-To: <1516058192-65519-1-git-send-email-nicoleotsuka@gmail.com>

The probe() could handle some one-time configurations since
they will not be changed once being configured.

Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
Tested-by: Caleb Crome <caleb@crome.org>
---
Changelog
v2
 * Moved all to fsl_ssi_hw_init() in platform probe()

 sound/soc/fsl/fsl_ssi.c | 39 ++++++++++++++++++++++++++-------------
 1 file changed, 26 insertions(+), 13 deletions(-)

diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
index e1fe511..50648f5 100644
--- a/sound/soc/fsl/fsl_ssi.c
+++ b/sound/soc/fsl/fsl_ssi.c
@@ -865,7 +865,6 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev,
 {
 	struct regmap *regs = ssi->regs;
 	u32 strcr = 0, stcr, srcr, scr, mask;
-	u8 wm;
 
 	ssi->dai_fmt = fmt;
 
@@ -874,8 +873,6 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev,
 		return -EINVAL;
 	}
 
-	fsl_ssi_setup_regvals(ssi);
-
 	regmap_read(regs, REG_SSI_SCR, &scr);
 	scr &= ~(SSI_SCR_SYN | SSI_SCR_I2S_MODE_MASK);
 	/* Synchronize frame sync clock for TE to avoid data slipping */
@@ -990,16 +987,6 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev,
 	regmap_write(regs, REG_SSI_SRCR, srcr);
 	regmap_write(regs, REG_SSI_SCR, scr);
 
-	wm = ssi->fifo_watermark;
-
-	regmap_write(regs, REG_SSI_SFCSR,
-		     SSI_SFCSR_TFWM0(wm) | SSI_SFCSR_RFWM0(wm) |
-		     SSI_SFCSR_TFWM1(wm) | SSI_SFCSR_RFWM1(wm));
-
-	if (ssi->use_dual_fifo)
-		regmap_update_bits(regs, REG_SSI_SCR,
-				   SSI_SCR_TCH_EN, SSI_SCR_TCH_EN);
-
 	if ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_AC97)
 		fsl_ssi_setup_ac97(ssi);
 
@@ -1249,6 +1236,29 @@ static struct snd_ac97_bus_ops fsl_ssi_ac97_ops = {
 };
 
 /**
+ * Initialize SSI registers
+ */
+static int fsl_ssi_hw_init(struct fsl_ssi *ssi)
+{
+	u32 wm = ssi->fifo_watermark;
+
+	/* Initialize regvals */
+	fsl_ssi_setup_regvals(ssi);
+
+	/* Set watermarks */
+	regmap_write(ssi->regs, REG_SSI_SFCSR,
+		     SSI_SFCSR_TFWM0(wm) | SSI_SFCSR_RFWM0(wm) |
+		     SSI_SFCSR_TFWM1(wm) | SSI_SFCSR_RFWM1(wm));
+
+	/* Enable Dual FIFO mode */
+	if (ssi->use_dual_fifo)
+		regmap_update_bits(ssi->regs, REG_SSI_SCR,
+				   SSI_SCR_TCH_EN, SSI_SCR_TCH_EN);
+
+	return 0;
+}
+
+/**
  * Make every character in a string lower-case
  */
 static void make_lowercase(char *s)
@@ -1533,6 +1543,9 @@ static int fsl_ssi_probe(struct platform_device *pdev)
 	if (ssi->dai_fmt)
 		_fsl_ssi_set_dai_fmt(dev, ssi, ssi->dai_fmt);
 
+	/* Initially configures SSI registers */
+	fsl_ssi_hw_init(ssi);
+
 	if (fsl_ssi_is_ac97(ssi)) {
 		u32 ssi_idx;
 
-- 
2.7.4

  parent reply	other threads:[~2018-01-15 23:17 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-15 23:16 [PATCH v4 00/17] ASoC: fsl_ssi: Clean up - program flow level Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 01/17] ASoC: fsl_ssi: Redefine RX and TX macros Nicolin Chen
2018-01-15 23:16   ` Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 02/17] ASoC: fsl_ssi: Keep ssi->i2s_net updated Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 03/17] ASoC: fsl_ssi: Clean up set_dai_tdm_slot() Nicolin Chen
2018-01-15 23:16   ` Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 04/17] ASoC: fsl_ssi: Maintain a mask of active streams Nicolin Chen
2018-01-15 23:16   ` Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 05/17] ASoC: fsl_ssi: Rename fsl_ssi_disable_val macro Nicolin Chen
2018-01-15 23:16   ` Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 06/17] ASoC: fsl_ssi: Clear FIFO directly in fsl_ssi_config() Nicolin Chen
2018-01-15 23:16   ` Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 07/17] ASoC: fsl_ssi: Clean up helper functions of trigger() Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 08/17] ASoC: fsl_ssi: Add DAIFMT define for AC97 Nicolin Chen
2018-01-15 23:16   ` Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 09/17] ASoC: fsl_ssi: Clean up fsl_ssi_setup_regvals() Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 10/17] ASoC: fsl_ssi: Set xFEN0 and xFEN1 together Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 11/17] ASoC: fsl_ssi: Use snd_soc_init_dma_data instead Nicolin Chen
2018-01-15 23:16 ` Nicolin Chen [this message]
2018-01-15 23:16 ` [PATCH v4 13/17] ASoC: fsl_ssi: Setup AC97 in fsl_ssi_hw_init() Nicolin Chen
2018-01-16 23:39   ` Maciej S. Szmigiero
2018-01-16 23:39     ` Maciej S. Szmigiero
2018-01-15 23:16 ` [PATCH v4 14/17] ASoC: fsl_ssi: Clean up _fsl_ssi_set_dai_fmt() Nicolin Chen
2018-02-22 13:16   ` Applied "ASoC: fsl_ssi: Clean up _fsl_ssi_set_dai_fmt()" to the asoc tree Mark Brown
2018-02-22 13:16     ` Mark Brown
2018-01-15 23:16 ` [PATCH v4 15/17] ASoC: fsl_ssi: Add bool synchronous to mark synchronous mode Nicolin Chen
2018-01-15 23:16 ` [PATCH v4 16/17] ASoC: fsl_ssi: Move DT related code to a separate probe() Nicolin Chen
2018-01-16 23:39   ` Maciej S. Szmigiero
2018-01-16 23:39     ` Maciej S. Szmigiero
2018-01-15 23:16 ` [PATCH v4 17/17] ASoC: fsl_ssi: Use ssi->streams instead of reading register Nicolin Chen
2018-01-16 21:26 ` [PATCH v4 00/17] ASoC: fsl_ssi: Clean up - program flow level Caleb Crome
2018-01-16 21:26   ` Caleb Crome
2018-01-16 23:38 ` Maciej S. Szmigiero
2018-01-16 23:38   ` Maciej S. Szmigiero
2018-01-16 23:52   ` Nicolin Chen
2018-01-16 23:52     ` Nicolin Chen
2018-01-17  0:11     ` Maciej S. Szmigiero
2018-01-17  0:11       ` Maciej S. Szmigiero

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1516058192-65519-13-git-send-email-nicoleotsuka@gmail.com \
    --to=nicoleotsuka@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=arnaud.mouiche@invoxia.com \
    --cc=broonie@kernel.org \
    --cc=caleb@crome.org \
    --cc=fabio.estevam@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=lukma@denx.de \
    --cc=mail@maciej.szmigiero.name \
    --cc=timur@tabi.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.