/*
 * Copyright (c) 2020 arithmetics.io
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_DRIVERS_SENSOR_FDC2X1X_FDC2X1X_H_
#define ZEPHYR_DRIVERS_SENSOR_FDC2X1X_FDC2X1X_H_

#include <zephyr/drivers/sensor.h>
#include <zephyr/drivers/i2c.h>
#include <zephyr/drivers/gpio.h>

#define PI              (3.14159265)

/*
 * FDC2X1X registers definition
 */
#define FDC2X1X_DATA_CH0                0x00
#define FDC2X1X_DATA_LSB_CH0            0x01
#define FDC2X1X_DATA_CH1                0x02
#define FDC2X1X_DATA_LSB_CH1            0x03
#define FDC2X1X_DATA_CH2                0x04
#define FDC2X1X_DATA_LSB_CH2            0x05
#define FDC2X1X_DATA_CH3                0x06
#define FDC2X1X_DATA_LSB_CH3            0x07
#define FDC2X1X_RCOUNT_CH0              0x08
#define FDC2X1X_RCOUNT_CH1              0x09
#define FDC2X1X_RCOUNT_CH2              0x0A
#define FDC2X1X_RCOUNT_CH3              0x0B
#define FDC2X1X_OFFSET_CH0              0x0C
#define FDC2X1X_OFFSET_CH1              0x0D
#define FDC2X1X_OFFSET_CH2              0x0E
#define FDC2X1X_OFFSET_CH3              0x0F
#define FDC2X1X_SETTLECOUNT_CH0         0x10
#define FDC2X1X_SETTLECOUNT_CH1         0x11
#define FDC2X1X_SETTLECOUNT_CH2         0x12
#define FDC2X1X_SETTLECOUNT_CH3         0x13
#define FDC2X1X_CLOCK_DIVIDERS_CH0      0x14
#define FDC2X1X_CLOCK_DIVIDERS_CH1      0x15
#define FDC2X1X_CLOCK_DIVIDERS_CH2      0x16
#define FDC2X1X_CLOCK_DIVIDERS_CH3      0x17
#define FDC2X1X_STATUS                  0x18
#define FDC2X1X_ERROR_CONFIG            0x19
#define FDC2X1X_CONFIG                  0x1A
#define FDC2X1X_MUX_CONFIG              0x1B
#define FDC2X1X_RESET_DEV               0x1C
#define FDC2X1X_DRIVE_CURRENT_CH0       0x1E
#define FDC2X1X_DRIVE_CURRENT_CH1       0x1F
#define FDC2X1X_DRIVE_CURRENT_CH2       0x20
#define FDC2X1X_DRIVE_CURRENT_CH3       0x21
#define FDC2X1X_MANUFACTURER_ID         0x7E
#define FDC2X1X_DEVICE_ID               0x7F

#define FDC2X1X_MANUFACTURER_ID_VAL     0x5449

#define FDC2X1X_DEVICE_ID_VAL_28BIT     0x3055
#define FDC2X1X_DEVICE_ID_VAL           0x3054

#define FDC2X1X_READ                    0x01u
#define FDC2X1X_REG_READ(x)             (((x & 0xFF) << 1) | FDC2X1X_READ)
#define FDC2X1X_REG_WRITE(x)            ((x & 0xFF) << 1)
#define FDC2X1X_TO_I2C_REG(x)           ((x) >> 1)

/* CLOCK_DIVIDERS_CHX Field Descriptions */
#define FDC2X1X_CLK_DIV_CHX_FIN_SEL_MSK             GENMASK(13, 12)
#define FDC2X1X_CLK_DIV_CHX_FIN_SEL_SET(x)          (((x) & 0x3) << 12)
#define FDC2X1X_CLK_DIV_CHX_FIN_SEL_GET(x)          (((x) >> 12) & 0x3)
#define FDC2X1X_CLK_DIV_CHX_FREF_DIV_MSK            GENMASK(9, 0)
#define FDC2X1X_CLK_DIV_CHX_FREF_DIV_SET(x)         ((x) & 0x1FF)
#define FDC2X1X_CLK_DIV_CHX_FREF_DIV_GET(x)         (((x) >> 0) & 0x1FF)

