iio: pressure: st_pressure: Add support for LPS22DF
Add support for ST LPS22DF pressure sensor. Datasheet: https://www.st.com/resource/en/datasheet/lps22df.pdf Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk> Link: https://lore.kernel.org/r/20220909161611.780720-2-martyn.welch@collabora.co.uk Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
Родитель
b402783711
Коммит
92ba0ab945
|
@ -22,6 +22,7 @@ enum st_press_type {
|
|||
LPS33HW,
|
||||
LPS35HW,
|
||||
LPS22HH,
|
||||
LPS22DF,
|
||||
ST_PRESS_MAX,
|
||||
};
|
||||
|
||||
|
@ -32,6 +33,7 @@ enum st_press_type {
|
|||
#define LPS33HW_PRESS_DEV_NAME "lps33hw"
|
||||
#define LPS35HW_PRESS_DEV_NAME "lps35hw"
|
||||
#define LPS22HH_PRESS_DEV_NAME "lps22hh"
|
||||
#define LPS22DF_PRESS_DEV_NAME "lps22df"
|
||||
|
||||
/**
|
||||
* struct st_sensors_platform_data - default press platform data
|
||||
|
|
|
@ -552,6 +552,76 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
|
|||
.multi_read_bit = false,
|
||||
.bootime = 2,
|
||||
},
|
||||
{
|
||||
/*
|
||||
* CUSTOM VALUES FOR LPS22DF SENSOR
|
||||
* See LPS22DF datasheet:
|
||||
* http://www.st.com/resource/en/datasheet/lps22df.pdf
|
||||
*/
|
||||
.wai = 0xb4,
|
||||
.wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
|
||||
.sensors_supported = {
|
||||
[0] = LPS22DF_PRESS_DEV_NAME,
|
||||
},
|
||||
.ch = (struct iio_chan_spec *)st_press_lps22hb_channels,
|
||||
.num_ch = ARRAY_SIZE(st_press_lps22hb_channels),
|
||||
.odr = {
|
||||
.addr = 0x10,
|
||||
.mask = 0x78,
|
||||
.odr_avl = {
|
||||
{ .hz = 1, .value = 0x01 },
|
||||
{ .hz = 4, .value = 0x02 },
|
||||
{ .hz = 10, .value = 0x03 },
|
||||
{ .hz = 25, .value = 0x04 },
|
||||
{ .hz = 50, .value = 0x05 },
|
||||
{ .hz = 75, .value = 0x06 },
|
||||
{ .hz = 100, .value = 0x07 },
|
||||
{ .hz = 200, .value = 0x08 },
|
||||
},
|
||||
},
|
||||
.pw = {
|
||||
.addr = 0x10,
|
||||
.mask = 0x78,
|
||||
.value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE,
|
||||
},
|
||||
.fs = {
|
||||
.fs_avl = {
|
||||
/*
|
||||
* Pressure and temperature sensitivity values
|
||||
* as defined in table 2 of LPS22DF datasheet.
|
||||
*/
|
||||
[0] = {
|
||||
.num = ST_PRESS_FS_AVL_1260MB,
|
||||
.gain = ST_PRESS_KPASCAL_NANO_SCALE,
|
||||
.gain2 = ST_PRESS_LPS22HB_LSB_PER_CELSIUS,
|
||||
},
|
||||
},
|
||||
},
|
||||
.bdu = {
|
||||
.addr = 0x11,
|
||||
.mask = BIT(3),
|
||||
},
|
||||
.drdy_irq = {
|
||||
.int1 = {
|
||||
.addr = 0x13,
|
||||
.mask = BIT(5),
|
||||
.addr_od = 0x12,
|
||||
.mask_od = BIT(1),
|
||||
},
|
||||
.addr_ihl = 0x12,
|
||||
.mask_ihl = BIT(3),
|
||||
.stat_drdy = {
|
||||
.addr = ST_SENSORS_DEFAULT_STAT_ADDR,
|
||||
.mask = 0x03,
|
||||
},
|
||||
},
|
||||
.sim = {
|
||||
.addr = 0x0E,
|
||||
.value = BIT(5),
|
||||
},
|
||||
.multi_read_bit = false,
|
||||
.bootime = 2,
|
||||
},
|
||||
};
|
||||
|
||||
static int st_press_write_raw(struct iio_dev *indio_dev,
|
||||
|
|
|
@ -47,6 +47,10 @@ static const struct of_device_id st_press_of_match[] = {
|
|||
.compatible = "st,lps22hh",
|
||||
.data = LPS22HH_PRESS_DEV_NAME,
|
||||
},
|
||||
{
|
||||
.compatible = "st,lps22df",
|
||||
.data = LPS22DF_PRESS_DEV_NAME,
|
||||
},
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, st_press_of_match);
|
||||
|
@ -67,6 +71,7 @@ static const struct i2c_device_id st_press_id_table[] = {
|
|||
{ LPS33HW_PRESS_DEV_NAME, LPS33HW },
|
||||
{ LPS35HW_PRESS_DEV_NAME, LPS35HW },
|
||||
{ LPS22HH_PRESS_DEV_NAME, LPS22HH },
|
||||
{ LPS22DF_PRESS_DEV_NAME, LPS22DF },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, st_press_id_table);
|
||||
|
|
|
@ -51,6 +51,10 @@ static const struct of_device_id st_press_of_match[] = {
|
|||
.compatible = "st,lps22hh",
|
||||
.data = LPS22HH_PRESS_DEV_NAME,
|
||||
},
|
||||
{
|
||||
.compatible = "st,lps22df",
|
||||
.data = LPS22DF_PRESS_DEV_NAME,
|
||||
},
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, st_press_of_match);
|
||||
|
@ -97,6 +101,7 @@ static const struct spi_device_id st_press_id_table[] = {
|
|||
{ LPS33HW_PRESS_DEV_NAME },
|
||||
{ LPS35HW_PRESS_DEV_NAME },
|
||||
{ LPS22HH_PRESS_DEV_NAME },
|
||||
{ LPS22DF_PRESS_DEV_NAME },
|
||||
{ "lps001wp-press" },
|
||||
{ "lps25h-press", },
|
||||
{ "lps331ap-press" },
|
||||
|
|
Загрузка…
Ссылка в новой задаче