mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 10:04:12 +08:00
iio: health: max30102: Add check for part ID
Signed-off-by: Peter Meerwald-Stadler <pmeerw@pmeerw.net> Acked-by: Matt Ranostay <matt.ranostay@konsulko.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
d0b950c73d
commit
84b0ce05e4
@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
#define MAX30102_REGMAP_NAME "max30102_regmap"
|
#define MAX30102_REGMAP_NAME "max30102_regmap"
|
||||||
#define MAX30102_DRV_NAME "max30102"
|
#define MAX30102_DRV_NAME "max30102"
|
||||||
|
#define MAX30102_PART_NUMBER 0x15
|
||||||
|
|
||||||
#define MAX30102_REG_INT_STATUS 0x00
|
#define MAX30102_REG_INT_STATUS 0x00
|
||||||
#define MAX30102_REG_INT_STATUS_PWR_RDY BIT(0)
|
#define MAX30102_REG_INT_STATUS_PWR_RDY BIT(0)
|
||||||
@ -83,6 +84,9 @@
|
|||||||
#define MAX30102_REG_TEMP_INTEGER 0x1f
|
#define MAX30102_REG_TEMP_INTEGER 0x1f
|
||||||
#define MAX30102_REG_TEMP_FRACTION 0x20
|
#define MAX30102_REG_TEMP_FRACTION 0x20
|
||||||
|
|
||||||
|
#define MAX30102_REG_REV_ID 0xfe
|
||||||
|
#define MAX30102_REG_PART_ID 0xff
|
||||||
|
|
||||||
struct max30102_data {
|
struct max30102_data {
|
||||||
struct i2c_client *client;
|
struct i2c_client *client;
|
||||||
struct iio_dev *indio_dev;
|
struct iio_dev *indio_dev;
|
||||||
@ -391,6 +395,7 @@ static int max30102_probe(struct i2c_client *client,
|
|||||||
struct iio_buffer *buffer;
|
struct iio_buffer *buffer;
|
||||||
struct iio_dev *indio_dev;
|
struct iio_dev *indio_dev;
|
||||||
int ret;
|
int ret;
|
||||||
|
unsigned int reg;
|
||||||
|
|
||||||
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
|
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
|
||||||
if (!indio_dev)
|
if (!indio_dev)
|
||||||
@ -424,6 +429,19 @@ static int max30102_probe(struct i2c_client *client,
|
|||||||
return PTR_ERR(data->regmap);
|
return PTR_ERR(data->regmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* check part ID */
|
||||||
|
ret = regmap_read(data->regmap, MAX30102_REG_PART_ID, ®);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
if (reg != MAX30102_PART_NUMBER)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
/* show revision ID */
|
||||||
|
ret = regmap_read(data->regmap, MAX30102_REG_REV_ID, ®);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
dev_dbg(&client->dev, "max3010x revision %02x\n", reg);
|
||||||
|
|
||||||
ret = max30102_set_powermode(data, false);
|
ret = max30102_set_powermode(data, false);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user