All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Clément Péron" <peron.clem@gmail.com>
To: Maxime Ripard <mripard@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
	Rob Herring <robh+dt@kernel.org>, Mark Brown <broonie@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>
Cc: "Jaroslav Kysela" <perex@perex.cz>,
	"Takashi Iwai" <tiwai@suse.com>,
	"Marcus Cooper" <codekipper@gmail.com>,
	"Jernej Skrabec" <jernej.skrabec@siol.net>,
	alsa-devel@alsa-project.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com,
	"Samuel Holland" <samuel@sholland.org>,
	"Clément Péron" <peron.clem@gmail.com>
Subject: [PATCH v8 07/14] ASoC: sun4i-i2s: Fix setting of FIFO modes
Date: Mon, 26 Oct 2020 19:52:32 +0100	[thread overview]
Message-ID: <20201026185239.379417-8-peron.clem@gmail.com> (raw)
In-Reply-To: <20201026185239.379417-1-peron.clem@gmail.com>

From: Samuel Holland <samuel@sholland.org>

Because SUN4I_I2S_FIFO_CTRL_REG is volatile, writes done while the
regmap is cache-only are ignored. To work around this, move the
configuration to a callback that runs while the ASoC core has a
runtime PM reference to the device.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Clément Péron <peron.clem@gmail.com>
---
 sound/soc/sunxi/sun4i-i2s.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index dee8688f0d37..703327dc8606 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -595,6 +595,13 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
 		return ret;
 	}
 
+	/* Set significant bits in our FIFOs */
+	regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
+			   SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
+			   SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
+			   SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
+			   SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
+
 	switch (params_physical_width(params)) {
 	case 16:
 		width = DMA_SLAVE_BUSWIDTH_2_BYTES;
@@ -923,13 +930,6 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
 		return ret;
 	}
 
-	/* Set significant bits in our FIFOs */
-	regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
-			   SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
-			   SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
-			   SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
-			   SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
-
 	i2s->format = fmt;
 
 	return 0;
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: "Clément Péron" <peron.clem@gmail.com>
To: Maxime Ripard <mripard@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
	Rob Herring <robh+dt@kernel.org>, Mark Brown <broonie@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>
Cc: devicetree@vger.kernel.org,
	"Jernej Skrabec" <jernej.skrabec@siol.net>,
	alsa-devel@alsa-project.org,
	"Samuel Holland" <samuel@sholland.org>,
	linux-kernel@vger.kernel.org, "Takashi Iwai" <tiwai@suse.com>,
	"Marcus Cooper" <codekipper@gmail.com>,
	linux-sunxi@googlegroups.com,
	"Clément Péron" <peron.clem@gmail.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8 07/14] ASoC: sun4i-i2s: Fix setting of FIFO modes
Date: Mon, 26 Oct 2020 19:52:32 +0100	[thread overview]
Message-ID: <20201026185239.379417-8-peron.clem@gmail.com> (raw)
In-Reply-To: <20201026185239.379417-1-peron.clem@gmail.com>

From: Samuel Holland <samuel@sholland.org>

Because SUN4I_I2S_FIFO_CTRL_REG is volatile, writes done while the
regmap is cache-only are ignored. To work around this, move the
configuration to a callback that runs while the ASoC core has a
runtime PM reference to the device.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Clément Péron <peron.clem@gmail.com>
---
 sound/soc/sunxi/sun4i-i2s.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index dee8688f0d37..703327dc8606 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -595,6 +595,13 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
 		return ret;
 	}
 
+	/* Set significant bits in our FIFOs */
+	regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
+			   SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
+			   SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
+			   SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
+			   SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
+
 	switch (params_physical_width(params)) {
 	case 16:
 		width = DMA_SLAVE_BUSWIDTH_2_BYTES;
@@ -923,13 +930,6 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
 		return ret;
 	}
 
-	/* Set significant bits in our FIFOs */
-	regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
-			   SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
-			   SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
-			   SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
-			   SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
-
 	i2s->format = fmt;
 
 	return 0;
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: "Clément Péron" <peron.clem@gmail.com>
To: Maxime Ripard <mripard@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
	Rob Herring <robh+dt@kernel.org>, Mark Brown <broonie@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>
Cc: devicetree@vger.kernel.org,
	"Jernej Skrabec" <jernej.skrabec@siol.net>,
	alsa-devel@alsa-project.org,
	"Samuel Holland" <samuel@sholland.org>,
	linux-kernel@vger.kernel.org, "Takashi Iwai" <tiwai@suse.com>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Marcus Cooper" <codekipper@gmail.com>,
	linux-sunxi@googlegroups.com,
	"Clément Péron" <peron.clem@gmail.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8 07/14] ASoC: sun4i-i2s: Fix setting of FIFO modes