/* STATUS Field Descriptions */
#define FDC2X1X_STATUS_ERR_CHAN(x)                  (((x) >> 14) & 0x3)
#define FDC2X1X_STATUS_ERR_WD(x)                    (((x) >> 11) & 0x1)
#define FDC2X1X_STATUS_ERR_AHW(x)                   (((x) >> 10) & 0x1)
#define FDC2X1X_STATUS_ERR_ALW(x)                   (((x) >> 9) & 0x1)
#define FDC2X1X_STATUS_DRDY(x)                      (((x) >> 6) & 0x1)
#define FDC2X1X_STATUS_CH0_UNREADCONV_RDY(x)        (((x) >> 3) & 0x1)
#define FDC2X1X_STATUS_CH1_UNREADCONV_RDY(x)        (((x) >> 2) & 0x1)
#define FDC2X1X_STATUS_CH2_UNREADCONV_RDY(x)        (((x) >> 1) & 0x1)
#define FDC2X1X_STATUS_CH3_UNREADCONV_RDY(x)        (((x) >> 0) & 0x1)

/* ERROR_CONFIG */
#define FDC2X1X_ERROR_CONFIG_WD_ERR2OUT_MSK         BIT(13)
#define FDC2X1X_ERROR_CONFIG_WD_ERR2OUT_SET(x)      (((x) & 0x1) << 13)
#define FDC2X1X_ERROR_CONFIG_WD_ERR2OUT_GET(x)      (((x) >> 13) & 0x1)
#define FDC2X1X_ERROR_CONFIG_AH_WARN2OUT_MSK        BIT(12)
#define FDC2X1X_ERROR_CONFIG_AH_WARN2OUT_SET(x)     (((x) & 0x1) << 12)
#define FDC2X1X_ERROR_CONFIG_AH_WARN2OUT_GET(x)     (((x) >> 12) & 0x1)
#define FDC2X1X_ERROR_CONFIG_AL_WARN2OUT_MSK        BIT(11)
#define FDC2X1X_ERROR_CONFIG_AL_WARN2OUT_SET(x)     (((x) & 0x1) << 11)
#define FDC2X1X_ERROR_CONFIG_AL_WARN2OUT_GET(x)     (((x) >> 11) & 0x1)
#define FDC2X1X_ERROR_CONFIG_WD_ERR2INT_MSK         BIT(5)
#define FDC2X1X_ERROR_CONFIG_WD_ERR2INT_SET(x)      (((x) & 0x1) << 5)
#define FDC2X1X_ERROR_CONFIG_WD_ERR2INT_GET(x)      (((x) >> 5) & 0x1)
#define FDC2X1X_ERROR_CONFIG_DRDY_2INT_MSK          BIT(0)
#define FDC2X1X_ERROR_CONFIG_DRDY_2INT_SET(x)       (((x) & 0x1) << 0)
#define FDC2X1X_ERROR_CONFIG_DRDY_2INT_GET(x)       (((x) >> 0) & 0x1)

/* CONFIG Field Descriptions */
#define FDC2X1X_CFG_ACTIVE_CHAN_MSK                 GENMASK(15, 14)
#define FDC2X1X_CFG_ACTIVE_CHAN_SET(x)              (((x) & 0x3) << 14)
#define FDC2X1X_CFG_ACTIVE_CHAN_GET(x)              (((x) >> 14) & 0x3)
#define FDC2X1X_CFG_SLEEP_SET_EN_MSK                BIT(13)
#define FDC2X1X_CFG_SLEEP_SET_EN_SET(x)             (((x) & 0x1) << 13)
#define FDC2X1X_CFG_SLEEP_SET_EN_GET(x)             (((x) >> 13) & 0x1)
#define FDC2X1X_CFG_SENSOR_ACTIVATE_SEL_MSK         BIT(11)
#define FDC2X1X_CFG_SENSOR_ACTIVATE_SEL_SET(x)      (((x) & 0x1) << 11)
#define FDC2X1X_CFG_SENSOR_ACTIVATE_SEL_GET(x)      (((x) >> 11) & 0x1)
#define FDC2X1X_CFG_REF_CLK_SRC_MSK                 BIT(9)
#define FDC2X1X_CFG_REF_CLK_SRC_SET(x)              (((x) & 0x1) << 9)
#define FDC2X1X_CFG_REF_CLK_SRC_GET(x)              (((x) >> 9) & 0x1)
#define FDC2X1X_CFG_INTB_DIS_MSK                    BIT(7)
#define FDC2X1X_CFG_INTB_DIS_SET(x)                 (((x) & 0x1) << 7)
#define FDC2X1X_CFG_INTB_DIS_GET(x)                 (((x) >> 7) & 0x1)
#define FDC2X1X_CFG_HIGH_CURRENT_DRV_MSK            BIT(6)
#define FDC2X1X_CFG_HIGH_CURRENT_DRV_SET(x)         (((x) & 0x1) << 6)
#define FDC2X1X_CFG_HIGH_CURRENT_DRV_GET(x)         (((x) >> 6) & 0x1)

