📄 xllp_ucb1400.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL F:\wm520\PLATFORM\intel_dbpxa27x\Public\CSP\ARM\INTEL\PXA27X\XLLP\SOURCE\.\xllp_ucb1400.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |XLLPUCBSetMasterVol|
IMPORT |XllpAc97ACodecWrite|
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\xllp\source\xllp_ucb1400.c
00000 AREA |.text| { |XLLPUCBSetMasterVol| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XLLPUCBSetMasterVol|, PDATA, SELECTION=5, ASSOC=|.text| { |XLLPUCBSetMasterVol| } ; comdat associative
|$T1341| DCD |$L1340|
DCD 0x40001701
; Function compile flags: /Ogsy
00000 AREA |.text| { |XLLPUCBSetMasterVol| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XLLPUCBSetMasterVol| PROC
; 29 : {
00000 |$L1340|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M1338|
; 30 : XLLP_ACODEC_ERROR_T status = XLLP_ACODEC_SUCCESS;
; 31 : XLLP_UINT16_T value;
; 32 : XLLP_UINT8_T leftVolume, rightVolume;
; 33 :
; 34 : /*take the unit of GainInDb as 1 db*/
; 35 : leftVolume = (XLLP_UINT8_T)(GainInDb * 10 / 15);
00004 e59f304c ldr r3, [pc, #0x4C]
00008 e0812101 add r2, r1, r1, lsl #2
0000c e1a0e082 mov lr, r2, lsl #1
00010 e0c3139e smull r1, r3, lr, r3
; 36 : if (leftVolume > XLLP_AC97_U14_MAX_VOLUME)
; 37 : {
; 38 : leftVolume = XLLP_AC97_U14_MAX_VOLUME;
; 39 : }
; 40 : rightVolume = leftVolume;
; 41 :
; 42 : if ((0 == leftVolume) && (0 == rightVolume))
; 43 : {
; 44 : //mute the output
; 45 : value = XLLP_AC97_U14_MVR_MM;
; 46 : }
; 47 : else
; 48 : {
; 49 : leftVolume = XLLP_AC97_U14_MAX_VOLUME - leftVolume; //translate into attenuation value
; 50 : rightVolume = XLLP_AC97_U14_MAX_VOLUME - rightVolume;
; 51 : value = leftVolume << XLLP_AC97_U14_MVR_ML_SHIFT;
; 52 : value |= rightVolume;
; 53 : }
; 54 :
; 55 : status = XllpAc97ACodecWrite (pDeviceContext, XLLP_AC97_CR_MASTER_VOLUME, value);
00014 e3a01002 mov r1, #2
00018 e0833082 add r3, r3, r2, lsl #1
0001c e1a031c3 mov r3, r3, asr #3
00020 e0833fa3 add r3, r3, r3, lsr #31
00024 e20330ff and r3, r3, #0xFF
00028 e353003f cmp r3, #0x3F
0002c 83a0303f movhi r3, #0x3F
00030 e3530000 cmp r3, #0
00034 1263303f rsbne r3, r3, #0x3F
00038 120330ff andne r3, r3, #0xFF
0003c 11833403 orrne r3, r3, r3, lsl #8
00040 03a02902 moveq r2, #2, 18
00044 11a02803 movne r2, r3, lsl #16
00048 11a02822 movne r2, r2, lsr #16
0004c eb000000 bl XllpAc97ACodecWrite
; 56 : return status;
; 57 : }
00050 e49de004 ldr lr, [sp], #4
00054 e12fff1e bx lr
00058 |$L1343|
00058 88888889 DCD 0x88888889
0005c |$M1339|
ENDP ; |XLLPUCBSetMasterVol|
EXPORT |XLLPUCBSetMasterInputGain|
00000 AREA |.text| { |XLLPUCBSetMasterInputGain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XLLPUCBSetMasterInputGain|, PDATA, SELECTION=5, ASSOC=|.text| { |XLLPUCBSetMasterInputGain| } ; comdat associative
|$T1355| DCD |$L1354|
DCD 0x40001501
; Function compile flags: /Ogsy
00000 AREA |.text| { |XLLPUCBSetMasterInputGain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XLLPUCBSetMasterInputGain| PROC
; 60 : {
00000 |$L1354|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M1352|
; 61 : XLLP_ACODEC_ERROR_T status = XLLP_ACODEC_SUCCESS;
; 62 : XLLP_UINT8_T leftVolume, rightVolume;
; 63 : XLLP_UINT16_T value;
; 64 :
; 65 : /*take the unit of GainInDb as 1 db*/
; 66 : leftVolume = (XLLP_UINT8_T)(GainInDb * 10 / 15);
00004 e59f3044 ldr r3, [pc, #0x44]
00008 e0812101 add r2, r1, r1, lsl #2
0000c e1a0e082 mov lr, r2, lsl #1
00010 e0c3139e smull r1, r3, lr, r3
; 67 : if (leftVolume > XLLP_AC97_U14_MAX_ADCGAIN)
; 68 : {
; 69 : leftVolume = XLLP_AC97_U14_MAX_ADCGAIN;
; 70 : }
; 71 : rightVolume = leftVolume;
; 72 : if ((0 == leftVolume) && (0 == rightVolume))
; 73 : {
; 74 : //mute the record
; 75 : value = XLLP_AC97_U14_RGR_RM;
; 76 : }
; 77 : else
; 78 : {
; 79 : value = leftVolume << XLLP_AC97_U14_RGR_GL_SHIFT;
; 80 : value |= rightVolume;
; 81 : }
; 82 :
; 83 : status = XllpAc97ACodecWrite (pDeviceContext, XLLP_AC97_CR_RECORD_GAIN, value);
00014 e3a0101c mov r1, #0x1C
00018 e0833082 add r3, r3, r2, lsl #1
0001c e1a031c3 mov r3, r3, asr #3
00020 e0833fa3 add r3, r3, r3, lsr #31
00024 e20330ff and r3, r3, #0xFF
00028 e353000f cmp r3, #0xF
0002c 83a0300f movhi r3, #0xF
00030 e3530000 cmp r3, #0
00034 11833403 orrne r3, r3, r3, lsl #8
00038 03a02902 moveq r2, #2, 18
0003c 11a02803 movne r2, r3, lsl #16
00040 11a02822 movne r2, r2, lsr #16
00044 eb000000 bl XllpAc97ACodecWrite
; 84 : return status;
; 85 : }
00048 e49de004 ldr lr, [sp], #4
0004c e12fff1e bx lr
00050 |$L1357|
00050 88888889 DCD 0x88888889
00054 |$M1353|
ENDP ; |XLLPUCBSetMasterInputGain|
EXPORT |XllpUCBGetInSampleRate|
IMPORT |XllpAc97ACodecRead|
00000 AREA |.text| { |XllpUCBGetInSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpUCBGetInSampleRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpUCBGetInSampleRate| } ; comdat associative
|$T1369| DCD |$L1368|
DCD 0x40002902
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpUCBGetInSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpUCBGetInSampleRate| PROC
; 88 : {
00000 |$L1368|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M1366|
00008 e1a04001 mov r4, r1
; 89 : XLLP_ACODEC_ERROR_T status = XLLP_ACODEC_SUCCESS;
; 90 : XLLP_UINT16_T value;
; 91 :
; 92 : status = XllpAc97ACodecRead(pDeviceContext, XLLP_AC97_CR_E_ASR_PCM_LR_ADC_RT, &value);
0000c e28d2000 add r2, sp, #0
00010 e3a01032 mov r1, #0x32
00014 eb000000 bl XllpAc97ACodecRead
00018 e3500000 cmp r0, #0
; 93 :
; 94 : if (XLLP_ACODEC_SUCCESS != status)
; 95 : {
; 96 : return status;
0001c 1a00001d bne |$L1207|
; 97 : }
; 98 :
; 99 : switch (value)
00020 e1dd30b0 ldrh r3, [sp]
00024 e3530d7d cmp r3, #0x7D, 26
00028 0a000017 beq |$L1215|
0002c e3a02c2b mov r2, #0x2B, 24
00030 e3822011 orr r2, r2, #0x11
00034 e1530002 cmp r3, r2
00038 0a00000d beq |$L1220|
0003c e3530dfa cmp r3, #0xFA, 26
00040 0a00000f beq |$L1217|
00044 e3a02c56 mov r2, #0x56, 24
00048 e3822022 orr r2, r2, #0x22
0004c e1530002 cmp r3, r2
00050 0a000007 beq |$L1220|
00054 e3530c7d cmp r3, #0x7D, 24
00058 0a000007 beq |$L1219|
0005c e3a02b2b mov r2, #0x2B, 22
00060 e3822044 orr r2, r2, #0x44
00064 e1530002 cmp r3, r2
; 119 : default:
; 120 : *RateInHz = 48000;
00068 13a03cbb movne r3, #0xBB, 24
0006c 13833080 orrne r3, r3, #0x80
00070 1a000006 bne |$L1365|
00074 |$L1220|
; 116 : case XLLP_AC97_U14_DR_44100:
; 117 : *RateInHz = 44100;
00074 e1c420b0 strh r2, [r4]
; 118 : break;
00078 ea000005 b |$L1212|
0007c |$L1219|
; 110 : case XLLP_AC97_U14_DR_22050:
; 111 : *RateInHz = 22050;
; 112 : break;
; 113 : case XLLP_AC97_U14_DR_32000:
; 114 : *RateInHz = 32000;
0007c e3a03c7d mov r3, #0x7D, 24
; 115 : break;
00080 ea000002 b |$L1365|
00084 |$L1217|
; 103 : break;
; 104 : case XLLP_AC97_U14_DR_11025:
; 105 : *RateInHz = 11025;
; 106 : break;
; 107 : case XLLP_AC97_U14_DR_16000:
; 108 : *RateInHz = 16000;
00084 e3a03dfa mov r3, #0xFA, 26
; 109 : break;
00088 ea000000 b |$L1365|
0008c |$L1215|
; 100 : {
; 101 : case XLLP_AC97_U14_DR_8000:
; 102 : *RateInHz = 8000;
0008c e3a03d7d mov r3, #0x7D, 26
00090 |$L1365|
00090 e1c430b0 strh r3, [r4]
00094 |$L1212|
; 121 : break;
; 122 : }
; 123 :
; 124 : return status;
00094 e3a00000 mov r0, #0
00098 |$L1207|
; 125 : }
00098 e28dd004 add sp, sp, #4
0009c e8bd4010 ldmia sp!, {r4, lr}
000a0 e12fff1e bx lr
000a4 |$M1367|
ENDP ; |XllpUCBGetInSampleRate|
EXPORT |XllpUCBGetOutSampleRate|
00000 AREA |.text| { |XllpUCBGetOutSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpUCBGetOutSampleRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpUCBGetOutSampleRate| } ; comdat associative
|$T1382| DCD |$L1381|
DCD 0x40002902
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpUCBGetOutSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpUCBGetOutSampleRate| PROC
; 128 : {
00000 |$L1381|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M1379|
00008 e1a04001 mov r4, r1
; 129 : XLLP_ACODEC_ERROR_T status = XLLP_ACODEC_SUCCESS;
; 130 : XLLP_UINT16_T value;
; 131 :
; 132 : status = XllpAc97ACodecRead(pDeviceContext, XLLP_AC97_CR_E_ASR_PCM_FRNT_DAC_RT, &value);
0000c e28d2000 add r2, sp, #0
00010 e3a0102c mov r1, #0x2C
00014 eb000000 bl XllpAc97ACodecRead
00018 e3500000 cmp r0, #0
; 133 :
; 134 : if (XLLP_ACODEC_SUCCESS != status)
; 135 : {
; 136 : return status;
0001c 1a00001d bne |$L1226|
; 137 : }
; 138 :
; 139 : switch (value)
00020 e1dd30b0 ldrh r3, [sp]
00024 e3530d7d cmp r3, #0x7D, 26
00028 0a000017 beq |$L1234|
0002c e3a02c2b mov r2, #0x2B, 24
00030 e3822011 orr r2, r2, #0x11
00034 e1530002 cmp r3, r2
00038 0a00000d beq |$L1239|
0003c e3530dfa cmp r3, #0xFA, 26
00040 0a00000f beq |$L1236|
00044 e3a02c56 mov r2, #0x56, 24
00048 e3822022 orr r2, r2, #0x22
0004c e1530002 cmp r3, r2
00050 0a000007 beq |$L1239|
00054 e3530c7d cmp r3, #0x7D, 24
00058 0a000007 beq |$L1238|
0005c e3a02b2b mov r2, #0x2B, 22
00060 e3822044 orr r2, r2, #0x44
00064 e1530002 cmp r3, r2
; 159 : default:
; 160 : *RateInHz = 48000;
00068 13a03cbb movne r3, #0xBB, 24
0006c 13833080 orrne r3, r3, #0x80
00070 1a000006 bne |$L1378|
00074 |$L1239|
; 156 : case XLLP_AC97_U14_DR_44100:
; 157 : *RateInHz = 44100;
00074 e1c420b0 strh r2, [r4]
; 158 : break;
00078 ea000005 b |$L1231|
0007c |$L1238|
; 150 : case XLLP_AC97_U14_DR_22050:
; 151 : *RateInHz = 22050;
; 152 : break;
; 153 : case XLLP_AC97_U14_DR_32000:
; 154 : *RateInHz = 32000;
0007c e3a03c7d mov r3, #0x7D, 24
; 155 : break;
00080 ea000002 b |$L1378|
00084 |$L1236|
; 143 : break;
; 144 : case XLLP_AC97_U14_DR_11025:
; 145 : *RateInHz = 11025;
; 146 : break;
; 147 : case XLLP_AC97_U14_DR_16000:
; 148 : *RateInHz = 16000;
00084 e3a03dfa mov r3, #0xFA, 26
; 149 : break;
00088 ea000000 b |$L1378|
0008c |$L1234|
; 140 : {
; 141 : case XLLP_AC97_U14_DR_8000:
; 142 : *RateInHz = 8000;
0008c e3a03d7d mov r3, #0x7D, 26
00090 |$L1378|
00090 e1c430b0 strh r3, [r4]
00094 |$L1231|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -