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

📄 xllp_lcd.cod

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

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

	EXPORT	|pOSTRegs| [ DATA ]

  00000			 AREA	 |.bss|, NOINIT
|pOSTRegs| %	0x4
	EXPORT	|XllpLCDLoadPalette|
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\xllp\source\xllp_lcd.c

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

  00000			 AREA	 |.pdata$$XllpLCDLoadPalette|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpLCDLoadPalette| } ; comdat associative
|$T35495| DCD	|$L35494|
	DCD	0x40002c01
; Function compile flags: /Ogsy

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

  00000		 |XllpLCDLoadPalette| PROC

; 79   : {	

  00000		 |$L35494|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M35492|

; 80   : 	volatile LCDRegs *p_LCDRegs;
; 81   : 
; 82   : 	p_LCDRegs = (LCDRegs *) pXllpLCD->LCDC;
; 83   : 
; 84   : 	// Reconfigure the second frame descriptor so that when loaded,
; 85   : 	// this descriptor loops to itself.
; 86   : 	pXllpLCD->frameDescriptorCh0fd2->FDADR = LCD_FDADR(pXllpLCD->frameDescriptorCh0fd2->PHYSADDR);

  00004	e590206c	 ldr         r2, [r0, #0x6C]
  00008	e5901008	 ldr         r1, [r0, #8]

; 87   : 
; 88   : 	// Reconfigure the palette frame descriptor so that it loads the second frame descriptor
; 89   : 	pXllpLCD->frameDescriptorPalette->FDADR = LCD_FDADR(pXllpLCD->frameDescriptorCh0fd2->FDADR);
; 90   : 	pXllpLCD->frameDescriptorPalette->FSADR = LCD_FSADR(pXllpLCD->_PALETTE_BUFFER_BASE_PHYSICAL); 
; 91   : 	pXllpLCD->frameDescriptorPalette->FIDR  = LCD_FIDR(0);

  0000c	e3a0e000	 mov         lr, #0
  00010	e5923010	 ldr         r3, [r2, #0x10]
  00014	e3c3300f	 bic         r3, r3, #0xF
  00018	e5823000	 str         r3, [r2]
  0001c	e590306c	 ldr         r3, [r0, #0x6C]
  00020	e5902074	 ldr         r2, [r0, #0x74]
  00024	e5933000	 ldr         r3, [r3]

; 92   : 
; 93   : 
; 94   : 	if ( (p_LCDRegs->OVL1C1 & LCD_O1EN) || (p_LCDRegs->OVL2C1 & LCD_O2EN)) 

  00028	e3c3300f	 bic         r3, r3, #0xF
  0002c	e5823000	 str         r3, [r2]
  00030	e5903038	 ldr         r3, [r0, #0x38]
  00034	e5902074	 ldr         r2, [r0, #0x74]
  00038	e3c33007	 bic         r3, r3, #7
  0003c	e5823004	 str         r3, [r2, #4]
  00040	e5903074	 ldr         r3, [r0, #0x74]
  00044	e583e008	 str         lr, [r3, #8]
  00048	e5913050	 ldr         r3, [r1, #0x50]

; 95   : 	{
; 96   : 		// Overlays are enabled
; 97   : 		pXllpLCD->frameDescriptorPalette->LDCMD = LCD_Len(pXllpLCD->PaletteSize << 1) | LCD_Pal;

  0004c	e5902074	 ldr         r2, [r0, #0x74]
  00050	e3130102	 tst         r3, #2, 2
  00054	05913070	 ldreq       r3, [r1, #0x70]
  00058	03130102	 tsteq       r3, #2, 2

; 98   : 	} else
; 99   : 	{
; 100  : 		// Overlays are disabled
; 101  : 		pXllpLCD->frameDescriptorPalette->LDCMD = LCD_Len(pXllpLCD->PaletteSize) | LCD_Pal;

  0005c	05903024	 ldreq       r3, [r0, #0x24]
  00060	03833301	 orreq       r3, r3, #1, 6
  00064	15903024	 ldrne       r3, [r0, #0x24]
  00068	13833402	 orrne       r3, r3, #2, 8
  0006c	11a03083	 movne       r3, r3, lsl #1
  00070	e582300c	 str         r3, [r2, #0xC]

; 102  : 	}
; 103  : 
; 104  : 	pXllpLCD->frameDescriptorPalette->PHYSADDR = LCD_FDADR(pXllpLCD->_PALETTE_FRAME_DESCRIPTOR_BASE_PHYSICAL);

  00074	e5903058	 ldr         r3, [r0, #0x58]
  00078	e5902074	 ldr         r2, [r0, #0x74]
  0007c	e3c3300f	 bic         r3, r3, #0xF
  00080	e5823010	 str         r3, [r2, #0x10]

; 105  : 
; 106  : 	// Insert the palette descriptor into the descriptor chain to load the palette.
; 107  : 	// When this load completes, fd2 is automatically loaded next in the chain.  
; 108  : 	// fd2 now loops to itself and continues to load frame data.
; 109  : 	pXllpLCD->frameDescriptorCh0fd1->FDADR = LCD_FDADR(pXllpLCD->_PALETTE_FRAME_DESCRIPTOR_BASE_PHYSICAL);  	

  00084	e5903058	 ldr         r3, [r0, #0x58]
  00088	e5902068	 ldr         r2, [r0, #0x68]
  0008c	e3c3300f	 bic         r3, r3, #0xF
  00090	e5823000	 str         r3, [r2]

; 110  : 
; 111  : 	// swap frame descriptor pointers so that this operation is reversed the next time through
; 112  : 	pXllpLCD->frameDescriptorTemp	= pXllpLCD->frameDescriptorCh0fd1;

  00094	e5903068	 ldr         r3, [r0, #0x68]

; 113  : 	pXllpLCD->frameDescriptorCh0fd1 = pXllpLCD->frameDescriptorCh0fd2;

  00098	e590206c	 ldr         r2, [r0, #0x6C]
  0009c	e5803078	 str         r3, [r0, #0x78]

; 114  : 	pXllpLCD->frameDescriptorCh0fd2 = pXllpLCD->frameDescriptorTemp;

  000a0	e5802068	 str         r2, [r0, #0x68]
  000a4	e580306c	 str         r3, [r0, #0x6C]

; 115  : }

  000a8	e49de004	 ldr         lr, [sp], #4
  000ac	e12fff1e	 bx          lr
  000b0		 |$M35493|

			 ENDP  ; |XllpLCDLoadPalette|

	EXPORT	|XllpLCDSuspend|

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

  00000			 AREA	 |.pdata$$XllpLCDSuspend|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpLCDSuspend| } ; comdat associative
|$T35508| DCD	|$L35507|
	DCD	0x40002301
; Function compile flags: /Ogsy

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

  00000		 |XllpLCDSuspend| PROC

; 118  : {

  00000		 |$L35507|
  00000	e24dd004	 sub         sp, sp, #4
  00004		 |$M35505|
  00004	e3510000	 cmp         r1, #0

; 119  :     volatile unsigned int APB_Temp;
; 120  : 	volatile LCDRegs *p_LCDRegs;
; 121  : 	volatile XLLP_GPIO_T *p_GPIORegs;
; 122  : 
; 123  : 	p_LCDRegs = (LCDRegs *) pXllpLCD->LCDC;

  00008	e5902008	 ldr         r2, [r0, #8]

; 124  : 	p_GPIORegs = (XLLP_GPIO_T *) pXllpLCD->GPIO;

  0000c	e5900000	 ldr         r0, [r0]

; 125  : 
; 126  : 	switch(SuspendType)

  00010	0a000004	 beq         |$L35188|
  00014	e3510001	 cmp         r1, #1
  00018	1a000014	 bne         |$L35185|

; 144  : 		break;
; 145  : 	case Suspend_Immediate:
; 146  : 		p_LCDRegs->LCCR0 &= ~LCD_ENB;

  0001c	e5923000	 ldr         r3, [r2]

; 147  : 
; 148  : 		//p_GPIORegs->GPDR1 |= XLLP_GPIO_BIT_PWR_EN;
; 149  : 		//p_GPIORegs->GAFR1_L &= ~XLLP_GPIO_AF_BIT_L_PWREN_MASK;
; 150  : 		//p_GPIORegs->GPCR1 |= XLLP_GPIO_BIT_PWR_EN;		
; 151  : 		p_GPIORegs->GPDR2 |= XLLP_GPIO_BIT_L_PWR_EN;

  00020	e3c33001	 bic         r3, r3, #1

; 152  : 		p_GPIORegs->GAFR2_U &= ~XLLP_GPIO_AF_BIT_L_PWR_EN_MASK;
; 153  : 		p_GPIORegs->GPSR2 |= XLLP_GPIO_BIT_L_PWR_EN;
; 154  : 		break;

  00024	ea000007	 b           |$L35504|
  00028		 |$L35188|

; 127  : 	{
; 128  : 	case Suspend_Graceful:
; 129  : 		// Initiate power down sequence
; 130  : 		p_LCDRegs->LCCR0 |= LCD_DIS;

  00028	e5923000	 ldr         r3, [r2]
  0002c	e3833b01	 orr         r3, r3, #1, 22
  00030	e4823038	 str         r3, [r2], #0x38
  00034		 |$L35190|

; 131  : 
; 132  : 		// Wait for LDD bit to get set once the last DMA transfer has completed
; 133  : 		while(!(p_LCDRegs->LCSR0 & LCD_LDD));

  00034	e5923000	 ldr         r3, [r2]
  00038	e3130001	 tst         r3, #1
  0003c	0afffffc	 beq         |$L35190|

; 134  : 
; 135  : 		// Clear the sticky LDD bit
; 136  : 		p_LCDRegs->LCSR0 |= LCD_LDD;

  00040	e5923000	 ldr         r3, [r2]

; 137  : 		
; 138  : 		//p_GPIORegs->GPDR1 |= XLLP_GPIO_BIT_PWR_EN;
; 139  : 		//p_GPIORegs->GAFR1_L &= ~XLLP_GPIO_AF_BIT_L_PWREN_MASK;
; 140  : 		//p_GPIORegs->GPCR1 |= XLLP_GPIO_BIT_PWR_EN;
; 141  : 		p_GPIORegs->GPDR2 |= XLLP_GPIO_BIT_L_PWR_EN;
; 142  : 		p_GPIORegs->GAFR2_U &= ~XLLP_GPIO_AF_BIT_L_PWR_EN_MASK;

  00044	e3833001	 orr         r3, r3, #1
  00048		 |$L35504|
  00048	e5823000	 str         r3, [r2]
  0004c	e5903014	 ldr         r3, [r0, #0x14]

; 143  : 		p_GPIORegs->GPSR2 |= XLLP_GPIO_BIT_L_PWR_EN;

  00050	e3833502	 orr         r3, r3, #2, 10
  00054	e5803014	 str         r3, [r0, #0x14]
  00058	e5903068	 ldr         r3, [r0, #0x68]
  0005c	e3c33903	 bic         r3, r3, #3, 18
  00060	e5803068	 str         r3, [r0, #0x68]
  00064	e5903020	 ldr         r3, [r0, #0x20]
  00068	e3833502	 orr         r3, r3, #2, 10
  0006c	e5803020	 str         r3, [r0, #0x20]
  00070		 |$L35185|

; 155  : 	default :
; 156  : 		break;
; 157  : 	}
; 158  : 
; 159  : 	// don't use lock/unlock here because system call may be unavailable.
; 160  : 	////p_GPIORegs->GPCR0	= XLLP_GPIO_BIT_PWM_OUT0;
; 161  : 	p_GPIORegs->GPCR0	|= XLLP_GPIO_BIT_LED_EN;

  00070	e5903024	 ldr         r3, [r0, #0x24]
  00074	e3833801	 orr         r3, r3, #1, 16
  00078	e5803024	 str         r3, [r0, #0x24]

; 162  : 
; 163  :     //
; 164  :     // Ensure GPIO writes that have posted complete
; 165  :     //
; 166  :     APB_Temp = p_GPIORegs->GPCR0;

  0007c	e5903024	 ldr         r3, [r0, #0x24]
  00080	e58d3000	 str         r3, [sp]

; 167  : 
; 168  : }

  00084	e28dd004	 add         sp, sp, #4
  00088	e12fff1e	 bx          lr
  0008c		 |$M35506|

			 ENDP  ; |XllpLCDSuspend|

	EXPORT	|XllpLCDSetDisplayPage|
	EXPORT	|??_C@_1FK@OFIOPECM@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AAS?$AAe?$AAt?$AAD?$AAi?$AAs?$AAp?$AAl@| [ DATA ] ; `string'
	IMPORT	|NKDbgPrintfW|

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

  00000			 AREA	 |.pdata$$XllpLCDSetDisplayPage|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpLCDSetDisplayPage| } ; comdat associative
|$T35519| DCD	|$L35518|
	DCD	0x40000f01

  00000			 AREA	 |.rdata| { |??_C@_1FK@OFIOPECM@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AAS?$AAe?$AAt?$AAD?$AAi?$AAs?$AAp?$AAl@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@OFIOPECM@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AAS?$AAe?$AAt?$AAD?$AAi?$AAs?$AAp?$AAl@| DCB "Z"
	DCB	0x0, "G", 0x0, "B", 0x0, ":", 0x0, " ", 0x0, "X", 0x0, "l"
	DCB	0x0, "l", 0x0, "p", 0x0, "L", 0x0, "C", 0x0, "D", 0x0, "S"
	DCB	0x0, "e", 0x0, "t", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "p"
	DCB	0x0, "l", 0x0, "a", 0x0, "y", 0x0, "P", 0x0, "a", 0x0, "g"
	DCB	0x0, "e", 0x0, ":", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, ","
	DCB	0x0, " ", 0x0, "a", 0x0, "d", 0x0, "d", 0x0, "r", 0x0, ":"
	DCB	0x0, " ", 0x0, "%", 0x0, "0", 0x0, "8", 0x0, "x", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'
; Function compile flags: /Ogsy

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

  00000		 |XllpLCDSetDisplayPage| PROC

; 176  : {

  00000		 |$L35518|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M35516|
  00004	e1a05002	 mov         r5, r2
  00008	e3510000	 cmp         r1, #0
  0000c	e1a04000	 mov         r4, r0

; 177  :     unsigned long page_addr;
; 178  : 
; 179  : 	// Set the physical address of the frame buffer for all three frame descriptors	//哪三个FRAME?
; 180  : 	// Make sure that you've initialized FrameBufferSize before calling this function either manually or through a call to XllpLCDInit().
; 181  : 	pXllpLCD->CurrentPage = page;
; 182  :     //page_addr = pXllpLCD->_FRAME_BUFFER_BASE_PHYSICAL + ( pXllpLCD->CurrentPage * pXllpLCD->FrameBufferSize );	//有在SRAM中,有在SDRAM中,可以这样算?
; 183  : 	if(page==0)
; 184  :     	page_addr = pXllpLCD->_FRAME_BUFFER_BASE_PHYSICAL;

  00010	05945034	 ldreq       r5, [r4, #0x34]

; 185  : 	else
; 186  :     	page_addr = pageaddr;//baseframe2?
; 187  :     RETAILMSG(ZGB_MSG, (TEXT("ZGB: XllpLCDSetDisplayPage: %d, addr: %08x\r\n"),page, page_addr));

  00014	e59f001c	 ldr         r0, [pc, #0x1C]
  00018	e5841030	 str         r1, [r4, #0x30]
  0001c	e1a02005	 mov         r2, r5
  00020	eb000000	 bl          NKDbgPrintfW

; 188  : 
; 189  :     pXllpLCD->frameDescriptorCh0fd1->FSADR = LCD_FSADR( page_addr );

  00024	e5942068	 ldr         r2, [r4, #0x68]
  00028	e3c53007	 bic         r3, r5, #7
  0002c	e5823004	 str         r3, [r2, #4]

; 190  : 
; 191  : }

  00030	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00034	e12fff1e	 bx          lr
  00038		 |$L35521|
  00038	00000000	 DCD         |??_C@_1FK@OFIOPECM@?$AAZ?$AAG?$AAB?$AA?3?$AA?5?$AAX?$AAl?$AAl?$AAp?$AAL?$AAC?$AAD?$AAS?$AAe?$AAt?$AAD?$AAi?$AAs?$AAp?$AAl@|
  0003c		 |$M35517|

⌨️ 快捷键说明

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