/*
 * Copyright 2024 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_CODEC_WM8904_H_
#define ZEPHYR_INCLUDE_CODEC_WM8904_H_

/*******************************************************************************
 * Definitions
 ******************************************************************************/

#define WM8904_REG_RESET                    (0x00)
#define WM8904_REG_ANALOG_ADC_0             (0x0A)
#define WM8904_REG_POWER_MGMT_0             (0x0C)
#define WM8904_REG_POWER_MGMT_2             (0x0E)
#define WM8904_REG_POWER_MGMT_3             (0x0F)
#define WM8904_REG_POWER_MGMT_6             (0x12)
#define WM8904_REG_CLK_RATES_0              (0x14)
#define WM8904_REG_CLK_RATES_1              (0x15)
#define WM8904_REG_CLK_RATES_2              (0x16)
#define WM8904_REG_AUDIO_IF_0               (0x18)
#define WM8904_REG_AUDIO_IF_1               (0x19)
#define WM8904_REG_AUDIO_IF_2               (0x1A)
#define WM8904_REG_AUDIO_IF_3               (0x1B)
#define WM8904_REG_DAC_DIG_1                (0x21)
#define WM8904_REG_DAC_DIG_0                (0x27)
#define WM8904_REG_ANALOG_LEFT_IN_0         (0x2C)
#define WM8904_REG_ANALOG_RIGHT_IN_0        (0x2D)
#define WM8904_REG_ANALOG_LEFT_IN_1         (0x2E)
#define WM8904_REG_ANALOG_RIGHT_IN_1        (0x2F)
#define WM8904_REG_ANALOG_OUT1_LEFT         (0x39)
#define WM8904_REG_ANALOG_OUT1_RIGHT        (0x3A)
#define WM8904_REG_ANALOG_OUT12_ZC          (0x3D)
#define WM8904_REG_DC_SERVO_0               (0x43)
#define WM8904_REG_ANALOG_HP_0              (0x5A)
#define WM8904_REG_CHRG_PUMP_0              (0x62)
#define WM8904_REG_CLS_W_0                  (0x68)
#define WM8904_REG_WRT_SEQUENCER_0          (0x6C)
#define WM8904_REG_WRT_SEQUENCER_3          (0x6F)
#define WM8904_REG_WRT_SEQUENCER_4          (0x70)
#define WM8904_REG_DAC_DIGITAL_VOLUME_LEFT  (0x1E)
#define WM8904_REG_DAC_DIGITAL_VOLUME_RIGHT (0x1F)
#define WM8904_REG_ADC_DIGITAL_VOLUME_LEFT  (0x24)
#define WM8904_REG_ADC_DIGITAL_VOLUME_RIGHT (0x25)
#define WM8904_REG_ANALOG_OUT2_LEFT         (0x3B)
#define WM8904_REG_ANALOG_OUT2_RIGHT        (0x3C)
#define WM8904_REG_GPIO_CONTROL_4           (0x7C)
/* FLL control register */
#define WM8904_REG_FLL_CONTROL_1 (0x74)
#define WM8904_REG_FLL_CONTROL_2 (0x75)
#define WM8904_REG_FLL_CONTROL_3 (0x76)
#define WM8904_REG_FLL_CONTROL_4 (0x77)
#define WM8904_REG_FLL_CONTROL_5 (0x78)
/* GPIO control register */
#define WM8904_REG_GPIO_CONTROL_1 (0x79)
#define WM8904_REG_GPIO_CONTROL_2 (0x7A)
#define WM8904_REG_GPIO_CONTROL_3 (0x7B)
#define WM8904_REG_GPIO_CONTROL_4 (0x7C)
/* fll nco */
#define WM8904_REG_FLL_NCO_TEST_0 (0xF7U)
#define WM8904_REG_FLL_NCO_TEST_1 (0xF8U)

#define WM8904_OUTPUT_VOLUME_MIN (0b000000)
#define WM8904_OUTPUT_VOLUME_MAX (0b111111)
#define WM8904_OUTPUT_VOLUME_DEFAULT (0b101101)
#define WM8904_INPUT_VOLUME_MIN (0b00000)
#define WM8904_INPUT_VOLUME_MAX (0b11111)
#define WM8904_INPUT_VOLUME_DEFAULT (0b00101)

/**
 * WM8904_ANALOG_OUT1_LEFT, WM8904_ANALOG_OUT1_RIGHT (headphone outs),
 * WM8904_ANALOG_OUT2_LEFT, WM8904_ANALOG_OUT2_RIGHT (line outs):
 * [8]   - MUTE: Output mute
 * [7]   - VU: Volume update, works for entire channel pair
 * [6]   - ZC: Zero-crossing enable
 * [5:0] - VOL: 6-bit volume value
 */
#define WM8904_REGVAL_OUT_VOL(mute, vu, zc, vol) \
	(((mute & 0b1) << 8) | (vu & 0b1) << 7 | (zc & 0b1) << 6 | (vol & 0b000111111))
