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

📄 lcd_plat.cod

📁 wince6.0 arm LCD 驱动源码 DDshow
💻 COD
📖 第 1 页 / 共 2 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.01.60511.01 

	TTL	D:\WINCE600\PLATFORM\M-stone\SRC\DRIVERS\Display\panels\lcd_plat.c
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:LIBCMT "
	DCB	"-defaultlib:OLDNAMES "


  00000			 AREA	 |.data|, DATA
	 COMMON	|XllpLCD|, 0x90

|?s_szGPERegKey@?1??get_screen_size@@9@9| DCB "D", 0x0, "r", 0x0, "i", 0x0
	DCB	"v", 0x0, "e", 0x0, "r", 0x0, "s", 0x0, "\\", 0x0, "D", 0x0
	DCB	"i", 0x0, "s", 0x0, "p", 0x0, "l", 0x0, "a", 0x0, "y", 0x0
	DCB	"\\", 0x0, "G", 0x0, "P", 0x0, "E", 0x0, 0x0, 0x0 ; `get_screen_size'::`2'::s_szGPERegKey
	EXPORT	|__$ArrayPad$| [ DATA ]
	EXPORT	|get_blit_option|
	IMPORT	|KernelIoControl|
	IMPORT	|__security_cookie|
	IMPORT	|__GSHandlerCheck|
	IMPORT	|__security_check_cookie|

  00000			 AREA	 |.pdata|, PDATA
|$T42589| DCD	|$LN5@get_blit_o|
	DCD	0xc0001802

  00000			 AREA	 |.xdata|, DATA
|$T42585| DCD	0xffffffec
; Function compile flags: /Odtp
; File d:\wince600\platform\m-stone\src\drivers\display\panels\lcd_plat.c

  00000			 AREA	 |.text|, CODE, ARM

  00000	00000000	 DCD         |__GSHandlerCheck|
  00004	00000000	 DCD         |$T42585|

  00008		 |get_blit_option| PROC

