Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 69 lines 1.8 kB view raw
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Bosch triaxial acceleration sensor 4 * 5 * Copyright (c) 2025 Petre Rodan <petre.rodan@subdimension.ro> 6 * 7 * Datasheet: https://media.digikey.com/pdf/Data%20Sheets/Bosch/BMA220.pdf 8 * I2C address is either 0x0b or 0x0a depending on CSB (pin 10) 9 */ 10 11#include <linux/bitfield.h> 12#include <linux/i2c.h> 13#include <linux/mod_devicetable.h> 14#include <linux/module.h> 15#include <linux/regmap.h> 16#include <linux/types.h> 17 18#include "bma220.h" 19 20static int bma220_set_wdt(struct regmap *regmap, const u8 val) 21{ 22 return regmap_update_bits(regmap, BMA220_REG_WDT, BMA220_WDT_MASK, 23 FIELD_PREP(BMA220_WDT_MASK, val)); 24} 25 26static int bma220_i2c_probe(struct i2c_client *client) 27{ 28 struct regmap *regmap; 29 int ret; 30 31 regmap = devm_regmap_init_i2c(client, &bma220_i2c_regmap_config); 32 if (IS_ERR(regmap)) 33 return dev_err_probe(&client->dev, PTR_ERR(regmap), 34 "failed to create regmap\n"); 35 36 ret = bma220_common_probe(&client->dev, regmap, client->irq); 37 if (ret) 38 return ret; 39 40 return bma220_set_wdt(regmap, BMA220_WDT_1MS); 41} 42 43static const struct of_device_id bma220_i2c_match[] = { 44 { .compatible = "bosch,bma220" }, 45 { } 46}; 47MODULE_DEVICE_TABLE(of, bma220_i2c_match); 48 49static const struct i2c_device_id bma220_i2c_id[] = { 50 { "bma220" }, 51 { } 52}; 53MODULE_DEVICE_TABLE(i2c, bma220_i2c_id); 54 55static struct i2c_driver bma220_i2c_driver = { 56 .driver = { 57 .name = "bma220_i2c", 58 .pm = pm_sleep_ptr(&bma220_pm_ops), 59 .of_match_table = bma220_i2c_match, 60 }, 61 .probe = bma220_i2c_probe, 62 .id_table = bma220_i2c_id, 63}; 64module_i2c_driver(bma220_i2c_driver); 65 66MODULE_AUTHOR("Petre Rodan <petre.rodan@subdimension.ro>"); 67MODULE_DESCRIPTION("Bosch triaxial acceleration sensor i2c driver"); 68MODULE_LICENSE("GPL"); 69MODULE_IMPORT_NS("IIO_BOSCH_BMA220");