18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * IIO accel I2C driver for Freescale MMA7455L 3-axis 10-bit accelerometer 48c2ecf20Sopenharmony_ci * Copyright 2015 Joachim Eastwood <manabian@gmail.com> 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include <linux/i2c.h> 88c2ecf20Sopenharmony_ci#include <linux/module.h> 98c2ecf20Sopenharmony_ci#include <linux/regmap.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include "mma7455.h" 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_cistatic int mma7455_i2c_probe(struct i2c_client *i2c, 148c2ecf20Sopenharmony_ci const struct i2c_device_id *id) 158c2ecf20Sopenharmony_ci{ 168c2ecf20Sopenharmony_ci struct regmap *regmap; 178c2ecf20Sopenharmony_ci const char *name = NULL; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci regmap = devm_regmap_init_i2c(i2c, &mma7455_core_regmap); 208c2ecf20Sopenharmony_ci if (IS_ERR(regmap)) 218c2ecf20Sopenharmony_ci return PTR_ERR(regmap); 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci if (id) 248c2ecf20Sopenharmony_ci name = id->name; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci return mma7455_core_probe(&i2c->dev, regmap, name); 278c2ecf20Sopenharmony_ci} 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_cistatic int mma7455_i2c_remove(struct i2c_client *i2c) 308c2ecf20Sopenharmony_ci{ 318c2ecf20Sopenharmony_ci return mma7455_core_remove(&i2c->dev); 328c2ecf20Sopenharmony_ci} 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_cistatic const struct i2c_device_id mma7455_i2c_ids[] = { 358c2ecf20Sopenharmony_ci { "mma7455", 0 }, 368c2ecf20Sopenharmony_ci { "mma7456", 0 }, 378c2ecf20Sopenharmony_ci { } 388c2ecf20Sopenharmony_ci}; 398c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(i2c, mma7455_i2c_ids); 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cistatic const struct of_device_id mma7455_of_match[] = { 428c2ecf20Sopenharmony_ci { .compatible = "fsl,mma7455" }, 438c2ecf20Sopenharmony_ci { .compatible = "fsl,mma7456" }, 448c2ecf20Sopenharmony_ci { } 458c2ecf20Sopenharmony_ci}; 468c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(of, mma7455_of_match); 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_cistatic struct i2c_driver mma7455_i2c_driver = { 498c2ecf20Sopenharmony_ci .probe = mma7455_i2c_probe, 508c2ecf20Sopenharmony_ci .remove = mma7455_i2c_remove, 518c2ecf20Sopenharmony_ci .id_table = mma7455_i2c_ids, 528c2ecf20Sopenharmony_ci .driver = { 538c2ecf20Sopenharmony_ci .name = "mma7455-i2c", 548c2ecf20Sopenharmony_ci .of_match_table = mma7455_of_match, 558c2ecf20Sopenharmony_ci }, 568c2ecf20Sopenharmony_ci}; 578c2ecf20Sopenharmony_cimodule_i2c_driver(mma7455_i2c_driver); 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ciMODULE_AUTHOR("Joachim Eastwood <manabian@gmail.com>"); 608c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Freescale MMA7455L I2C accelerometer driver"); 618c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL v2"); 62