blob: 9387907f92baf24261b1a4082c150b5bc9c096fa [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001/*
2 * ASR Audio path definition of PM805
3 *
4 * Copyright (C) 2018 ASR Microelectronic Ltd.
5 *
6 * Author: Jackie Fan <yuanchunfan@asrmicro.com>
7 *
8 * This file contains proprietary information.
9 * No dissemination allowed without prior written permission from
10 * ASR Microelectronic Ltd.
11 *
12 * File Description:
13 *
14 * This file contains header for audio path definition of PM805
15 */
16
17#ifndef ACM_PM805_H
18#define ACM_PM805_H
19/*
20 * CODEC_PM805: Audio use SAI1
21 */
22#define CODEC_PM805_AUDIO_REG30 0x30
23#define CODEC_PM805_AUDIO_MASTER 0x0f //16bits, one bit shift, master
24#define CODEC_PM805_AUDIO_SLAVE 0x0e //16bits, one bit shift, slave
25
26#define CODEC_PM805_AUDIO_REG31 0x31
27#define CODEC_PM805_AUDIO_44100 0x49 //HiFi use SAI1: 44.1KHz,32fs
28#define CODEC_PM805_AUDIO_8000 0x01 //HiFi use SAI1: 8KHz,32fs
29#define CODEC_PM805_AUDIO_16000 0x21 //HiFi use SAI1: 16KHz,32fs
30
31/*
32 * CODEC_PM805: Voice use SAI2
33 */
34#define CODEC_PM805_VOICE_REG35 0x35
35#define CODEC_PM805_VOICE_MASTER 0x0d //16bits, one bit shift, master
36#define CODEC_PM805_VOICE_SLAVE 0x0c //16bits, one bit shift, slave
37
38
39#define CODEC_PM805_VOICE_REG36 0x36
40#define CODEC_PM805_VOICE_WB 0xa1 //16KHz,32fs
41#define CODEC_PM805_VOICE_NB 0x81 //8KHz,32fs
42
43//////////////////////////////////////////////////////////////////////////////////
44//////////////////////////////////////////////////////////////////////////////////
45/////////////////////////APH_PATH_ID_HIFIPLAYTOEARPHONE//////////////////////////
46ACMAPH_Register ACM_HiFiPlayToEarphone_Disable[]={
47 {ELBA, 0x29, 0x00},{ELBA, 0x90, 0x00},{ELBA, 0x30, 0x0},{ELBA, 0x31, 0x0},{ELBA, 0x32, 0x0},{ELBA, 0x52, 0x00},{ELBA, 0x51, 0x00},
48 {ELBA, 0x50, 0},{ELBA, 0x55, 0x0}
49};
50ACMAPH_Register ACM_HiFiPlayToEarphone_Enable[]={
51 {ELBA, 0x90, 0x7e},{ELBA, 0x30, 0xf},{ELBA, 0x31, CODEC_PM805_AUDIO_44100},{ELBA, 0x32, 0xb},{ELBA, 0x52, 0x00},{ELBA, 0x51, 0x15},
52 {ELBA, 0x50, 0xf},{ELBA, 0x55, 0x20},{ELBA, 0x29, 0xb},{ELBA, 0x56, 0xb4}
53};
54
55/////////////////////////APH_PATH_ID_HIFIPLAYTOSPKR//////////////////////////
56//NOTE:The LINE_P and LINE_N of SPKR are connected with EAR_P and EAR_N, so the register configuration is identical with EarPhone.
57//use the following config in fact.
58ACMAPH_Register ACM_HiFiPlayToSPKR_Disable[]={
59 {ELBA, 0x20, 0},{ELBA, 0x21, 0},{ELBA, 0x53, 0x0},{ELBA, 0x30, 0},{ELBA, 0x31, 0},{ELBA, 0x32, 0},
60 {ELBA, 0x51, 0},{ELBA, 0x50, 0},{ELBA, 0x55, 0x0}
61};
62ACMAPH_Register ACM_HiFiPlayToSPKR_Enable[]={
63 {ELBA, 0x31, CODEC_PM805_AUDIO_44100},{ELBA, 0x30, 0xf},{ELBA, 0x32, 0xb},{ELBA, 0x51, 0x15},{ELBA, 0x55, 0x20},{ELBA, 0x58, 0xb7},
64 {ELBA, 0x50, 0xf},{ELBA, 0x53, 0x00},{ELBA, 0x21, 0x40},{ELBA, 0x20, 0xc1}
65};
66
67/////////////////////////APH_PATH_ID_HIFIPLAYTOHP//////////////////////////
68ACMAPH_Register ACM_HiFiPlayToHP_Disable[]={
69 {ELBA, 0x90, 0},{ELBA, 0x26, 0},{ELBA, 0x30, 0},{ELBA, 0x31, 0},{ELBA, 0x32, 0},
70 {ELBA, 0x52, 0x00},{ELBA, 0x51, 0},{ELBA, 0x50, 0},{ELBA, 0x55, 0}
71};
72ACMAPH_Register ACM_HiFiPlayToHP_Enable[]={
73 {ELBA, 0x28, 0x0},{ELBA, 0x90, 0x7e},{ELBA, 0x30, 0xf},{ELBA, 0x31, CODEC_PM805_AUDIO_44100},{ELBA, 0x32, 0xb},{ELBA, 0x52, 0x00},{ELBA, 0x51, 0x15},
74 {ELBA, 0x50, 0xf},{ELBA, 0x55, 0x20},{ELBA, 0x56, 0x9b},{ELBA, 0x57, 0x9b},{ELBA, 0x26, 0x2b}
75};
76
77/////////////////////////APH_PATH_ID_HIFIRECORDFROMMIC1//////////////////////////
78ACMAPH_Register ACM_HiFiRecordFromMic1_Disable[]={
79 {ELBA, 0x51, 0},{ELBA, 0x16, 0},{ELBA, 0x10, 0x14},{ELBA, 0x11, 0},{ELBA, 0x92, 0},{ELBA, 0x94, 0x3},{ELBA, 0x30, 0},
80 {ELBA, 0x31, 0x0},{ELBA, 0x32, 0x0},{ELBA, 0x50, 0},{ELBA, 0x3c, 0},
81};
82ACMAPH_Register ACM_HiFiRecordFromMic1_Enable[]={
83 {ELBA, 0x11, 0x00},{ELBA, 0x12, 0x14},{ELBA, 0x16, 0x1},{ELBA, 0x10, 0x14},{ELBA, 0x92, 0x56},{ELBA, 0x94, 0x3},{ELBA, 0x30, 0xf},{ELBA, 0x31, CODEC_PM805_AUDIO_44100},
84 {ELBA, 0x32, 0x0b},{ELBA, 0x3c, 0},{ELBA, 0x50, 0xf},{ELBA, 0x51, 0x15}
85};
86ACMAPH_Register ACM_HiFiRecordFromMic1_Mute[]={
87 {ELBA, 0x11, 0x03},
88};
89ACMAPH_Register ACM_HiFiRecordFromMic1_UnMute[]={
90 {ELBA, 0x11, 0x00},
91};
92/////////////////////////APH_PATH_ID_HIFIRECORDFROMHSMIC//////////////////////////
93ACMAPH_Register ACM_HiFiRecordFromHsMic_Disable[]={
94 {ELBA, 0x51, 0},{ELBA, 0x16, 0},{ELBA, 0x10, 0x14},{ELBA, 0x11, 0},{ELBA, 0x92, 0},{ELBA, 0x94, 0x2},{ELBA, 0x30, 0},
95 {ELBA, 0x31, 0x0},{ELBA, 0x32, 0x0},{ELBA, 0x50, 0},{ELBA, 0x3c, 0}
96};
97ACMAPH_Register ACM_HiFiRecordFromHsMic_Enable[]={
98 {ELBA, 0x11, 0x01},{ELBA, 0x12, 0x14},{ELBA, 0x16, 0x9},{ELBA, 0x10, 0x14},{ELBA, 0x92, 0x56},{ELBA, 0x94, 0x1},{ELBA, 0x30, 0xf},{ELBA, 0x31, CODEC_PM805_AUDIO_44100},
99 {ELBA, 0x32, 0x0b},{ELBA, 0x3c, 0},{ELBA, 0x50, 0xf},{ELBA, 0x51, 0x15},
100};
101ACMAPH_Register ACM_HiFiRecordFromHsMic_Mute[]={
102 {ELBA, 0x11, 0x02},
103};
104ACMAPH_Register ACM_HiFiRecordFromHsMic_UnMute[]={
105 {ELBA, 0x11, 0x01},
106};
107//////////////////////////////////////////////////////////////////////////////////
108//////////////////////////////////////////////////////////////////////////////////
109/////////////////////////APH_PATH_ID_VOICEPLAYTOEARPHONE//////////////////////////
110
111ACMAPH_Register ACM_VoicePlayToEarphone_Disable[]={
112 {ELBA, 0x29, 0},{ELBA, 0x90, 0x7e},{ELBA, 0x35, 0},{ELBA, 0x36, 0},{ELBA, 0x37, 0},{ELBA, 0x38, 0},{ELBA, 0x39, 0},
113 {ELBA, 0x52, 0x22},{ELBA, 0x51, 0},{ELBA, 0x50, 0},{ELBA, 0x55, 0x0}
114};
115ACMAPH_Register ACM_VoicePlayToEarphone_Enable[]={
116 {ELBA, 0x90, 0x7e},{ELBA, 0x35, CODEC_PM805_VOICE_MASTER},{ELBA, 0x36, CODEC_PM805_VOICE_WB},{ELBA, 0x37, 0x2},{ELBA, 0x38, 0x00},{ELBA, 0x39, 0x10},{ELBA, 0x52, 0x22},
117 {ELBA, 0x51, 0x2a},{ELBA, 0x50, 0xf},{ELBA, 0x55, 0x20},{ELBA, 0x29, 0x0b},{ELBA, 0x56, 0xc7},{ELBA, 0x57, 0xc7}
118};
119
120/////////////////////////APH_PATH_ID_VOICEPLAYTOSPKR//////////////////////////
121//NOTE:The LINE_P and LINE_N of SPKR are connected with EAR_P and EAR_N, so the register configuration is identical with EarPhone.
122//use the following config in fact.
123ACMAPH_Register ACM_VoicePlayToSPKR_Disable[]={
124 {ELBA, 0x53, 0},{ELBA, 0x20, 0},{ELBA, 0x21, 0},{ELBA, 0x90, 0x7e},{ELBA, 0x35, 0},{ELBA, 0x36, 0},{ELBA, 0x37, 0},
125 {ELBA, 0x51, 0},{ELBA, 0x50, 0},{ELBA, 0x55, 0x0}
126};
127ACMAPH_Register ACM_VoicePlayToSPKR_Enable[]={
128 {ELBA, 0x90, 0x7e},{ELBA, 0x35, CODEC_PM805_VOICE_MASTER},{ELBA, 0x36, CODEC_PM805_VOICE_WB},{ELBA, 0x37, 0x2},{ELBA, 0x38, 0x0},{ELBA, 0x39, 0x10},{ELBA, 0x53, 0x20},
129 {ELBA, 0x51, 0x2a},{ELBA, 0x50, 0xf},{ELBA, 0x55, 0x20},{ELBA, 0x21, 0x40},{ELBA, 0x20, 0xc1},{ELBA, 0x58, 0x97}
130};
131
132/////////////////////////APH_PATH_ID_VOICEPLAYTOHP//////////////////////////
133ACMAPH_Register ACM_VoicePlayToHP_Disable[]={
134 {ELBA, 0x26, 0},{ELBA, 0x90, 0x7e},{ELBA, 0x35, 0},{ELBA, 0x36, 0},{ELBA, 0x37, 0},{ELBA, 0x38, 0},{ELBA, 0x39, 0},
135 {ELBA, 0x52, 0x22},{ELBA, 0x51, 0},{ELBA, 0x50, 0},{ELBA, 0x55, 0}
136};
137ACMAPH_Register ACM_VoicePlayToHP_Enable[]={
138 {ELBA, 0x28, 0x0},{ELBA, 0x90, 0x7e},{ELBA, 0x35, CODEC_PM805_VOICE_MASTER},{ELBA, 0x36, CODEC_PM805_VOICE_WB},{ELBA, 0x37, 0x2},{ELBA, 0x38, 0},{ELBA, 0x39, 0},{ELBA, 0x52, 0x22},
139 {ELBA, 0x50, 0xf},{ELBA, 0x55, 0x20},{ELBA, 0x26, 0x2b},{ELBA, 0x56, 0x9b},{ELBA, 0x57, 0x9b},{ELBA, 0x51, 0x2a},
140};
141
142/////////////////////////APH_PATH_ID_VOICERECORDFROMMIC1//////////////////////////
143ACMAPH_Register ACM_VoiceRecordFromMic1_Disable[]={
144 {ELBA, 0x12, 0},{ELBA, 0x51, 0},{ELBA, 0x16, 0},{ELBA, 0x92, 0},{ELBA, 0x94, 0x2},{ELBA, 0x10, 0x14},{ELBA, 0x11, 0},{ELBA, 0x3d, 0x1},
145 {ELBA, 0x50, 0},{ELBA, 0x35, 0},{ELBA, 0x36, 0},{ELBA, 0x37, 0}, {ELBA, 0x38, 0},
146};
147ACMAPH_Register ACM_VoiceRecordFromMic1_Enable[]={
148 {ELBA, 0x11, 0x00},{ELBA, 0x16, 0x1},{ELBA, 0x92, 0x56},{ELBA, 0x94, 0x1},{ELBA, 0x10, 0x14},{ELBA, 0x35, CODEC_PM805_VOICE_MASTER},{ELBA, 0x36, CODEC_PM805_VOICE_WB},
149 {ELBA, 0x37, 0x2},{ELBA, 0x38, 0},{ELBA, 0x3d, 0x1},{ELBA, 0x50, 0xf},{ELBA, 0x51, 0x2a}
150};
151ACMAPH_Register ACM_VoiceRecordFromMic1_Mute[]={
152 {ELBA, 0x11, 0x3},
153};
154ACMAPH_Register ACM_VoiceRecordFromMic1_UnMute[]={
155 {ELBA, 0x11, 0x00},
156};
157/////////////////////////APH_PATH_ID_VOICERECORDFROMHSMIC//////////////////////////
158ACMAPH_Register ACM_VoiceRecordFromHsMic_Disable[]={
159 {ELBA, 0x51, 0},{ELBA, 0x16, 0},{ELBA, 0x10, 0x14},{ELBA, 0x11, 0},{ELBA, 0x92, 0},{ELBA, 0x94, 0x2},{ELBA, 0x3d, 1},
160 {ELBA, 0x50, 0},{ELBA, 0x35, 0},{ELBA, 0x36, 0},{ELBA, 0x37, 0},{ELBA, 0x38, 0}
161};
162ACMAPH_Register ACM_VoiceRecordFromHsMic_Enable[]={
163 {ELBA, 0x11, 0x01},{ELBA, 0x16, 0x49},{ELBA, 0x10, 0x14},{ELBA, 0x92, 0x56},{ELBA, 0x94, 0x1},{ELBA, 0x35, CODEC_PM805_VOICE_MASTER},{ELBA, 0x36, CODEC_PM805_VOICE_WB},
164 {ELBA, 0x37, 0x02},{ELBA, 0x38, 0},{ELBA, 0x3d, 1},{ELBA, 0x50, 0xf},{ELBA, 0x51, 0x2a},{ELBA, 0x12, 0x0}
165};
166ACMAPH_Register ACM_VoiceRecordFromHsMic_Mute[]={
167 {ELBA, 0x11, 0x2},
168};
169ACMAPH_Register ACM_VoiceRecordFromHsMic_UnMute[]={
170 {ELBA, 0x11, 0x01},
171};
172
173//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
174static ACMAPH_Component ACM_Disable[APH_PATH_ID_CNT]={
175 {APH_PATH_ID_HIFIPLAYTOEARPHONE, ACM_HiFiPlayToEarphone_Disable, sizeof(ACM_HiFiPlayToEarphone_Disable)/sizeof(ACMAPH_Register)},
176 {APH_PATH_ID_HIFIPLAYTOSPKR, ACM_HiFiPlayToSPKR_Disable, sizeof(ACM_HiFiPlayToSPKR_Disable)/sizeof(ACMAPH_Register)},
177 {APH_PATH_ID_HIFIPLAYTOHP, ACM_HiFiPlayToHP_Disable, sizeof(ACM_HiFiPlayToHP_Disable)/sizeof(ACMAPH_Register)},
178 {APH_PATH_ID_HIFIRECORDFROMMIC1, ACM_HiFiRecordFromMic1_Disable, sizeof(ACM_HiFiRecordFromMic1_Disable)/sizeof(ACMAPH_Register)},
179 {APH_PATH_ID_HIFIRECORDFROMHSMIC, ACM_HiFiRecordFromHsMic_Disable, sizeof(ACM_HiFiRecordFromHsMic_Disable)/sizeof(ACMAPH_Register)},
180 {APH_PATH_ID_VOICEPLAYTOEARPHONE, ACM_VoicePlayToEarphone_Disable, sizeof(ACM_VoicePlayToEarphone_Disable)/sizeof(ACMAPH_Register)},
181 {APH_PATH_ID_VOICEPLAYTOSPKR, ACM_VoicePlayToSPKR_Disable, sizeof(ACM_VoicePlayToSPKR_Disable)/sizeof(ACMAPH_Register)},
182 {APH_PATH_ID_VOICEPLAYTOHP, ACM_VoicePlayToHP_Disable, sizeof(ACM_VoicePlayToHP_Disable)/sizeof(ACMAPH_Register)},
183 {APH_PATH_ID_VOICERECORDFROMMIC1, ACM_VoiceRecordFromMic1_Disable, sizeof(ACM_VoiceRecordFromMic1_Disable)/sizeof(ACMAPH_Register)},
184 {APH_PATH_ID_VOICERECORDFROMHSMIC, ACM_VoiceRecordFromHsMic_Disable, sizeof(ACM_VoiceRecordFromHsMic_Disable)/sizeof(ACMAPH_Register)},
185};
186
187static ACMAPH_Component ACM_Enable[APH_PATH_ID_CNT]={
188 {APH_PATH_ID_HIFIPLAYTOEARPHONE, ACM_HiFiPlayToEarphone_Enable, sizeof(ACM_HiFiPlayToEarphone_Enable)/sizeof(ACMAPH_Register)},
189 {APH_PATH_ID_HIFIPLAYTOSPKR, ACM_HiFiPlayToSPKR_Enable, sizeof(ACM_HiFiPlayToSPKR_Enable)/sizeof(ACMAPH_Register)},
190 {APH_PATH_ID_HIFIPLAYTOHP, ACM_HiFiPlayToHP_Enable, sizeof(ACM_HiFiPlayToHP_Enable)/sizeof(ACMAPH_Register)},
191 {APH_PATH_ID_HIFIRECORDFROMMIC1, ACM_HiFiRecordFromMic1_Enable, sizeof(ACM_HiFiRecordFromMic1_Enable)/sizeof(ACMAPH_Register)},
192 {APH_PATH_ID_HIFIRECORDFROMHSMIC, ACM_HiFiRecordFromHsMic_Enable, sizeof(ACM_HiFiRecordFromHsMic_Enable)/sizeof(ACMAPH_Register)},
193 {APH_PATH_ID_VOICEPLAYTOEARPHONE, ACM_VoicePlayToEarphone_Enable, sizeof(ACM_VoicePlayToEarphone_Enable)/sizeof(ACMAPH_Register)},
194 {APH_PATH_ID_VOICEPLAYTOSPKR, ACM_VoicePlayToSPKR_Enable, sizeof(ACM_VoicePlayToSPKR_Enable)/sizeof(ACMAPH_Register)},
195 {APH_PATH_ID_VOICEPLAYTOHP, ACM_VoicePlayToHP_Enable, sizeof(ACM_VoicePlayToHP_Enable)/sizeof(ACMAPH_Register)},
196 {APH_PATH_ID_VOICERECORDFROMMIC1, ACM_VoiceRecordFromMic1_Enable, sizeof(ACM_VoiceRecordFromMic1_Enable)/sizeof(ACMAPH_Register)},
197 {APH_PATH_ID_VOICERECORDFROMHSMIC, ACM_VoiceRecordFromHsMic_Enable, sizeof(ACM_VoiceRecordFromHsMic_Enable)/sizeof(ACMAPH_Register)},
198};
199
200static ACMAPH_Component ACM_Mute[APH_PATH_IN_CNT]={
201 {APH_PATH_ID_HIFIRECORDFROMMIC1, ACM_HiFiRecordFromMic1_Mute, sizeof(ACM_HiFiRecordFromMic1_Mute)/sizeof(ACMAPH_Register)},
202 {APH_PATH_ID_HIFIRECORDFROMHSMIC, ACM_HiFiRecordFromHsMic_Mute, sizeof(ACM_HiFiRecordFromHsMic_Mute)/sizeof(ACMAPH_Register)},
203 {APH_PATH_ID_VOICERECORDFROMMIC1, ACM_VoiceRecordFromMic1_Mute, sizeof(ACM_VoiceRecordFromMic1_Mute)/sizeof(ACMAPH_Register)},
204 {APH_PATH_ID_VOICERECORDFROMHSMIC, ACM_VoiceRecordFromHsMic_Mute, sizeof(ACM_VoiceRecordFromHsMic_Mute)/sizeof(ACMAPH_Register)},
205};
206static ACMAPH_Component ACM_UnMute[APH_PATH_IN_CNT]={
207 {APH_PATH_ID_HIFIRECORDFROMMIC1, ACM_HiFiRecordFromMic1_UnMute, sizeof(ACM_HiFiRecordFromMic1_UnMute)/sizeof(ACMAPH_Register)},
208 {APH_PATH_ID_HIFIRECORDFROMHSMIC, ACM_HiFiRecordFromHsMic_UnMute, sizeof(ACM_HiFiRecordFromHsMic_UnMute)/sizeof(ACMAPH_Register)},
209 {APH_PATH_ID_VOICERECORDFROMMIC1, ACM_VoiceRecordFromMic1_UnMute, sizeof(ACM_VoiceRecordFromMic1_UnMute)/sizeof(ACMAPH_Register)},
210 {APH_PATH_ID_VOICERECORDFROMHSMIC, ACM_VoiceRecordFromHsMic_UnMute, sizeof(ACM_VoiceRecordFromHsMic_UnMute)/sizeof(ACMAPH_Register)},
211};
212
213extern ACH_ComponentHandler elba_handler;
214extern ACH_ComponentHandler ustica_handler;
215
216static APH_ACHComponent ACH_component_table[] = {
217 {ELBA, &elba_handler},
218};
219//Sorted as APH_AudioComponent
220static char APH_AudioComponent_Name[][16]= {
221 "ELBA",
222} ;
223
224#endif