Date: Mon, 26 Oct 2020 19:52:32 +0100	[thread overview]
Message-ID: <20201026185239.379417-8-peron.clem@gmail.com> (raw)
In-Reply-To: <20201026185239.379417-1-peron.clem@gmail.com>

From: Samuel Holland <samuel@sholland.org>

Because SUN4I_I2S_FIFO_CTRL_REG is volatile, writes done while the
regmap is cache-only are ignored. To work around this, move the
configuration to a callback that runs while the ASoC core has a
runtime PM reference to the device.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Clément Péron <peron.clem@gmail.com>
---
 sound/soc/sunxi/sun4i-i2s.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index dee8688f0d37..703327dc8606 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -595,6 +595,13 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
 		return ret;
 	}
 
+	/* Set significant bits in our FIFOs */
+	regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
+			   SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
+			   SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
+			   SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
+			   SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
+
 	switch (params_physical_width(params)) {
 	case 16:
 		width = DMA_SLAVE_BUSWIDTH_2_BYTES;
@@ -923,13 +930,6 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
 		return ret;
 	}
 
-	/* Set significant bits in our FIFOs */
-	regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
-			   SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK |
-			   SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK,
-			   SUN4I_I2S_FIFO_CTRL_TX_MODE(1) |
-			   SUN4I_I2S_FIFO_CTRL_RX_MODE(1));
-
 	i2s->format = fmt;
 
 	return 0;
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-10-26 18:54 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-26 18:52 [PATCH v8 00/14] Add Allwinner H3/H5/H6/A64 HDMI audio Clément Péron
2020-10-26 18:52 ` Clément Péron
2020-10-26 18:52 ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 01/14] ASoC: sun4i-i2s: Change set_chan_cfg() params Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-27 17:49   ` Maxime Ripard
2020-10-27 17:49     ` Maxime Ripard
2020-10-27 17:49     ` Maxime Ripard
2020-10-26 18:52 ` [PATCH v8 02/14] ASoC: sun4i-i2s: Add support for H6 I2S Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-27 17:49   ` Maxime Ripard
2020-10-27 17:49     ` Maxime Ripard
2020-10-27 17:49     ` Maxime Ripard
2020-10-26 18:52 ` [PATCH v8 03/14] ASoC: sun4i-i2s: Change get_sr() and get_wss() to be more explicit Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-27 17:50   ` Maxime Ripard
2020-10-27 17:50     ` Maxime Ripard
2020-10-27 17:50     ` Maxime Ripard
2020-10-26 18:52 ` [PATCH v8 04/14] ASoC: sun4i-i2s: Set sign extend sample Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-27 17:50   ` Maxime Ripard
2020-10-27 17:50     ` Maxime Ripard
2020-10-27 17:50     ` Maxime Ripard
2020-10-26 18:52 ` [PATCH v8 05/14] ASoc: sun4i-i2s: Add 20 and 24 bit support Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 06/14] ASoC: sun4i-i2s: Fix sun8i volatile regs Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` Clément Péron [this message]
2020-10-26 18:52   ` [PATCH v8 07/14] ASoC: sun4i-i2s: Fix setting of FIFO modes Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-27 17:51   ` Maxime Ripard
2020-10-27 17:51     ` Maxime Ripard
2020-10-27 17:51     ` Maxime Ripard
2020-10-26 18:52 ` [PATCH v8 08/14] ASoC: sun4i-i2s: fix coding-style for callback definition Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 09/14] dt-bindings: ASoC: sun4i-i2s: Add H6 compatible Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 10/14] arm64: dts: allwinner: h6: Add I2S1 node Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 11/14] arm64: dts: allwinner: a64: Add I2S2 node Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 12/14] arm64: defconfig: Enable Allwinner i2s driver Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 13/14] dt-bindings: sound: sun4i-i2s: Document H3 with missing RX channel possibility Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52 ` [PATCH v8 14/14] arm: dts: sunxi: h3/h5: Add I2S2 node Clément Péron
2020-10-26 18:52   ` Clément Péron
2020-10-26 18:52   ` Clément Péron

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=20201026185239.379417-8-peron.clem@gmail.com \
    --to=peron.clem@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=codekipper@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jernej.skrabec@siol.net \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=mripard@kernel.org \
    --cc=perex@perex.cz \
    --cc=robh+dt@kernel.org \
    --cc=samuel@sholland.org \
    --cc=tiwai@suse.com \
    --cc=wens@csie.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.