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

📄 xllp_ci.cod

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