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 + -
显示快捷键?