[alsa-devel] [PATCH] ASoC: cs35l35: Add additional delay for reset

Paul Handrigan paul.handrigan at cirrus.com
Tue Jun 6 17:18:02 CEST 2017



On Wed, 31 May 2017, Charles Keepax wrote:

> Very fast systems may violate the minimum constraints for time the reset
> line needs to remain low, or communicate with the device too soon after
> releasing the reset. Fix this by adding some delays in to allow the chip
> to properly reset, also factor out the reset into a function as it is
> likely it will be re-used in later additions to the driver.
> 
> Signed-off-by: Charles Keepax <ckeepax at opensource.wolfsonmicro.com>
> ---
>  sound/soc/codecs/cs35l35.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/soc/codecs/cs35l35.c b/sound/soc/codecs/cs35l35.c
> index 375be49..f1ee184 100644
> --- a/sound/soc/codecs/cs35l35.c
> +++ b/sound/soc/codecs/cs35l35.c
> @@ -162,6 +162,14 @@ static bool cs35l35_precious_register(struct device *dev, unsigned int reg)
>  	}
>  }
>  
> +static void cs35l35_reset(struct cs35l35_private *cs35l35)
> +{
> +	gpiod_set_value_cansleep(cs35l35->reset_gpio, 0);
> +	usleep_range(2000, 2100);
> +	gpiod_set_value_cansleep(cs35l35->reset_gpio, 1);
> +	usleep_range(1000, 1100);
> +}
> +
>  static int cs35l35_wait_for_pdn(struct cs35l35_private *cs35l35)
>  {
>  	int ret;
> @@ -1536,7 +1544,7 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client,
>  		}
>  	}
>  
> -	gpiod_set_value_cansleep(cs35l35->reset_gpio, 1);
> +	cs35l35_reset(cs35l35);
>  
>  	init_completion(&cs35l35->pdn_done);
>
Acked-by: Paul Handrigan <Paul.Handrigan at cirrus.com>


More information about the Alsa-devel mailing list