aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/mc1n2/mcresctrl.h
blob: 05558a937a9d760e64a28d60d6490cf90477bfac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
/****************************************************************************
 *
 *		Copyright(c) 2010 Yamaha Corporation. All rights reserved.
 *
 *		Module		: mcresctrl.h
 *
 *		Description	: MC Driver resource control header
 *
 *		Version		: 1.0.0 	2010.09.01
 *
 ****************************************************************************/

#ifndef _MCRESCTRL_H_
#define _MCRESCTRL_H_

#include "mcdevif.h"
#include "mcpacking.h"

/* HW_ID */
#define	MCDRV_HWID_AA	(0x78)
#define	MCDRV_HWID_AB	(0x79)

#define	MCDRV_BURST_WRITE_ENABLE	(0x01)

/*	eState setting	*/
typedef enum _MCDRV_STATE
{
	eMCDRV_STATE_NOTINIT,
	eMCDRV_STATE_READY
} MCDRV_STATE;

/*	volume setting	*/
#define	MCDRV_LOGICAL_VOL_MUTE		(-24576)	/*	-96dB	*/
#define	MCDRV_LOGICAL_MICGAIN_DEF	(3840)		/*	15dB	*/
#define	MCDRV_LOGICAL_HPGAIN_DEF	(0)			/*	0dB		*/

#define	MCDRV_VOLUPDATE_ALL			(0xFFFFFFFFUL)
#define	MCDRV_VOLUPDATE_ANAOUT_ALL	(0x00000001UL)

#define	MCDRV_REG_MUTE	(0x00)

/*	DAC source setting	*/
typedef enum _MCDRV_DAC_CH
{
	eMCDRV_DAC_MASTER	= 0,
	eMCDRV_DAC_VOICE
} MCDRV_DAC_CH;

/*	DIO port setting	*/
typedef enum _MCDRV_DIO_PORT_NO
{
	eMCDRV_DIO_0	= 0,
	eMCDRV_DIO_1,
	eMCDRV_DIO_2
} MCDRV_DIO_PORT_NO;

/*	Path source setting	*/
typedef enum _MCDRV_SRC_TYPE
{
	eMCDRV_SRC_NONE			= (0),
	eMCDRV_SRC_MIC1			= (1<<0),
	eMCDRV_SRC_MIC2			= (1<<1),
	eMCDRV_SRC_MIC3			= (1<<2),
	eMCDRV_SRC_LINE1_L		= (1<<3),
	eMCDRV_SRC_LINE1_R		= (1<<4),
	eMCDRV_SRC_LINE1_M		= (1<<5),
	eMCDRV_SRC_LINE2_L		= (1<<6),
	eMCDRV_SRC_LINE2_R		= (1<<7),
	eMCDRV_SRC_LINE2_M		= (1<<8),
	eMCDRV_SRC_DIR0			= (1<<9),
	eMCDRV_SRC_DIR1			= (1<<10),
	eMCDRV_SRC_DIR2			= (1<<11),
	eMCDRV_SRC_DTMF			= (1<<12),
	eMCDRV_SRC_PDM			= (1<<13),
	eMCDRV_SRC_ADC0			= (1<<14),
	eMCDRV_SRC_ADC1			= (1<<15),
	eMCDRV_SRC_DAC_L		= (1<<16),
	eMCDRV_SRC_DAC_R		= (1<<17),
	eMCDRV_SRC_DAC_M		= (1<<18),
	eMCDRV_SRC_AE			= (1<<19),
	eMCDRV_SRC_CDSP			= (1<<20),
	eMCDRV_SRC_MIX			= (1<<21),
	eMCDRV_SRC_DIR2_DIRECT	= (1<<22),
	eMCDRV_SRC_CDSP_DIRECT	= (1<<23)
} MCDRV_SRC_TYPE;

/*	Path destination setting	*/
typedef enum _MCDRV_DST_CH
{
	eMCDRV_DST_CH0	= 0,
	eMCDRV_DST_CH1
} MCDRV_DST_CH;
typedef enum _MCDRV_DST_TYPE
{
	eMCDRV_DST_HP	= 0,
	eMCDRV_DST_SP,
	eMCDRV_DST_RCV,
	eMCDRV_DST_LOUT1,
	eMCDRV_DST_LOUT2,
	eMCDRV_DST_PEAK,
	eMCDRV_DST_DIT0,
	eMCDRV_DST_DIT1,
	eMCDRV_DST_DIT2,
	eMCDRV_DST_DAC,
	eMCDRV_DST_AE,
	eMCDRV_DST_CDSP,
	eMCDRV_DST_ADC0,
	eMCDRV_DST_ADC1,
	eMCDRV_DST_MIX,
	eMCDRV_DST_BIAS
} MCDRV_DST_TYPE;

