📄 xllp_ci.cod
字号:
00014 e5911000 ldr r1, [r1]
00018 e201e01f and lr, r1, #0x1F
; 268 :
; 269 : if (cccr_l < 8) // L = [2 - 7]
0001c e35e0008 cmp lr, #8
; 270 : ciclk = (13 * cccr_l) * 100;
00020 33a01e51 movcc r1, #0x51, 28
00024 33811004 orrcc r1, r1, #4
00028 3001019e mulcc r1, lr, r1
0002c 3a00000b bcc |$L35307|
; 271 : else if (cccr_l < 17) // L = [8 - 16]
00030 e35e0011 cmp lr, #0x11
; 272 : ciclk = ((13 * cccr_l) * 100) >> 1;
00034 33a03e51 movcc r3, #0x51, 28
00038 33833004 orrcc r3, r3, #4
0003c 3003039e mulcc r3, lr, r3
00040 31a010a3 movcc r1, r3, lsr #1
00044 3a000005 bcc |$L35307|
; 273 : else if (cccr_l < 32) // L = [17 - 31]
00048 e35e0020 cmp lr, #0x20
; 274 : ciclk = ((13 * cccr_l) * 100) >> 2;
0004c 33a03e51 movcc r3, #0x51, 28
00050 33833004 orrcc r3, r3, #4
00054 3003039e mulcc r3, lr, r3
00058 31a01123 movcc r1, r3, lsr #2
0005c 259d1000 ldrcs r1, [sp]
00060 |$L35307|
; 275 :
; 276 : p = (float)((ciclk / mclk_mhz) - 2) / 2;
00060 e59d0014 ldr r0, [sp, #0x14]
00064 eb000000 bl __rt_udiv
00068 e2400002 sub r0, r0, #2
; 277 :
; 278 : div = (unsigned int) (ceil(p));
0006c eb000000 bl __utos
00070 e3a0143f mov r1, #0x3F, 8
00074 eb000000 bl __muls
00078 eb000000 bl __stod
0007c eb000000 bl ceil
00080 eb000000 bl __dtou
; 279 :
; 280 : // write cicr4
; 281 : value = READ_REG(XLLP_CICR4);
; 282 : value &= ~(XLLP_CI_CICR4_PCLK_EN | XLLP_CI_CICR4_MCLK_EN | XLLP_CI_CICR4_DIV_SMASK<<XLLP_CI_CICR4_DIV_SHIFT);
00084 e5942010 ldr r2, [r4, #0x10]
00088 e3a03cff mov r3, #0xFF, 24
0008c e2433889 sub r3, r3, #0x89, 16
; 283 : value |= (pclk_enable) ? XLLP_CI_CICR4_PCLK_EN : 0;
00090 e3560000 cmp r6, #0
00094 e0022003 and r2, r2, r3
00098 13a03502 movne r3, #2, 10
0009c 03a03000 moveq r3, #0
; 284 : value |= (mclk_enable) ? XLLP_CI_CICR4_MCLK_EN : 0;
000a0 e3550000 cmp r5, #0
000a4 e1832002 orr r2, r3, r2
000a8 13a03702 movne r3, #2, 14
000ac 03a03000 moveq r3, #0
000b0 e1833002 orr r3, r3, r2
; 285 : value |= div << XLLP_CI_CICR4_DIV_SHIFT;
; 286 : WRITE_REG(XLLP_CICR4, value);
000b4 e1833000 orr r3, r3, r0
000b8 e5843010 str r3, [r4, #0x10]
; 287 : return;
; 288 : }
000bc e28dd004 add sp, sp, #4
000c0 e8bd4070 ldmia sp!, {r4 - r6, lr}
000c4 e12fff1e bx lr
000c8 |$M35723|
ENDP ; |XllpCISetClock|
EXPORT |XllpCISetPolarity|
00000 AREA |.text| { |XllpCISetPolarity| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCISetPolarity|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCISetPolarity| } ; comdat associative
|$T35745| DCD |$L35744|
DCD 0x40001401
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCISetPolarity| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCISetPolarity| PROC
; 291 : {
00000 |$L35744|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M35742|
00004 e1a04003 mov r4, r3
00008 e1a0e002 mov lr, r2
0000c e3510000 cmp r1, #0
; 292 : unsigned int value;
; 293 :
; 294 : // write cicr4
; 295 : value = READ_REG(XLLP_CICR4);
; 296 : value &= ~(XLLP_CI_CICR4_PCP | XLLP_CI_CICR4_HSP | XLLP_CI_CICR4_VSP);
00010 e5901010 ldr r1, [r0, #0x10]
00014 e3c12607 bic r2, r1, #7, 12
; 297 : value |= (pclk_sample_falling)? XLLP_CI_CICR4_PCP : 0;
00018 13a01501 movne r1, #1, 10
0001c 03a01000 moveq r1, #0
; 298 : value |= (hsync_active_low) ? XLLP_CI_CICR4_HSP : 0;
00020 e35e0000 cmp lr, #0
00024 13a03602 movne r3, #2, 12
00028 03a03000 moveq r3, #0
0002c e1812002 orr r2, r1, r2
; 299 : value |= (vsync_active_low) ? XLLP_CI_CICR4_VSP : 0;
00030 e3540000 cmp r4, #0
00034 e1832002 orr r2, r3, r2
00038 13a03601 movne r3, #1, 12
0003c 03a03000 moveq r3, #0
00040 e1833002 orr r3, r3, r2
; 300 : WRITE_REG(XLLP_CICR4, value);
00044 e5803010 str r3, [r0, #0x10]
; 301 : return;
; 302 : }
00048 e8bd4010 ldmia sp!, {r4, lr}
0004c e12fff1e bx lr
00050 |$M35743|
ENDP ; |XllpCISetPolarity|
EXPORT |XllpCISetFIFO|
00000 AREA |.text| { |XllpCISetFIFO| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCISetFIFO|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCISetFIFO| } ; comdat associative
|$T35762| DCD |$L35761|
DCD 0x40001000
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCISetFIFO| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCISetFIFO| PROC
; 306 : {
00000 |$L35761|
00000 |$M35759|
00000 e3530000 cmp r3, #0
; 307 : unsigned int value;
; 308 :
; 309 : // write citor
; 310 : WRITE_REG(XLLP_CITOR, timeout);
; 311 :
; 312 : // write cifr: always enable fifo 0! also reset input fifo
; 313 : value = READ_REG(XLLP_CIFR);
; 314 : value &= ~(XLLP_CI_CIFR_FEN0 | XLLP_CI_CIFR_FEN1 | XLLP_CI_CIFR_FEN2 | XLLP_CI_CIFR_RESETF |
; 315 : XLLP_CI_CIFR_THL_0_SMASK<<XLLP_CI_CIFR_THL_0_SHIFT);
00004 e5903018 ldr r3, [r0, #0x18]
00008 e580101c str r1, [r0, #0x1C]
0000c e3c3303f bic r3, r3, #0x3F
; 316 : value |= (unsigned int)threshold << XLLP_CI_CIFR_THL_0_SHIFT;
00010 e1831202 orr r1, r3, r2, lsl #4
; 317 : value |= (fifo1_enable) ? XLLP_CI_CIFR_FEN1 : 0;
; 318 : value |= (fifo2_enable) ? XLLP_CI_CIFR_FEN2 : 0;
00014 e59d3000 ldr r3, [sp]
00018 13a02002 movne r2, #2
0001c 03a02000 moveq r2, #0
00020 e3530000 cmp r3, #0
00024 13a03004 movne r3, #4
00028 03a03000 moveq r3, #0
0002c e1822001 orr r2, r2, r1
00030 e1833002 orr r3, r3, r2
; 319 : value |= XLLP_CI_CIFR_RESETF | XLLP_CI_CIFR_FEN0;
; 320 : WRITE_REG(XLLP_CIFR, value);
00034 e3833009 orr r3, r3, #9
00038 e5803018 str r3, [r0, #0x18]
; 321 : return;
; 322 : }
0003c e12fff1e bx lr
00040 |$M35760|
ENDP ; |XllpCISetFIFO|
EXPORT |XllpCIResetFIFO|
00000 AREA |.text| { |XllpCIResetFIFO| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCIResetFIFO|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIResetFIFO| } ; comdat associative
|$T35770| DCD |$L35769|
DCD 0x40000400
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCIResetFIFO| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCIResetFIFO| PROC
; 325 : {
00000 |$L35769|
00000 |$M35767|
; 326 : unsigned int value;
; 327 : value = READ_REG(XLLP_CIFR);
; 328 : value |= XLLP_CI_CIFR_RESETF;
00000 e5903018 ldr r3, [r0, #0x18]
00004 e3833008 orr r3, r3, #8
; 329 : WRITE_REG(XLLP_CIFR, value);
00008 e5803018 str r3, [r0, #0x18]
; 330 : }
0000c e12fff1e bx lr
00010 |$M35768|
ENDP ; |XllpCIResetFIFO|
EXPORT |XllpCISetInterruptMask|
00000 AREA |.text| { |XllpCISetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCISetInterruptMask|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCISetInterruptMask| } ; comdat associative
|$T35779| DCD |$L35778|
DCD 0x40000c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCISetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCISetInterruptMask| PROC
; 333 : {
00000 |$L35778|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M35776|
; 334 : unsigned int value;
; 335 :
; 336 : // write mask in cicr0
; 337 : value = READ_REG(XLLP_CICR0);
; 338 : value &= ~XLLP_CI_CICR0_INTERRUPT_MASK;
; 339 : value |= (mask & XLLP_CI_CICR0_INTERRUPT_MASK);
; 340 : WRITE_REG(XLLP_CICR0, value);
00004 e590e000 ldr lr, [r0]
00008 e3a03000 mov r3, #0
0000c e3a02fff mov r2, #0xFF, 30
00010 e2433b01 sub r3, r3, #1, 22
00014 e3822003 orr r2, r2, #3
00018 e00ee003 and lr, lr, r3
0001c e0013002 and r3, r1, r2
00020 e18e3003 orr r3, lr, r3
00024 e5803000 str r3, [r0]
; 341 : return;
; 342 : }
00028 e49de004 ldr lr, [sp], #4
0002c e12fff1e bx lr
00030 |$M35777|
ENDP ; |XllpCISetInterruptMask|
EXPORT |XllpCIGetInterruptMask|
00000 AREA |.text| { |XllpCIGetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCIGetInterruptMask|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIGetInterruptMask| } ; comdat associative
|$T35789| DCD |$L35788|
DCD 0x40000500
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCIGetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCIGetInterruptMask| PROC
; 345 : {
00000 |$L35788|
00000 |$M35786|
; 346 : unsigned int value;
; 347 :
; 348 : // write mask in cicr0
; 349 : value = READ_REG(XLLP_CICR0);
; 350 : return (value & XLLP_CI_CICR0_INTERRUPT_MASK);
00000 e5902000 ldr r2, [r0]
00004 e3a03fff mov r3, #0xFF, 30
00008 e3833003 orr r3, r3, #3
0000c e0020003 and r0, r2, r3
; 351 : }
00010 e12fff1e bx lr
00014 |$M35787|
ENDP ; |XllpCIGetInterruptMask|
EXPORT |XllpCIClearInterruptStatus|
00000 AREA |.text| { |XllpCIClearInterruptStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCIClearInterruptStatus|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIClearInterruptStatus| } ; comdat associative
|$T35798| DCD |$L35797|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCIClearInterruptStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCIClearInterruptStatus| PROC
; 354 : {
00000 |$L35797|
00000 |$M35795|
; 355 : // write 1 to clear
; 356 : WRITE_REG(XLLP_CISR, status);
00000 e5801014 str r1, [r0, #0x14]
; 357 : }
00004 e12fff1e bx lr
00008 |$M35796|
ENDP ; |XllpCIClearInterruptStatus|
EXPORT |XllpCIGetInterruptStatus|
00000 AREA |.text| { |XllpCIGetInterruptStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCIGetInterruptStatus|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIGetInterruptStatus| } ; comdat associative
|$T35808| DCD |$L35807|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCIGetInterruptStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCIGetInterruptStatus| PROC
; 360 : {
00000 |$L35807|
00000 |$M35805|
; 361 : return READ_REG(XLLP_CISR);
00000 e5900014 ldr r0, [r0, #0x14]
; 362 : }
00004 e12fff1e bx lr
00008 |$M35806|
ENDP ; |XllpCIGetInterruptStatus|
EXPORT |XllpCISetRegisterValue|
00000 AREA |.text| { |XllpCISetRegisterValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCISetRegisterValue|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCISetRegisterValue| } ; comdat associative
|$T35818| DCD |$L35817|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCISetRegisterValue| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCISetRegisterValue| PROC
; 365 : {
00000 |$L35817|
00000 |$M35815|
; 366 : WRITE_REG(reg_offset, value);
00000 e7802001 str r2, [r0, +r1]
; 367 : }
00004 e12fff1e bx lr
00008 |$M35816|
ENDP ; |XllpCISetRegisterValue|
EXPORT |XllpCIInit|
IMPORT |XllpLock|
IMPORT |XllpUnlock|
00000 AREA |.text| { |XllpCIInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$XllpCIInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCIInit| } ; comdat associative
|$T35827| DCD |$L35826|
DCD 0x40001701
; Function compile flags: /Ogsy
00000 AREA |.text| { |XllpCIInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |XllpCIInit| PROC
; 373 : {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -