include/linux/mfd/da9052/da9052.h

Source file repositories/reference/linux-study-clean/include/linux/mfd/da9052/da9052.h

File Facts

System
Linux kernel
Corpus path
include/linux/mfd/da9052/da9052.h
Extension
.h
Size
4805 bytes
Lines
221
Domain
Core OS
Bucket
Core Kernel Interface
Inferred role
Core OS: implementation source
Status
source implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

struct da9052 {
	struct device *dev;
	struct regmap *regmap;

	struct mutex auxadc_lock;
	struct completion done;

	int irq_base;
	struct regmap_irq_chip_data *irq_data;
	u8 chip_id;

	int chip_irq;

	int fault_log;

	/* SOC I/O transfer related fixes for DA9052/53 */
	int (*fix_io) (struct da9052 *da9052, unsigned char reg);
};

/* ADC API */
int da9052_adc_manual_read(struct da9052 *da9052, unsigned char channel);
int da9052_adc_read_temp(struct da9052 *da9052);

/* Device I/O API */
static inline int da9052_reg_read(struct da9052 *da9052, unsigned char reg)
{
	int val, ret;

	ret = regmap_read(da9052->regmap, reg, &val);
	if (ret < 0)
		return ret;

	if (da9052->fix_io) {
		ret = da9052->fix_io(da9052, reg);
		if (ret < 0)
			return ret;
	}

	return val;
}

static inline int da9052_reg_write(struct da9052 *da9052, unsigned char reg,
				    unsigned char val)
{
	int ret;

	ret = regmap_write(da9052->regmap, reg, val);
	if (ret < 0)
		return ret;

	if (da9052->fix_io) {
		ret = da9052->fix_io(da9052, reg);
		if (ret < 0)
			return ret;
	}

	return ret;
}

static inline int da9052_group_read(struct da9052 *da9052, unsigned char reg,
				     unsigned reg_cnt, unsigned char *val)
{
	int ret;
	unsigned int tmp;
	int i;

	for (i = 0; i < reg_cnt; i++) {
		ret = regmap_read(da9052->regmap, reg + i, &tmp);
		val[i] = (unsigned char)tmp;
		if (ret < 0)
			return ret;
	}

	if (da9052->fix_io) {
		ret = da9052->fix_io(da9052, reg);
		if (ret < 0)
			return ret;
	}

	return ret;
}

static inline int da9052_group_write(struct da9052 *da9052, unsigned char reg,
				      unsigned reg_cnt, unsigned char *val)
{
	int ret = 0;
	int i;

	for (i = 0; i < reg_cnt; i++) {
		ret = regmap_write(da9052->regmap, reg + i, val[i]);

Annotation

Implementation Notes