/*	Register accsess availability	*/
typedef enum _MCDRV_REG_ACCSESS
{
	eMCDRV_ACCESS_DENY	= 0,
	eMCDRV_READ_ONLY	= 0x01,
	eMCDRV_WRITE_ONLY	= 0x02,
	eMCDRV_READ_WRITE	= eMCDRV_READ_ONLY | eMCDRV_WRITE_ONLY
} MCDRV_REG_ACCSESS;


/*	UpdateReg parameter	*/
typedef enum _MCDRV_UPDATE_MODE
{
	eMCDRV_UPDATE_NORMAL,
	eMCDRV_UPDATE_FORCE,
	eMCDRV_UPDATE_DUMMY
} MCDRV_UPDATE_MODE;

/*	ePacketBufAlloc setting	*/
typedef enum _MCDRV_PACKETBUF_ALLOC
{
	eMCDRV_PACKETBUF_FREE,
	eMCDRV_PACKETBUF_ALLOCATED
} MCDRV_PACKETBUF_ALLOC;

/* power management sequence mode */
typedef enum _MCDRV_PMODE
{
	eMCDRV_APM_ON,
	eMCDRV_APM_OFF
} MCDRV_PMODE;

#define	MCDRV_A_REG_NUM			(64)
#define	MCDRV_B_BASE_REG_NUM	(32)
#define	MCDRV_B_MIXER_REG_NUM	(218)
#define	MCDRV_B_AE_REG_NUM		(255)
#define	MCDRV_B_CDSP_REG_NUM	(130)
#define	MCDRV_B_CODEC_REG_NUM	(128)
#define	MCDRV_B_ANA_REG_NUM		(128)

/* control packet for serial host interface */
#define	MCDRV_MAX_CTRL_DATA_NUM	(1024)
typedef struct
{
	UINT8	abData[MCDRV_MAX_CTRL_DATA_NUM];
	UINT16	wDataNum;
} MCDRV_SERIAL_CTRL_PACKET;

/*	global information	*/
typedef struct
{
	UINT8						bHwId;
	MCDRV_PACKETBUF_ALLOC		ePacketBufAlloc;
	UINT8						abRegValA[MCDRV_A_REG_NUM];
	UINT8						abRegValB_BASE[MCDRV_B_BASE_REG_NUM];
	UINT8						abRegValB_MIXER[MCDRV_B_MIXER_REG_NUM];
	UINT8						abRegValB_AE[MCDRV_B_AE_REG_NUM];
	UINT8						abRegValB_CDSP[MCDRV_B_CDSP_REG_NUM];
	UINT8						abRegValB_CODEC[MCDRV_B_CODEC_REG_NUM];
	UINT8						abRegValB_ANA[MCDRV_B_ANA_REG_NUM];

	MCDRV_INIT_INFO				sInitInfo;
	MCDRV_PATH_INFO				sPathInfo;
	MCDRV_PATH_INFO				sPathInfoVirtual;
	MCDRV_VOL_INFO				sVolInfo;
	MCDRV_DIO_INFO				sDioInfo;
	MCDRV_DAC_INFO				sDacInfo;
	MCDRV_ADC_INFO				sAdcInfo;
	MCDRV_SP_INFO				sSpInfo;
	MCDRV_DNG_INFO				sDngInfo;
	MCDRV_AE_INFO				sAeInfo;
	MCDRV_PDM_INFO				sPdmInfo;
	MCDRV_GP_MODE				sGpMode;
	UINT8						abGpMask[GPIO_PAD_NUM];
	MCDRV_SYSEQ_INFO			sSysEq;
	MCDRV_CLKSW_INFO			sClockSwitch;

	MCDRV_SERIAL_CTRL_PACKET	sCtrlPacket;
	UINT16						wCurSlaveAddress;
	UINT16						wCurRegType;
	UINT16						wCurRegAddress;
	UINT16						wDataContinueCount;
	UINT16						wPrevAddressIndex;

	MCDRV_PMODE					eAPMode;
} MCDRV_GLOBAL_INFO;



SINT32			McResCtrl_SetHwId				(UINT8 bHwId);
UINT8			McResCtrl_GetHwId				(void);
void			McResCtrl_Init					(const MCDRV_INIT_INFO* psInitInfo);
void			McResCtrl_UpdateState			(MCDRV_STATE eState);
MCDRV_STATE		McResCtrl_GetState				(void);
UINT8			McResCtrl_GetRegVal				(UINT16 wRegType, UINT16 wRegAddr);
void			McResCtrl_SetRegVal				(UINT16 wRegType, UINT16 wRegAddr, UINT8 bRegVal);

void			McResCtrl_GetInitInfo			(MCDRV_INIT_INFO* psInitInfo);
void			McResCtrl_SetClockInfo			(const MCDRV_CLOCK_INFO* psClockInfo);
void			McResCtrl_SetPathInfo			(const MCDRV_PATH_INFO* psPathInfo);
void			McResCtrl_GetPathInfo			(MCDRV_PATH_INFO* psPathInfo);
void			McResCtrl_GetPathInfoVirtual	(MCDRV_PATH_INFO* psPathInfo);
void			McResCtrl_SetDioInfo			(const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo);
void			McResCtrl_GetDioInfo			(MCDRV_DIO_INFO* psDioInfo);
void			McResCtrl_SetVolInfo			(const MCDRV_VOL_INFO* psVolInfo);
void			McResCtrl_GetVolInfo			(MCDRV_VOL_INFO* psVolInfo);
void			McResCtrl_SetDacInfo			(const MCDRV_DAC_INFO* psDacInfo, UINT32 dUpdateInfo);
void			McResCtrl_GetDacInfo			(MCDRV_DAC_INFO* psDacInfo);
void			McResCtrl_SetAdcInfo			(const MCDRV_ADC_INFO* psAdcInfo, UINT32 dUpdateInfo);
void			McResCtrl_GetAdcInfo			(MCDRV_ADC_INFO* psAdcInfo);
void			McResCtrl_SetSpInfo				(const MCDRV_SP_INFO* psSpInfo);
void			McResCtrl_GetSpInfo				(MCDRV_SP_INFO* psSpInfo);
void			McResCtrl_SetDngInfo			(const MCDRV_DNG_INFO* psDngInfo, UINT32 dUpdateInfo);
void			McResCtrl_GetDngInfo			(MCDRV_DNG_INFO* psDngInfo);
void			McResCtrl_SetAeInfo				(const MCDRV_AE_INFO* psAeInfo, UINT32 dUpdateInfo);
void			McResCtrl_GetAeInfo				(MCDRV_AE_INFO* psAeInfo);
void			McResCtrl_SetPdmInfo			(const MCDRV_PDM_INFO* psPdmInfo, UINT32 dUpdateInfo);
void			McResCtrl_GetPdmInfo			(MCDRV_PDM_INFO* psPdmInfo);
void			McResCtrl_SetGPMode				(const MCDRV_GP_MODE* psGpMode);
void			McResCtrl_GetGPMode				(MCDRV_GP_MODE* psGpMode);
void			McResCtrl_SetGPMask				(UINT8 bMask, UINT32 dPadNo);
void			McResCtrl_GetGPMask				(UINT8* pabMask);
void			McResCtrl_GetSysEq				(MCDRV_SYSEQ_INFO* psSysEq);
void			McResCtrl_SetSysEq				(const MCDRV_SYSEQ_INFO* psSysEq, UINT32 dUpdateInfo);
void			McResCtrl_GetClockSwitch		(MCDRV_CLKSW_INFO* psClockInfo);
void			McResCtrl_SetClockSwitch		(const MCDRV_CLKSW_INFO* psClockInfo);

void			McResCtrl_GetVolReg				(MCDRV_VOL_INFO* psVolInfo);
void			McResCtrl_GetPowerInfo			(MCDRV_POWER_INFO* psPowerInfo);
void			McResCtrl_GetPowerInfoRegAccess	(const MCDRV_REG_INFO* psRegInfo, MCDRV_POWER_INFO* psPowerInfo);
void			McResCtrl_GetCurPowerInfo		(MCDRV_POWER_INFO* psPowerInfo);
MCDRV_SRC_TYPE	McResCtrl_GetDACSource			(MCDRV_DAC_CH eCh);
MCDRV_SRC_TYPE	McResCtrl_GetDITSource			(MCDRV_DIO_PORT_NO ePort);
MCDRV_SRC_TYPE	McResCtrl_GetAESource			(void);
UINT8			McResCtrl_IsSrcUsed				(MCDRV_SRC_TYPE ePathSrc);
UINT8			McResCtrl_IsDstUsed				(MCDRV_DST_TYPE eType, MCDRV_DST_CH eCh);
MCDRV_REG_ACCSESS	McResCtrl_GetRegAccess		(const MCDRV_REG_INFO* psRegInfo);

MCDRV_PMODE		McResCtrl_GetAPMode				(void);

MCDRV_PACKET*	McResCtrl_AllocPacketBuf		(void);
void			McResCtrl_ReleasePacketBuf		(void);

void			McResCtrl_InitRegUpdate			(void);
void			McResCtrl_AddRegUpdate			(UINT16 wRegType, UINT16 wAddress, UINT8 bData, MCDRV_UPDATE_MODE eUpdateMode);
void			McResCtrl_ExecuteRegUpdate		(void);
SINT32			McResCtrl_WaitEvent				(UINT32 dEvent, UINT32 dParam);



#endif /* _MCRESCTRL_H_ */