📄 xllp_acodec.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_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 + -