/* MUX_CONFIG Field Descriptions */
#define FDC2X1X_MUX_CFG_AUTOSCAN_EN_MSK             BIT(15)
#define FDC2X1X_MUX_CFG_AUTOSCAN_EN_SET(x)          (((x) & 0x1) << 15)
#define FDC2X1X_MUX_CFG_AUTOSCAN_EN_GET(x)          (((x) >> 15) & 0x1)
#define FDC2X1X_MUX_CFG_RR_SEQUENCE_MSK             GENMASK(14, 13)
#define FDC2X1X_MUX_CFG_RR_SEQUENCE_SET(x)          (((x) & 0x3) << 13)
#define FDC2X1X_MUX_CFG_RR_SEQUENCE_GET(x)          (((x) >> 13) & 0x3)
#define FDC2X1X_MUX_CFG_DEGLITCH_MSK                GENMASK(2, 0)
#define FDC2X1X_MUX_CFG_DEGLITCH_SET(x)             ((x) & 0x7)
#define FDC2X1X_MUX_CFG_DEGLITCH_GET(x)             (((x) >> 0) & 0x7)

/* RESET_DEV Field Descriptions */
#define FDC2X1X_RESET_DEV_MSK                       BIT(15)
#define FDC2X1X_RESET_DEV_SET(x)                    (((x) & 0x1) << 15)
#define FDC2X1X_RESET_DEV_OUTPUT_GAIN_MSK           GENMASK(10, 9)
#define FDC2X1X_RESET_DEV_OUTPUT_GAIN_SET(x)        (((x) & 0x3) << 9)
#define FDC2X1X_RESET_DEV_OUTPUT_GAIN_GET(x)        (((x) >> 9) & 0x3)

/* DRIVE_CURRENT_CHX Field Descriptions */
#define FDC2X1X_DRV_CURRENT_CHX_IDRIVE_MSK          GENMASK(15, 11)
#define FDC2X1X_DRV_CURRENT_CHX_IDRIVE_SET(x)       (((x) & 0x1F) << 11)
#define FDC2X1X_DRV_CURRENT_CHX_IDRIVE_GET(x)       (((x) >> 11) & 0x1F)

enum fdc2x1x_op_mode {
	FDC2X1X_ACTIVE_MODE,
	FDC2X1X_SLEEP_MODE
};

struct fdc2x1x_data {
	bool fdc221x;

#ifdef CONFIG_FDC2X1X_TRIGGER
	struct gpio_callback gpio_cb;
	uint16_t int_config;

	struct k_mutex trigger_mutex;
	sensor_trigger_handler_t drdy_handler;
	const struct sensor_trigger *drdy_trigger;
	const struct device *dev;

#ifdef CONFIG_FDC2X1X_TRIGGER_OWN_THREAD
	K_THREAD_STACK_MEMBER(thread_stack, CONFIG_FDC2X1X_THREAD_STACK_SIZE);
	struct k_sem gpio_sem;
	struct k_thread thread;
#elif CONFIG_FDC2X1X_TRIGGER_GLOBAL_THREAD
	struct k_work work;
#endif
#endif /* CONFIG_FDC2X1X_TRIGGER */

	uint32_t *channel_buf;
};

struct fdc2x1x_chx_config {
	uint16_t rcount;
	uint16_t offset;
	uint16_t settle_count;
	uint16_t fref_divider;
	uint8_t idrive;
	uint8_t fin_sel;
	uint8_t inductance;
};

struct fdc2x1x_config {
	struct i2c_dt_spec i2c;
	struct gpio_dt_spec sd_gpio;

#ifdef CONFIG_FDC2X1X_TRIGGER
	struct gpio_dt_spec intb_gpio;
#endif

	bool fdc2x14;
	uint8_t num_channels;

	/* Device Settings */
	bool autoscan_en;
	uint8_t rr_sequence;
	uint8_t active_channel;
	uint8_t output_gain;
	uint8_t deglitch;
	uint8_t sensor_activate_sel;
	uint8_t clk_src;
	uint8_t current_drv;
	uint16_t fref;

	/* Channel Settings */
	const struct fdc2x1x_chx_config *ch_cfg;
};

int fdc2x1x_set_interrupt_pin(const struct device *dev, bool enable);
int fdc2x1x_get_status(const struct device *dev, uint16_t *status);
int fdc2x1x_reg_write_mask(const struct device *dev, uint8_t reg_addr,
			   uint16_t mask, uint16_t data);

#ifdef CONFIG_FDC2X1X_TRIGGER

int fdc2x1x_trigger_set(const struct device *dev,
			const struct sensor_trigger *trig,
			sensor_trigger_handler_t handler);

int fdc2x1x_init_interrupt(const struct device *dev);
#endif  /* CONFIG_FDC2X1X_TRIGGER */

#endif  /* ZEPHYR_DRIVERS_SENSOR_FDC2X1X_FDC2X1X_H_ */
