Commit 92ba0ab9 authored by Martyn Welch's avatar Martyn Welch Committed by Jonathan Cameron
Browse files

iio: pressure: st_pressure: Add support for LPS22DF

parent b4027837
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
+70 −0
Original line number Diff line number Diff line
@@ -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,
+5 −0
Original line number Diff line number Diff line
@@ -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);
+5 −0
Original line number Diff line number Diff line
@@ -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" },