forked from Minki/linux
iio:st_pressure:initial lps22hh sensor support
Initial support for ST LPS22HH pressure sensor. Datasheet: http://www2.st.com/resource/en/datasheet/lps22hh.pdf Features: * pressure, temperature data and timestamping channels * sampling frequency selection [1..200] Hz * interrupt based trigger * over I2C or SPI interface Signed-off-by: mario tesi <mario.tesi@st.com> Acked-by: Denis Ciocca <denis.ciocca@st.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
f6ff49b8a3
commit
e5aab7b0d8
@ -165,7 +165,7 @@ config IIO_ST_PRESS
|
|||||||
select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
|
select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
|
||||||
help
|
help
|
||||||
Say yes here to build support for STMicroelectronics pressure
|
Say yes here to build support for STMicroelectronics pressure
|
||||||
sensors: LPS001WP, LPS25H, LPS331AP, LPS22HB.
|
sensors: LPS001WP, LPS25H, LPS331AP, LPS22HB, LPS22HH.
|
||||||
|
|
||||||
This driver can also be built as a module. If so, these modules
|
This driver can also be built as a module. If so, these modules
|
||||||
will be created:
|
will be created:
|
||||||
|
@ -21,6 +21,7 @@ enum st_press_type {
|
|||||||
LPS22HB,
|
LPS22HB,
|
||||||
LPS33HW,
|
LPS33HW,
|
||||||
LPS35HW,
|
LPS35HW,
|
||||||
|
LPS22HH,
|
||||||
ST_PRESS_MAX,
|
ST_PRESS_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -30,6 +31,7 @@ enum st_press_type {
|
|||||||
#define LPS22HB_PRESS_DEV_NAME "lps22hb"
|
#define LPS22HB_PRESS_DEV_NAME "lps22hb"
|
||||||
#define LPS33HW_PRESS_DEV_NAME "lps33hw"
|
#define LPS33HW_PRESS_DEV_NAME "lps33hw"
|
||||||
#define LPS35HW_PRESS_DEV_NAME "lps35hw"
|
#define LPS35HW_PRESS_DEV_NAME "lps35hw"
|
||||||
|
#define LPS22HH_PRESS_DEV_NAME "lps22hh"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct st_sensors_platform_data - default press platform data
|
* struct st_sensors_platform_data - default press platform data
|
||||||
|
@ -492,6 +492,75 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
|
|||||||
.multi_read_bit = false,
|
.multi_read_bit = false,
|
||||||
.bootime = 2,
|
.bootime = 2,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* CUSTOM VALUES FOR LPS22HH SENSOR
|
||||||
|
* See LPS22HH datasheet:
|
||||||
|
* http://www2.st.com/resource/en/datasheet/lps22hh.pdf
|
||||||
|
*/
|
||||||
|
.wai = 0xb3,
|
||||||
|
.wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
|
||||||
|
.sensors_supported = {
|
||||||
|
[0] = LPS22HH_PRESS_DEV_NAME,
|
||||||
|
},
|
||||||
|
.ch = (struct iio_chan_spec *)st_press_lps22hb_channels,
|
||||||
|
.num_ch = ARRAY_SIZE(st_press_lps22hb_channels),
|
||||||
|
.odr = {
|
||||||
|
.addr = 0x10,
|
||||||
|
.mask = 0x70,
|
||||||
|
.odr_avl = {
|
||||||
|
{ .hz = 1, .value = 0x01 },
|
||||||
|
{ .hz = 10, .value = 0x02 },
|
||||||
|
{ .hz = 25, .value = 0x03 },
|
||||||
|
{ .hz = 50, .value = 0x04 },
|
||||||
|
{ .hz = 75, .value = 0x05 },
|
||||||
|
{ .hz = 100, .value = 0x06 },
|
||||||
|
{ .hz = 200, .value = 0x07 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.pw = {
|
||||||
|
.addr = 0x10,
|
||||||
|
.mask = 0x70,
|
||||||
|
.value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE,
|
||||||
|
},
|
||||||
|
.fs = {
|
||||||
|
.fs_avl = {
|
||||||
|
/*
|
||||||
|
* Pressure and temperature sensitivity values
|
||||||
|
* as defined in table 3 of LPS22HH datasheet.
|
||||||
|
*/
|
||||||
|
[0] = {
|
||||||
|
.num = ST_PRESS_FS_AVL_1260MB,
|
||||||
|
.gain = ST_PRESS_KPASCAL_NANO_SCALE,
|
||||||
|
.gain2 = ST_PRESS_LPS22HB_LSB_PER_CELSIUS,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.bdu = {
|
||||||
|
.addr = 0x10,
|
||||||
|
.mask = BIT(1),
|
||||||
|
},
|
||||||
|
.drdy_irq = {
|
||||||
|
.int1 = {
|
||||||
|
.addr = 0x12,
|
||||||
|
.mask = BIT(2),
|
||||||
|
.addr_od = 0x11,
|
||||||
|
.mask_od = BIT(5),
|
||||||
|
},
|
||||||
|
.addr_ihl = 0x11,
|
||||||
|
.mask_ihl = BIT(6),
|
||||||
|
.stat_drdy = {
|
||||||
|
.addr = ST_SENSORS_DEFAULT_STAT_ADDR,
|
||||||
|
.mask = 0x03,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.sim = {
|
||||||
|
.addr = 0x10,
|
||||||
|
.value = BIT(0),
|
||||||
|
},
|
||||||
|
.multi_read_bit = false,
|
||||||
|
.bootime = 2,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int st_press_write_raw(struct iio_dev *indio_dev,
|
static int st_press_write_raw(struct iio_dev *indio_dev,
|
||||||
|
@ -45,6 +45,10 @@ static const struct of_device_id st_press_of_match[] = {
|
|||||||
.compatible = "st,lps35hw",
|
.compatible = "st,lps35hw",
|
||||||
.data = LPS35HW_PRESS_DEV_NAME,
|
.data = LPS35HW_PRESS_DEV_NAME,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "st,lps22hh",
|
||||||
|
.data = LPS22HH_PRESS_DEV_NAME,
|
||||||
|
},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, st_press_of_match);
|
MODULE_DEVICE_TABLE(of, st_press_of_match);
|
||||||
@ -69,6 +73,7 @@ static const struct i2c_device_id st_press_id_table[] = {
|
|||||||
{ LPS22HB_PRESS_DEV_NAME, LPS22HB },
|
{ LPS22HB_PRESS_DEV_NAME, LPS22HB },
|
||||||
{ LPS33HW_PRESS_DEV_NAME, LPS33HW },
|
{ LPS33HW_PRESS_DEV_NAME, LPS33HW },
|
||||||
{ LPS35HW_PRESS_DEV_NAME, LPS35HW },
|
{ LPS35HW_PRESS_DEV_NAME, LPS35HW },
|
||||||
|
{ LPS22HH_PRESS_DEV_NAME, LPS22HH },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(i2c, st_press_id_table);
|
MODULE_DEVICE_TABLE(i2c, st_press_id_table);
|
||||||
|
@ -49,6 +49,10 @@ static const struct of_device_id st_press_of_match[] = {
|
|||||||
.compatible = "st,lps35hw",
|
.compatible = "st,lps35hw",
|
||||||
.data = LPS35HW_PRESS_DEV_NAME,
|
.data = LPS35HW_PRESS_DEV_NAME,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "st,lps22hh",
|
||||||
|
.data = LPS22HH_PRESS_DEV_NAME,
|
||||||
|
},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, st_press_of_match);
|
MODULE_DEVICE_TABLE(of, st_press_of_match);
|
||||||
@ -93,6 +97,7 @@ static const struct spi_device_id st_press_id_table[] = {
|
|||||||
{ LPS22HB_PRESS_DEV_NAME },
|
{ LPS22HB_PRESS_DEV_NAME },
|
||||||
{ LPS33HW_PRESS_DEV_NAME },
|
{ LPS33HW_PRESS_DEV_NAME },
|
||||||
{ LPS35HW_PRESS_DEV_NAME },
|
{ LPS35HW_PRESS_DEV_NAME },
|
||||||
|
{ LPS22HH_PRESS_DEV_NAME },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(spi, st_press_id_table);
|
MODULE_DEVICE_TABLE(spi, st_press_id_table);
|
||||||
|
Loading…
Reference in New Issue
Block a user