1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | /* |
3 | * IIO accel I2C driver for Freescale MMA7455L 3-axis 10-bit accelerometer |
4 | * Copyright 2015 Joachim Eastwood <manabian@gmail.com> |
5 | */ |
6 | |
7 | #include <linux/i2c.h> |
8 | #include <linux/module.h> |
9 | #include <linux/regmap.h> |
10 | |
11 | #include "mma7455.h" |
12 | |
13 | static int mma7455_i2c_probe(struct i2c_client *i2c) |
14 | { |
15 | const struct i2c_device_id *id = i2c_client_get_device_id(client: i2c); |
16 | struct regmap *regmap; |
17 | const char *name = NULL; |
18 | |
19 | regmap = devm_regmap_init_i2c(i2c, &mma7455_core_regmap); |
20 | if (IS_ERR(ptr: regmap)) |
21 | return PTR_ERR(ptr: regmap); |
22 | |
23 | if (id) |
24 | name = id->name; |
25 | |
26 | return mma7455_core_probe(dev: &i2c->dev, regmap, name); |
27 | } |
28 | |
29 | static void mma7455_i2c_remove(struct i2c_client *i2c) |
30 | { |
31 | mma7455_core_remove(dev: &i2c->dev); |
32 | } |
33 | |
34 | static const struct i2c_device_id mma7455_i2c_ids[] = { |
35 | { "mma7455" , 0 }, |
36 | { "mma7456" , 0 }, |
37 | { } |
38 | }; |
39 | MODULE_DEVICE_TABLE(i2c, mma7455_i2c_ids); |
40 | |
41 | static const struct of_device_id mma7455_of_match[] = { |
42 | { .compatible = "fsl,mma7455" }, |
43 | { .compatible = "fsl,mma7456" }, |
44 | { } |
45 | }; |
46 | MODULE_DEVICE_TABLE(of, mma7455_of_match); |
47 | |
48 | static struct i2c_driver mma7455_i2c_driver = { |
49 | .probe = mma7455_i2c_probe, |
50 | .remove = mma7455_i2c_remove, |
51 | .id_table = mma7455_i2c_ids, |
52 | .driver = { |
53 | .name = "mma7455-i2c" , |
54 | .of_match_table = mma7455_of_match, |
55 | }, |
56 | }; |
57 | module_i2c_driver(mma7455_i2c_driver); |
58 | |
59 | MODULE_AUTHOR("Joachim Eastwood <manabian@gmail.com>" ); |
60 | MODULE_DESCRIPTION("Freescale MMA7455L I2C accelerometer driver" ); |
61 | MODULE_LICENSE("GPL v2" ); |
62 | MODULE_IMPORT_NS(IIO_MMA7455); |
63 | |