/*
 *  sound/soc/codecs/mt6660.h
 *
 *  Copyright (C) 2018 Mediatek Inc.
 *  cy_huang <cy_huang@richtek.com>
 *
 *  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.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *  See http://www.gnu.org/licenses/gpl-2.0.html for more details.
 */

#ifndef __SND_SOC_MT6660_H
#define __SND_SOC_MT6660_H

#include <linux/mutex.h>
#include <mt-plat/rt-regmap.h>

struct mt6660_chip {
	struct i2c_client *i2c;
	struct device *dev;
	struct snd_soc_codec *codec;
	struct platform_device *param_dev;
	struct rt_regmap_device *regmap;
	struct mutex var_lock;
	u16 chip_rev;
	u8 dev_cnt;
	int pwr_cnt;
};

int mt6660_codec_trigger_param_write(struct mt6660_chip *chip,
				     void *param, int size);
int mt6660_regmap_register(struct mt6660_chip *chip);
void mt6660_regmap_unregister(struct mt6660_chip *chip);

/* reg address divide into two parts [16:8] size, [7:0] addr */
#define MT6660_GET_ADDR(_addr)		((_addr) & 0xff)
#define MT6660_GET_SIZE(_addr)		(((_addr) >> 8) & 0xff)

#define MT6660_REG_DEVID		(0x200)
#define MT6660_REG_SERIAL_DATA_STATUS	(0x101)
#define MT6660_REG_BLOCK_CLK_CTRL	(0x102)
#define MT6660_REG_SYSTEM_CTRL		(0x103)
#define MT6660_REG_IRQ_EN		(0x104)
#define MT6660_REG_IRQ_STATUS1		(0x105)
#define MT6660_REG_CRC_CHECK		(0x106)
#define MT6660_REG_ADDA_CLOCK		(0x107)
#define MT6660_REG_I2C_CTRL		(0x108)
#define MT6660_REG_IRQ_STATUS2		(0x109)
#define MT6660_REG_SERIAL_CFG1		(0x110)
#define MT6660_REG_SERIAL_CFG2		(0x111)
#define MT6660_REG_DATAO_SEL		(0x112)
#define MT6660_REG_TDM_CFG1		(0x113)
#define MT6660_REG_TDM_CFG2		(0x214)
#define MT6660_REG_TDM_CFG3		(0x215)
#define MT6660_REG_HPF_CTRL		(0x118)
#define MT6660_REG_HPF0_COEF		(0x419)
#define MT6660_REG_HPF1_COEF		(0x41A)
#define MT6660_REG_HPF2_COEF		(0x41B)
#define MT6660_REG_GISENS		(0x21C)
#define MT6660_REG_GVSENS		(0x11D)
#define MT6660_REG_PATH_BYPASS		(0x11E)
#define MT6660_REG_WDT_CTRL		(0x120)
#define MT6660_REG_HCLIP_CTRL		(0x224)
#define MT6660_REG_RAMP_CTRL		(0x128)
#define MT6660_REG_VOL_CTRL		(0x129)
#define MT6660_REG_SPS_CTRL		(0x130)
#define MT6660_REG_SG_CFG		(0x231)
#define MT6660_REG_SG_VOMIN		(0x232)
#define MT6660_REG_SIGMAX		(0x233)
#define MT6660_REG_SPSTH		(0x334)
#define MT6660_REG_TC_GAIN_M60		(0x238)
#define MT6660_REG_TC_GAIN_M28		(0x239)
#define MT6660_REG_TC_GAIN_P4		(0x23A)
#define MT6660_REG_TC_GAIN_P36		(0x23B)
#define MT6660_REG_TC_GAIN_P68		(0x23C)
#define MT6660_REG_TC_GAIN_P100		(0x23D)
#define MT6660_REG_TC_GAIN_P132		(0x23E)
#define MT6660_REG_CALI_T0		(0x13F)
#define MT6660_REG_BST_CTRL		(0x140)
#define MT6660_REG_BST_L1		(0x241)
#define MT6660_REG_BST_L2		(0x242)
#define MT6660_REG_BST_L3		(0x243)
#define MT6660_REG_PSM_CTRL		(0x144)
#define MT6660_REG_CCMAX		(0x145)
#define MT6660_REG_PROTECTION_CFG	(0x146)
#define MT6660_REG_VPTAT		(0x247)
#define MT6660_REG_VBAT			(0x148)
#define MT6660_REG_BST_CFG1		(0x349)
#define MT6660_REG_BST_CFG2		(0x24A)
#define MT6660_REG_BST_CFG3		(0x14B)
#define MT6660_REG_DA_GAIN		(0x24C)
#define MT6660_REG_FF_GAIN		(0x24D)
#define MT6660_REG_RLD_COEF1		(0x14E)
#define MT6660_REG_RLD_COEF2		(0x14F)
#define MT6660_REG_AUDIO_IN2_SEL	(0x150)
#define MT6660_REG_SIG_GAIN		(0x151)
#define MT6660_REG_IDAC1_TM		(0x152)
#define MT6660_REG_IDAC2_TM		(0x153)
#define MT6660_REG_IDAC3_TM		(0x154)
#define MT6660_REG_GVPTAT		(0x255)
#define MT6660_REG_IPEAK_LOW		(0x156)
#define MT6660_REG_GPWM_LV		(0x157)
#define MT6660_REG_VBT_SENSE		(0x158)
#define MT6660_REG_VPTAT_ADC_CODE	(0x259)
#define MT6660_REG_VBAT_ADC_CODE	(0x25A)
#define MT6660_REG_SUB_ADC_OFFSET	(0x15B)
#define MT6660_REG_IDAC_TM_CTRL		(0x15C)
#define MT6660_REG_IDAC_TEST_CODE	(0x25D)
#define MT6660_REG_IDAC_MONOTONIC	(0x15E)
#define MT6660_REG_PLL_CFG1		(0x160)
#define MT6660_REG_PLL_CFG2		(0x161)
#define MT6660_REG_PLL_CFG3		(0x162)
#define MT6660_REG_PLL_CFG4		(0x163)
#define MT6660_REG_PLL_RATIO		(0x464)
#define MT6660_REG_DRE_CTRL		(0x168)
#define MT6660_REG_DRE_THDMODE		(0x169)
#define MT6660_REG_DRE_TIMING		(0x56A)
#define MT6660_REG_DRE_CORASE		(0x16B)
#define MT6660_REG_PWM_CTRL		(0x170)
#define MT6660_REG_DC_PROTECT_CTRL	(0x174)
#define MT6660_REG_DITHER_CTRL		(0x178)
#define MT6660_REG_ADC_USB_MODE		(0x17C)
#define MT6660_REG_EFUSE_EN		(0x180)
#define MT6660_REG_EFUSE_CTRL		(0x181)
#define MT6660_REG_EFUSE_MAP		(0x882)
#define MT6660_REG_INTERNAL_CFG		(0x188)
#define MT6660_REG_DC_ADJ		(0x189)
#define MT6660_REG_ZC_CFG		(0x18A)
#define MT6660_REG_BG_CFG		(0x18B)
#define MT6660_REG_TM_EN		(0x190)
#define MT6660_REG_RAM_BIST_TST		(0x191)
#define MT6660_REG_SCAN_MODE		(0x192)
#define MT6660_REG_DBG_OUT_SEL1		(0x193)
#define MT6660_REG_DBG_OUT_SEL2		(0x294)
#define MT6660_REG_RESV0		(0x198)
#define MT6660_REG_RESV1		(0x199)
#define MT6660_REG_RESV2		(0x19A)
#define MT6660_REG_RESV3		(0x19B)
#define MT6660_REG_RESV4		(0x1A0)
#define MT6660_REG_RESV5		(0x1A1)
#define MT6660_REG_RESV6		(0x1A2)
#define MT6660_REG_RESV7		(0x1A3)
#define MT6660_REG_RESV8		(0x1A8)
#define MT6660_REG_RESV9		(0x1A9)
#define MT6660_REG_RESV10		(0x1B0)
#define MT6660_REG_RESV11		(0x1B1)
#define MT6660_REG_RESV12		(0x1B2)
#define MT6660_REG_RESV13		(0x1B3)
#define MT6660_REG_RESV14		(0x1B4)
#define MT6660_REG_RESV15		(0x1B5)
#define MT6660_REG_RESV16		(0x1B6)
#define MT6660_REG_RESV17		(0x2B7)
#define MT6660_REG_RESV18		(0x1B8)
#define MT6660_REG_RESV19		(0x1B9)
#define MT6660_REG_RESV20		(0x1BA)
#define MT6660_REG_RESV21		(0x1BB)
#define MT6660_REG_RESV22		(0x1BC)
#define MT6660_REG_RESV23		(0x2BD)
#define MT6660_REG_RESV24		(0x1BE)
#define MT6660_REG_RESV25		(0x1BF)
#define MT6660_REG_RESV26		(0x1C0)
#define MT6660_REG_RESV27		(0x1C8)
#define MT6660_REG_RESV28		(0x1D0)
#define MT6660_REG_RESV29		(0x1D1)
#define MT6660_REG_RESV30		(0x1D2)
#define MT6660_REG_RESV31		(0x1D3)
#define MT6660_REG_RESV32		(0x1D4)
#define MT6660_REG_RESV33		(0x1D5)
#define MT6660_REG_RESV34		(0x1D6)
#define MT6660_REG_RESV35		(0x1D7)
#define MT6660_REG_RESV36		(0x1D8)
#define MT6660_REG_RESV37		(0x1D9)
#define MT6660_REG_RESV38		(0x1DA)
#define MT6660_REG_RESV39		(0x1DB)
#define MT6660_REG_RESV40		(0x1E0)
#define MT6660_REG_RESV41		(0x1E1)
#define MT6660_REG_RESV42		(0x1E2)
#define MT6660_REG_RESV43		(0x1E3)
#define MT6660_REG_RESV44		(0x1E4)
#define MT6660_REG_RESV45		(0x1E5)
#define MT6660_REG_RESV46		(0x1E6)
#define MT6660_REG_RESV47		(0x1E7)
#define MT6660_REG_RESV48		(0x1E8)
#define MT6660_REG_RESV49		(0x1E9)
#define MT6660_REG_RESV50		(0x1EA)
#define MT6660_REG_RESV51		(0x1EB)
#define MT6660_REG_RESV52		(0x1EC)
#define MT6660_REG_RESV53		(0x1ED)
#define MT6660_REG_RESV54		(0x1EE)
#define MT6660_REG_RESV55		(0x1EF)
#define MT6660_REG_RESV56		(0x1F0)

/* Export function */
int mt6660_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id);
int mt6660_i2c_remove(struct i2c_client *client);

#endif /* __SND_SOC_MT6660_H */
