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

📄 xllp_acodec.cod

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

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

	EXPORT	|XllpACodecI2CInit|
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\xllp\source\xllp_acodec.c

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

  00000			 AREA	 |.pdata$$XllpACodecI2CInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpACodecI2CInit| } ; comdat associative
|$T1624| DCD	|$L1623|
	DCD	0x40002501
; Function compile flags: /Ogsy

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

  00000		 |XllpACodecI2CInit| PROC

; 78   : {

  00000		 |$L1623|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M1621|

; 79   :     if( !(( (pDeviceContext->pClockReg)->cken) & XLLP_CLKEN_I2C) )

  00004	e5903010	 ldr         r3, [r0, #0x10]
  00008	e5933004	 ldr         r3, [r3, #4]
  0000c	e3130901	 tst         r3, #1, 18

; 80   :            (pDeviceContext->pClockReg)->cken |=  XLLP_CLKEN_I2C;

  00010	05902010	 ldreq       r2, [r0, #0x10]
  00014	05923004	 ldreq       r3, [r2, #4]
  00018	03833901	 orreq       r3, r3, #1, 18
  0001c	05823004	 streq       r3, [r2, #4]

; 81   : 
; 82   : 	 if( !(((pDeviceContext->pClockReg)->cken) & XLLP_CLKEN_I2C) )

  00020	e5903010	 ldr         r3, [r0, #0x10]
  00024	e5933004	 ldr         r3, [r3, #4]
  00028	e3130901	 tst         r3, #1, 18

; 83   :   {
; 84   : 	   //EdbgOutputDebugString ( "clock is not turned on \r\n");
; 85   : 	return(XLLP_ACODEC_CONTROLLER_NOT_INITIALIZED);

  0002c	0a00000f	 beq         |$L1620|

; 86   :   }
; 87   : 
; 88   :     
; 89   :     (pDeviceContext->pGpioReg)->GPDR3 |= (XLLP_GPIO_BIT_SCL | ~XLLP_GPIO_BIT_SDA);

  00030	e5902004	 ldr         r2, [r0, #4]
  00034	e3e01501	 mvn         r1, #1, 10

; 90   :     
; 91   :     (pDeviceContext->pGpioReg)->GAFR3_U |=  ( XLLP_GPIO_AF_BIT_SCL | XLLP_GPIO_AF_BIT_SDA);
; 92   :     
; 93   : 	
; 94   : 
; 95   :    
; 96   :   /* Setup I2C slave address */
; 97   :   (pDeviceContext->pCtrlReg)->ISAR =  0x0;                             //just try to give inital value, no other meaning

  00038	e3a0e000	 mov         lr, #0
  0003c	e592310c	 ldr         r3, [r2, #0x10C]
  00040	e1833001	 orr         r3, r3, r1
  00044	e582310c	 str         r3, [r2, #0x10C]
  00048	e5902004	 ldr         r2, [r0, #4]
  0004c	e5923070	 ldr         r3, [r2, #0x70]
  00050	e3833b05	 orr         r3, r3, #5, 22
  00054	e5823070	 str         r3, [r2, #0x70]
  00058	e590300c	 ldr         r3, [r0, #0xC]
  0005c	e583e020	 str         lr, [r3, #0x20]

; 98   :     
; 99   :   if((pDeviceContext->pCtrlReg)->ISAR != 0x0)

  00060	e590300c	 ldr         r3, [r0, #0xC]
  00064	e5933020	 ldr         r3, [r3, #0x20]
  00068	e3530000	 cmp         r3, #0
  0006c	0a000002	 beq         |$L1530|
  00070		 |$L1620|

; 100  :   {
; 101  : //	   EdbgOutputDebugString ( "clock is not turned on \r\n");
; 102  : 	return(XLLP_ACODEC_CONTROLLER_NOT_INITIALIZED);

  00070	e3a00006	 mov         r0, #6

; 108  : }

  00074	e49de004	 ldr         lr, [sp], #4
  00078	e12fff1e	 bx          lr
  0007c		 |$L1530|

; 103  :   }
; 104  :     
; 105  :   (pDeviceContext->pCtrlReg)->ICR = (XLLP_ICR_UIE|XLLP_ICR_SCLEA);

  0007c	e590300c	 ldr         r3, [r0, #0xC]
  00080	e3a02060	 mov         r2, #0x60

; 106  : 
; 107  :   return XLLP_ACODEC_SUCCESS;

  00084	e3a00000	 mov         r0, #0
  00088	e5832010	 str         r2, [r3, #0x10]

; 108  : }

  0008c	e49de004	 ldr         lr, [sp], #4
  00090	e12fff1e	 bx          lr
  00094		 |$M1622|

			 ENDP  ; |XllpACodecI2CInit|

	EXPORT	|XllpACodecI2STriState|

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

  00000			 AREA	 |.pdata$$XllpACodecI2STriState|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpACodecI2STriState| } ; comdat associative
|$T1634| DCD	|$L1633|
	DCD	0x40001300
; Function compile flags: /Ogsy

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

  00000		 |XllpACodecI2STriState| PROC

; 111  : {

  00000		 |$L1633|
  00000		 |$M1631|
  00000	e1a01000	 mov         r1, r0

; 112  :     //(pDeviceContext->pPCMReg)->SACR0 = 0;
; 113  : 	(pDeviceContext->pGpioReg)->GPDR0 &=~(XLLP_GPIO_BIT_I2SBITCLK|XLLP_GPIO_BIT_I2S_SDATA_OUT|XLLP_GPIO_BIT_I2S_SYNC);

  00004	e5912004	 ldr         r2, [r1, #4]

; 114  :     
; 115  : 	(pDeviceContext->pGpioReg)->GPDR0 &=  ~XLLP_GPIO_BIT_I2S_SDATA_IN;
; 116  : 
; 117  : 	(pDeviceContext->pGpioReg)->GAFR0_U &= ~( XLLP_GPIO_AF_BIT_I2SBITCLK_IN_MASK | 
; 118  : 					   ( XLLP_GPIO_AF_BIT_I2S_SDATA_IN_MASK)|
; 119  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SDATA_OUT_MASK)|
; 120  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SYNC_MASK) );
; 121  :     
; 122  : 	(pDeviceContext->pGpioReg)->GAFR3_U &=   ~( XLLP_GPIO_AF_BIT_I2S_SYSCLK_MASK );
; 123  : 
; 124  : 	return (XLLP_ACODEC_SUCCESS);

  00008	e3a00000	 mov         r0, #0
  0000c	e592300c	 ldr         r3, [r2, #0xC]
  00010	e3c3320d	 bic         r3, r3, #0xD, 4
  00014	e582300c	 str         r3, [r2, #0xC]
  00018	e5912004	 ldr         r2, [r1, #4]
  0001c	e592300c	 ldr         r3, [r2, #0xC]
  00020	e3c33202	 bic         r3, r3, #2, 4
  00024	e582300c	 str         r3, [r2, #0xC]
  00028	e5912004	 ldr         r2, [r1, #4]
  0002c	e5923058	 ldr         r3, [r2, #0x58]
  00030	e3c334ff	 bic         r3, r3, #0xFF, 8
  00034	e5823058	 str         r3, [r2, #0x58]
  00038	e5912004	 ldr         r2, [r1, #4]
  0003c	e5923070	 ldr         r3, [r2, #0x70]
  00040	e3c3300c	 bic         r3, r3, #0xC
  00044	e5823070	 str         r3, [r2, #0x70]

; 125  : 
; 126  : 
; 127  : }

  00048	e12fff1e	 bx          lr
  0004c		 |$M1632|

			 ENDP  ; |XllpACodecI2STriState|

	EXPORT	|XllpACodecI2SGPIOConfig|

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

  00000			 AREA	 |.pdata$$XllpACodecI2SGPIOConfig|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpACodecI2SGPIOConfig| } ; comdat associative
|$T1644| DCD	|$L1643|
	DCD	0x40001f00
; Function compile flags: /Ogsy

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

  00000		 |XllpACodecI2SGPIOConfig| PROC

; 131  : {

  00000		 |$L1643|
  00000		 |$M1641|
  00000	e1a01000	 mov         r1, r0

; 132  : 	(pDeviceContext->pGpioReg)->GAFR0_U &= ~( XLLP_GPIO_AF_BIT_I2SBITCLK_IN_MASK | 
; 133  : 					   ( XLLP_GPIO_AF_BIT_I2S_SDATA_IN_MASK)|
; 134  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SDATA_OUT_MASK)|
; 135  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SYNC_MASK) );

  00004	e5912004	 ldr         r2, [r1, #4]

; 136  :     
; 137  : 	(pDeviceContext->pGpioReg)->GAFR3_U &=   ~( XLLP_GPIO_AF_BIT_I2S_SYSCLK_MASK );
; 138  :     
; 139  : 	(pDeviceContext->pGpioReg)->GPDR0 |= (XLLP_GPIO_BIT_I2SBITCLK|XLLP_GPIO_BIT_I2S_SDATA_OUT|XLLP_GPIO_BIT_I2S_SYNC);
; 140  :     
; 141  : 	(pDeviceContext->pGpioReg)->GPDR0 &=  ~XLLP_GPIO_BIT_I2S_SDATA_IN;
; 142  : 	(pDeviceContext->pGpioReg)->GPDR3 |= (XLLP_GPIO_BIT_I2S_SYSCLK );
; 143  :     
; 144  : 
; 145  : //  sets the alternate function to make the processor the master and the codec the slave
; 146  : //  and to generate the bit clock output
; 147  : 	(pDeviceContext->pGpioReg)->GAFR0_U |= ( ( XLLP_GPIO_AF_BIT_I2SBITCLK_OUT ) | 
; 148  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SDATA_OUT )|
; 149  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SYNC)|( XLLP_GPIO_AF_BIT_I2S_SDATA_IN ));  //|
; 150  : 
; 151  : 	(pDeviceContext->pGpioReg)->GAFR3_U |=   ( XLLP_GPIO_AF_BIT_I2S_SYSCLK );
; 152  : 
; 153  : 
; 154  :    	//(pDeviceContext->pGpioReg)->GAFR0_U |= XLLP_GPIO_AF_BIT_I2S_SDATA_IN;
; 155  : 	return (XLLP_ACODEC_SUCCESS);

  00008	e3a00000	 mov         r0, #0
  0000c	e5923058	 ldr         r3, [r2, #0x58]
  00010	e3c334ff	 bic         r3, r3, #0xFF, 8
  00014	e5823058	 str         r3, [r2, #0x58]
  00018	e5912004	 ldr         r2, [r1, #4]
  0001c	e5923070	 ldr         r3, [r2, #0x70]
  00020	e3c3300c	 bic         r3, r3, #0xC
  00024	e5823070	 str         r3, [r2, #0x70]
  00028	e5912004	 ldr         r2, [r1, #4]
  0002c	e592300c	 ldr         r3, [r2, #0xC]
  00030	e383320d	 orr         r3, r3, #0xD, 4
  00034	e582300c	 str         r3, [r2, #0xC]
  00038	e5912004	 ldr         r2, [r1, #4]
  0003c	e592300c	 ldr         r3, [r2, #0xC]
  00040	e3c33202	 bic         r3, r3, #2, 4
  00044	e582300c	 str         r3, [r2, #0xC]
  00048	e5912004	 ldr         r2, [r1, #4]
  0004c	e592310c	 ldr         r3, [r2, #0x10C]
  00050	e3833802	 orr         r3, r3, #2, 16
  00054	e582310c	 str         r3, [r2, #0x10C]
  00058	e5912004	 ldr         r2, [r1, #4]
  0005c	e5923058	 ldr         r3, [r2, #0x58]
  00060	e3833459	 orr         r3, r3, #0x59, 8
  00064	e5823058	 str         r3, [r2, #0x58]
  00068	e5912004	 ldr         r2, [r1, #4]
  0006c	e5923070	 ldr         r3, [r2, #0x70]
  00070	e3833004	 orr         r3, r3, #4
  00074	e5823070	 str         r3, [r2, #0x70]

; 156  : 
; 157  : }

  00078	e12fff1e	 bx          lr
  0007c		 |$M1642|

			 ENDP  ; |XllpACodecI2SGPIOConfig|

	EXPORT	|XllpACodecI2SInit|
	IMPORT	|XllpOstDelayMicroSeconds|

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

  00000			 AREA	 |.pdata$$XllpACodecI2SInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpACodecI2SInit| } ; comdat associative
|$T1657| DCD	|$L1656|
	DCD	0x40004501
; Function compile flags: /Ogsy

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

  00000		 |XllpACodecI2SInit| PROC

; 159  : {

  00000		 |$L1656|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M1654|
  00004	e1a04000	 mov         r4, r0

; 160  : 	XLLP_UINT16_T k=0;
; 161  :   //  EdbgOutputDebugString ( "enter I2S init \r\n");
; 162  : 	(pDeviceContext->pGpioReg)->GAFR0_U &= ~( XLLP_GPIO_AF_BIT_I2SBITCLK_IN_MASK | 
; 163  : 					   ( XLLP_GPIO_AF_BIT_I2S_SDATA_IN_MASK)|
; 164  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SDATA_OUT_MASK)|
; 165  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SYNC_MASK) );

  00008	e5942004	 ldr         r2, [r4, #4]

; 166  :     
; 167  : 	(pDeviceContext->pGpioReg)->GAFR3_U &=   ~( XLLP_GPIO_AF_BIT_I2S_SYSCLK_MASK );
; 168  :     
; 169  : 	(pDeviceContext->pGpioReg)->GPDR0 |= (XLLP_GPIO_BIT_I2SBITCLK|XLLP_GPIO_BIT_I2S_SDATA_OUT|XLLP_GPIO_BIT_I2S_SYNC);
; 170  :     
; 171  : 	(pDeviceContext->pGpioReg)->GPDR0 &=  ~XLLP_GPIO_BIT_I2S_SDATA_IN;
; 172  : 	(pDeviceContext->pGpioReg)->GPDR3 |= (XLLP_GPIO_BIT_I2S_SYSCLK );
; 173  :     
; 174  : 
; 175  : //  sets the alternate function to make the processor the master and the codec the slave
; 176  : //  and to generate the bit clock output
; 177  : 	(pDeviceContext->pGpioReg)->GAFR0_U |= ( ( XLLP_GPIO_AF_BIT_I2SBITCLK_OUT ) | 
; 178  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SDATA_OUT )|
; 179  : 	   				   ( XLLP_GPIO_AF_BIT_I2S_SYNC)|( XLLP_GPIO_AF_BIT_I2S_SDATA_IN ));  //|
; 180  : 

⌨️ 快捷键说明

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