1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * da732x.h -- Dialog DA732X ALSA SoC Audio Driver Header File
4 *
5 * Copyright (C) 2012 Dialog Semiconductor GmbH
6 *
7 * Author: Michal Hajduk <Michal.Hajduk@diasemi.com>
8 */
9
10#ifndef __DA732X_H_
11#define __DA732X_H_
12
13#include <sound/soc.h>
14
15/* General */
16#define	DA732X_U8_MASK			0xFF
17#define	DA732X_4BYTES			4
18#define	DA732X_3BYTES			3
19#define	DA732X_2BYTES			2
20#define	DA732X_1BYTE			1
21#define	DA732X_1BYTE_SHIFT		8
22#define	DA732X_2BYTES_SHIFT		16
23#define	DA732X_3BYTES_SHIFT		24
24#define	DA732X_4BYTES_SHIFT		32
25
26#define	DA732X_DACS_DIS			0x0
27#define	DA732X_HP_DIS			0x0
28#define	DA732X_CLEAR_REG		0x0
29
30/* Calibration */
31#define	DA732X_DAC_OFFSET_STEP		0x20
32#define	DA732X_OUTPUT_OFFSET_STEP	0x80
33#define	DA732X_HP_OUT_TRIM_VAL		0x0
34#define	DA732X_WAIT_FOR_STABILIZATION	1
35#define	DA732X_HPL_DAC			0
36#define	DA732X_HPR_DAC			1
37#define	DA732X_HP_DACS			2
38#define	DA732X_HPL_AMP			0
39#define	DA732X_HPR_AMP			1
40#define	DA732X_HP_AMPS			2
41
42/* Clock settings */
43#define DA732X_STARTUP_DELAY		100
44#define	DA732X_PLL_OUT_196608		196608000
45#define	DA732X_PLL_OUT_180634		180633600
46#define	DA732X_PLL_OUT_SRM		188620800
47#define	DA732X_MCLK_10MHZ		10000000
48#define	DA732X_MCLK_20MHZ		20000000
49#define	DA732X_MCLK_40MHZ		40000000
50#define	DA732X_MCLK_54MHZ		54000000
51#define	DA732X_MCLK_VAL_0_10MHZ		0
52#define	DA732X_MCLK_VAL_10_20MHZ	1
53#define	DA732X_MCLK_VAL_20_40MHZ	2
54#define	DA732X_MCLK_VAL_40_54MHZ	3
55#define	DA732X_DAI_ID1			0
56#define	DA732X_DAI_ID2			1
57#define	DA732X_SRCCLK_PLL		0
58#define	DA732X_SRCCLK_MCLK		1
59
60#define	DA732X_LIN_LP_VOL		0x4F
61#define	DA732X_LP_VOL			0x40
62
63/* Kcontrols */
64#define	DA732X_DAC_EN_MAX		2
65#define	DA732X_ADCL_MUX_MAX		2
66#define	DA732X_ADCR_MUX_MAX		3
67#define	DA732X_HPF_MODE_MAX		3
68#define	DA732X_HPF_MODE_SHIFT		4
69#define	DA732X_HPF_MUSIC_SHIFT		0
70#define	DA732X_HPF_MUSIC_MAX		4
71#define	DA732X_HPF_VOICE_SHIFT		4
72#define	DA732X_HPF_VOICE_MAX		8
73#define	DA732X_EQ_EN_MAX		1
74#define	DA732X_HPF_VOICE		1
75#define	DA732X_HPF_MUSIC		2
76#define	DA732X_HPF_DISABLED		0
77#define	DA732X_NO_INVERT		0
78#define	DA732X_INVERT			1
79#define	DA732X_SWITCH_MAX		1
80#define	DA732X_ENABLE_CP		1
81#define	DA732X_DISABLE_CP		0
82#define	DA732X_DISABLE_ALL_CLKS		0
83#define	DA732X_RESET_ADCS		0
84
85/* dB values */
86#define DA732X_MIC_VOL_DB_MIN		0
87#define DA732X_MIC_VOL_DB_INC		50
88#define DA732X_MIC_PRE_VOL_DB_MIN	0
89#define DA732X_MIC_PRE_VOL_DB_INC	600
90#define DA732X_AUX_VOL_DB_MIN		-6000
91#define DA732X_AUX_VOL_DB_INC		150
92#define DA732X_HP_VOL_DB_MIN		-2250
93#define DA732X_HP_VOL_DB_INC		150
94#define	DA732X_LIN2_VOL_DB_MIN		-1650
95#define	DA732X_LIN2_VOL_DB_INC		150
96#define	DA732X_LIN3_VOL_DB_MIN		-1650
97#define DA732X_LIN3_VOL_DB_INC		150
98#define	DA732X_LIN4_VOL_DB_MIN		-2250
99#define DA732X_LIN4_VOL_DB_INC		150
100#define	DA732X_EQ_BAND_VOL_DB_MIN	-1050
101#define	DA732X_EQ_BAND_VOL_DB_INC	150
102#define DA732X_DAC_VOL_DB_MIN		-7725
103#define DA732X_DAC_VOL_DB_INC		75
104#define DA732X_ADC_VOL_DB_MIN		0
105#define DA732X_ADC_VOL_DB_INC		-1
106#define	DA732X_EQ_OVERALL_VOL_DB_MIN	-1800
107#define	DA732X_EQ_OVERALL_VOL_DB_INC	600
108
109enum da732x_sysctl {
110	DA732X_SR_8KHZ		= 0x1,
111	DA732X_SR_11_025KHZ	= 0x2,
112	DA732X_SR_12KHZ		= 0x3,
113	DA732X_SR_16KHZ		= 0x5,
114	DA732X_SR_22_05KHZ	= 0x6,
115	DA732X_SR_24KHZ		= 0x7,
116	DA732X_SR_32KHZ		= 0x9,
117	DA732X_SR_44_1KHZ	= 0xA,
118	DA732X_SR_48KHZ		= 0xB,
119	DA732X_SR_88_1KHZ	= 0xE,
120	DA732X_SR_96KHZ		= 0xF,
121};
122
123#endif /* __DA732X_H_ */
124