From: Nicolin Chen <nicoleotsuka@gmail.com> To: timur@tabi.org, broonie@kernel.org Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, alsa-devel@alsa-project.org, lgirdwood@gmail.com, fabio.estevam@nxp.com, mail@maciej.szmigiero.name, caleb@crome.org, arnaud.mouiche@invoxia.com, lukma@denx.de, kernel@pengutronix.de Subject: [PATCH v1 04/15] ASoC: fsl_ssi: Clear FIFO directly in fsl_ssi_config() Date: Tue, 19 Dec 2017 09:00:08 -0800 [thread overview] Message-ID: <1513702819-42310-5-git-send-email-nicoleotsuka@gmail.com> (raw) In-Reply-To: <1513702819-42310-1-git-send-email-nicoleotsuka@gmail.com> The FIFO clear helper function is just one line of code now. So it could be cleaned up by removing it and calling regmap directly. Meanwhile, FIFO clear could be applied to all use cases, not confined to AC97. So this patch also moves FIFO clear in the trigger() to fsl_ssi_config() and removes the AC97 check. Note that SOR register is safe from offline_config HW limit. Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com> --- sound/soc/fsl/fsl_ssi.c | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 6dda2e0..0f09caf 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c @@ -406,17 +406,6 @@ static void fsl_ssi_rxtx_config(struct fsl_ssi *ssi, bool enable) } /** - * Clear remaining data in the FIFO to avoid dirty data or channel slipping - */ -static void fsl_ssi_fifo_clear(struct fsl_ssi *ssi, bool is_rx) -{ - bool tx = !is_rx; - - regmap_update_bits(ssi->regs, REG_SSI_SOR, - SSI_SOR_xX_CLR(tx), SSI_SOR_xX_CLR(tx)); -} - -/** * Exclude bits that are used by the opposite stream * * When both streams are active, disabling some bits for the current stream @@ -484,7 +473,9 @@ static void fsl_ssi_config(struct fsl_ssi *ssi, bool enable, /* Online configure single direction while SSI is running */ if (enable) { - fsl_ssi_fifo_clear(ssi, vals->scr & SSI_SCR_RE); + /* Clear FIFO to prevent dirty data or channel slipping */ + regmap_update_bits(ssi->regs, REG_SSI_SOR, + SSI_SOR_xX_CLR(tx), SSI_SOR_xX_CLR(tx)); regmap_update_bits(regs, REG_SSI_SRCR, vals->srcr, vals->srcr); regmap_update_bits(regs, REG_SSI_STCR, vals->stcr, vals->stcr); @@ -506,6 +497,10 @@ static void fsl_ssi_config(struct fsl_ssi *ssi, bool enable, regmap_update_bits(regs, REG_SSI_SRCR, srcr, 0); regmap_update_bits(regs, REG_SSI_STCR, stcr, 0); regmap_update_bits(regs, REG_SSI_SIER, sier, 0); + + /* Clear FIFO to prevent dirty data or channel slipping */ + regmap_update_bits(ssi->regs, REG_SSI_SOR, + SSI_SOR_xX_CLR(tx), SSI_SOR_xX_CLR(tx)); } config_done: @@ -1086,7 +1081,6 @@ static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd, { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(rtd->cpu_dai); - struct regmap *regs = ssi->regs; switch (cmd) { case SNDRV_PCM_TRIGGER_START: @@ -1111,14 +1105,6 @@ static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd, return -EINVAL; } - /* Clear corresponding FIFO */ - if (fsl_ssi_is_ac97(ssi)) { - if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) - regmap_write(regs, REG_SSI_SOR, SSI_SOR_TX_CLR); - else - regmap_write(regs, REG_SSI_SOR, SSI_SOR_RX_CLR); - } - return 0; } -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Nicolin Chen <nicoleotsuka@gmail.com> To: timur@tabi.org, broonie@kernel.org Cc: mail@maciej.szmigiero.name, kernel@pengutronix.de, lgirdwood@gmail.com, alsa-devel@alsa-project.org, caleb@crome.org, linux-kernel@vger.kernel.org, arnaud.mouiche@invoxia.com, lukma@denx.de, fabio.estevam@nxp.com, linuxppc-dev@lists.ozlabs.org Subject: [PATCH v1 04/15] ASoC: fsl_ssi: Clear FIFO directly in fsl_ssi_config() Date: Tue, 19 Dec 2017 09:00:08 -0800 [thread overview] Message-ID: <1513702819-42310-5-git-send-email-nicoleotsuka@gmail.com> (raw) In-Reply-To: <1513702819-42310-1-git-send-email-nicoleotsuka@gmail.com> The FIFO clear helper function is just one line of code now. So it could be cleaned up by removing it and calling regmap directly. Meanwhile, FIFO clear could be applied to all use cases, not confined to AC97. So this patch also moves FIFO clear in the trigger() to fsl_ssi_config() and removes the AC97 check. Note that SOR register is safe from offline_config HW limit. Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com> --- sound/soc/fsl/fsl_ssi.c | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 6dda2e0..0f09caf 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c @@ -406,17 +406,6 @@ static void fsl_ssi_rxtx_config(struct fsl_ssi *ssi, bool enable) } /** - * Clear remaining data in the FIFO to avoid dirty data or channel slipping - */ -static void fsl_ssi_fifo_clear(struct fsl_ssi *ssi, bool is_rx) -{ - bool tx = !is_rx; - - regmap_update_bits(ssi->regs, REG_SSI_SOR, - SSI_SOR_xX_CLR(tx), SSI_SOR_xX_CLR(tx)); -} - -/** * Exclude bits that are used by the opposite stream * * When both streams are active, disabling some bits for the current stream @@ -484,7 +473,9 @@ static void fsl_ssi_config(struct fsl_ssi *ssi, bool enable, /* Online configure single direction while SSI is running */ if (enable) { - fsl_ssi_fifo_clear(ssi, vals->scr & SSI_SCR_RE); + /* Clear FIFO to prevent dirty data or channel slipping */ + regmap_update_bits(ssi->regs, REG_SSI_SOR, + SSI_SOR_xX_CLR(tx), SSI_SOR_xX_CLR(tx)); regmap_update_bits(regs, REG_SSI_SRCR, vals->srcr, vals->srcr); regmap_update_bits(regs, REG_SSI_STCR, vals->stcr, vals->stcr); @@ -506,6 +497,10 @@ static void fsl_ssi_config(struct fsl_ssi *ssi, bool enable, regmap_update_bits(regs, REG_SSI_SRCR, srcr, 0); regmap_update_bits(regs, REG_SSI_STCR, stcr, 0); regmap_update_bits(regs, REG_SSI_SIER, sier, 0); + + /* Clear FIFO to prevent dirty data or channel slipping */ + regmap_update_bits(ssi->regs, REG_SSI_SOR, + SSI_SOR_xX_CLR(tx), SSI_SOR_xX_CLR(tx)); } config_done: @@ -1086,7 +1081,6 @@ static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd, { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct fsl_ssi *ssi = snd_soc_dai_get_drvdata(rtd->cpu_dai); - struct regmap *regs = ssi->regs; switch (cmd) { case SNDRV_PCM_TRIGGER_START: @@ -1111,14 +1105,6 @@ static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd, return -EINVAL; } - /* Clear corresponding FIFO */ - if (fsl_ssi_is_ac97(ssi)) { - if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) - regmap_write(regs, REG_SSI_SOR, SSI_SOR_TX_CLR); - else - regmap_write(regs, REG_SSI_SOR, SSI_SOR_RX_CLR); - } - return 0; } -- 2.7.4
next prev parent reply other threads:[~2017-12-19 17:05 UTC|newest] Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-12-19 17:00 [PATCH v1 00/15] ASoC: fsl_ssi: Clean up - program flow level Nicolin Chen 2017-12-19 17:00 ` Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 01/15] ASoC: fsl_ssi: Clean up set_dai_tdm_slot() Nicolin Chen 2018-01-01 18:39 ` Maciej S. Szmigiero 2018-01-01 18:39 ` Maciej S. Szmigiero 2018-01-04 19:08 ` Nicolin Chen 2018-01-04 19:08 ` Nicolin Chen 2018-02-22 13:17 ` Applied "ASoC: fsl_ssi: Clean up set_dai_tdm_slot()" to the asoc tree Mark Brown 2018-02-22 13:17 ` Mark Brown 2017-12-19 17:00 ` [PATCH v1 02/15] ASoC: fsl_ssi: Maintain a mask of active streams Nicolin Chen 2017-12-19 17:00 ` Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 03/15] ASoC: fsl_ssi: Rename fsl_ssi_disable_val macro Nicolin Chen 2017-12-19 17:00 ` Nicolin Chen 2018-01-01 21:29 ` Maciej S. Szmigiero 2018-01-04 19:42 ` Nicolin Chen 2017-12-19 17:00 ` Nicolin Chen [this message] 2017-12-19 17:00 ` [PATCH v1 04/15] ASoC: fsl_ssi: Clear FIFO directly in fsl_ssi_config() Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 05/15] ASoC: fsl_ssi: Clean up helper functions of trigger() Nicolin Chen 2017-12-19 17:00 ` Nicolin Chen 2018-01-01 21:59 ` Maciej S. Szmigiero 2018-01-01 21:59 ` Maciej S. Szmigiero 2018-01-04 19:44 ` Nicolin Chen 2018-01-04 19:44 ` Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 06/15] ASoC: fsl_ssi: Add DAIFMT define for AC97 Nicolin Chen 2017-12-19 17:00 ` Nicolin Chen 2018-02-22 13:16 ` Applied "ASoC: fsl_ssi: Add DAIFMT define for AC97" to the asoc tree Mark Brown 2018-02-22 13:16 ` Mark Brown 2017-12-19 17:00 ` [PATCH v1 07/15] ASoC: fsl_ssi: Clean up fsl_ssi_setup_regvals() Nicolin Chen 2017-12-19 17:00 ` Nicolin Chen 2018-02-22 13:16 ` Applied "ASoC: fsl_ssi: Clean up fsl_ssi_setup_regvals()" to the asoc tree Mark Brown 2018-02-22 13:16 ` Mark Brown 2017-12-19 17:00 ` [PATCH v1 08/15] ASoC: fsl_ssi: Set xFEN0 and xFEN1 together Nicolin Chen 2018-02-22 13:16 ` Applied "ASoC: fsl_ssi: Set xFEN0 and xFEN1 together" to the asoc tree Mark Brown 2018-02-22 13:16 ` Mark Brown 2017-12-19 17:00 ` [PATCH v1 09/15] ASoC: fsl_ssi: Use snd_soc_init_dma_data instead Nicolin Chen 2018-02-22 13:16 ` Applied "ASoC: fsl_ssi: Use snd_soc_init_dma_data instead" to the asoc tree Mark Brown 2018-02-22 13:16 ` Mark Brown 2017-12-19 17:00 ` [PATCH v1 10/15] ASoC: fsl_ssi: Move one-time configurations to dai_probe() Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 11/15] ASoC: fsl_ssi: Setup AC97 in dai_probe() Nicolin Chen 2018-01-01 15:17 ` Maciej S. Szmigiero 2018-01-04 19:07 ` Nicolin Chen 2018-01-04 20:38 ` Maciej S. Szmigiero 2018-01-04 20:58 ` Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 12/15] ASoC: fsl_ssi: Clean up _fsl_ssi_set_dai_fmt() Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 13/15] ASoC: fsl_ssi: Remove cpu_dai_drv from fsl_ssi structure Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 14/15] ASoC: fsl_ssi: Move DT related code to a separate probe() Nicolin Chen 2017-12-19 17:00 ` [PATCH v1 15/15] ASoC: fsl_ssi: Use ssi->streams instead of reading register Nicolin Chen 2017-12-19 17:34 ` [PATCH v1 00/15] ASoC: fsl_ssi: Clean up - program flow level Timur Tabi 2018-01-02 23:28 ` Caleb Crome 2018-01-04 19:48 ` Nicolin Chen 2018-01-04 19:48 ` Nicolin Chen 2018-01-04 19:50 ` Caleb Crome 2018-01-04 19:50 ` Caleb Crome
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=1513702819-42310-5-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: linkBe 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.