/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#ifndef __QBG_IIO_H__
#define __QBG_IIO_H__

struct qbg_iio_channels {
	const char *datasheet_name;
	int channel_num;
	enum iio_chan_type type;
	long info_mask;
};

#define QBG_IIO_CHAN(_name, _num, _type, _mask)		\
	{						\
		.datasheet_name = _name,		\
		.channel_num = _num,			\
		.type = _type,				\
		.info_mask = _mask,			\
	},

#define QBG_CHAN_ENERGY(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_ENERGY,		\
		BIT(IIO_CHAN_INFO_PROCESSED))

#define QBG_CHAN_TEMP(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_TEMP,		\
		BIT(IIO_CHAN_INFO_PROCESSED))

#define QBG_CHAN_VOLT(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_VOLTAGE,		\
		BIT(IIO_CHAN_INFO_PROCESSED))

#define QBG_CHAN_TSTAMP(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_TIMESTAMP,	\
		BIT(IIO_CHAN_INFO_PROCESSED))

#define QBG_CHAN_RES(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_RESISTANCE,	\
		BIT(IIO_CHAN_INFO_PROCESSED))

#define QBG_CHAN_INDEX(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_INDEX,		\
		BIT(IIO_CHAN_INFO_PROCESSED))

#define QBG_CHAN_CUR(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_CURRENT,		\
		BIT(IIO_CHAN_INFO_PROCESSED))

#define QBG_CHAN_COUNT(_name, _num)			\
	QBG_IIO_CHAN(_name, _num, IIO_COUNT,		\
		BIT(IIO_CHAN_INFO_PROCESSED))

enum qbg_ext_iio_channels {
	RECHARGE_SOC,
	FORCE_RECHARGE,
	CHARGE_DONE,
	SYS_SOC,
};

static const char * const qbg_ext_iio_chan_name[] = {
	[RECHARGE_SOC]			= "recharge_soc",
	[FORCE_RECHARGE]		= "force_recharge",
	[CHARGE_DONE]			= "charge_done",
	[SYS_SOC]			= "sys_soc",
};

#endif /* __QBG_IIO_H__ */
