xllp_wm9712.cod
来自「pxa270为硬件平台的wince操作系统XLLP驱动源码」· COD 代码 · 共 894 行 · 第 1/2 页
COD
894 行
00004 e1a03001 mov r3, r1
00008 e1a05000 mov r5, r0
; 170 : XLLP_ACODEC_ERROR_T status = XLLP_ACODEC_SUCCESS;
; 171 : XLLP_UINT16_T value;
; 172 :
; 173 : switch (RateInHz)
0000c e3530d7d cmp r3, #0x7D, 26
00010 0a00001a beq |$L1252|
00014 e3a02c2b mov r2, #0x2B, 24
00018 e3822011 orr r2, r2, #0x11
0001c e1530002 cmp r3, r2
00020 0a000010 beq |$L1258|
00024 e3530dfa cmp r3, #0xFA, 26
00028 0a000012 beq |$L1254|
0002c e3a02c56 mov r2, #0x56, 24
00030 e3822022 orr r2, r2, #0x22
00034 e1530002 cmp r3, r2
00038 0a00000a beq |$L1258|
0003c e3530c7d cmp r3, #0x7D, 24
00040 0a00000a beq |$L1256|
00044 e3a02b2b mov r2, #0x2B, 22
00048 e3822044 orr r2, r2, #0x44
0004c e1530002 cmp r3, r2
00050 13a02cbb movne r2, #0xBB, 24
00054 13822080 orrne r2, r2, #0x80
00058 11530002 cmpne r3, r2
; 196 : default:
; 197 : return XLLP_ACODEC_SAMPLERATE_INVALID;
0005c 13a00007 movne r0, #7
; 207 : return status;
; 208 : }
00060 18bd4030 ldmneia sp!, {r4, r5, lr}
00064 112fff1e bxne lr
00068 |$L1258|
; 190 : case 44100:
; 191 : value = XLLP_AC97_U14_DR_44100;
; 192 : break;
; 193 : case 48000:
; 194 : value = XLLP_AC97_U14_DR_48000;
00068 e1a04002 mov r4, r2
; 195 : break;
0006c ea000004 b |$L1249|
00070 |$L1256|
; 184 : case 22050:
; 185 : value = XLLP_AC97_U14_DR_22050;
; 186 : break;
; 187 : case 32000:
; 188 : value = XLLP_AC97_U14_DR_32000;
00070 e3a04c7d mov r4, #0x7D, 24
; 189 : break;
00074 ea000002 b |$L1249|
00078 |$L1254|
; 177 : break;
; 178 : case 11025:
; 179 : value = XLLP_AC97_U14_DR_11025;
; 180 : break;
; 181 : case 16000:
; 182 : value = XLLP_AC97_U14_DR_16000;
00078 e3a04dfa mov r4, #0xFA, 26
; 183 : break;
0007c ea000000 b |$L1249|
00080 |$L1252|
; 174 : {
; 175 : case 8000:
; 176 : value = XLLP_AC97_U14_DR_8000;
00080 e3a04d7d mov r4, #0x7D, 26
00084 |$L1249|
; 198 : }
; 199 : //enable VRA mode
; 200 : status = XllpAc97ACodecWrite(pDeviceContext, XLLP_AC97_CR_E_AUDIO_CTRL_STAT, XLLP_AC97_U14_EASCR_VRA);
00084 e3a02001 mov r2, #1
00088 e3a0102a mov r1, #0x2A
0008c e1a00005 mov r0, r5
00090 eb000000 bl XllpAc97ACodecWrite
00094 e3500000 cmp r0, #0
; 201 : if (XLLP_ACODEC_SUCCESS != status)
; 202 : {
; 203 : return status;
; 204 : }
; 205 :
; 206 : status = XllpAc97ACodecWrite(pDeviceContext, XLLP_AC97_CR_E_ASR_PCM_LR_ADC_RT, value);
00098 01a02004 moveq r2, r4
0009c 03a01032 moveq r1, #0x32
000a0 01a00005 moveq r0, r5
000a4 0b000000 bleq XllpAc97ACodecWrite
; 207 : return status;
; 208 : }
000a8 e8bd4030 ldmia sp!, {r4, r5, lr}
000ac e12fff1e bx lr
000b0 |$M1393|
ENDP ; |XllpWm9712SetInSampleRate|
EXPORT |XllpWm9712SetOutSampleRate|
00000 AREA |.text| { |XllpWm9712SetOutSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpWm9712SetOutSampleRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712SetOutSampleRate| } ; comdat associative
|$T1408| DCD |$L1407|
DCD 0x40002c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpWm9712SetOutSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpWm9712SetOutSampleRate| PROC
; 211 : {
00000 |$L1407|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M1405|
00004 e1a03001 mov r3, r1
00008 e1a05000 mov r5, r0
; 212 : XLLP_ACODEC_ERROR_T status = XLLP_ACODEC_SUCCESS;
; 213 : XLLP_UINT16_T value;
; 214 :
; 215 : switch (RateInHz)
0000c e3530d7d cmp r3, #0x7D, 26
00010 0a00001a beq |$L1272|
00014 e3a02c2b mov r2, #0x2B, 24
00018 e3822011 orr r2, r2, #0x11
0001c e1530002 cmp r3, r2
00020 0a000010 beq |$L1278|
00024 e3530dfa cmp r3, #0xFA, 26
00028 0a000012 beq |$L1274|
0002c e3a02c56 mov r2, #0x56, 24
00030 e3822022 orr r2, r2, #0x22
00034 e1530002 cmp r3, r2
00038 0a00000a beq |$L1278|
0003c e3530c7d cmp r3, #0x7D, 24
00040 0a00000a beq |$L1276|
00044 e3a02b2b mov r2, #0x2B, 22
00048 e3822044 orr r2, r2, #0x44
0004c e1530002 cmp r3, r2
00050 13a02cbb movne r2, #0xBB, 24
00054 13822080 orrne r2, r2, #0x80
00058 11530002 cmpne r3, r2
; 238 : default:
; 239 : return XLLP_ACODEC_SAMPLERATE_INVALID;
0005c 13a00007 movne r0, #7
; 249 : return status;
; 250 : }
00060 18bd4030 ldmneia sp!, {r4, r5, lr}
00064 112fff1e bxne lr
00068 |$L1278|
; 232 : case 44100:
; 233 : value = XLLP_AC97_U14_DR_44100;
; 234 : break;
; 235 : case 48000:
; 236 : value = XLLP_AC97_U14_DR_48000;
00068 e1a04002 mov r4, r2
; 237 : break;
0006c ea000004 b |$L1269|
00070 |$L1276|
; 226 : case 22050:
; 227 : value = XLLP_AC97_U14_DR_22050;
; 228 : break;
; 229 : case 32000:
; 230 : value = XLLP_AC97_U14_DR_32000;
00070 e3a04c7d mov r4, #0x7D, 24
; 231 : break;
00074 ea000002 b |$L1269|
00078 |$L1274|
; 219 : break;
; 220 : case 11025:
; 221 : value = XLLP_AC97_U14_DR_11025;
; 222 : break;
; 223 : case 16000:
; 224 : value = XLLP_AC97_U14_DR_16000;
00078 e3a04dfa mov r4, #0xFA, 26
; 225 : break;
0007c ea000000 b |$L1269|
00080 |$L1272|
; 216 : {
; 217 : case 8000:
; 218 : value = XLLP_AC97_U14_DR_8000;
00080 e3a04d7d mov r4, #0x7D, 26
00084 |$L1269|
; 240 : }
; 241 : //enable VRA mode
; 242 : status = XllpAc97ACodecWrite(pDeviceContext, XLLP_AC97_CR_E_AUDIO_CTRL_STAT, XLLP_AC97_U14_EASCR_VRA);
00084 e3a02001 mov r2, #1
00088 e3a0102a mov r1, #0x2A
0008c e1a00005 mov r0, r5
00090 eb000000 bl XllpAc97ACodecWrite
00094 e3500000 cmp r0, #0
; 243 : if (XLLP_ACODEC_SUCCESS != status)
; 244 : {
; 245 : return status;
; 246 : }
; 247 :
; 248 : status = XllpAc97ACodecWrite(pDeviceContext, XLLP_AC97_CR_E_ASR_PCM_FRNT_DAC_RT, value);
00098 01a02004 moveq r2, r4
0009c 03a0102c moveq r1, #0x2C
000a0 01a00005 moveq r0, r5
000a4 0b000000 bleq XllpAc97ACodecWrite
; 249 : return status;
; 250 : }
000a8 e8bd4030 ldmia sp!, {r4, r5, lr}
000ac e12fff1e bx lr
000b0 |$M1406|
ENDP ; |XllpWm9712SetOutSampleRate|
EXPORT |XllpWm9712EnterEquipmentState|
00000 AREA |.text| { |XllpWm9712EnterEquipmentState| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpWm9712EnterEquipmentState|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712EnterEquipmentState| } ; comdat associative
|$T1417| DCD |$L1416|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpWm9712EnterEquipmentState| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpWm9712EnterEquipmentState| PROC
; 253 : {
00000 |$L1416|
00000 |$M1414|
; 254 : return XLLP_ACODEC_CODEC_FEATURE_NOT_SUPPORTED;
00000 e3a0000c mov r0, #0xC
; 255 : }
00004 e12fff1e bx lr
00008 |$M1415|
ENDP ; |XllpWm9712EnterEquipmentState|
EXPORT |XllpWm9712GetEquipmentState|
00000 AREA |.text| { |XllpWm9712GetEquipmentState| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpWm9712GetEquipmentState|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712GetEquipmentState| } ; comdat associative
|$T1426| DCD |$L1425|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpWm9712GetEquipmentState| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpWm9712GetEquipmentState| PROC
; 258 : {
00000 |$L1425|
00000 |$M1423|
; 259 : return XLLP_ACODEC_CODEC_FEATURE_NOT_SUPPORTED;
00000 e3a0000c mov r0, #0xC
; 260 : }
00004 e12fff1e bx lr
00008 |$M1424|
ENDP ; |XllpWm9712GetEquipmentState|
EXPORT |XllpWm9712SpecificInit|
00000 AREA |.text| { |XllpWm9712SpecificInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpWm9712SpecificInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712SpecificInit| } ; comdat associative
|$T1436| DCD |$L1435|
DCD 0x40002c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpWm9712SpecificInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpWm9712SpecificInit| PROC
; 263 : {
00000 |$L1435|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M1433|
00004 e1a04000 mov r4, r0
; 264 : XllpAc97ACodecWrite (pDeviceContext, MIC_VOLUME, 0x6000);
00008 e3a02a06 mov r2, #6, 20
0000c e3a0100e mov r1, #0xE
00010 eb000000 bl XllpAc97ACodecWrite
; 265 : XllpAc97ACodecWrite (pDeviceContext, RECORD_GAIN, 0x8000);
00014 e3a02902 mov r2, #2, 18
00018 e3a0101c mov r1, #0x1C
0001c e1a00004 mov r0, r4
00020 eb000000 bl XllpAc97ACodecWrite
; 266 : XllpAc97ACodecWrite (pDeviceContext, LOUT2_ROUT2, 0x0);
00024 e3a02000 mov r2, #0
00028 e3a01002 mov r1, #2
0002c e1a00004 mov r0, r4
00030 eb000000 bl XllpAc97ACodecWrite
; 267 : XllpAc97ACodecWrite (pDeviceContext, OUT3_VOLUME, 0x0);
00034 e3a02000 mov r2, #0
00038 e3a01016 mov r1, #0x16
0003c e1a00004 mov r0, r4
00040 eb000000 bl XllpAc97ACodecWrite
; 268 : XllpAc97ACodecWrite (pDeviceContext, MONOOUT_VOLUME, 0x0);
00044 e3a02000 mov r2, #0
00048 e3a01006 mov r1, #6
0004c e1a00004 mov r0, r4
00050 eb000000 bl XllpAc97ACodecWrite
; 269 : XllpAc97ACodecWrite (pDeviceContext, PHONE_VOLUME, 0x0);
00054 e3a02000 mov r2, #0
00058 e3a0100c mov r1, #0xC
0005c e1a00004 mov r0, r4
00060 eb000000 bl XllpAc97ACodecWrite
; 270 : XllpAc97ACodecWrite (pDeviceContext, RECORD_SELECT, 0x0);
00064 e3a02000 mov r2, #0
00068 e3a0101a mov r1, #0x1A
0006c e1a00004 mov r0, r4
00070 eb000000 bl XllpAc97ACodecWrite
; 271 : XllpAc97ACodecWrite (pDeviceContext, HEADPHONE_VOLUME, 0x0);
00074 e3a02000 mov r2, #0
00078 e3a01004 mov r1, #4
0007c e1a00004 mov r0, r4
00080 eb000000 bl XllpAc97ACodecWrite
; 272 : XllpAc97ACodecWrite (pDeviceContext, DAC_VOLUME, 0x0);
00084 e3a02000 mov r2, #0
00088 e3a01018 mov r1, #0x18
0008c e1a00004 mov r0, r4
00090 eb000000 bl XllpAc97ACodecWrite
; 273 : XllpAc97ACodecWrite (pDeviceContext, MASTER_VOLUME, 0x0);
00094 e3a02000 mov r2, #0
00098 e3a01002 mov r1, #2
0009c e1a00004 mov r0, r4
000a0 eb000000 bl XllpAc97ACodecWrite
; 274 :
; 275 : return XLLP_ACODEC_SUCCESS;
000a4 e3a00000 mov r0, #0
; 276 : }
000a8 e8bd4010 ldmia sp!, {r4, lr}
000ac e12fff1e bx lr
000b0 |$M1434|
ENDP ; |XllpWm9712SpecificInit|
EXPORT |XllpWm9712SpecificDeInit|
00000 AREA |.text| { |XllpWm9712SpecificDeInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpWm9712SpecificDeInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712SpecificDeInit| } ; comdat associative
|$T1445| DCD |$L1444|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpWm9712SpecificDeInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpWm9712SpecificDeInit| PROC
; 279 : {
00000 |$L1444|
00000 |$M1442|
; 280 : return XLLP_ACODEC_SUCCESS;
00000 e3a00000 mov r0, #0
; 281 : }
00004 e12fff1e bx lr
00008 |$M1443|
ENDP ; |XllpWm9712SpecificDeInit|
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?