1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* |
3 | * NXP FXLS8962AF/FXLS8964AF Accelerometer SPI Driver |
4 | * |
5 | * Copyright 2021 Connected Cars A/S |
6 | */ |
7 | |
8 | #include <linux/dev_printk.h> |
9 | #include <linux/err.h> |
10 | #include <linux/module.h> |
11 | #include <linux/mod_devicetable.h> |
12 | #include <linux/spi/spi.h> |
13 | #include <linux/regmap.h> |
14 | |
15 | #include "fxls8962af.h" |
16 | |
17 | static int fxls8962af_probe(struct spi_device *spi) |
18 | { |
19 | struct regmap *regmap; |
20 | |
21 | regmap = devm_regmap_init_spi(spi, &fxls8962af_spi_regmap_conf); |
22 | if (IS_ERR(ptr: regmap)) { |
23 | dev_err(&spi->dev, "Failed to initialize spi regmap\n" ); |
24 | return PTR_ERR(ptr: regmap); |
25 | } |
26 | |
27 | return fxls8962af_core_probe(dev: &spi->dev, regmap, irq: spi->irq); |
28 | } |
29 | |
30 | static const struct of_device_id fxls8962af_spi_of_match[] = { |
31 | { .compatible = "nxp,fxls8962af" }, |
32 | { .compatible = "nxp,fxls8964af" }, |
33 | {} |
34 | }; |
35 | MODULE_DEVICE_TABLE(of, fxls8962af_spi_of_match); |
36 | |
37 | static const struct spi_device_id fxls8962af_spi_id_table[] = { |
38 | { "fxls8962af" , fxls8962af }, |
39 | { "fxls8964af" , fxls8964af }, |
40 | {} |
41 | }; |
42 | MODULE_DEVICE_TABLE(spi, fxls8962af_spi_id_table); |
43 | |
44 | static struct spi_driver fxls8962af_driver = { |
45 | .driver = { |
46 | .name = "fxls8962af_spi" , |
47 | .pm = pm_ptr(&fxls8962af_pm_ops), |
48 | .of_match_table = fxls8962af_spi_of_match, |
49 | }, |
50 | .probe = fxls8962af_probe, |
51 | .id_table = fxls8962af_spi_id_table, |
52 | }; |
53 | module_spi_driver(fxls8962af_driver); |
54 | |
55 | MODULE_AUTHOR("Sean Nyekjaer <sean@geanix.com>" ); |
56 | MODULE_DESCRIPTION("NXP FXLS8962AF/FXLS8964AF accelerometer spi driver" ); |
57 | MODULE_LICENSE("GPL v2" ); |
58 | MODULE_IMPORT_NS(IIO_FXLS8962AF); |
59 | |