lkml.org 
[lkml]   [2018]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 1/9] ASoC: sun4i-i2s: Adjust regmap settings
    Date
    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 | 29 +++++++++--------------------
    1 file changed, 9 insertions(+), 20 deletions(-)

    diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
    index d5ec1a20499d..64d073cb2aee 100644
    --- a/sound/soc/sunxi/sun4i-i2s.c
    +++ b/sound/soc/sunxi/sun4i-i2s.c
    @@ -548,9 +548,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);
    @@ -569,9 +571,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);
    @@ -703,13 +707,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;
    }

    static bool sun4i_i2s_wr_reg(struct device *dev, unsigned int reg)
    @@ -728,6 +726,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:
    @@ -738,23 +738,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);
    }
    @@ -809,7 +798,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,
    };

    --
    2.20.1
    \
     
     \ /
      Last update: 2018-12-21 16:23    [W:6.462 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site