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

📄 xllp_wm9712.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_wm9712.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|XllpWm9712SetMasterVol|
	IMPORT	|XllpAc97ACodecWrite|
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\xllp\source\xllp_wm9712.c

  00000			 AREA	 |.text| { |XllpWm9712SetMasterVol| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpWm9712SetMasterVol|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712SetMasterVol| } ; comdat associative
|$T1341| DCD	|$L1340|
	DCD	0x40001701
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpWm9712SetMasterVol| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpWm9712SetMasterVol| PROC

; 30   : {

  00000		 |$L1340|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M1338|

; 31   :     XLLP_ACODEC_ERROR_T	status = XLLP_ACODEC_SUCCESS;
; 32   :     XLLP_UINT16_T value;
; 33   :     XLLP_UINT8_T leftVolume, rightVolume;
; 34   :     
; 35   :     /*take the unit of GainInDb as 1 db*/
; 36   :     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

; 37   :     if (leftVolume > XLLP_AC97_U14_MAX_VOLUME)
; 38   :     {
; 39   :         leftVolume = XLLP_AC97_U14_MAX_VOLUME;
; 40   :     }
; 41   :     rightVolume = leftVolume;
; 42   :     
; 43   :     if ((0 == leftVolume) && (0 == rightVolume))
; 44   :     {
; 45   :         //mute the output
; 46   :         value = XLLP_AC97_U14_MVR_MM;
; 47   :     }
; 48   :     else
; 49   :     {
; 50   :         leftVolume = XLLP_AC97_U14_MAX_VOLUME - leftVolume;    //translate into attenuation value
; 51   :         rightVolume = XLLP_AC97_U14_MAX_VOLUME - rightVolume;
; 52   :         value = leftVolume << XLLP_AC97_U14_MVR_ML_SHIFT;
; 53   :         value |= rightVolume;
; 54   :     }
; 55   : 
; 56   :     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

; 57   :     return status;    
; 58   : }

  00050	e49de004	 ldr         lr, [sp], #4
  00054	e12fff1e	 bx          lr
  00058		 |$L1343|
  00058	88888889	 DCD         0x88888889
  0005c		 |$M1339|

			 ENDP  ; |XllpWm9712SetMasterVol|

	EXPORT	|XllpWm9712SetMasterInputGain|

  00000			 AREA	 |.text| { |XllpWm9712SetMasterInputGain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpWm9712SetMasterInputGain|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712SetMasterInputGain| } ; comdat associative
|$T1355| DCD	|$L1354|
	DCD	0x40001501
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpWm9712SetMasterInputGain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpWm9712SetMasterInputGain| PROC

; 61   : {

  00000		 |$L1354|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M1352|

; 62   :     XLLP_ACODEC_ERROR_T	status = XLLP_ACODEC_SUCCESS;
; 63   :     XLLP_UINT8_T leftVolume, rightVolume;
; 64   :     XLLP_UINT16_T value;
; 65   :     
; 66   :     /*take the unit of GainInDb as 1 db*/
; 67   :     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

; 68   :     if (leftVolume > XLLP_AC97_U14_MAX_ADCGAIN)
; 69   :     {
; 70   :         leftVolume = XLLP_AC97_U14_MAX_ADCGAIN;
; 71   :     }
; 72   :     rightVolume = leftVolume;
; 73   :     if ((0 == leftVolume) && (0 == rightVolume))
; 74   :     {
; 75   :         //mute the record
; 76   :         value = XLLP_AC97_U14_RGR_RM;
; 77   :     }
; 78   :     else
; 79   :     {
; 80   :         value = leftVolume << XLLP_AC97_U14_RGR_GL_SHIFT;
; 81   :         value |= rightVolume;
; 82   :     }
; 83   : 
; 84   :     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

; 85   :     return status;    
; 86   : }

  00048	e49de004	 ldr         lr, [sp], #4
  0004c	e12fff1e	 bx          lr
  00050		 |$L1357|
  00050	88888889	 DCD         0x88888889
  00054		 |$M1353|

			 ENDP  ; |XllpWm9712SetMasterInputGain|

	EXPORT	|XllpWm9712GetInSampleRate|
	IMPORT	|XllpAc97ACodecRead|

  00000			 AREA	 |.text| { |XllpWm9712GetInSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpWm9712GetInSampleRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712GetInSampleRate| } ; comdat associative
|$T1369| DCD	|$L1368|
	DCD	0x40002902
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpWm9712GetInSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpWm9712GetInSampleRate| PROC

