1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* |
3 | * NXP FXLS8962AF/FXLS8964AF Accelerometer I2C 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/i2c.h> |
11 | #include <linux/mod_devicetable.h> |
12 | #include <linux/module.h> |
13 | #include <linux/regmap.h> |
14 | |
15 | #include "fxls8962af.h" |
16 | |
17 | static int fxls8962af_probe(struct i2c_client *client) |
18 | { |
19 | struct regmap *regmap; |
20 | |
21 | regmap = devm_regmap_init_i2c(client, &fxls8962af_i2c_regmap_conf); |
22 | if (IS_ERR(ptr: regmap)) { |
23 | dev_err(&client->dev, "Failed to initialize i2c regmap\n" ); |
24 | return PTR_ERR(ptr: regmap); |
25 | } |
26 | |
27 | return fxls8962af_core_probe(dev: &client->dev, regmap, irq: client->irq); |
28 | } |
29 | |
30 | static const struct i2c_device_id fxls8962af_id[] = { |
31 | { "fxls8962af" , fxls8962af }, |
32 | { "fxls8964af" , fxls8964af }, |
33 | {} |
34 | }; |
35 | MODULE_DEVICE_TABLE(i2c, fxls8962af_id); |
36 | |
37 | static const struct of_device_id fxls8962af_of_match[] = { |
38 | { .compatible = "nxp,fxls8962af" }, |
39 | { .compatible = "nxp,fxls8964af" }, |
40 | {} |
41 | }; |
42 | MODULE_DEVICE_TABLE(of, fxls8962af_of_match); |
43 | |
44 | static struct i2c_driver fxls8962af_driver = { |
45 | .driver = { |
46 | .name = "fxls8962af_i2c" , |
47 | .of_match_table = fxls8962af_of_match, |
48 | .pm = pm_ptr(&fxls8962af_pm_ops), |
49 | }, |
50 | .probe = fxls8962af_probe, |
51 | .id_table = fxls8962af_id, |
52 | }; |
53 | module_i2c_driver(fxls8962af_driver); |
54 | |
55 | MODULE_AUTHOR("Sean Nyekjaer <sean@geanix.com>" ); |
56 | MODULE_DESCRIPTION("NXP FXLS8962AF/FXLS8964AF accelerometer i2c driver" ); |
57 | MODULE_LICENSE("GPL v2" ); |
58 | MODULE_IMPORT_NS(IIO_FXLS8962AF); |
59 | |