cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rm3100-i2c.c (1302B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Support for PNI RM3100 3-axis geomagnetic sensor on a i2c bus.
      4 *
      5 * Copyright (C) 2018 Song Qiang <songqiang1304521@gmail.com>
      6 *
      7 * i2c slave address: 0x20 + SA1 << 1 + SA0.
      8 */
      9
     10#include <linux/i2c.h>
     11#include <linux/module.h>
     12
     13#include "rm3100.h"
     14
     15static const struct regmap_config rm3100_regmap_config = {
     16	.reg_bits = 8,
     17	.val_bits = 8,
     18
     19	.rd_table = &rm3100_readable_table,
     20	.wr_table = &rm3100_writable_table,
     21	.volatile_table = &rm3100_volatile_table,
     22
     23	.cache_type = REGCACHE_RBTREE,
     24};
     25
     26static int rm3100_probe(struct i2c_client *client)
     27{
     28	struct regmap *regmap;
     29
     30	regmap = devm_regmap_init_i2c(client, &rm3100_regmap_config);
     31	if (IS_ERR(regmap))
     32		return PTR_ERR(regmap);
     33
     34	return rm3100_common_probe(&client->dev, regmap, client->irq);
     35}
     36
     37static const struct of_device_id rm3100_dt_match[] = {
     38	{ .compatible = "pni,rm3100", },
     39	{ }
     40};
     41MODULE_DEVICE_TABLE(of, rm3100_dt_match);
     42
     43static struct i2c_driver rm3100_driver = {
     44	.driver = {
     45		.name = "rm3100-i2c",
     46		.of_match_table = rm3100_dt_match,
     47	},
     48	.probe_new = rm3100_probe,
     49};
     50module_i2c_driver(rm3100_driver);
     51
     52MODULE_AUTHOR("Song Qiang <songqiang1304521@gmail.com>");
     53MODULE_DESCRIPTION("PNI RM3100 3-axis magnetometer i2c driver");
     54MODULE_LICENSE("GPL v2");
     55MODULE_IMPORT_NS(IIO_RM3100);