70 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Driver for NXP Fxas21002c Gyroscope - SPI4 *5 * Copyright (C) 2019 Linaro Ltd.6 */7 8#include <linux/err.h>9#include <linux/mod_devicetable.h>10#include <linux/module.h>11#include <linux/regmap.h>12#include <linux/spi/spi.h>13 14#include "fxas21002c.h"15 16static const struct regmap_config fxas21002c_regmap_spi_conf = {17 .reg_bits = 8,18 .val_bits = 8,19 .max_register = FXAS21002C_REG_CTRL3,20};21 22static int fxas21002c_spi_probe(struct spi_device *spi)23{24 const struct spi_device_id *id = spi_get_device_id(spi);25 struct regmap *regmap;26 27 regmap = devm_regmap_init_spi(spi, &fxas21002c_regmap_spi_conf);28 if (IS_ERR(regmap)) {29 dev_err(&spi->dev, "Failed to register spi regmap: %ld\n",30 PTR_ERR(regmap));31 return PTR_ERR(regmap);32 }33 34 return fxas21002c_core_probe(&spi->dev, regmap, spi->irq, id->name);35}36 37static void fxas21002c_spi_remove(struct spi_device *spi)38{39 fxas21002c_core_remove(&spi->dev);40}41 42static const struct spi_device_id fxas21002c_spi_id[] = {43 { "fxas21002c", 0 },44 { }45};46MODULE_DEVICE_TABLE(spi, fxas21002c_spi_id);47 48static const struct of_device_id fxas21002c_spi_of_match[] = {49 { .compatible = "nxp,fxas21002c", },50 { }51};52MODULE_DEVICE_TABLE(of, fxas21002c_spi_of_match);53 54static struct spi_driver fxas21002c_spi_driver = {55 .driver = {56 .name = "fxas21002c_spi",57 .pm = pm_ptr(&fxas21002c_pm_ops),58 .of_match_table = fxas21002c_spi_of_match,59 },60 .probe = fxas21002c_spi_probe,61 .remove = fxas21002c_spi_remove,62 .id_table = fxas21002c_spi_id,63};64module_spi_driver(fxas21002c_spi_driver);65 66MODULE_AUTHOR("Rui Miguel Silva <rui.silva@linaro.org>");67MODULE_LICENSE("GPL v2");68MODULE_DESCRIPTION("FXAS21002C SPI Gyro driver");69MODULE_IMPORT_NS(IIO_FXAS21002C);70