; 42   : {

  00008		 |$LN5@get_blit_o|
  00008	e52de004	 str         lr, [sp, #-4]!
  0000c	e24dd0dc	 sub         sp, sp, #0xDC
  00010		 |$M42586|
  00010	e59f304c	 ldr         r3, [pc, #0x4C]
  00014	e5933000	 ldr         r3, [r3]
  00018	e58d30cc	 str         r3, [sp, #0xCC]

; 43   :     DWORD out_size;
; 44   :     BSP_ARGS args;
; 45   : 
; 46   :     KernelIoControl(IOCTL_GET_BSP_ARGS, NULL, 0, 
; 47   :                     &args, sizeof(BSP_ARGS), &out_size);

  0001c	e28d30c8	 add         r3, sp, #0xC8
  00020	e58d3004	 str         r3, [sp, #4]
  00024	e3a030c0	 mov         r3, #0xC0
  00028	e58d3000	 str         r3, [sp]
  0002c	e28d3008	 add         r3, sp, #8
  00030	e3a02000	 mov         r2, #0
  00034	e3a01000	 mov         r1, #0
  00038	e59f0020	 ldr         r0, [pc, #0x20]
  0003c	eb000000	 bl          KernelIoControl

; 48   : 
; 49   :     return args.DefaultBlit;

  00040	e59d00cc	 ldr         r0, [sp, #0xCC]
  00044	eb000000	 bl          __security_check_cookie
  00048	e59d30bc	 ldr         r3, [sp, #0xBC]
  0004c	e58d30d8	 str         r3, [sp, #0xD8]

; 50   : }

  00050	e59d00d8	 ldr         r0, [sp, #0xD8]
  00054	e28dd0dc	 add         sp, sp, #0xDC
  00058	e49de004	 ldr         lr, [sp], #4
  0005c	e12fff1e	 bx          lr
  00060		 |$LN6@get_blit_o|
  00060		 |$LN7@get_blit_o|
  00060	01013e80	 DCD         0x1013e80
  00064		 |$LN8@get_blit_o|
  00064	00000000	 DCD         |__security_cookie|
  00068		 |$M42587|

			 ENDP  ; |get_blit_option|

	EXPORT	|is_dual_panel|

  00008			 AREA	 |.pdata|, PDATA
|$T42598| DCD	|$LN9@is_dual_pa|
	DCD	0x40001b02
; Function compile flags: /Odtp

  00068			 AREA	 |.text|, CODE, ARM

  00068		 |is_dual_panel| PROC

; 64   : {

  00068		 |$LN9@is_dual_pa|
  00068	e52de004	 str         lr, [sp, #-4]!
  0006c	e24dd010	 sub         sp, sp, #0x10
  00070		 |$M42595|

; 65   :     DWORD cfg = get_panel_type();

  00070	eb000000	 bl          get_panel_type
  00074	e58d0008	 str         r0, [sp, #8]
  00078	e59d3008	 ldr         r3, [sp, #8]
  0007c	e58d3000	 str         r3, [sp]

; 66   :     switch (cfg)

  00080	e59d3000	 ldr         r3, [sp]
  00084	e58d300c	 str         r3, [sp, #0xC]
  00088	e59d300c	 ldr         r3, [sp, #0xC]
  0008c	e3530020	 cmp         r3, #0x20
  00090	3a000009	 bcc         |$LN1@is_dual_pa|
  00094	e59d300c	 ldr         r3, [sp, #0xC]
  00098	e3530021	 cmp         r3, #0x21
  0009c	9a000003	 bls         |$LN2@is_dual_pa|
  000a0	e59d300c	 ldr         r3, [sp, #0xC]
  000a4	e3530025	 cmp         r3, #0x25
  000a8	0a000000	 beq         |$LN2@is_dual_pa|
  000ac	ea000002	 b           |$LN1@is_dual_pa|
  000b0		 |$LN2@is_dual_pa|

; 67   :     {
; 68   :     case LCD_PANEL_ID_VGA_QVGA_OLED_LEAD:
; 69   :     case LCD_PANEL_ID_VGA_QVGA_OLED_LEAD_FREE:
; 70   :     case LCD_PANEL_ID_VGA_QVGA_OLED_LEAD_FREE_LANDSCAPE:
; 71   :         return TRUE;

  000b0	e3a03001	 mov         r3, #1
  000b4	e58d3004	 str         r3, [sp, #4]
  000b8	ea000001	 b           |$LN5@is_dual_pa|
  000bc		 |$LN1@is_dual_pa|

; 72   :     default:
; 73   :         return FALSE;

  000bc	e3a03000	 mov         r3, #0
  000c0	e58d3004	 str         r3, [sp, #4]
  000c4		 |$LN5@is_dual_pa|

; 74   :     }
; 75   : }

  000c4	e59d0004	 ldr         r0, [sp, #4]
  000c8	e28dd010	 add         sp, sp, #0x10
  000cc	e49de004	 ldr         lr, [sp], #4
  000d0	e12fff1e	 bx          lr
  000d4		 |$M42596|

			 ENDP  ; |is_dual_panel|

	EXPORT	|__$ArrayPad$| [ DATA ]

  00010			 AREA	 |.pdata|, PDATA
|$T42608| DCD	|$LN5@get_panel_|
	DCD	0xc0001802

  00004			 AREA	 |.xdata|, DATA
|$T42604| DCD	0xffffffec
; Function compile flags: /Odtp

  000d4			 AREA	 |.text|, CODE, ARM

  000d4	00000000	 DCD         |__GSHandlerCheck|
  000d8	00000000	 DCD         |$T42604|

  000dc		 |get_panel_type| PROC

; 53   : {

  000dc		 |$LN5@get_panel_|
  000dc	e52de004	 str         lr, [sp, #-4]!
  000e0	e24dd0dc	 sub         sp, sp, #0xDC
  000e4		 |$M42605|
  000e4	e59f304c	 ldr         r3, [pc, #0x4C]
  000e8	e5933000	 ldr         r3, [r3]
  000ec	e58d30cc	 str         r3, [sp, #0xCC]

; 54   :     DWORD out_size;
; 55   :     BSP_ARGS args;
; 56   : 
; 57   :     KernelIoControl(IOCTL_GET_BSP_ARGS, NULL, 0, 
; 58   :                     &args, sizeof(BSP_ARGS), &out_size);

  000f0	e28d30c8	 add         r3, sp, #0xC8
  000f4	e58d3004	 str         r3, [sp, #4]
  000f8	e3a030c0	 mov         r3, #0xC0
  000fc	e58d3000	 str         r3, [sp]
  00100	e28d3008	 add         r3, sp, #8
  00104	e3a02000	 mov         r2, #0
  00108	e3a01000	 mov         r1, #0
  0010c	e59f0020	 ldr         r0, [pc, #0x20]
  00110	eb000000	 bl          KernelIoControl

; 59   : 
; 60   :     return args.DefaultLCDPanel;

  00114	e59d00cc	 ldr         r0, [sp, #0xCC]
  00118	eb000000	 bl          __security_check_cookie
  0011c	e59d30c0	 ldr         r3, [sp, #0xC0]
  00120	e58d30d8	 str         r3, [sp, #0xD8]

; 61   : }

  00124	e59d00d8	 ldr         r0, [sp, #0xD8]
  00128	e28dd0dc	 add         sp, sp, #0xDC
  0012c	e49de004	 ldr         lr, [sp], #4
  00130	e12fff1e	 bx          lr
  00134		 |$LN6@get_panel_|
  00134		 |$LN7@get_panel_|
  00134	01013e80	 DCD         0x1013e80
  00138		 |$LN8@get_panel_|
  00138	00000000	 DCD         |__security_cookie|
  0013c		 |$M42606|

			 ENDP  ; |get_panel_type|

	EXPORT	|??_C@_1BK@HNDINEGH@?$AAV?$AAe?$AAr?$AAt?$AAi?$AAc?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| [ DATA ] ; `string'
	EXPORT	|??_C@_1BO@CPEMBNKP@?$AAH?$AAo?$AAr?$AAi?$AAz?$AAo?$AAn?$AAt?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| [ DATA ] ; `string'
	EXPORT	|get_screen_size|
	IMPORT	|RegQueryValueExW|
	IMPORT	|RegOpenKeyExW|

  00018			 AREA	 |.pdata|, PDATA
|$T42621| DCD	|$LN10@get_screen|
	DCD	0x40004504

  00000			 AREA	 |.rdata|, DATA, READONLY
|??_C@_1BK@HNDINEGH@?$AAV?$AAe?$AAr?$AAt?$AAi?$AAc?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| DCB "V"
	DCB	0x0, "e", 0x0, "r", 0x0, "t", 0x0, "i", 0x0, "c", 0x0, "a"
	DCB	0x0, "l", 0x0, "S", 0x0, "i", 0x0, "z", 0x0, "e", 0x0, 0x0
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata|, DATA, READONLY
|??_C@_1BO@CPEMBNKP@?$AAH?$AAo?$AAr?$AAi?$AAz?$AAo?$AAn?$AAt?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| DCB "H"
	DCB	0x0, "o", 0x0, "r", 0x0, "i", 0x0, "z", 0x0, "o", 0x0, "n"
	DCB	0x0, "t", 0x0, "a", 0x0, "l", 0x0, "S", 0x0, "i", 0x0, "z"
	DCB	0x0, "e", 0x0, 0x0, 0x0			; `string'
; Function compile flags: /Odtp

  0013c			 AREA	 |.text|, CODE, ARM

  0013c		 |get_screen_size| PROC

; 78   : {

  0013c		 |$LN10@get_screen|
  0013c	e1a0c00d	 mov         r12, sp
  00140	e92d0003	 stmdb       sp!, {r0, r1}
  00144	e92d5000	 stmdb       sp!, {r12, lr}
  00148	e24dd038	 sub         sp, sp, #0x38
  0014c		 |$M42618|

; 79   :     HKEY hKey;
; 80   : 
; 81   : 	static WCHAR s_szGPERegKey[] = L"Drivers\\Display\\GPE";
; 82   : 	// default size
; 83   : 	*width = 240;

  0014c	e59d2040	 ldr         r2, [sp, #0x40]
  00150	e3a030f0	 mov         r3, #0xF0
  00154	e5823000	 str         r3, [r2]

; 84   : 	*height = 320;

  00158	e59d2044	 ldr         r2, [sp, #0x44]
  0015c	e3a03d05	 mov         r3, #5, 26
  00160	e5823000	 str         r3, [r2]

; 85   : 
; 86   :     // Open GPE's regkey and read the know values from it.
; 87   :     if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
; 88   :                                       s_szGPERegKey,
; 89   :                                       0,
; 90   :                                       0,
; 91   :                                       &hKey))

  00164	e28d3008	 add         r3, sp, #8
  00168	e58d3000	 str         r3, [sp]
  0016c	e3a03000	 mov         r3, #0
  00170	e3a02000	 mov         r2, #0
  00174	e59f10d0	 ldr         r1, [pc, #0xD0]
  00178	e3a0010a	 mov         r0, #0xA, 2
  0017c	eb000000	 bl          RegOpenKeyExW
  00180	e58d002c	 str         r0, [sp, #0x2C]
  00184	e59d302c	 ldr         r3, [sp, #0x2C]
  00188	e3530000	 cmp         r3, #0
  0018c	1a000029	 bne         |$LN5@get_screen|

; 92   :     {
; 93   :         DWORD dwType;
; 94   :         DWORD dwValue;
; 95   :         DWORD dwSize;
; 96   : 
; 97   :         dwSize = sizeof (ULONG);

  00190	e3a03004	 mov         r3, #4
  00194	e58d3010	 str         r3, [sp, #0x10]

; 98   :         if (ERROR_SUCCESS == RegQueryValueEx(hKey,
; 99   :                                              L"HorizontalSize",
; 100  :                                              NULL,
; 101  :                                              &dwType,
; 102  :                                              (BYTE*)&dwValue,
; 103  :                                              &dwSize))

  00198	e28d3010	 add         r3, sp, #0x10
  0019c	e58d3004	 str         r3, [sp, #4]
  001a0	e28d3014	 add         r3, sp, #0x14
  001a4	e58d3000	 str         r3, [sp]
  001a8	e28d300c	 add         r3, sp, #0xC
  001ac	e3a02000	 mov         r2, #0
  001b0	e59f1090	 ldr         r1, [pc, #0x90]
  001b4	e59d0008	 ldr         r0, [sp, #8]
  001b8	eb000000	 bl          RegQueryValueExW
  001bc	e58d0030	 str         r0, [sp, #0x30]
  001c0	e59d3030	 ldr         r3, [sp, #0x30]
  001c4	e3530000	 cmp         r3, #0
  001c8	1a000005	 bne         |$LN4@get_screen|

; 104  :         {
; 105  :             if (REG_DWORD == dwType)

  001cc	e59d300c	 ldr         r3, [sp, #0xC]
  001d0	e3530004	 cmp         r3, #4
  001d4	1a000002	 bne         |$LN3@get_screen|

; 106  :             {
; 107  :                 *width = dwValue;

  001d8	e59d2014	 ldr         r2, [sp, #0x14]
  001dc	e59d3040	 ldr         r3, [sp, #0x40]
  001e0	e5832000	 str         r2, [r3]
  001e4		 |$LN3@get_screen|
  001e4		 |$LN4@get_screen|

; 108  :             }
; 109  :         }
; 110  : 
; 111  :         dwSize = sizeof (ULONG);

  001e4	e3a03004	 mov         r3, #4
  001e8	e58d3010	 str         r3, [sp, #0x10]

; 112  :         if (ERROR_SUCCESS == RegQueryValueEx(hKey,
; 113  :                                              L"VerticalSize",
; 114  :                                              NULL,
; 115  :                                              &dwType,
; 116  :                                              (BYTE*)&dwValue,
; 117  :                                              &dwSize))

  001ec	e28d3010	 add         r3, sp, #0x10
  001f0	e58d3004	 str         r3, [sp, #4]
  001f4	e28d3014	 add         r3, sp, #0x14
  001f8	e58d3000	 str         r3, [sp]
  001fc	e28d300c	 add         r3, sp, #0xC
  00200	e3a02000	 mov         r2, #0
  00204	e59f1038	 ldr         r1, [pc, #0x38]
  00208	e59d0008	 ldr         r0, [sp, #8]
  0020c	eb000000	 bl          RegQueryValueExW
  00210	e58d0034	 str         r0, [sp, #0x34]
  00214	e59d3034	 ldr         r3, [sp, #0x34]
  00218	e3530000	 cmp         r3, #0
  0021c	1a000005	 bne         |$LN2@get_screen|

; 118  :         {
; 119  :             if (REG_DWORD == dwType)

  00220	e59d300c	 ldr         r3, [sp, #0xC]
  00224	e3530004	 cmp         r3, #4
  00228	1a000002	 bne         |$LN1@get_screen|

; 120  :             {
; 121  :                 *height = dwValue;

  0022c	e59d2014	 ldr         r2, [sp, #0x14]
  00230	e59d3044	 ldr         r3, [sp, #0x44]
  00234	e5832000	 str         r2, [r3]
  00238		 |$LN1@get_screen|
  00238		 |$LN2@get_screen|
  00238		 |$LN5@get_screen|

; 122  :             }
; 123  :         }
; 124  : 	}
; 125  : }

  00238	e28dd038	 add         sp, sp, #0x38
  0023c	e89d6000	 ldmia       sp, {sp, lr}
  00240	e12fff1e	 bx          lr
  00244		 |$LN11@get_screen|
  00244		 |$LN12@get_screen|
  00244	00000000	 DCD         |??_C@_1BK@HNDINEGH@?$AAV?$AAe?$AAr?$AAt?$AAi?$AAc?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@|
  00248		 |$LN13@get_screen|
  00248	00000000	 DCD         |??_C@_1BO@CPEMBNKP@?$AAH?$AAo?$AAr?$AAi?$AAz?$AAo?$AAn?$AAt?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@|
  0024c		 |$LN14@get_screen|
  0024c	00000000	 DCD         |?s_szGPERegKey@?1??get_screen_size@@9@9|
  00250		 |$M42619|

			 ENDP  ; |get_screen_size|

	EXPORT	|??_C@_1DM@NGGLONBF@?$AAu?$AAs?$AAi?$AAn?$AAg?$AA?5?$AAl?$AAc?$AAd?$AA?5?$AAp?$AAa?$AAn?$AAe?$AAl?$AA?5?$AA0?$AA2?$AA8?$AA3?$AA?$CI?$AAQ?$AAV?$AAG?$AAA?$AA?$CJ?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
	EXPORT	|LCDPanelSelect|
	IMPORT	|NKDbgPrintfW|
	IMPORT	|vga_qvga_panel_init|
	IMPORT	|memcpy|

  00020			 AREA	 |.pdata|, PDATA
|$T42634| DCD	|$LN10@LCDPanelSe|
	DCD	0x40004c04

  00000			 AREA	 |.rdata|, DATA, READONLY
|??_C@_1DM@NGGLONBF@?$AAu?$AAs?$AAi?$AAn?$AAg?$AA?5?$AAl?$AAc?$AAd?$AA?5?$AAp?$AAa?$AAn?$AAe?$AAl?$AA?5?$AA0?$AA2?$AA8?$AA3?$AA?$CI?$AAQ?$AAV?$AAG?$AAA?$AA?$CJ?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| DCB "u"
	DCB	0x0, "s", 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "l"
	DCB	0x0, "c", 0x0, "d", 0x0, " ", 0x0, "p", 0x0, "a", 0x0, "n"
	DCB	0x0, "e", 0x0, "l", 0x0, " ", 0x0, "0", 0x0, "2", 0x0, "8"
	DCB	0x0, "3", 0x0, "(", 0x0, "Q", 0x0, "V", 0x0, "G", 0x0, "A"
	DCB	0x0, ")", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

⌨️ 快捷键说明

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