linux/drivers/iio/addac/stx104.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * IIO driver for the Apex Embedded Systems STX104
 * Copyright (C) 2016 William Breathitt Gray
 */
#include <linux/bitfield.h>
#include <linux/bits.h>
#include <linux/device.h>
#include <linux/err.h>
#include <linux/gpio/regmap.h>
#include <linux/i8254.h>
#include <linux/iio/iio.h>
#include <linux/iio/types.h>
#include <linux/isa.h>
#include <linux/kernel.h>
#include <linux/limits.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/mutex.h>
#include <linux/regmap.h>
#include <linux/types.h>

#define STX104_OUT_CHAN(chan)
#define STX104_IN_CHAN(chan, diff)

#define STX104_NUM_OUT_CHAN

#define STX104_EXTENT

static unsigned int base[max_num_isa_dev(STX104_EXTENT)];
static unsigned int num_stx104;
module_param_hw_array(base, uint, ioport, &num_stx104, 0);
MODULE_PARM_DESC();

#define STX104_AIO_BASE
#define STX104_SOFTWARE_STROBE
#define STX104_ADC_DATA
#define STX104_ADC_CHANNEL
#define STX104_DIO_REG
#define STX104_DAC_BASE
#define STX104_ADC_STATUS
#define STX104_ADC_CONTROL
#define STX104_ADC_CONFIGURATION
#define STX104_I8254_BASE

#define STX104_AIO_DATA_STRIDE
#define STX104_DAC_OFFSET(_channel)

/* ADC Channel */
#define STX104_FC
#define STX104_LC
#define STX104_SINGLE_CHANNEL(_channel)

/* ADC Status */
#define STX104_SD
#define STX104_CNV
#define STX104_DIFFERENTIAL

/* ADC Control */
#define STX104_ALSS
#define STX104_SOFTWARE_TRIGGER

/* ADC Configuration */
#define STX104_GAIN
#define STX104_ADBU
#define STX104_RBK
#define STX104_BIPOLAR
#define STX104_GAIN_X1
#define STX104_GAIN_X2
#define STX104_GAIN_X4
#define STX104_GAIN_X8

/**
 * struct stx104_iio - IIO device private data structure
 * @lock: synchronization lock to prevent I/O race conditions
 * @aio_data_map: Regmap for analog I/O data
 * @aio_ctl_map: Regmap for analog I/O control
 */
struct stx104_iio {};

static const struct regmap_range aio_ctl_wr_ranges[] =;
static const struct regmap_range aio_ctl_rd_ranges[] =;
static const struct regmap_range aio_ctl_volatile_ranges[] =;
static const struct regmap_access_table aio_ctl_wr_table =;
static const struct regmap_access_table aio_ctl_rd_table =;
static const struct regmap_access_table aio_ctl_volatile_table =;

static const struct regmap_config aio_ctl_regmap_config =;

static const struct regmap_range aio_data_wr_ranges[] =;
static const struct regmap_range aio_data_rd_ranges[] =;
static const struct regmap_access_table aio_data_wr_table =;
static const struct regmap_access_table aio_data_rd_table =;

static const struct regmap_config aio_data_regmap_config =;

static const struct regmap_config dio_regmap_config =;

static const struct regmap_range pit_wr_ranges[] =;
static const struct regmap_range pit_rd_ranges[] =;
static const struct regmap_access_table pit_wr_table =;
static const struct regmap_access_table pit_rd_table =;

static const struct regmap_config pit_regmap_config =;

static int stx104_read_raw(struct iio_dev *indio_dev,
	struct iio_chan_spec const *chan, int *val, int *val2, long mask)
{}

static int stx104_write_raw(struct iio_dev *indio_dev,
	struct iio_chan_spec const *chan, int val, int val2, long mask)
{}

static const struct iio_info stx104_info =;

/* single-ended input channels configuration */
static const struct iio_chan_spec stx104_channels_sing[] =;
/* differential input channels configuration */
static const struct iio_chan_spec stx104_channels_diff[] =;

static int stx104_reg_mask_xlate(struct gpio_regmap *const gpio, const unsigned int base,
				 unsigned int offset, unsigned int *const reg,
				 unsigned int *const mask)
{}

#define STX104_NGPIO
static const char *stx104_names[STX104_NGPIO] =;

static int bank_select_i8254(struct regmap *map)
{}

static int stx104_init_hw(struct stx104_iio *const priv)
{}

static int stx104_probe(struct device *dev, unsigned int id)
{}

static struct isa_driver stx104_driver =;

module_isa_driver(stx104_driver, num_stx104);

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_IMPORT_NS();