/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _SCD30_H
#define _SCD30_H

#include <linux/completion.h>
#include <linux/device.h>
#include <linux/mutex.h>
#include <linux/pm.h>
#include <linux/regulator/consumer.h>
#include <linux/types.h>

struct scd30_state;

enum scd30_cmd {
	/* start continuous measurement with pressure compensation */
	CMD_START_MEAS,
	/* stop continuous measurement */
	CMD_STOP_MEAS,
	/* set/get measurement interval */
	CMD_MEAS_INTERVAL,
	/* check whether new measurement is ready */
	CMD_MEAS_READY,
	/* get measurement */
	CMD_READ_MEAS,
	/* turn on/off automatic self calibration */
	CMD_ASC,
	/* set/get forced recalibration value */
	CMD_FRC,
	/* set/get temperature offset */
	CMD_TEMP_OFFSET,
	/* get firmware version */
	CMD_FW_VERSION,
	/* reset sensor */
	CMD_RESET,
	/*
	 * Command for altitude compensation was omitted intentionally because
	 * the same can be achieved by means of CMD_START_MEAS which takes
	 * pressure above the sea level as an argument.
	 */
};

#define SCD30_MEAS_COUNT 3

typedef int (*scd30_command_t)(struct scd30_state *state, enum scd30_cmd cmd, u16 arg,
			       void *response, int size);

struct scd30_state {
	/* serialize access to the device */
	struct mutex lock;
	struct device *dev;
	struct regulator *vdd;
	struct completion meas_ready;
	/*
	 * priv pointer is solely for serdev driver private data. We keep it
	 * here because driver_data inside dev has been already used for iio and
	 * struct serdev_device doesn't have one.
	 */
	void *priv;
	int irq;
	/*
	 * no way to retrieve current ambient pressure compensation value from
	 * the sensor so keep one around
	 */
	u16 pressure_comp;
	u16 meas_interval;
	int meas[SCD30_MEAS_COUNT];

	scd30_command_t command;
};

int scd30_suspend(struct device *dev);
int scd30_resume(struct device *dev);

static __maybe_unused SIMPLE_DEV_PM_OPS(scd30_pm_ops, scd30_suspend, scd30_resume);

int scd30_probe(struct device *dev, int irq, const char *name, void *priv, scd30_command_t command);

#endif
