![Robert Jones](/assets/img/avatar_default.png)
FXOS8700CQ is a small, low-power, 3-axis linear accelerometer and 3-axis magnetometer combined into a single package. The device features a selectable I2C or point-to-point SPI serial interface with 14-bit accelerometer and 16-bit magnetometer ADC resolution along with smart-embedded functions. FXOS8700CQ has dynamically selectable accelerationfull-scale ranges of ±2 g/±4 g/±8 g and a fixed magnetic measurement range of ±1200 μT. Output data rates (ODR) from 1.563 Hz to 800 Hz are selectable by the user for each sensor. Interleaved magnetic and acceleration data is available at ODR rates of up to 400 Hz. FXOS8700CQ is available in a plastic QFN package and it is guaranteed to operate over the extended temperature range of –40 °C to +85 °C. TODO: Trigger and IRQ configuration support Datasheet: http://cache.freescale.com/files/sensors/doc/data_sheet/FXOS8700CQ.pdf Signed-off-by: Robert Jones <rjones@gateworks.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* FXOS8700 - NXP IMU, SPI bits
|
|
*/
|
|
#include <linux/acpi.h>
|
|
#include <linux/module.h>
|
|
#include <linux/mod_devicetable.h>
|
|
#include <linux/regmap.h>
|
|
#include <linux/spi/spi.h>
|
|
|
|
#include "fxos8700.h"
|
|
|
|
static int fxos8700_spi_probe(struct spi_device *spi)
|
|
{
|
|
struct regmap *regmap;
|
|
const struct spi_device_id *id = spi_get_device_id(spi);
|
|
|
|
regmap = devm_regmap_init_spi(spi, &fxos8700_regmap_config);
|
|
if (IS_ERR(regmap)) {
|
|
dev_err(&spi->dev, "Failed to register spi regmap %d\n",
|
|
(int)PTR_ERR(regmap));
|
|
return PTR_ERR(regmap);
|
|
}
|
|
|
|
return fxos8700_core_probe(&spi->dev, regmap, id->name, true);
|
|
}
|
|
|
|
static const struct spi_device_id fxos8700_spi_id[] = {
|
|
{"fxos8700", 0},
|
|
{ }
|
|
};
|
|
MODULE_DEVICE_TABLE(spi, fxos8700_spi_id);
|
|
|
|
static const struct acpi_device_id fxos8700_acpi_match[] = {
|
|
{"FXOS8700", 0},
|
|
{ }
|
|
};
|
|
MODULE_DEVICE_TABLE(acpi, fxos8700_acpi_match);
|
|
|
|
static const struct of_device_id fxos8700_of_match[] = {
|
|
{ .compatible = "nxp,fxos8700" },
|
|
{ }
|
|
};
|
|
MODULE_DEVICE_TABLE(of, fxos8700_of_match);
|
|
|
|
static struct spi_driver fxos8700_spi_driver = {
|
|
.probe = fxos8700_spi_probe,
|
|
.id_table = fxos8700_spi_id,
|
|
.driver = {
|
|
.acpi_match_table = ACPI_PTR(fxos8700_acpi_match),
|
|
.of_match_table = fxos8700_of_match,
|
|
.name = "fxos8700_spi",
|
|
},
|
|
};
|
|
module_spi_driver(fxos8700_spi_driver);
|
|
|
|
MODULE_AUTHOR("Robert Jones <rjones@gateworks.com>");
|
|
MODULE_DESCRIPTION("FXOS8700 SPI driver");
|
|
MODULE_LICENSE("GPL v2");
|