forked from Minki/linux
7c94a8b2ee
This adds a driver for the Asahi Kasei AK8974 and its sibling AMI305 magnetometers. It was deployed on scale in 2009 on a multitude of devices. It is distincly different from AK8973 and AK8975 and needs its own driver. This patch is based on the long lost work of Samu Onkalo at Nokia, who made a misc character device driver for the Maemo/MeeGo Nokia devices, before the time of the IIO subsystem. It was mounted in e.g. the Nokia N950, N8, N86, N97 etc. It is also mounted on the ST-Ericsson HREF reference designs. It works nicely in sysfs: $ cat in_magn_x_raw && cat in_magn_y_raw && cat in_magn_z_raw -55 -101 161 And with buffered reads using a simple HRTimer trigger: $ generic_buffer -c10 -a -n ak8974 -t foo iio device number being used is 3 iio trigger number being used is 2 No channels are enabled, enabling all channels Enabling: in_magn_x_en Enabling: in_magn_y_en Enabling: in_magn_z_en Enabling: in_timestamp_en /sys/bus/iio/devices/iio:device3 foo -58.000000 -102.000000 157.000000 946684970985321044 -60.000000 -98.000000 159.000000 946684971012237548 -60.000000 -106.000000 163.000000 946684971032257080 -62.000000 -94.000000 169.000000 946684971052185058 -58.000000 -98.000000 163.000000 946684971072204589 -54.000000 -100.000000 163.000000 946684971092224121 -53.000000 -103.000000 164.000000 946684971112731933 -50.000000 -102.000000 165.000000 946684971132232666 -61.000000 -101.000000 164.000000 946684971152191162 -57.000000 -99.000000 168.000000 946684971172210693 Disabling: in_magn_x_en Disabling: in_magn_y_en Disabling: in_magn_z_en Disabling: in_timestamp_en I cannot currently scale these raw values to gauss. This is because of lack of documentation. I have sent a request for a datasheet to Asahi Kasei. The driver can optionally use a DRDY line IRQ to capture data, else it will sleep and poll. Cc: Samu Onkalo <samu.onkalo@intel.com> Cc: Sebastian Reichel <sre@kernel.org> Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net> Tested-By: Sebastian Reichel <sre@kernel.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
179 lines
4.9 KiB
Plaintext
179 lines
4.9 KiB
Plaintext
#
|
|
# Magnetometer sensors
|
|
#
|
|
# When adding new entries keep the list in alphabetical order
|
|
|
|
menu "Magnetometer sensors"
|
|
|
|
config AK8974
|
|
tristate "Asahi Kasei AK8974 3-Axis Magnetometer"
|
|
depends on I2C
|
|
depends on OF
|
|
select REGMAP_I2C
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
help
|
|
Say yes here to build support for Asahi Kasei AK8974 or
|
|
AMI305 I2C-based 3-axis magnetometer chips.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called ak8974.
|
|
|
|
config AK8975
|
|
tristate "Asahi Kasei AK8975 3-Axis Magnetometer"
|
|
depends on I2C
|
|
depends on GPIOLIB || COMPILE_TEST
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
help
|
|
Say yes here to build support for Asahi Kasei AK8975, AK8963,
|
|
AK09911 or AK09912 3-Axis Magnetometer.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called ak8975.
|
|
|
|
config AK09911
|
|
tristate "Asahi Kasei AK09911 3-axis Compass"
|
|
depends on I2C
|
|
depends on GPIOLIB || COMPILE_TEST
|
|
select AK8975
|
|
help
|
|
Deprecated: AK09911 is now supported by AK8975 driver.
|
|
|
|
config BMC150_MAGN
|
|
tristate
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
|
|
config BMC150_MAGN_I2C
|
|
tristate "Bosch BMC150 I2C Magnetometer Driver"
|
|
depends on I2C
|
|
select BMC150_MAGN
|
|
select REGMAP_I2C
|
|
help
|
|
Say yes here to build support for the BMC150 magnetometer with
|
|
I2C interface.
|
|
|
|
This is a combo module with both accelerometer and magnetometer.
|
|
This driver is only implementing magnetometer part, which has
|
|
its own address and register map.
|
|
|
|
This driver also supports I2C Bosch BMC156 and BMM150 chips.
|
|
To compile this driver as a module, choose M here: the module will be
|
|
called bmc150_magn_i2c.
|
|
|
|
config BMC150_MAGN_SPI
|
|
tristate "Bosch BMC150 SPI Magnetometer Driver"
|
|
depends on SPI
|
|
select BMC150_MAGN
|
|
select REGMAP_SPI
|
|
help
|
|
Say yes here to build support for the BMC150 magnetometer with
|
|
SPI interface.
|
|
|
|
This is a combo module with both accelerometer and magnetometer.
|
|
This driver is only implementing magnetometer part, which has
|
|
its own address and register map.
|
|
|
|
This driver also supports SPI Bosch BMC156 and BMM150 chips.
|
|
To compile this driver as a module, choose M here: the module will be
|
|
called bmc150_magn_spi.
|
|
|
|
config MAG3110
|
|
tristate "Freescale MAG3110 3-Axis Magnetometer"
|
|
depends on I2C
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
help
|
|
Say yes here to build support for the Freescale MAG3110 3-Axis
|
|
magnetometer.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called mag3110.
|
|
|
|
config HID_SENSOR_MAGNETOMETER_3D
|
|
depends on HID_SENSOR_HUB
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
select HID_SENSOR_IIO_COMMON
|
|
select HID_SENSOR_IIO_TRIGGER
|
|
tristate "HID Magenetometer 3D"
|
|
help
|
|
Say yes here to build support for the HID SENSOR
|
|
Magnetometer 3D.
|
|
|
|
config MMC35240
|
|
tristate "MEMSIC MMC35240 3-axis magnetic sensor"
|
|
select REGMAP_I2C
|
|
depends on I2C
|
|
help
|
|
Say yes here to build support for the MEMSIC MMC35240 3-axis
|
|
magnetic sensor.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called mmc35240.
|
|
|
|
config IIO_ST_MAGN_3AXIS
|
|
tristate "STMicroelectronics magnetometers 3-Axis Driver"
|
|
depends on (I2C || SPI_MASTER) && SYSFS
|
|
select IIO_ST_SENSORS_CORE
|
|
select IIO_ST_MAGN_I2C_3AXIS if (I2C)
|
|
select IIO_ST_MAGN_SPI_3AXIS if (SPI_MASTER)
|
|
select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
|
|
help
|
|
Say yes here to build support for STMicroelectronics magnetometers:
|
|
LSM303DLHC, LSM303DLM, LIS3MDL.
|
|
|
|
This driver can also be built as a module. If so, these modules
|
|
will be created:
|
|
- st_magn (core functions for the driver [it is mandatory]);
|
|
- st_magn_i2c (necessary for the I2C devices [optional*]);
|
|
- st_magn_spi (necessary for the SPI devices [optional*]);
|
|
|
|
(*) one of these is necessary to do something.
|
|
|
|
config IIO_ST_MAGN_I2C_3AXIS
|
|
tristate
|
|
depends on IIO_ST_MAGN_3AXIS
|
|
depends on IIO_ST_SENSORS_I2C
|
|
|
|
config IIO_ST_MAGN_SPI_3AXIS
|
|
tristate
|
|
depends on IIO_ST_MAGN_3AXIS
|
|
depends on IIO_ST_SENSORS_SPI
|
|
|
|
config SENSORS_HMC5843
|
|
tristate
|
|
select IIO_BUFFER
|
|
select IIO_TRIGGERED_BUFFER
|
|
|
|
config SENSORS_HMC5843_I2C
|
|
tristate "Honeywell HMC5843/5883/5883L 3-Axis Magnetometer (I2C)"
|
|
depends on I2C
|
|
select SENSORS_HMC5843
|
|
select REGMAP_I2C
|
|
help
|
|
Say Y here to add support for the Honeywell HMC5843, HMC5883 and
|
|
HMC5883L 3-Axis Magnetometer (digital compass).
|
|
|
|
This driver can also be compiled as a set of modules.
|
|
If so, these modules will be created:
|
|
- hmc5843_core (core functions)
|
|
- hmc5843_i2c (support for HMC5843, HMC5883, HMC5883L and HMC5983)
|
|
|
|
config SENSORS_HMC5843_SPI
|
|
tristate "Honeywell HMC5983 3-Axis Magnetometer (SPI)"
|
|
depends on SPI_MASTER
|
|
select SENSORS_HMC5843
|
|
select REGMAP_SPI
|
|
help
|
|
Say Y here to add support for the Honeywell HMC5983 3-Axis Magnetometer
|
|
(digital compass).
|
|
|
|
This driver can also be compiled as a set of modules.
|
|
If so, these modules will be created:
|
|
- hmc5843_core (core functions)
|
|
- hmc5843_spi (support for HMC5983)
|
|
|
|
endmenu
|