drivers/iio/adc/ad7091r-base.h

Source file repositories/reference/linux-study-clean/drivers/iio/adc/ad7091r-base.h

File Facts

System
Linux kernel
Corpus path
drivers/iio/adc/ad7091r-base.h
Extension
.h
Size
2842 bytes
Lines
100
Domain
Driver Families
Bucket
drivers/iio
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct ad7091r_state {
	struct device *dev;
	struct regmap *map;
	struct gpio_desc *convst_gpio;
	struct gpio_desc *reset_gpio;
	struct regulator *vref;
	const struct ad7091r_chip_info *chip_info;
	enum ad7091r_mode mode;
	struct mutex lock; /*lock to prevent concurrent reads */
	__be16 tx_buf __aligned(IIO_DMA_MINALIGN);
	__be16 rx_buf;
};

struct ad7091r_chip_info {
	const char *name;
	unsigned int num_channels;
	const struct iio_chan_spec *channels;
	unsigned int vref_mV;
	unsigned int (*reg_result_chan_id)(unsigned int val);
	int (*set_mode)(struct ad7091r_state *st, enum ad7091r_mode mode);
};

struct ad7091r_init_info {
	const struct ad7091r_chip_info *info_irq;
	const struct ad7091r_chip_info *info_no_irq;
	const struct regmap_config *regmap_config;
	void (*init_adc_regmap)(struct ad7091r_state *st,
				const struct regmap_config *regmap_conf);
	int (*setup)(struct ad7091r_state *st);
};

extern const struct iio_event_spec ad7091r_events[3];

int ad7091r_probe(struct device *dev, const struct ad7091r_init_info *init_info,
		  int irq);

bool ad7091r_volatile_reg(struct device *dev, unsigned int reg);
bool ad7091r_writeable_reg(struct device *dev, unsigned int reg);

#endif /* __DRIVERS_IIO_ADC_AD7091R_BASE_H__ */

Annotation

Implementation Notes