; 89   : {

  00000		 |$L1368|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M1366|
  00008	e1a04001	 mov         r4, r1

; 90   :     XLLP_ACODEC_ERROR_T	status = XLLP_ACODEC_SUCCESS;
; 91   :     XLLP_UINT16_T value;
; 92   :     
; 93   :     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

; 94   :     
; 95   :     if (XLLP_ACODEC_SUCCESS != status)
; 96   :     {
; 97   :         return status;

  0001c	1a00001d	 bne         |$L1207|

; 98   :     }
; 99   :     
; 100  :     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

; 120  :         default:
; 121  :             *RateInHz = 48000;

  00068	13a03cbb	 movne       r3, #0xBB, 24
  0006c	13833080	 orrne       r3, r3, #0x80
  00070	1a000006	 bne         |$L1365|
  00074		 |$L1220|

; 117  :         case XLLP_AC97_U14_DR_44100:
; 118  :             *RateInHz = 44100;

  00074	e1c420b0	 strh        r2, [r4]

; 119  :             break;

  00078	ea000005	 b           |$L1212|
  0007c		 |$L1219|

; 111  :         case XLLP_AC97_U14_DR_22050:
; 112  :             *RateInHz = 22050;
; 113  :             break;
; 114  :         case XLLP_AC97_U14_DR_32000:
; 115  :             *RateInHz = 32000;

  0007c	e3a03c7d	 mov         r3, #0x7D, 24

; 116  :             break;

  00080	ea000002	 b           |$L1365|
  00084		 |$L1217|

; 104  :             break;
; 105  :         case XLLP_AC97_U14_DR_11025:
; 106  :             *RateInHz = 11025;
; 107  :             break;
; 108  :         case XLLP_AC97_U14_DR_16000:
; 109  :             *RateInHz = 16000;

  00084	e3a03dfa	 mov         r3, #0xFA, 26

; 110  :             break;

  00088	ea000000	 b           |$L1365|
  0008c		 |$L1215|

; 101  :     {
; 102  :         case XLLP_AC97_U14_DR_8000:
; 103  :             *RateInHz = 8000;

  0008c	e3a03d7d	 mov         r3, #0x7D, 26
  00090		 |$L1365|
  00090	e1c430b0	 strh        r3, [r4]
  00094		 |$L1212|

; 122  :             break;
; 123  :     }
; 124  :     
; 125  :     return status;

  00094	e3a00000	 mov         r0, #0
  00098		 |$L1207|

; 126  : }

  00098	e28dd004	 add         sp, sp, #4
  0009c	e8bd4010	 ldmia       sp!, {r4, lr}
  000a0	e12fff1e	 bx          lr
  000a4		 |$M1367|

			 ENDP  ; |XllpWm9712GetInSampleRate|

	EXPORT	|XllpWm9712GetOutSampleRate|

  00000			 AREA	 |.text| { |XllpWm9712GetOutSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpWm9712GetOutSampleRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712GetOutSampleRate| } ; comdat associative
|$T1382| DCD	|$L1381|
	DCD	0x40002902
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpWm9712GetOutSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpWm9712GetOutSampleRate| PROC

; 129  : {

  00000		 |$L1381|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M1379|
  00008	e1a04001	 mov         r4, r1

; 130  :     XLLP_ACODEC_ERROR_T	status = XLLP_ACODEC_SUCCESS;
; 131  :     XLLP_UINT16_T value;
; 132  :     
; 133  :     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

; 134  :     
; 135  :     if (XLLP_ACODEC_SUCCESS != status)
; 136  :     {
; 137  :         return status;

  0001c	1a00001d	 bne         |$L1226|

; 138  :     }
; 139  :     
; 140  :     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

; 160  :         default:
; 161  :             *RateInHz = 48000;

  00068	13a03cbb	 movne       r3, #0xBB, 24
  0006c	13833080	 orrne       r3, r3, #0x80
  00070	1a000006	 bne         |$L1378|
  00074		 |$L1239|

; 157  :         case XLLP_AC97_U14_DR_44100:
; 158  :             *RateInHz = 44100;

  00074	e1c420b0	 strh        r2, [r4]

; 159  :             break;

  00078	ea000005	 b           |$L1231|
  0007c		 |$L1238|

; 151  :         case XLLP_AC97_U14_DR_22050:
; 152  :             *RateInHz = 22050;
; 153  :             break;
; 154  :         case XLLP_AC97_U14_DR_32000:
; 155  :             *RateInHz = 32000;

  0007c	e3a03c7d	 mov         r3, #0x7D, 24

; 156  :             break;

  00080	ea000002	 b           |$L1378|
  00084		 |$L1236|

; 144  :             break;
; 145  :         case XLLP_AC97_U14_DR_11025:
; 146  :             *RateInHz = 11025;
; 147  :             break;
; 148  :         case XLLP_AC97_U14_DR_16000:
; 149  :             *RateInHz = 16000;

  00084	e3a03dfa	 mov         r3, #0xFA, 26

; 150  :             break;

  00088	ea000000	 b           |$L1378|
  0008c		 |$L1234|

; 141  :     {
; 142  :         case XLLP_AC97_U14_DR_8000:
; 143  :             *RateInHz = 8000;

  0008c	e3a03d7d	 mov         r3, #0x7D, 26
  00090		 |$L1378|
  00090	e1c430b0	 strh        r3, [r4]
  00094		 |$L1231|

; 162  :             break;
; 163  :     }
; 164  :     
; 165  :     return status;

  00094	e3a00000	 mov         r0, #0
  00098		 |$L1226|

; 166  : }

  00098	e28dd004	 add         sp, sp, #4
  0009c	e8bd4010	 ldmia       sp!, {r4, lr}
  000a0	e12fff1e	 bx          lr
  000a4		 |$M1380|

			 ENDP  ; |XllpWm9712GetOutSampleRate|

	EXPORT	|XllpWm9712SetInSampleRate|

  00000			 AREA	 |.text| { |XllpWm9712SetInSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpWm9712SetInSampleRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpWm9712SetInSampleRate| } ; comdat associative
|$T1395| DCD	|$L1394|
	DCD	0x40002c01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpWm9712SetInSampleRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpWm9712SetInSampleRate| PROC

; 169  : {

  00000		 |$L1394|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M1392|

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -