⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xllp_ucb1400.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 2 页
字号:
; 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 + -