linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Chen-Yu Tsai <wens@csie.org>
To: Code Kipper <codekipper@gmail.com>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	"Andrea Venturi \(pers\)" <be17068@iperbole.bo.it>,
	linux-sunxi <linux-sunxi@googlegroups.com>,
	Mark Brown <broonie@kernel.org>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v5 15/15] ASoC: sun4i-i2s: Adjust regmap settings
Date: Wed, 14 Aug 2019 19:31:27 +0800	[thread overview]
Message-ID: <CAGb2v65OdwwDg0Ezc0eXShvp1crQfmt6ZKAkWpOH9Dz94HFrEw@mail.gmail.com> (raw)
In-Reply-To: <20190814060854.26345-16-codekipper@gmail.com>

On Wed, Aug 14, 2019 at 2:09 PM <codekipper@gmail.com> wrote:
>
> From: Marcus Cooper <codekipper@gmail.com>
>
> Bypass the regmap cache when flushing the i2s FIFOs and modify the tables
> to reflect this.
>
> Signed-off-by: Marcus Cooper <codekipper@gmail.com>
> ---
>  sound/soc/sunxi/sun4i-i2s.c | 31 ++++++++++---------------------
>  1 file changed, 10 insertions(+), 21 deletions(-)
>
> diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
> index d3c8789f70bb..ecfc1ed79379 100644
> --- a/sound/soc/sunxi/sun4i-i2s.c
> +++ b/sound/soc/sunxi/sun4i-i2s.c
> @@ -876,9 +876,11 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
>  static void sun4i_i2s_start_capture(struct sun4i_i2s *i2s)
>  {
>         /* Flush RX FIFO */
> +       regcache_cache_bypass(i2s->regmap, true);
>         regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
>                            SUN4I_I2S_FIFO_CTRL_FLUSH_RX,
>                            SUN4I_I2S_FIFO_CTRL_FLUSH_RX);
> +       regcache_cache_bypass(i2s->regmap, false);
>
>         /* Clear RX counter */
>         regmap_write(i2s->regmap, SUN4I_I2S_RX_CNT_REG, 0);
> @@ -897,9 +899,11 @@ static void sun4i_i2s_start_capture(struct sun4i_i2s *i2s)
>  static void sun4i_i2s_start_playback(struct sun4i_i2s *i2s)
>  {
>         /* Flush TX FIFO */
> +       regcache_cache_bypass(i2s->regmap, true);
>         regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG,
>                            SUN4I_I2S_FIFO_CTRL_FLUSH_TX,
>                            SUN4I_I2S_FIFO_CTRL_FLUSH_TX);
> +       regcache_cache_bypass(i2s->regmap, false);
>
>         /* Clear TX counter */
>         regmap_write(i2s->regmap, SUN4I_I2S_TX_CNT_REG, 0);
> @@ -1053,13 +1057,7 @@ static const struct snd_soc_component_driver sun4i_i2s_component = {
>
>  static bool sun4i_i2s_rd_reg(struct device *dev, unsigned int reg)
>  {
> -       switch (reg) {
> -       case SUN4I_I2S_FIFO_TX_REG:
> -               return false;
> -
> -       default:
> -               return true;
> -       }
> +       return true;

The commit log needs to explain why this is relevant. And I'm not sure why one
would read back the TX FIFO. Also, if it's always true, just drop the callback.

ChenYu

>  }
>
>  static bool sun4i_i2s_wr_reg(struct device *dev, unsigned int reg)
> @@ -1078,6 +1076,8 @@ static bool sun4i_i2s_volatile_reg(struct device *dev, unsigned int reg)
>  {
>         switch (reg) {
>         case SUN4I_I2S_FIFO_RX_REG:
> +       case SUN4I_I2S_FIFO_TX_REG:
> +       case SUN4I_I2S_FIFO_STA_REG:
>         case SUN4I_I2S_INT_STA_REG:
>         case SUN4I_I2S_RX_CNT_REG:
>         case SUN4I_I2S_TX_CNT_REG:
> @@ -1088,23 +1088,12 @@ static bool sun4i_i2s_volatile_reg(struct device *dev, unsigned int reg)
>         }
>  }
>
> -static bool sun8i_i2s_rd_reg(struct device *dev, unsigned int reg)
> -{
> -       switch (reg) {
> -       case SUN8I_I2S_FIFO_TX_REG:
> -               return false;
> -
> -       default:
> -               return true;
> -       }
> -}
> -
>  static bool sun8i_i2s_volatile_reg(struct device *dev, unsigned int reg)
>  {
>         if (reg == SUN8I_I2S_INT_STA_REG)
>                 return true;
>         if (reg == SUN8I_I2S_FIFO_TX_REG)
> -               return false;
> +               return true;
>
>         return sun4i_i2s_volatile_reg(dev, reg);
>  }
> @@ -1175,7 +1164,7 @@ static const struct regmap_config sun8i_i2s_regmap_config = {
>         .reg_defaults   = sun8i_i2s_reg_defaults,
>         .num_reg_defaults       = ARRAY_SIZE(sun8i_i2s_reg_defaults),
>         .writeable_reg  = sun4i_i2s_wr_reg,
> -       .readable_reg   = sun8i_i2s_rd_reg,
> +       .readable_reg   = sun4i_i2s_rd_reg,
>         .volatile_reg   = sun8i_i2s_volatile_reg,
>  };
>
> @@ -1188,7 +1177,7 @@ static const struct regmap_config sun50i_i2s_regmap_config = {
>         .reg_defaults   = sun50i_i2s_reg_defaults,
>         .num_reg_defaults       = ARRAY_SIZE(sun50i_i2s_reg_defaults),
>         .writeable_reg  = sun4i_i2s_wr_reg,
> -       .readable_reg   = sun8i_i2s_rd_reg,
> +       .readable_reg   = sun4i_i2s_rd_reg,
>         .volatile_reg   = sun8i_i2s_volatile_reg,
>  };
>
> --
> 2.22.0
>

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

      parent reply	other threads:[~2019-08-14 11:31 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-14  6:08 [PATCH v5 00/15] ASoC: sun4i-i2s: Updates to the driver codekipper
2019-08-14  6:08 ` [PATCH v5 01/15] ASoC: sun4i-i2s: Add regmap field to sign extend sample codekipper
2019-08-14  6:43   ` Maxime Ripard
2019-08-14 11:24     ` Code Kipper
2019-08-14  6:08 ` [PATCH v5 02/15] ASoC: sun4i-i2s: Add set_tdm_slot functionality codekipper
2019-08-14  7:09   ` Maxime Ripard
2019-08-16  6:27     ` Code Kipper
2019-08-14  9:30   ` Mark Brown
2019-08-16  6:22     ` Code Kipper
2019-08-14  6:08 ` [PATCH v5 03/15] ASoC: sun4i-i2s: Correct divider calculations codekipper
2019-08-14  7:13   ` Maxime Ripard
2019-08-14  9:31   ` Mark Brown
2019-08-14  6:08 ` [PATCH v5 04/15] ASoC: sun4i-i2s: Support more formats on newer SoCs codekipper
2019-08-14  7:16   ` Maxime Ripard
2019-08-14 11:23     ` Code Kipper
2019-08-14  6:08 ` [PATCH v5 05/15] ASoC: sun4i-i2s: Add functions for RX and TX channel offsets codekipper
2019-08-14  6:08 ` [PATCH v5 06/15] ASoC: sun4i-i2s: Add functions for RX and TX channel enables codekipper
2019-08-14  6:08 ` [PATCH v5 07/15] ASoC: sun4i-i2s: Add functions for RX and TX channel selects codekipper
2019-08-14  6:08 ` [PATCH v5 08/15] ASoC: sun4i-i2s: Add functions for channel mapping codekipper
2019-08-14  6:08 ` [PATCH v5 09/15] clk: sunxi-ng: h6: Allow I2S to change parent rate codekipper
2019-08-21  4:07   ` [linux-sunxi] " Chen-Yu Tsai
2019-08-21  5:52     ` Code Kipper
2019-08-21  6:01       ` Chen-Yu Tsai
2019-08-21  9:19   ` Code Kipper
2019-08-21  9:35     ` [linux-sunxi] " Chen-Yu Tsai
2019-08-14  6:08 ` [PATCH v5 10/15] dt-bindings: ASoC: sun4i-i2s: Add H6 compatible codekipper
2019-08-14  6:08 ` [PATCH v5 11/15] ASoC: sun4i-i2s: Add support for H6 I2S codekipper
2019-08-14  7:57   ` Jernej Škrabec
2019-08-14 11:08     ` Code Kipper
2019-08-14  6:08 ` [PATCH v5 12/15] ASoC: sun4i-i2s: Add multi-lane functionality codekipper
2019-08-14  7:20   ` Maxime Ripard
2019-08-14 11:16     ` Code Kipper
2019-08-14  8:27   ` [linux-sunxi] " Jernej Škrabec
2019-08-14  6:08 ` [PATCH v5 13/15] ASoC: sun4i-i2s: Add multichannel functionality codekipper
2019-08-14  6:08 ` [PATCH v5 14/15] ASoc: sun4i-i2s: Add 20, 24 and 32 bit support codekipper
2019-08-14  8:28   ` [linux-sunxi] " Jernej Škrabec
2019-08-14  9:03     ` Code Kipper
2019-08-14  6:08 ` [PATCH v5 15/15] ASoC: sun4i-i2s: Adjust regmap settings codekipper
2019-08-14  7:20   ` Maxime Ripard
2019-08-14 11:31     ` [linux-sunxi] " Jernej Škrabec
2019-08-14  8:37   ` [linux-sunxi] " Jernej Škrabec
2019-08-14  9:02     ` Code Kipper
2019-08-14 11:31   ` Chen-Yu Tsai [this message]

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=CAGb2v65OdwwDg0Ezc0eXShvp1crQfmt6ZKAkWpOH9Dz94HFrEw@mail.gmail.com \
    --to=wens@csie.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=be17068@iperbole.bo.it \
    --cc=broonie@kernel.org \
    --cc=codekipper@gmail.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=maxime.ripard@free-electrons.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).