Re: [PATCH] iio: accel: bmc150: reset chip at init time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 25/08/16 17:45, Olof Johansson wrote:
> In at least one known setup, the chip comes up in a state where reading
> the chip ID returns garbage unless it's been reset, due to noise on the
> wires during system boot.
> 
> All supported chips have the same reset method, and based on the
> datasheets they all need 1.3 or 1.8ms to recover after reset. So, do
> the conservative thing here and always reset the chip.
> 
> Signed-off-by: Olof Johansson <olof@xxxxxxxxx>
Looks good to me.

Srinivas, it's your driver. Can you take a quick look at this?

Thanks,

Jonathan
> ---
>  drivers/iio/accel/bmc150-accel-core.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c
> index bf17aae..59b380d 100644
> --- a/drivers/iio/accel/bmc150-accel-core.c
> +++ b/drivers/iio/accel/bmc150-accel-core.c
> @@ -67,6 +67,9 @@
>  #define BMC150_ACCEL_REG_PMU_BW		0x10
>  #define BMC150_ACCEL_DEF_BW			125
>  
> +#define BMC150_ACCEL_REG_RESET			0x14
> +#define BMC150_ACCEL_RESET_VAL			0xB6
> +
>  #define BMC150_ACCEL_REG_INT_MAP_0		0x19
>  #define BMC150_ACCEL_INT_MAP_0_BIT_SLOPE	BIT(2)
>  
> @@ -1497,6 +1500,14 @@ static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
>  	int ret, i;
>  	unsigned int val;
>  
> +	/*
> +	 * Reset chip to get it in a known good state. A delay of 1.8ms after
> +	 * reset is required according to the data sheets of supported chips.
> +	 */
> +	regmap_write(data->regmap, BMC150_ACCEL_REG_RESET,
> +		     BMC150_ACCEL_RESET_VAL);
> +	usleep_range(1800, 2500);
> +
>  	ret = regmap_read(data->regmap, BMC150_ACCEL_REG_CHIP_ID, &val);
>  	if (ret < 0) {
>  		dev_err(dev, "Error: Reading chip id\n");
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux