/*
 * ac108.h --  ac108 ALSA Soc Audio driver
 *
 * Author: panjunwen
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 */

#ifndef _AC108_H
#define _AC108_H


/*** AC108 Codec Register Define***/

//Chip Reset
#define CHIP_RST			0x00
#define CHIP_RST_VAL		0x12

//Power Control
#define PWR_CTRL1			0x01
#define PWR_CTRL2			0x02
#define PWR_CTRL3			0x03
#define PWR_CTRL4			0x04
#define PWR_CTRL5			0x05
#define PWR_CTRL6			0x06
#define PWR_CTRL7			0x07
#define PWR_CTRL8			0x08
#define PWR_CTRL9			0x09

//PLL Configure Control
#define PLL_CTRL1			0x10
#define PLL_CTRL2			0x11
#define PLL_CTRL3			0x12
#define PLL_CTRL4			0x13
#define PLL_CTRL5			0x14
#define PLL_CTRL6			0x16
#define PLL_CTRL7			0x17
#define PLL_LOCK_CTRL		0x18

//System Clock Control
#define SYSCLK_CTRL			0x20
#define MOD_CLK_EN			0x21
#define MOD_RST_CTRL		0x22
#define DSM_CLK_CTRL		0x25

//I2S Common Control
#define I2S_CTRL			0x30
#define I2S_BCLK_CTRL		0x31
#define I2S_LRCK_CTRL1		0x32
#define I2S_LRCK_CTRL2		0x33
#define I2S_FMT_CTRL1		0x34
#define I2S_FMT_CTRL2		0x35
#define I2S_FMT_CTRL3		0x36

//I2S TX1 Control
#define I2S_TX1_CTRL1		0x38
#define I2S_TX1_CTRL2		0x39
#define I2S_TX1_CTRL3		0x3A
#define I2S_TX1_CHMP_CTRL1	0x3C
#define I2S_TX1_CHMP_CTRL2	0x3D
#define I2S_TX1_CHMP_CTRL3	0x3E
#define I2S_TX1_CHMP_CTRL4	0x3F

//I2S TX2 Control
#define I2S_TX2_CTRL1		0x40
#define I2S_TX2_CTRL2		0x41
#define I2S_TX2_CTRL3		0x42
#define I2S_TX2_CHMP_CTRL1	0x44
#define I2S_TX2_CHMP_CTRL2	0x45
#define I2S_TX2_CHMP_CTRL3	0x46
#define I2S_TX2_CHMP_CTRL4	0x47

//I2S RX1 Control
#define I2S_RX1_CTRL1		0x50
#define I2S_RX1_CHMP_CTRL1	0x54
#define I2S_RX1_CHMP_CTRL2	0x55
#define I2S_RX1_CHMP_CTRL3	0x56
#define I2S_RX1_CHMP_CTRL4	0x57

//I2S Loopback Debug
#define I2S_LPB_DEBUG		0x58

//ADC Common Control
#define ADC_SPRC			0x60
#define ADC_DIG_EN			0x61
#define DMIC_EN				0x62
#define ADC_DSR				0x63
#define ADC_FIR				0x64
#define ADC_DDT_CTRL		0x65

//HPF Control
#define HPF_EN				0x66
#define HPF_COEF_REGH1		0x67
#define HPF_COEF_REGH2		0x68
#define HPF_COEF_REGL1		0x69
#define HPF_COEF_REGL2		0x6A
#define HPF_GAIN_REGH1		0x6B
#define HPF_GAIN_REGH2		0x6C
#define HPF_GAIN_REGL1		0x6D
#define HPF_GAIN_REGL2		0x6E

//ADC Digital Channel Volume Control
#define ADC1_DVOL_CTRL		0x70
#define ADC2_DVOL_CTRL		0x71
#define ADC3_DVOL_CTRL		0x72
#define ADC4_DVOL_CTRL		0x73

//ADC Digital Mixer Source and Gain Control
#define ADC1_DMIX_SRC		0x76
#define ADC2_DMIX_SRC		0x77
#define ADC3_DMIX_SRC		0x78
#define ADC4_DMIX_SRC		0x79

//ADC Digital Debug Control
#define ADC_DIG_DEBUG		0x7F

//I2S Pad Drive Control
#define I2S_DAT_PADDRV_CTRL	0x80
#define I2S_CLK_PADDRV_CTRL	0x81

//Analog PGA Control
#define ANA_PGA1_CTRL		0x90
#define ANA_PGA2_CTRL		0x91
#define ANA_PGA3_CTRL		0x92
#define ANA_PGA4_CTRL		0x93

//MIC Offset Control
#define MIC_OFFSET_CTRL1	0x96
#define MIC_OFFSET_CTRL2	0x97
#define MIC1_OFFSET_STATU1	0x98
#define MIC1_OFFSET_STATU2	0x99
#define MIC2_OFFSET_STATU1	0x9A
#define MIC2_OFFSET_STATU2	0x9B
#define MIC3_OFFSET_STATU1	0x9C
#define MIC3_OFFSET_STATU2	0x9D
#define MIC4_OFFSET_STATU1	0x9E
#define MIC4_OFFSET_STATU2	0x9F

//ADC1 Analog Control
#define ANA_ADC1_CTRL1		0xA0
#define ANA_ADC1_CTRL2		0xA1
#define ANA_ADC1_CTRL3		0xA2
#define ANA_ADC1_CTRL4		0xA3
#define ANA_ADC1_CTRL5		0xA4
#define ANA_ADC1_CTRL6		0xA5
#define ANA_ADC1_CTRL7		0xA6

//ADC2 Analog Control
#define ANA_ADC2_CTRL1		0xA7
#define ANA_ADC2_CTRL2		0xA8
#define ANA_ADC2_CTRL3		0xA9
#define ANA_ADC2_CTRL4		0xAA
#define ANA_ADC2_CTRL5		0xAB
#define ANA_ADC2_CTRL6		0xAC
#define ANA_ADC2_CTRL7		0xAD

//ADC3 Analog Control
#define ANA_ADC3_CTRL1		0xAE
#define ANA_ADC3_CTRL2		0xAF
#define ANA_ADC3_CTRL3		0xB0
#define ANA_ADC3_CTRL4		0xB1
#define ANA_ADC3_CTRL5		0xB2
#define ANA_ADC3_CTRL6		0xB3
#define ANA_ADC3_CTRL7		0xB4

//ADC4 Analog Control
#define ANA_ADC4_CTRL1		0xB5
#define ANA_ADC4_CTRL2		0xB6
#define ANA_ADC4_CTRL3		0xB7
#define ANA_ADC4_CTRL4		0xB8
#define ANA_ADC4_CTRL5		0xB9
#define ANA_ADC4_CTRL6		0xBA
#define ANA_ADC4_CTRL7		0xBB

//GPIO Configure
#define GPIO_CFG1			0xC0
#define GPIO_CFG2			0xC1
#define GPIO_DAT			0xC2
#define GPIO_DRV			0xC3
#define GPIO_PULL			0xC4
#define GPIO_INT_CFG		0xC5
#define GPIO_INT_EN			0xC6
#define GPIO_INT_STATUS		0xC7

//Misc
#define BGTC_DAT			0xD1
#define BGVC_DAT			0xD2
#define PRNG_CLK_CTRL		0xDF



/*** AC108 Codec Register Bit Define***/

/*PWR_CTRL1*/
#define CP12_CTRL				4
#define CP12_SENSE_SELECT		3

/*PWR_CTRL2*/
#define CP12_SENSE_FILT			6
#define CP12_COMP_FF_EN			3
#define CP12_FORCE_ENABLE		2
#define CP12_FORCE_RSTB			1

/*PWR_CTRL3*/
#define LDO33DIG_CTRL			0

/*PWR_CTRL6*/
#define LDO33ANA_2XHDRM			2
#define LDO33ANA_ENABLE			0

/*PWR_CTRL7*/
#define VREF_SEL				3
#define VREF_FASTSTART_ENABLE	1
#define VREF_ENABLE				0

/*PWR_CTRL9*/
#define VREFP_FASTSTART_ENABLE	7
#define VREFP_RESCTRL			5
#define VREFP_LPMODE			4
#define IGEN_TRIM				1
#define VREFP_ENABLE			0


/*PLL_CTRL1*/
#define PLL_IBIAS				4
#define PLL_NDET				3
#define PLL_LOCKED_STATUS		2
#define PLL_COM_EN				1
#define PLL_EN					0

/*PLL_CTRL2*/
#define PLL_PREDIV2				5
#define PLL_PREDIV1				0

/*PLL_CTRL3*/
#define PLL_LOOPDIV_MSB			0

/*PLL_CTRL4*/
#define PLL_LOOPDIV_LSB			0

/*PLL_CTRL5*/
#define PLL_POSTDIV2			5
#define PLL_POSTDIV1			0

/*PLL_CTRL6*/
#define PLL_LDO					6
#define PLL_CP					0

/*PLL_CTRL7*/
#define PLL_CAP					6
#define PLL_RES					4
#define PLL_TEST_EN				0

/*PLL_LOCK_CTRL*/
#define LOCK_LEVEL1				2
#define LOCK_LEVEL2				1
#define PLL_LOCK_EN				0


/*SYSCLK_CTRL*/
#define PLLCLK_EN				7
#define PLLCLK_SRC				4
#define SYSCLK_SRC				3
#define SYSCLK_EN				0

/*MOD_CLK_EN & MOD_RST_CTRL*/
#define I2S						7
#define ADC_DIGITAL				4
#define MIC_OFFSET_CALIBRATION	1
#define ADC_ANALOG				0

/*DSM_CLK_CTRL*/
#define MIC_OFFSET_DIV			4
#define DSM_CLK_SEL				0


/*I2S_CTRL*/
#define BCLK_IOEN				7
#define LRCK_IOEN				6
#define SDO2_EN					5
#define SDO1_EN					4
#define TXEN					2
#define RXEN					1
#define GEN						0

/*I2S_BCLK_CTRL*/
#define EDGE_TRANSFER			5
#define BCLK_POLARITY			4
#define BCLKDIV					0

/*I2S_LRCK_CTRL1*/
#define LRCK_POLARITY			4
#define LRCK_PERIODH			0

/*I2S_LRCK_CTRL2*/
#define LRCK_PERIODL			0

/*I2S_FMT_CTRL1*/
#define ENCD_SEL				6
#define MODE_SEL				4
#define TX2_OFFSET				3
#define TX1_OFFSET				2
#define TX_SLOT_HIZ				1
#define TX_STATE				0

/*I2S_FMT_CTRL2*/
#define SLOT_WIDTH_SEL			4
#define SAMPLE_RESOLUTION		0

/*I2S_FMT_CTRL3*/
#define TX_MLS					7
#define SEXT					5
#define OUT2_MUTE				4
#define OUT1_MUTE				3
#define LRCK_WIDTH				2
#define TX_PDM					0


/*I2S_TX1_CTRL1*/
#define TX1_CHSEL				0

/*I2S_TX1_CTRL2*/
#define TX1_CH8_EN				7
#define TX1_CH7_EN				6
#define TX1_CH6_EN				5
#define TX1_CH5_EN				4
#define TX1_CH4_EN				3
#define TX1_CH3_EN				2
#define TX1_CH2_EN				1
#define TX1_CH1_EN				0

/*I2S_TX1_CTRL3*/
#define TX1_CH16_EN				7
#define TX1_CH15_EN				6
#define TX1_CH14_EN				5
#define TX1_CH13_EN				4
#define TX1_CH12_EN				3
#define TX1_CH11_EN				2
#define TX1_CH10_EN				1
#define TX1_CH9_EN				0

/*I2S_TX1_CHMP_CTRL1*/
#define TX1_CH4_MAP				6
#define TX1_CH3_MAP				4
#define TX1_CH2_MAP				2
#define TX1_CH1_MAP				0

/*I2S_TX1_CHMP_CTRL2*/
#define TX1_CH8_MAP				6
#define TX1_CH7_MAP				4
#define TX1_CH6_MAP				2
#define TX1_CH5_MAP				0

/*I2S_TX1_CHMP_CTRL3*/
#define TX1_CH12_MAP			6
#define TX1_CH11_MAP			4
#define TX1_CH10_MAP			2
#define TX1_CH9_MAP				0

/*I2S_TX1_CHMP_CTRL4*/
#define TX1_CH16_MAP			6
#define TX1_CH15_MAP			4
#define TX1_CH14_MAP			2
#define TX1_CH13_MAP			0


/*I2S_TX2_CTRL1*/
#define TX2_CHSEL				0

/*I2S_TX2_CHMP_CTRL1*/
#define TX2_CH4_MAP				6
#define TX2_CH3_MAP				4
#define TX2_CH2_MAP				2
#define TX2_CH1_MAP				0

/*I2S_TX2_CHMP_CTRL2*/
#define TX2_CH8_MAP				6
#define TX2_CH7_MAP				4
#define TX2_CH6_MAP				2
#define TX2_CH5_MAP				0

/*I2S_TX2_CHMP_CTRL3*/
#define TX2_CH12_MAP			6
#define TX2_CH11_MAP			4
#define TX2_CH10_MAP			2
#define TX2_CH9_MAP				0

/*I2S_TX2_CHMP_CTRL4*/
#define TX2_CH16_MAP			6
#define TX2_CH15_MAP			4
#define TX2_CH14_MAP			2
#define TX2_CH13_MAP			0


/*I2S_RX1_CTRL1*/
#define RX1_CHSEL				0

/*I2S_RX1_CHMP_CTRL1*/
#define RX1_CH4_MAP				6
#define RX1_CH3_MAP				4
#define RX1_CH2_MAP				2
#define RX1_CH1_MAP				0

/*I2S_RX1_CHMP_CTRL2*/
#define RX1_CH8_MAP				6
#define RX1_CH7_MAP				4
#define RX1_CH6_MAP				2
#define RX1_CH5_MAP				0

/*I2S_RX1_CHMP_CTRL3*/
#define RX1_CH12_MAP			6
#define RX1_CH11_MAP			4
#define RX1_CH10_MAP			2
#define RX1_CH9_MAP				0

/*I2S_RX1_CHMP_CTRL4*/
#define RX1_CH16_MAP			6
#define RX1_CH15_MAP			4
#define RX1_CH14_MAP			2
#define RX1_CH13_MAP			0


/*I2S_LPB_DEBUG*/
#define I2S_LPB_DEBUG_EN		0


/*ADC_SPRC*/
#define ADC_FS_I2S1				0

/*ADC_DIG_EN*/
#define DG_EN					4
#define ENAD4					3
#define ENAD3					2
#define ENAD2					1
#define ENAD1					0

/*DMIC_EN*/
#define DMIC2_EN				1
#define DMIC1_EN				0

/*ADC_DSR*/
#define DIG_ADC4_SRS			6
#define DIG_ADC3_SRS			4
#define DIG_ADC2_SRS			2
#define DIG_ADC1_SRS			0

/*ADC_DDT_CTRL*/
#define ADOUT_DLY_EN			2
#define ADOUT_DTS				0


/*HPF_EN*/
#define DIG_ADC4_HPF_EN			3
#define DIG_ADC3_HPF_EN			2
#define DIG_ADC2_HPF_EN			1
#define DIG_ADC1_HPF_EN			0


/*ADC1_DMIX_SRC*/
#define ADC1_ADC4_DMXL_GC		7
#define ADC1_ADC3_DMXL_GC		6
#define ADC1_ADC2_DMXL_GC		5
#define ADC1_ADC1_DMXL_GC		4
#define ADC1_ADC4_DMXL_SRC		3
#define ADC1_ADC3_DMXL_SRC		2
#define ADC1_ADC2_DMXL_SRC		1
#define ADC1_ADC1_DMXL_SRC		0

/*ADC2_DMIX_SRC*/
#define ADC2_ADC4_DMXL_GC		7
#define ADC2_ADC3_DMXL_GC		6
#define ADC2_ADC2_DMXL_GC		5
#define ADC2_ADC1_DMXL_GC		4
#define ADC2_ADC4_DMXL_SRC		3
#define ADC2_ADC3_DMXL_SRC		2
#define ADC2_ADC2_DMXL_SRC		1
#define ADC2_ADC1_DMXL_SRC		0

/*ADC3_DMIX_SRC*/
#define ADC3_ADC4_DMXL_GC		7
#define ADC3_ADC3_DMXL_GC		6
#define ADC3_ADC2_DMXL_GC		5
#define ADC3_ADC1_DMXL_GC		4
#define ADC3_ADC4_DMXL_SRC		3
#define ADC3_ADC3_DMXL_SRC		2
#define ADC3_ADC2_DMXL_SRC		1
#define ADC3_ADC1_DMXL_SRC		0

/*ADC4_DMIX_SRC*/
#define ADC4_ADC4_DMXL_GC		7
#define ADC4_ADC3_DMXL_GC		6
#define ADC4_ADC2_DMXL_GC		5
#define ADC4_ADC1_DMXL_GC		4
#define ADC4_ADC4_DMXL_SRC		3
#define ADC4_ADC3_DMXL_SRC		2
#define ADC4_ADC2_DMXL_SRC		1
#define ADC4_ADC1_DMXL_SRC		0


/*ADC_DIG_DEBUG*/
#define ADC_PTN_SEL				0


/*I2S_DAT_PADDRV_CTRL*/
#define TX2_DAT_DRV				4
#define TX1_DAT_DRV				0

/*I2S_CLK_PADDRV_CTRL*/
#define LRCK_DRV				4
#define BCLK_DRV				0


/*ANA_PGA1_CTRL*/
#define ADC1_ANALOG_PGA			1
#define ADC1_ANALOG_PGA_STEP	0

/*ANA_PGA2_CTRL*/
#define ADC2_ANALOG_PGA			1
#define ADC2_ANALOG_PGA_STEP	0

/*ANA_PGA3_CTRL*/
#define ADC3_ANALOG_PGA			1
#define ADC3_ANALOG_PGA_STEP	0

/*ANA_PGA4_CTRL*/
#define ADC4_ANALOG_PGA			1
#define ADC4_ANALOG_PGA_STEP	0


/*MIC_OFFSET_CTRL1*/
#define MIC_OFFSET_CAL_EN4		3
#define MIC_OFFSET_CAL_EN3		2
#define MIC_OFFSET_CAL_EN2		1
#define MIC_OFFSET_CAL_EN1		0

/*MIC_OFFSET_CTRL2*/
#define MIC_OFFSET_CAL_GAIN		3
#define MIC_OFFSET_CAL_CHANNEL	1
#define MIC_OFFSET_CAL_EN_ONCE	0

/*MIC1_OFFSET_STATU1*/
#define MIC1_OFFSET_CAL_DONE	7
#define MIC1_OFFSET_CAL_RUN_STA	6
#define MIC1_OFFSET_MSB			0

/*MIC1_OFFSET_STATU2*/
#define MIC1_OFFSET_LSB			0

/*MIC2_OFFSET_STATU1*/
#define MIC2_OFFSET_CAL_DONE	7
#define MIC2_OFFSET_CAL_RUN_STA	6
#define MIC2_OFFSET_MSB			0

/*MIC2_OFFSET_STATU2*/
#define MIC2_OFFSET_LSB			0

