/*
 * mt6392-codec.h --  MT6392 ALSA SoC codec driver
 *
 * Copyright (c) 2016 MediaTek Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only 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 the
 * GNU General Public License for more details.
 */

#ifndef __MT6392_CODEC_H__
#define __MT6392_CODEC_H__

#include <linux/types.h>

enum mt6392_speaker_mode {
	MT6392_CLASS_D = 0,
	MT6392_CLASS_AB,
};

struct mt6392_codec_priv {
	struct snd_soc_component *codec;
	uint32_t speaker_mode;
	uint32_t spk_amp_gain;
	uint16_t spk_trim_offset;
#ifdef CONFIG_DEBUG_FS
	struct dentry *debugfs;
#endif
};

#define PMIC_OFFSET              (0x00C00000)
#define PMIC_REG(reg)            (reg | PMIC_OFFSET)

/* mt6392 */
#define SPK_CON0                 PMIC_REG(0x0052)
#define SPK_CON1                 PMIC_REG(0x0054)
#define SPK_CON2                 PMIC_REG(0x0056)
#define SPK_CON3                 PMIC_REG(0x0058)
#define SPK_CON4                 PMIC_REG(0x005A)
#define SPK_CON5                 PMIC_REG(0x005C)
#define SPK_CON6                 PMIC_REG(0x005E)
#define SPK_CON7                 PMIC_REG(0x0060)
#define SPK_CON8                 PMIC_REG(0x0062)
#define SPK_CON9                 PMIC_REG(0x0064)
#define SPK_CON10                PMIC_REG(0x0066)
#define SPK_CON11                PMIC_REG(0x0068)
#define SPK_CON12                PMIC_REG(0x006A)

#define TOP_CKPDN1_CLR           PMIC_REG(0x010C)

#define MT6392_NOT_DEFINED	0
#define SPK_CON0_STRUP_AUXADC_START_SW	4
#define SPK_CON0_AUXADC_RSTB_SW		5
#define SPK_CON0_STRUP_AUXADC_START_SEL	6
#define SPK_CON0_STRUP_AUXADC_RSTB_SEL 	7

int mt6392_codec_probe(struct snd_soc_component *codec);
int mt6392_codec_remove(struct snd_soc_component *codec);
int mt6392_int_spk_turn_on(struct snd_soc_component *codec);
int mt6392_int_spk_turn_off(struct snd_soc_component *codec);

#endif
