1 /****************************************************************************
3 * Copyright(c) 2010 Yamaha Corporation. All rights reserved.
7 * Description : MC Driver resource control header
9 * Version : 1.0.0 2010.09.01
11 ****************************************************************************/
17 #include "mcpacking.h"
20 #define MCDRV_HWID_AA (0x78)
21 #define MCDRV_HWID_AB (0x79)
23 #define MCDRV_BURST_WRITE_ENABLE (0x01)
26 typedef enum _MCDRV_STATE
33 #define MCDRV_LOGICAL_VOL_MUTE (-24576) /* -96dB */
34 #define MCDRV_LOGICAL_MICGAIN_DEF (3840) /* 15dB */
35 #define MCDRV_LOGICAL_HPGAIN_DEF (0) /* 0dB */
37 #define MCDRV_VOLUPDATE_ALL (0xFFFFFFFFUL)
38 #define MCDRV_VOLUPDATE_ANAOUT_ALL (0x00000001UL)
40 #define MCDRV_REG_MUTE (0x00)
42 /* DAC source setting */
43 typedef enum _MCDRV_DAC_CH
45 eMCDRV_DAC_MASTER = 0,
49 /* DIO port setting */
50 typedef enum _MCDRV_DIO_PORT_NO
57 /* Path source setting */
58 typedef enum _MCDRV_SRC_TYPE
60 eMCDRV_SRC_NONE = (0),
61 eMCDRV_SRC_MIC1 = (1<<0),
62 eMCDRV_SRC_MIC2 = (1<<1),
63 eMCDRV_SRC_MIC3 = (1<<2),
64 eMCDRV_SRC_LINE1_L = (1<<3),
65 eMCDRV_SRC_LINE1_R = (1<<4),
66 eMCDRV_SRC_LINE1_M = (1<<5),
67 eMCDRV_SRC_LINE2_L = (1<<6),
68 eMCDRV_SRC_LINE2_R = (1<<7),
69 eMCDRV_SRC_LINE2_M = (1<<8),
70 eMCDRV_SRC_DIR0 = (1<<9),
71 eMCDRV_SRC_DIR1 = (1<<10),
72 eMCDRV_SRC_DIR2 = (1<<11),
73 eMCDRV_SRC_DTMF = (1<<12),
74 eMCDRV_SRC_PDM = (1<<13),
75 eMCDRV_SRC_ADC0 = (1<<14),
76 eMCDRV_SRC_ADC1 = (1<<15),
77 eMCDRV_SRC_DAC_L = (1<<16),
78 eMCDRV_SRC_DAC_R = (1<<17),
79 eMCDRV_SRC_DAC_M = (1<<18),
80 eMCDRV_SRC_AE = (1<<19),
81 eMCDRV_SRC_CDSP = (1<<20),
82 eMCDRV_SRC_MIX = (1<<21),
83 eMCDRV_SRC_DIR2_DIRECT = (1<<22),
84 eMCDRV_SRC_CDSP_DIRECT = (1<<23)
87 /* Path destination setting */
88 typedef enum _MCDRV_DST_CH
93 typedef enum _MCDRV_DST_TYPE
113 /* Register accsess availability */
114 typedef enum _MCDRV_REG_ACCSESS
116 eMCDRV_ACCESS_DENY = 0,
117 eMCDRV_READ_ONLY = 0x01,
118 eMCDRV_WRITE_ONLY = 0x02,
119 eMCDRV_READ_WRITE = eMCDRV_READ_ONLY | eMCDRV_WRITE_ONLY
123 /* UpdateReg parameter */
124 typedef enum _MCDRV_UPDATE_MODE
126 eMCDRV_UPDATE_NORMAL,
131 /* ePacketBufAlloc setting */
132 typedef enum _MCDRV_PACKETBUF_ALLOC
134 eMCDRV_PACKETBUF_FREE,
135 eMCDRV_PACKETBUF_ALLOCATED
136 } MCDRV_PACKETBUF_ALLOC;
138 /* power management sequence mode */
139 typedef enum _MCDRV_PMODE
145 #define MCDRV_A_REG_NUM (64)
146 #define MCDRV_B_BASE_REG_NUM (32)
147 #define MCDRV_B_MIXER_REG_NUM (218)
148 #define MCDRV_B_AE_REG_NUM (255)
149 #define MCDRV_B_CDSP_REG_NUM (130)
150 #define MCDRV_B_CODEC_REG_NUM (128)
151 #define MCDRV_B_ANA_REG_NUM (128)
153 /* control packet for serial host interface */
154 #define MCDRV_MAX_CTRL_DATA_NUM (1024)
157 UINT8 abData[MCDRV_MAX_CTRL_DATA_NUM];
159 } MCDRV_SERIAL_CTRL_PACKET;
161 /* global information */
165 MCDRV_PACKETBUF_ALLOC ePacketBufAlloc;
166 UINT8 abRegValA[MCDRV_A_REG_NUM];
167 UINT8 abRegValB_BASE[MCDRV_B_BASE_REG_NUM];
168 UINT8 abRegValB_MIXER[MCDRV_B_MIXER_REG_NUM];
169 UINT8 abRegValB_AE[MCDRV_B_AE_REG_NUM];
170 UINT8 abRegValB_CDSP[MCDRV_B_CDSP_REG_NUM];
171 UINT8 abRegValB_CODEC[MCDRV_B_CODEC_REG_NUM];
172 UINT8 abRegValB_ANA[MCDRV_B_ANA_REG_NUM];
174 MCDRV_INIT_INFO sInitInfo;
175 MCDRV_PATH_INFO sPathInfo;
176 MCDRV_PATH_INFO sPathInfoVirtual;
177 MCDRV_VOL_INFO sVolInfo;
178 MCDRV_DIO_INFO sDioInfo;
179 MCDRV_DAC_INFO sDacInfo;
180 MCDRV_ADC_INFO sAdcInfo;
181 MCDRV_SP_INFO sSpInfo;
182 MCDRV_DNG_INFO sDngInfo;
183 MCDRV_AE_INFO sAeInfo;
184 MCDRV_PDM_INFO sPdmInfo;
185 MCDRV_GP_MODE sGpMode;
186 UINT8 abGpMask[GPIO_PAD_NUM];
187 MCDRV_SYSEQ_INFO sSysEq;
188 MCDRV_CLKSW_INFO sClockSwitch;
190 MCDRV_SERIAL_CTRL_PACKET sCtrlPacket;
191 UINT16 wCurSlaveAddress;
193 UINT16 wCurRegAddress;
194 UINT16 wDataContinueCount;
195 UINT16 wPrevAddressIndex;
202 SINT32 McResCtrl_SetHwId (UINT8 bHwId);
203 UINT8 McResCtrl_GetHwId (void);
204 void McResCtrl_Init (const MCDRV_INIT_INFO* psInitInfo);
205 void McResCtrl_UpdateState (MCDRV_STATE eState);
206 MCDRV_STATE McResCtrl_GetState (void);
207 UINT8 McResCtrl_GetRegVal (UINT16 wRegType, UINT16 wRegAddr);
208 void McResCtrl_SetRegVal (UINT16 wRegType, UINT16 wRegAddr, UINT8 bRegVal);
210 void McResCtrl_GetInitInfo (MCDRV_INIT_INFO* psInitInfo);
211 void McResCtrl_SetClockInfo (const MCDRV_CLOCK_INFO* psClockInfo);
212 void McResCtrl_SetPathInfo (const MCDRV_PATH_INFO* psPathInfo);
213 void McResCtrl_GetPathInfo (MCDRV_PATH_INFO* psPathInfo);
214 void McResCtrl_GetPathInfoVirtual (MCDRV_PATH_INFO* psPathInfo);
215 void McResCtrl_SetDioInfo (const MCDRV_DIO_INFO* psDioInfo, UINT32 dUpdateInfo);
216 void McResCtrl_GetDioInfo (MCDRV_DIO_INFO* psDioInfo);
217 void McResCtrl_SetVolInfo (const MCDRV_VOL_INFO* psVolInfo);
218 void McResCtrl_GetVolInfo (MCDRV_VOL_INFO* psVolInfo);
219 void McResCtrl_SetDacInfo (const MCDRV_DAC_INFO* psDacInfo, UINT32 dUpdateInfo);
220 void McResCtrl_GetDacInfo (MCDRV_DAC_INFO* psDacInfo);
221 void McResCtrl_SetAdcInfo (const MCDRV_ADC_INFO* psAdcInfo, UINT32 dUpdateInfo);
222 void McResCtrl_GetAdcInfo (MCDRV_ADC_INFO* psAdcInfo);
223 void McResCtrl_SetSpInfo (const MCDRV_SP_INFO* psSpInfo);
224 void McResCtrl_GetSpInfo (MCDRV_SP_INFO* psSpInfo);
225 void McResCtrl_SetDngInfo (const MCDRV_DNG_INFO* psDngInfo, UINT32 dUpdateInfo);
226 void McResCtrl_GetDngInfo (MCDRV_DNG_INFO* psDngInfo);
227 void McResCtrl_SetAeInfo (const MCDRV_AE_INFO* psAeInfo, UINT32 dUpdateInfo);
228 void McResCtrl_GetAeInfo (MCDRV_AE_INFO* psAeInfo);
229 void McResCtrl_SetPdmInfo (const MCDRV_PDM_INFO* psPdmInfo, UINT32 dUpdateInfo);
230 void McResCtrl_GetPdmInfo (MCDRV_PDM_INFO* psPdmInfo);
231 void McResCtrl_SetGPMode (const MCDRV_GP_MODE* psGpMode);
232 void McResCtrl_GetGPMode (MCDRV_GP_MODE* psGpMode);
233 void McResCtrl_SetGPMask (UINT8 bMask, UINT32 dPadNo);
234 void McResCtrl_GetGPMask (UINT8* pabMask);
235 void McResCtrl_GetSysEq (MCDRV_SYSEQ_INFO* psSysEq);
236 void McResCtrl_SetSysEq (const MCDRV_SYSEQ_INFO* psSysEq, UINT32 dUpdateInfo);
237 void McResCtrl_GetClockSwitch (MCDRV_CLKSW_INFO* psClockInfo);
238 void McResCtrl_SetClockSwitch (const MCDRV_CLKSW_INFO* psClockInfo);
240 void McResCtrl_GetVolReg (MCDRV_VOL_INFO* psVolInfo);
241 void McResCtrl_GetPowerInfo (MCDRV_POWER_INFO* psPowerInfo);
242 void McResCtrl_GetPowerInfoRegAccess (const MCDRV_REG_INFO* psRegInfo, MCDRV_POWER_INFO* psPowerInfo);
243 void McResCtrl_GetCurPowerInfo (MCDRV_POWER_INFO* psPowerInfo);
244 MCDRV_SRC_TYPE McResCtrl_GetDACSource (MCDRV_DAC_CH eCh);
245 MCDRV_SRC_TYPE McResCtrl_GetDITSource (MCDRV_DIO_PORT_NO ePort);
246 MCDRV_SRC_TYPE McResCtrl_GetAESource (void);
247 UINT8 McResCtrl_IsSrcUsed (MCDRV_SRC_TYPE ePathSrc);
248 UINT8 McResCtrl_IsDstUsed (MCDRV_DST_TYPE eType, MCDRV_DST_CH eCh);
249 MCDRV_REG_ACCSESS McResCtrl_GetRegAccess (const MCDRV_REG_INFO* psRegInfo);
251 MCDRV_PMODE McResCtrl_GetAPMode (void);
253 MCDRV_PACKET* McResCtrl_AllocPacketBuf (void);
254 void McResCtrl_ReleasePacketBuf (void);
256 void McResCtrl_InitRegUpdate (void);
257 void McResCtrl_AddRegUpdate (UINT16 wRegType, UINT16 wAddress, UINT8 bData, MCDRV_UPDATE_MODE eUpdateMode);
258 void McResCtrl_ExecuteRegUpdate (void);
259 SINT32 McResCtrl_WaitEvent (UINT32 dEvent, UINT32 dParam);
263 #endif /* _MCRESCTRL_H_ */