/*MIC3_OFFSET_STATU1*/
#define MIC3_OFFSET_CAL_DONE	7
#define MIC3_OFFSET_CAL_RUN_STA	6
#define MIC3_OFFSET_MSB			0

/*MIC3_OFFSET_STATU2*/
#define MIC3_OFFSET_LSB			0

/*MIC4_OFFSET_STATU1*/
#define MIC4_OFFSET_CAL_DONE	7
#define MIC4_OFFSET_CAL_RUN_STA	6
#define MIC4_OFFSET_MSB			0

/*MIC4_OFFSET_STATU2*/
#define MIC4_OFFSET_LSB			0


/*ANA_ADC1_CTRL1*/
#define ADC1_PGA_BYPASS			7
#define ADC1_PGA_BYP_RCM		6
#define ADC1_PGA_CTRL_RCM		4
#define ADC1_PGA_MUTE			3
#define ADC1_DSM_ENABLE			2
#define ADC1_PGA_ENABLE			1
#define ADC1_MICBIAS_EN			0

/*ANA_ADC1_CTRL3*/
#define ADC1_ANA_CAL_EN			5
#define ADC1_SEL_OUT_EDGE		3
#define ADC1_DSM_DISABLE		2
#define ADC1_VREFP_DISABLE		1
#define ADC1_AAF_DISABLE		0

/*ANA_ADC1_CTRL6*/
#define PGA_CTRL_TC				6
#define PGA_CTRL_RC				4
#define PGA_CTRL_I_LIN			2
#define PGA_CTRL_I_IN			0

/*ANA_ADC1_CTRL7*/
#define PGA_CTRL_HI_Z			7
#define PGA_CTRL_SHORT_RF		6
#define PGA_CTRL_VCM_VG			4
#define PGA_CTRL_VCM_IN			0


/*ANA_ADC2_CTRL1*/
#define ADC2_PGA_BYPASS			7
#define ADC2_PGA_BYP_RCM		6
#define ADC2_PGA_CTRL_RCM		4
#define ADC2_PGA_MUTE			3
#define ADC2_DSM_ENABLE			2
#define ADC2_PGA_ENABLE			1
#define ADC2_MICBIAS_EN			0

/*ANA_ADC2_CTRL3*/
#define ADC2_ANA_CAL_EN			5
#define ADC2_SEL_OUT_EDGE		3
#define ADC2_DSM_DISABLE		2
#define ADC2_VREFP_DISABLE		1
#define ADC2_AAF_DISABLE		0

/*ANA_ADC2_CTRL6*/
#define PGA_CTRL_IBOOST			7
#define PGA_CTRL_IQCTRL			6
#define PGA_CTRL_OABIAS			4
#define PGA_CTRL_CMLP_DIS		3
#define PGA_CTRL_PDB_RIN		2
#define PGA_CTRL_PEAKDET		0

/*ANA_ADC2_CTRL7*/
#define AAF_LPMODE_EN			7
#define AAF_STG2_IB_SEL			4
#define AAFDSM_IB_DIV2			3
#define AAF_STG1_IB_SEL			0


/*ANA_ADC3_CTRL1*/
#define ADC3_PGA_BYPASS			7
#define ADC3_PGA_BYP_RCM		6
#define ADC3_PGA_CTRL_RCM		4
#define ADC3_PGA_MUTE			3
#define ADC3_DSM_ENABLE			2
#define ADC3_PGA_ENABLE			1
#define ADC3_MICBIAS_EN			0

/*ANA_ADC3_CTRL3*/
#define ADC3_ANA_CAL_EN			5
#define ADC3_INVERT_CLK			4
#define ADC3_SEL_OUT_EDGE		3
#define ADC3_DSM_DISABLE		2
#define ADC3_VREFP_DISABLE		1
#define ADC3_AAF_DISABLE		0

/*ANA_ADC3_CTRL7*/
#define DSM_COMP_IB_SEL			6
#define DSM_OTA_CTRL			4
#define DSM_LPMODE				3
#define DSM_OTA_IB_SEL			0


/*ANA_ADC4_CTRL1*/
#define ADC4_PGA_BYPASS			7
#define ADC4_PGA_BYP_RCM		6
#define ADC4_PGA_CTRL_RCM		4
#define ADC4_PGA_MUTE			3
#define ADC4_DSM_ENABLE			2
#define ADC4_PGA_ENABLE			1
#define ADC4_MICBIAS_EN			0

/*ANA_ADC4_CTRL3*/
#define ADC4_ANA_CAL_EN			5
#define ADC4_SEL_OUT_EDGE		3
#define ADC4_DSM_DISABLE		2
#define ADC4_VREFP_DISABLE		1
#define ADC4_AAF_DISABLE		0

/*ANA_ADC4_CTRL6*/
#define DSM_DEMOFF				5
#define DSM_EN_DITHER			4
#define DSM_VREFP_LPMODE		2
#define DSM_VREFP_OUTCTRL		0

/*ANA_ADC4_CTRL7*/
#define CK8M_EN					5
#define OSC_EN					4
#define ADC4_CLK_GATING			3
#define ADC3_CLK_GATING			2
#define ADC2_CLK_GATING			1
#define ADC1_CLK_GATING			0


/*GPIO_CFG1*/
#define GPIO2_SELECT			4
#define GPIO1_SELECT			0

/*GPIO_CFG2*/
#define GPIO4_SELECT			4
#define GPIO3_SELECT			0

/*GPIO_DAT*///order???
#define GPIO4_DAT				3
#define GPIO3_DAT				2
#define GPIO2_DAT				1
#define GPIO1_DAT				0

/*GPIO_DRV*/
#define GPIO4_DRV				6
#define GPIO3_DRV				4
#define GPIO2_DRV				2
#define GPIO1_DRV				0

/*GPIO_PULL*/
#define GPIO4_PULL				6
#define GPIO3_PULL				4
#define GPIO2_PULL				2
#define GPIO1_PULL				0

/*GPIO_INT_CFG*/
#define GPIO4_EINT_CFG			6
#define GPIO3_EINT_CFG			4
#define GPIO2_EINT_CFG			2
#define GPIO1_EINT_CFG			0

/*GPIO_INT_EN*///order???
#define GPIO4_EINT_EN			3
#define GPIO3_EINT_EN			2
#define GPIO2_EINT_EN			1
#define GPIO1_EINT_EN			0

/*GPIO_INT_STATUS*///order???
#define GPIO4_EINT_STA			3
#define GPIO3_EINT_STA			2
#define GPIO2_EINT_STA			1
#define GPIO1_EINT_STA			0


/*PRNG_CLK_CTRL*/
#define PRNG_CLK_EN				1
#define PRNG_CLK_POS			0



/*** Some Config Value ***/

//[SYSCLK_CTRL]: PLLCLK_SRC
#define PLLCLK_SRC_MCLK			0
#define PLLCLK_SRC_BCLK			1
#define PLLCLK_SRC_GPIO2		2
#define PLLCLK_SRC_GPIO3		3

//[SYSCLK_CTRL]: SYSCLK_SRC
#define SYSCLK_SRC_MCLK			0
#define SYSCLK_SRC_PLL			1

//I2S BCLK POLARITY Control
#define BCLK_NORMAL_DRIVE_N_SAMPLE_P	0
#define BCLK_INVERT_DRIVE_P_SAMPLE_N	1

//I2S LRCK POLARITY Control
#define	LRCK_LEFT_LOW_RIGHT_HIGH		0
#define LRCK_LEFT_HIGH_RIGHT_LOW		1

//I2S Format Selection
#define PCM_FORMAT						0
#define LEFT_JUSTIFIED_FORMAT			1
#define RIGHT_JUSTIFIED_FORMAT			2


//I2S data protocol types

#define IS_ENCODING_MODE		 0

#endif