brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 17e9156 Raw
71 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * 3-axis accelerometer driver supporting following Bosch-Sensortec chips:4 *  - BMI0885 *  - BMI0856 *  - BMI090L7 *8 * Copyright 2023 Jun Yan <jerrysteve1101@gmail.com>9 */10 11#include <linux/i2c.h>12#include <linux/mod_devicetable.h>13#include <linux/module.h>14#include <linux/regmap.h>15#include <linux/slab.h>16 17#include "bmi088-accel.h"18 19static int bmi088_accel_probe(struct i2c_client *i2c)20{21	struct regmap *regmap;22	const struct i2c_device_id *id = i2c_client_get_device_id(i2c);23 24	regmap = devm_regmap_init_i2c(i2c, &bmi088_regmap_conf);25	if (IS_ERR(regmap)) {26		dev_err(&i2c->dev, "Failed to initialize i2c regmap\n");27		return PTR_ERR(regmap);28	}29 30	return bmi088_accel_core_probe(&i2c->dev, regmap, i2c->irq,31					id->driver_data);32}33 34static void bmi088_accel_remove(struct i2c_client *i2c)35{36	bmi088_accel_core_remove(&i2c->dev);37}38 39static const struct of_device_id bmi088_of_match[] = {40	{ .compatible = "bosch,bmi085-accel" },41	{ .compatible = "bosch,bmi088-accel" },42	{ .compatible = "bosch,bmi090l-accel" },43	{}44};45MODULE_DEVICE_TABLE(of, bmi088_of_match);46 47static const struct i2c_device_id bmi088_accel_id[] = {48	{ "bmi085-accel",  BOSCH_BMI085 },49	{ "bmi088-accel",  BOSCH_BMI088 },50	{ "bmi090l-accel", BOSCH_BMI090L },51	{}52};53MODULE_DEVICE_TABLE(i2c, bmi088_accel_id);54 55static struct i2c_driver bmi088_accel_driver = {56	.driver = {57		.name	= "bmi088_accel_i2c",58		.pm	= pm_ptr(&bmi088_accel_pm_ops),59		.of_match_table = bmi088_of_match,60	},61	.probe		= bmi088_accel_probe,62	.remove		= bmi088_accel_remove,63	.id_table	= bmi088_accel_id,64};65module_i2c_driver(bmi088_accel_driver);66 67MODULE_AUTHOR("Jun Yan <jerrysteve1101@gmail.com>");68MODULE_LICENSE("GPL");69MODULE_DESCRIPTION("BMI088 accelerometer driver (I2C)");70MODULE_IMPORT_NS(IIO_BMI088);71