#define WM8904_REGMASK_OUT_MUTE	0b100000000
#define WM8904_REGMASK_OUT_VU	0b010000000
#define WM8904_REGMASK_OUT_ZC	0b001000000
#define WM8904_REGMASK_OUT_VOL	0b000111111

/**
 * WM8904_ANALOG_LEFT_IN_0, WM8904_ANALOG_RIGHT_IN_0:
 * [7]   - MUTE: Input mute
 * [4:0] - VOL: 5 bit volume value
 */
#define WM8904_REGVAL_IN_VOL(mute, vol) \
	((mute & 0b1) << 7 | (vol & 0b00011111))
#define WM8904_REGMASK_IN_MUTE		0b10000000
#define WM8904_REGMASK_IN_VOLUME	0b00011111

/**
 * WM8904_ANALOG_LEFT_IN_1, WM8904_ANALOG_RIGHT_IN_1:
 * [6]   - INx_CM_ENA: Common-mode rejection enable (N/A for single-mode)
 * [5:4] - x_IP_SEL_N: Inverting input selection
 * [3:2] - x_IP_SEL_P: Non-inverting input selection
 * [1:0] - x_MODE: Input mode
 */
#define WM8904_REGVAL_INSEL(cm, nin, pin, mode) \
	(((cm) & 0b1) << 6) | (((nin) & 0b11) << 4)
#define WM8904_REGMASK_INSEL_CMENA		0b01000000
#define WM8904_REGMASK_INSEL_IP_SEL_N	0b00110000
#define WM8904_REGMASK_INSEL_IP_SEL_P	0b00001100
#define WM8904_REGMASK_INSEL_MODE		0b00000011


/*!@brief WM8904 maximum volume */
#define WM8904_MAP_HEADPHONE_LINEOUT_MAX_VOLUME 0x3FU
#define WM8904_DAC_MAX_VOLUME                   0xC0U


/*! @brief The audio data transfer protocol. */
typedef enum _wm8904_protocol {
	kWM8904_ProtocolI2S            = 0x2,            /*!< I2S type */
	kWM8904_ProtocolLeftJustified  = 0x1,            /*!< Left justified mode */
	kWM8904_ProtocolRightJustified = 0x0,            /*!< Right justified mode */
	kWM8904_ProtocolPCMA           = 0x3,            /*!< PCM A mode */
	kWM8904_ProtocolPCMB           = 0x3 | (1 << 4), /*!< PCM B mode */
} wm8904_protocol_t;

/*! @brief The SYSCLK / fs ratio. */
typedef enum _wm8904_fs_ratio {
	kWM8904_FsRatio64X   = 0x0, /*!< SYSCLK is   64 * sample rate * frame width */
	kWM8904_FsRatio128X  = 0x1, /*!< SYSCLK is  128 * sample rate * frame width */
	kWM8904_FsRatio192X  = 0x2, /*!< SYSCLK is  192 * sample rate * frame width */
	kWM8904_FsRatio256X  = 0x3, /*!< SYSCLK is  256 * sample rate * frame width */
	kWM8904_FsRatio384X  = 0x4, /*!< SYSCLK is  384 * sample rate * frame width */
	kWM8904_FsRatio512X  = 0x5, /*!< SYSCLK is  512 * sample rate * frame width */
	kWM8904_FsRatio768X  = 0x6, /*!< SYSCLK is  768 * sample rate * frame width */
	kWM8904_FsRatio1024X = 0x7, /*!< SYSCLK is 1024 * sample rate * frame width */
	kWM8904_FsRatio1408X = 0x8, /*!< SYSCLK is 1408 * sample rate * frame width */
	kWM8904_FsRatio1536X = 0x9  /*!< SYSCLK is 1536 * sample rate * frame width */
} wm8904_fs_ratio_t;


/*! @brief Sample rate. */
typedef enum _wm8904_sample_rate {
	kWM8904_SampleRate8kHz    = 0x0, /*!< 8 kHz */
	kWM8904_SampleRate12kHz   = 0x1, /*!< 12kHz */
	kWM8904_SampleRate16kHz   = 0x2, /*!< 16kHz */
	kWM8904_SampleRate24kHz   = 0x3, /*!< 24kHz */
	kWM8904_SampleRate32kHz   = 0x4, /*!< 32kHz */
	kWM8904_SampleRate48kHz   = 0x5, /*!< 48kHz */
	kWM8904_SampleRate11025Hz = 0x6, /*!< 11.025kHz */
	kWM8904_SampleRate22050Hz = 0x7, /*!< 22.05kHz */
	kWM8904_SampleRate44100Hz = 0x8  /*!< 44.1kHz */
} wm8904_sample_rate_t;

#endif /* ZEPHYR_INCLUDE_CODEC_WM8904_H_ */
