brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 5cb263e Raw
77 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * STMicroelectronics hts221 i2c driver4 *5 * Copyright 2016 STMicroelectronics Inc.6 *7 * Lorenzo Bianconi <lorenzo.bianconi@st.com>8 */9 10#include <linux/kernel.h>11#include <linux/module.h>12#include <linux/mod_devicetable.h>13#include <linux/i2c.h>14#include <linux/slab.h>15#include <linux/regmap.h>16 17#include "hts221.h"18 19#define HTS221_I2C_AUTO_INCREMENT	BIT(7)20 21static const struct regmap_config hts221_i2c_regmap_config = {22	.reg_bits = 8,23	.val_bits = 8,24	.write_flag_mask = HTS221_I2C_AUTO_INCREMENT,25	.read_flag_mask = HTS221_I2C_AUTO_INCREMENT,26};27 28static int hts221_i2c_probe(struct i2c_client *client)29{30	struct regmap *regmap;31 32	regmap = devm_regmap_init_i2c(client, &hts221_i2c_regmap_config);33	if (IS_ERR(regmap)) {34		dev_err(&client->dev, "Failed to register i2c regmap %ld\n",35			PTR_ERR(regmap));36		return PTR_ERR(regmap);37	}38 39	return hts221_probe(&client->dev, client->irq,40			    client->name, regmap);41}42 43static const struct acpi_device_id hts221_acpi_match[] = {44	{"SMO9100", 0},45	{ },46};47MODULE_DEVICE_TABLE(acpi, hts221_acpi_match);48 49static const struct of_device_id hts221_i2c_of_match[] = {50	{ .compatible = "st,hts221", },51	{},52};53MODULE_DEVICE_TABLE(of, hts221_i2c_of_match);54 55static const struct i2c_device_id hts221_i2c_id_table[] = {56	{ HTS221_DEV_NAME },57	{},58};59MODULE_DEVICE_TABLE(i2c, hts221_i2c_id_table);60 61static struct i2c_driver hts221_driver = {62	.driver = {63		.name = "hts221_i2c",64		.pm = pm_sleep_ptr(&hts221_pm_ops),65		.of_match_table = hts221_i2c_of_match,66		.acpi_match_table = hts221_acpi_match,67	},68	.probe = hts221_i2c_probe,69	.id_table = hts221_i2c_id_table,70};71module_i2c_driver(hts221_driver);72 73MODULE_AUTHOR("Lorenzo Bianconi <lorenzo.bianconi@st.com>");74MODULE_DESCRIPTION("STMicroelectronics hts221 i2c driver");75MODULE_LICENSE("GPL v2");76MODULE_IMPORT_NS(IIO_HTS221);77