linux/drivers/iio/adc/sd_adc_modulator.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * Generic sigma delta modulator driver
   4 *
   5 * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
   6 * Author: Arnaud Pouliquen <arnaud.pouliquen@st.com>.
   7 */
   8
   9#include <linux/iio/iio.h>
  10#include <linux/iio/triggered_buffer.h>
  11#include <linux/module.h>
  12#include <linux/mod_devicetable.h>
  13#include <linux/platform_device.h>
  14
  15static const struct iio_info iio_sd_mod_iio_info;
  16
  17static const struct iio_chan_spec iio_sd_mod_ch = {
  18        .type = IIO_VOLTAGE,
  19        .indexed = 1,
  20        .scan_type = {
  21                .sign = 'u',
  22                .realbits = 1,
  23                .shift = 0,
  24        },
  25};
  26
  27static int iio_sd_mod_probe(struct platform_device *pdev)
  28{
  29        struct device *dev = &pdev->dev;
  30        struct iio_dev *iio;
  31
  32        iio = devm_iio_device_alloc(dev, 0);
  33        if (!iio)
  34                return -ENOMEM;
  35
  36        iio->name = dev_name(dev);
  37        iio->info = &iio_sd_mod_iio_info;
  38        iio->modes = INDIO_BUFFER_HARDWARE;
  39
  40        iio->num_channels = 1;
  41        iio->channels = &iio_sd_mod_ch;
  42
  43        platform_set_drvdata(pdev, iio);
  44
  45        return devm_iio_device_register(&pdev->dev, iio);
  46}
  47
  48static const struct of_device_id sd_adc_of_match[] = {
  49        { .compatible = "sd-modulator" },
  50        { .compatible = "ads1201" },
  51        { }
  52};
  53MODULE_DEVICE_TABLE(of, sd_adc_of_match);
  54
  55static struct platform_driver iio_sd_mod_adc = {
  56        .driver = {
  57                .name = "iio_sd_adc_mod",
  58                .of_match_table = sd_adc_of_match,
  59        },
  60        .probe = iio_sd_mod_probe,
  61};
  62
  63module_platform_driver(iio_sd_mod_adc);
  64
  65MODULE_DESCRIPTION("Basic sigma delta modulator");
  66MODULE_AUTHOR("Arnaud Pouliquen <arnaud.pouliquen@st.com>");
  67MODULE_LICENSE("GPL v2");
  68