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

📄 spihw.cod

📁 这是mobile6.0下的DMB驱动
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00000			 AREA	 |.rdata| { |??_C@_1CC@PDLHBDMG@?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CC@PDLHBDMG@?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| DCB "D"
	DCB	0x0, "M", 0x0, "A", 0x0, "_", 0x0, "S", 0x0, "e", 0x0, "t"
	DCB	0x0, "U", 0x0, "p", 0x0, "C", 0x0, "h", 0x0, "a", 0x0, "n"
	DCB	0x0, "n", 0x0, "e", 0x0, "l", 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1CE@PKEIJDNP@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAo?$AAn?$AAf?$AAi?$AAg?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CE@PKEIJDNP@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAo?$AAn?$AAf?$AAi?$AAg?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| DCB "D"
	DCB	0x0, "M", 0x0, "A", 0x0, "_", 0x0, "C", 0x0, "o", 0x0, "n"
	DCB	0x0, "f", 0x0, "i", 0x0, "g", 0x0, "C", 0x0, "h", 0x0, "a"
	DCB	0x0, "n", 0x0, "n", 0x0, "e", 0x0, "l", 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1CE@MPDJICKO@?$AAD?$AAM?$AAA?$AA_?$AAR?$AAe?$AAm?$AAo?$AAv?$AAe?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CE@MPDJICKO@?$AAD?$AAM?$AAA?$AA_?$AAR?$AAe?$AAm?$AAo?$AAv?$AAe?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| DCB "D"
	DCB	0x0, "M", 0x0, "A", 0x0, "_", 0x0, "R", 0x0, "e", 0x0, "m"
	DCB	0x0, "o", 0x0, "v", 0x0, "e", 0x0, "C", 0x0, "h", 0x0, "a"
	DCB	0x0, "n", 0x0, "n", 0x0, "e", 0x0, "l", 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1IG@CPCFIGAI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IG@CPCFIGAI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| DCB "S"
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
	DCB	0x0, " ", 0x0, "a", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v"
	DCB	0x0, "a", 0x0, "t", 0x0, "e", 0x0, "D", 0x0, "M", 0x0, "A"
	DCB	0x0, "S", 0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c"
	DCB	0x0, "e", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "C", 0x0, "o"
	DCB	0x0, "u", 0x0, "l", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o"
	DCB	0x0, "t", 0x0, " ", 0x0, "l", 0x0, "o", 0x0, "a", 0x0, "d"
	DCB	0x0, " ", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, " ", 0x0, "s"
	DCB	0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e"
	DCB	0x0, " ", 0x0, "l", 0x0, "i", 0x0, "b", 0x0, "r", 0x0, "a"
	DCB	0x0, "r", 0x0, "y", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_1JC@FGCOOMKG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1JC@FGCOOMKG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| DCB "S"
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
	DCB	0x0, " ", 0x0, "a", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v"
	DCB	0x0, "a", 0x0, "t", 0x0, "e", 0x0, "D", 0x0, "M", 0x0, "A"
	DCB	0x0, "S", 0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c"
	DCB	0x0, "e", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "C", 0x0, "o"
	DCB	0x0, "u", 0x0, "l", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o"
	DCB	0x0, "t", 0x0, " ", 0x0, "a", 0x0, "l", 0x0, "l", 0x0, "o"
	DCB	0x0, "c", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "D"
	DCB	0x0, "M", 0x0, "A", 0x0, " ", 0x0, "s", 0x0, "e", 0x0, "r"
	DCB	0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "s"
	DCB	0x0, "t", 0x0, "r", 0x0, "u", 0x0, "c", 0x0, "t", 0x0, "u"
	DCB	0x0, "r", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_1HK@GOKELIML@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HK@GOKELIML@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| DCB "S"
	DCB	0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
	DCB	0x0, " ", 0x0, "a", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v"
	DCB	0x0, "a", 0x0, "t", 0x0, "e", 0x0, "D", 0x0, "M", 0x0, "A"
	DCB	0x0, "S", 0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c"
	DCB	0x0, "e", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "T", 0x0, "h"
	DCB	0x0, "e", 0x0, "r", 0x0, "e", 0x0, " ", 0x0, "i", 0x0, "s"
	DCB	0x0, " ", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "D", 0x0, "M"
	DCB	0x0, "A", 0x0, " ", 0x0, "s", 0x0, "e", 0x0, "r", 0x0, "v"
	DCB	0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "n", 0x0, "a"
	DCB	0x0, "m", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'
; Function compile flags: /Ogsy

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

  00000		 |activateDMAService| PROC

; 399  : {

  00000		 |$L39558|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004	e24dd010	 sub         sp, sp, #0x10
  00008		 |$M39556|
  00008	e1a04000	 mov         r4, r0

; 400  : 	DMA_INIT_PARAMS_ST dmaSetUp;
; 401  : 	
; 402  : 	if (pSpiPhy->DmaDllName[0] == 0)

  0000c	e5d43004	 ldrb        r3, [r4, #4]
  00010	e3530000	 cmp         r3, #0
  00014	1a000002	 bne         |$L38926|

; 403  : 	{
; 404  : 		RETAILMSG(1,  (TEXT("SmsSpi: activateDMAService() There is no DMA service name.\r\n")));

  00018	e59f01f4	 ldr         r0, [pc, #0x1F4]

; 410  : 	{
; 411  : 		RETAILMSG(1,  (TEXT("SmsSpi: activateDMAService() Could not allocate DMA service structure.\r\n")));

  0001c	eb000000	 bl          NKDbgPrintfW

; 412  : 		return FALSE;

  00020	ea00006f	 b           |$L39551|
  00024		 |$L38926|

; 406  : 	}
; 407  : 	
; 408  : 	pSpiPhy->dmaService = (DEVICE_DMA_SERVICE_ST*)LocalAlloc(LPTR, sizeof(DEVICE_DMA_SERVICE_ST));

  00024	e3a01018	 mov         r1, #0x18
  00028	e3a00040	 mov         r0, #0x40
  0002c	eb000000	 bl          LocalAlloc
  00030	e3500000	 cmp         r0, #0
  00034	e5840068	 str         r0, [r4, #0x68]

; 409  : 	if (pSpiPhy->dmaService == NULL)

  00038	1a000002	 bne         |$L38931|

; 410  : 	{
; 411  : 		RETAILMSG(1,  (TEXT("SmsSpi: activateDMAService() Could not allocate DMA service structure.\r\n")));

  0003c	e59f01cc	 ldr         r0, [pc, #0x1CC]
  00040	eb000000	 bl          NKDbgPrintfW

; 412  : 		return FALSE;

  00044	ea000066	 b           |$L39551|
  00048		 |$L38931|

; 413  : 	}
; 414  : 	
; 415  : 	pSpiPhy->dmaService->hdl = LoadLibrary((LPCWSTR)pSpiPhy->DmaDllName);

  00048	e2840004	 add         r0, r4, #4
  0004c	eb000000	 bl          LoadLibraryW
  00050	e5943068	 ldr         r3, [r4, #0x68]
  00054	e5830000	 str         r0, [r3]

; 416  : 	if (pSpiPhy->dmaService->hdl == NULL)

  00058	e5942068	 ldr         r2, [r4, #0x68]
  0005c	e5923000	 ldr         r3, [r2]
  00060	e3530000	 cmp         r3, #0
  00064	1a000002	 bne         |$L38935|

; 417  : 	{
; 418  : 		RETAILMSG(1, (TEXT("SmsSpi: activateDMAService() Could not load DMA service library.\r\n")));

  00068	e59f019c	 ldr         r0, [pc, #0x19C]
  0006c	eb000000	 bl          NKDbgPrintfW

; 419  : 		LocalFree(pSpiPhy->dmaService);
; 420  : 		pSpiPhy->dmaService = NULL;
; 421  : 		return FALSE;

  00070	ea000057	 b           |$L39552|
  00074		 |$L38935|

; 422  : 	}
; 423  : 
; 424  : 	pSpiPhy->dmaService->dmaSetUpChannel = (DMA_SetUpChannelF)GetProcAddress(pSpiPhy->dmaService->hdl, TEXT("DMA_SetUpChannel"));

  00074	e59f118c	 ldr         r1, [pc, #0x18C]
  00078	e5920000	 ldr         r0, [r2]
  0007c	eb000000	 bl          GetProcAddressW
  00080	e5943068	 ldr         r3, [r4, #0x68]

; 425  : 	pSpiPhy->dmaService->dmaConfigChannel = (DMA_ConfigChannelF)GetProcAddress(pSpiPhy->dmaService->hdl, TEXT("DMA_ConfigChannel"));

  00084	e59f1178	 ldr         r1, [pc, #0x178]
  00088	e583000c	 str         r0, [r3, #0xC]
  0008c	e5943068	 ldr         r3, [r4, #0x68]
  00090	e5930000	 ldr         r0, [r3]
  00094	eb000000	 bl          GetProcAddressW
  00098	e5943068	 ldr         r3, [r4, #0x68]

; 426  : 	pSpiPhy->dmaService->dmaRemoveChannel = (DMA_RemoveChannelF)GetProcAddress(pSpiPhy->dmaService->hdl, TEXT("DMA_RemoveChannel"));

  0009c	e59f115c	 ldr         r1, [pc, #0x15C]
  000a0	e5830010	 str         r0, [r3, #0x10]
  000a4	e5943068	 ldr         r3, [r4, #0x68]
  000a8	e5930000	 ldr         r0, [r3]
  000ac	eb000000	 bl          GetProcAddressW
  000b0	e5943068	 ldr         r3, [r4, #0x68]
  000b4	e5830014	 str         r0, [r3, #0x14]

; 427  : 	if (pSpiPhy->dmaService->dmaSetUpChannel == NULL ||
; 428  : 		pSpiPhy->dmaService->dmaConfigChannel == NULL ||
; 429  : 		pSpiPhy->dmaService->dmaRemoveChannel == NULL)

  000b8	e5942068	 ldr         r2, [r4, #0x68]
  000bc	e592300c	 ldr         r3, [r2, #0xC]
  000c0	e3530000	 cmp         r3, #0
  000c4	0a00003d	 beq         |$L38948|
  000c8	e5923010	 ldr         r3, [r2, #0x10]
  000cc	e3530000	 cmp         r3, #0
  000d0	0a00003a	 beq         |$L38948|
  000d4	e5923014	 ldr         r3, [r2, #0x14]
  000d8	e3530000	 cmp         r3, #0
  000dc	0a000037	 beq         |$L38948|

; 436  : 	}
; 437  : 
; 438  : 
; 439  : 	dmaSetUp.flags = DMA_USE_HW_FLOW_CTRL;
; 440  : 	if (useSSPPort == 1)	

  000e0	e59f5114	 ldr         r5, [pc, #0x114]
  000e4	e3a03001	 mov         r3, #1
  000e8	e58d3000	 str         r3, [sp]
  000ec	e5953000	 ldr         r3, [r5]
  000f0	e3530001	 cmp         r3, #1

; 441  : 		dmaSetUp.dmaReq = SSP1_TX_CMR;

  000f4	03a0300e	 moveq       r3, #0xE
  000f8	0a000008	 beq         |$L39553|

; 442  : 	else if (useSSPPort == 2)	

  000fc	e3530002	 cmp         r3, #2

; 443  : 		dmaSetUp.dmaReq = SSP2_TX_CMR;

  00100	03a03010	 moveq       r3, #0x10
  00104	0a000005	 beq         |$L39553|

; 444  :        else if (useSSPPort == 3)	

  00108	e3530003	 cmp         r3, #3

; 445  :                 dmaSetUp.dmaReq = SSP3_TX_CMR;

  0010c	03a03043	 moveq       r3, #0x43
  00110	0a000002	 beq         |$L39553|

; 446  :        else if (useSSPPort == 4)	

  00114	e3530004	 cmp         r3, #4
  00118	1a000001	 bne         |$L38957|

; 447  :                 dmaSetUp.dmaReq = SSP4_TX_CMR;

  0011c	e3a03003	 mov         r3, #3
  00120		 |$L39553|
  00120	e58d3004	 str         r3, [sp, #4]
  00124		 |$L38957|

; 448  :         dmaSetUp.burstSize = DMA_BURST_8_BYTES;

  00124	e3a03000	 mov         r3, #0

; 449  : 	dmaSetUp.busWidth = DMA_BUS_WIDTH_4_BYTE;

  00128	e3a01002	 mov         r1, #2
  0012c	e58d3008	 str         r3, [sp, #8]
  00130	e58d100c	 str         r1, [sp, #0xC]

; 450  : 	pSpiPhy->dmaService->txDmaDevice=pSpiPhy->dmaService->dmaSetUpChannel(&dmaSetUp);

  00134	e592300c	 ldr         r3, [r2, #0xC]
  00138	e28d0000	 add         r0, sp, #0
  0013c	e1a0e00f	 mov         lr, pc
  00140	e12fff13	 bx          r3
  00144	e5943068	 ldr         r3, [r4, #0x68]

; 451  : 
; 452  : 	dmaSetUp.flags = DMA_USE_HW_FLOW_CTRL;

  00148	e3a02001	 mov         r2, #1
  0014c	e5830008	 str         r0, [r3, #8]

; 453  : 	 if (useSSPPort == 1)	

  00150	e5953000	 ldr         r3, [r5]
  00154	e58d2000	 str         r2, [sp]
  00158	e3530001	 cmp         r3, #1

; 454  :               dmaSetUp.dmaReq = SSP1_RX_CMR;

  0015c	03a0300d	 moveq       r3, #0xD
  00160	0a000008	 beq         |$L39554|

; 455  :         else if (useSSPPort == 2)	

  00164	e3530002	 cmp         r3, #2

; 456  :             dmaSetUp.dmaReq = SSP2_RX_CMR;

  00168	03a0300f	 moveq       r3, #0xF
  0016c	0a000005	 beq         |$L39554|

; 457  :         else if (useSSPPort == 3)	

  00170	e3530003	 cmp         r3, #3

; 458  :             dmaSetUp.dmaReq = SSP3_RX_CMR;

  00174	03a03042	 moveq       r3, #0x42
  00178	0a000002	 beq         |$L39554|

; 459  :         else if (useSSPPort == 4)	

  0017c	e3530004	 cmp         r3, #4
  00180	1a000001	 bne         |$L38964|

; 460  :             dmaSetUp.dmaReq = SSP4_RX_CMR;

  00184	e3a03002	 mov         r3, #2
  00188		 |$L39554|
  00188	e58d3004	 str         r3, [sp, #4]
  0018c		 |$L38964|

; 461  :    	dmaSetUp.burstSize = DMA_BURST_8_BYTES;
; 462  : 	dmaSetUp.busWidth = DMA_BUS_WIDTH_4_BYTE;
; 463  : 	pSpiPhy->dmaService->rxDmaDevice=pSpiPhy->dmaService->dmaSetUpChannel(&dmaSetUp);

  0018c	e5943068	 ldr         r3, [r4, #0x68]
  00190	e3a02000	 mov         r2, #0
  00194	e3a01002	 mov         r1, #2
  00198	e58d2008	 str         r2, [sp, #8]
  0019c	e58d100c	 str         r1, [sp, #0xC]
  001a0	e593300c	 ldr         r3, [r3, #0xC]
  001a4	e28d0000	 add         r0, sp, #0
  001a8	e1a0e00f	 mov         lr, pc
  001ac	e12fff13	 bx          r3
  001b0	e5943068	 ldr         r3, [r4, #0x68]

; 464  : 	return TRUE;

  001b4	e3a02001	 mov         r2, #1
  001b8	e5830004	 str         r0, [r3, #4]
  001bc	ea000009	 b           |$L38924|
  001c0		 |$L38948|

; 430  : 	{
; 431  : 		RETAILMSG(1, (TEXT("SmsSpi: activateDMAService() Could not find DMA library routines.\r\n")));

  001c0	e59f0030	 ldr         r0, [pc, #0x30]
  001c4	eb000000	 bl          NKDbgPrintfW

; 432  : 		FreeLibrary(pSpiPhy->dmaService->hdl);

  001c8	e5943068	 ldr         r3, [r4, #0x68]
  001cc	e5930000	 ldr         r0, [r3]
  001d0	eb000000	 bl          FreeLibrary
  001d4		 |$L39552|

; 433  : 		LocalFree(pSpiPhy->dmaService);

  001d4	e5940068	 ldr         r0, [r4, #0x68]
  001d8	eb000000	 bl          LocalFree

; 434  : 		pSpiPhy->dmaService = NULL;

  001dc	e3a03000	 mov         r3, #0
  001e0	e5843068	 str         r3, [r4, #0x68]
  001e4		 |$L39551|

; 435  : 		return FALSE;

⌨️ 快捷键说明

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