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

📄 pxadma.cod

📁 这是mobile6.0下的DMB驱动
💻 COD
📖 第 1 页 / 共 2 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345 

	TTL	E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\DmaPxaXXX\.\PxaDMA.c
	CODE32

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


  00000			 AREA	 |.rdata|, DATA, READONLY
|userBusWidthToDmaConfig| DCD 0x1
	DCD	0x2
	DCD	0x3
|userBurstSizeToDmaConfig| DCD 0x1
	DCD	0x2
	DCD	0x3
	EXPORT	|ResetEvent|
	IMPORT	|EventModify|
; File e:\wm604\public\common\sdk\inc\kfuncs.h

  00000			 AREA	 |.text| { |ResetEvent| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$ResetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |ResetEvent| } ; comdat associative
|$T39004| DCD	|$L39003|
	DCD	0x40000501
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |ResetEvent| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |ResetEvent| PROC

; 174  : _inline BOOL ResetEvent(HANDLE h) {

  00000		 |$L39003|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M39001|

; 175  : 	return EventModify(h,EVENT_RESET);

  00004	e3a01002	 mov         r1, #2
  00008	eb000000	 bl          EventModify

; 176  : }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$M39002|

			 ENDP  ; |ResetEvent|

	EXPORT	|??_C@_1GM@BBJNGGCL@?$AAP?$AAh?$AAy?$AAD?$AAm?$AAa?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?0?$AA?5?$AAV?$AAi?$AAr?$AAt?$AAu?$AAa?$AAl@| [ DATA ] ; `string'
	EXPORT	|??_C@_0O@DJLCAKBK@dma?5registers?$AA@| [ DATA ] ; `string'
	EXPORT	|PhyDmaSetUp|
	IMPORT	|VirtualAllocCopy|
	IMPORT	|NKDbgPrintfW|
	IMPORT	|XllpDmacAllocChannel|
	IMPORT	|HalAllocateCommonBuffer|
	IMPORT	|XllpDmacInit|
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\dmapxaxxx\pxadma.c

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

  00000			 AREA	 |.pdata$$PhyDmaSetUp|, PDATA, SELECTION=5, ASSOC=|.text| { |PhyDmaSetUp| } ; comdat associative
|$T39015| DCD	|$L39014|
	DCD	0x40002402

  00000			 AREA	 |.rdata| { |??_C@_0O@DJLCAKBK@dma?5registers?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0O@DJLCAKBK@dma?5registers?$AA@| DCB "dma registers", 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1GM@BBJNGGCL@?$AAP?$AAh?$AAy?$AAD?$AAm?$AAa?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?0?$AA?5?$AAV?$AAi?$AAr?$AAt?$AAu?$AAa?$AAl@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GM@BBJNGGCL@?$AAP?$AAh?$AAy?$AAD?$AAm?$AAa?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?0?$AA?5?$AAV?$AAi?$AAr?$AAt?$AAu?$AAa?$AAl@| DCB "P"
	DCB	0x0, "h", 0x0, "y", 0x0, "D", 0x0, "m", 0x0, "a", 0x0, "S"
	DCB	0x0, "e", 0x0, "t", 0x0, "U", 0x0, "p", 0x0, ",", 0x0, " "
	DCB	0x0, "V", 0x0, "i", 0x0, "r", 0x0, "t", 0x0, "u", 0x0, "a"
	DCB	0x0, "l", 0x0, "A", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "c"
	DCB	0x0, "C", 0x0, "o", 0x0, "p", 0x0, "y", 0x0, "(", 0x0, ")"
	DCB	0x0, ":", 0x0, " ", 0x0, "G", 0x0, "d", 0x0, "e", 0x0, "D"
	DCB	0x0, "m", 0x0, "a", 0x0, "c", 0x0, "I", 0x0, "n", 0x0, "i"
	DCB	0x0, "t", 0x0, " ", 0x0, "F", 0x0, "a", 0x0, "i", 0x0, "l"
	DCB	0x0, "e", 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy

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

  00000		 |PhyDmaSetUp| PROC

; 36   : {

  00000		 |$L39014|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004	e24dd00c	 sub         sp, sp, #0xC
  00008		 |$M39012|
  00008	e1a05000	 mov         r5, r0

; 37   : 	void* ptr;
; 38   : 	PHYSICAL_ADDRESS phyAddr;
; 39   : 	//volatile P_XLLP_DMAC_T	pDmacHandle = NULL;
; 40   : 	DMA_ADAPTER_OBJECT			adapter;
; 41   : 
; 42   : 	if(XllpDmacInit()==0)

  0000c	eb000000	 bl          XllpDmacInit
  00010	e3500000	 cmp         r0, #0

; 43   :     {
; 44   :     	RETAILMSG(1, (TEXT("PhyDmaSetUp, VirtualAllocCopy(): GdeDmacInit Failed\r\n")));

  00014	059f0070	 ldreq       r0, [pc, #0x70]
  00018	0b000000	 bleq        NKDbgPrintfW

; 45   :     }
; 46   : 	XllpDmacAllocChannel((XLLP_DMAC_CHANNEL_T*)&dev->channel,XLLP_DMAC_CHANNEL_PRIORITY_HIGH);

  0001c	e3a01000	 mov         r1, #0
  00020	e2850004	 add         r0, r5, #4
  00024	eb000000	 bl          XllpDmacAllocChannel

; 47   : 
; 48   : 
; 49   : 	phyAddr.LowPart = DMAC_BASE_PHYSICAL;
; 50   : 	phyAddr.HighPart = 0;
; 51   : //	ptr =  MmMapIoSpace(phyAddr, sizeof(DMAC_REGISTERS), FALSE);
; 52   : //	RETAILMSG(1, (TEXT("PhyDmaSetUp, MmMapIoSpace ptr: 0x%x\r\n"),ptr));
; 53   :         ptr= (DMAC_REGISTERS *)VirtualAllocCopy(sizeof(DMAC_REGISTERS),"dma registers",(PVOID)(DMAC_BASE_U_VIRTUAL)); 	

  00028	e59f1058	 ldr         r1, [pc, #0x58]
  0002c	e3a02329	 mov         r2, #0x29, 6
  00030	e3a00c11	 mov         r0, #0x11, 24
  00034	e3822605	 orr         r2, r2, #5, 12
  00038	e380002c	 orr         r0, r0, #0x2C
  0003c	eb000000	 bl          VirtualAllocCopy
  00040	e1a04000	 mov         r4, r0

; 54   : 	
; 55   : 	adapter.ObjectSize = sizeof(DMA_ADAPTER_OBJECT);

  00044	e3a0e00c	 mov         lr, #0xC

; 56   : 	adapter.InterfaceType  = Internal;

  00048	e3a06000	 mov         r6, #0

; 57   : 	adapter.BusNumber = 0;

  0004c	e3a07000	 mov         r7, #0

; 58   : 	
; 59   : 	dev->desc = HalAllocateCommonBuffer( &adapter, 
; 60   : 									sizeof(DMAC_FRAME_DESCRIPTOR_ST), 
; 61   : 									&dev->descPhyAddr, 
; 62   : 									FALSE);

  00050	e28d0000	 add         r0, sp, #0
  00054	e3a03000	 mov         r3, #0
  00058	e2852030	 add         r2, r5, #0x30
  0005c	e3a01010	 mov         r1, #0x10
  00060	e1cde0b0	 strh        lr, [sp]
  00064	e58d6004	 str         r6, [sp, #4]
  00068	e58d7008	 str         r7, [sp, #8]
  0006c	eb000000	 bl          HalAllocateCommonBuffer
  00070	e5850038	 str         r0, [r5, #0x38]

; 63   : 	dev->pDmacAddr = ptr;
; 64   : 	return TRUE;

  00074	e3a00001	 mov         r0, #1
  00078	e5854000	 str         r4, [r5]

; 65   : }

  0007c	e28dd00c	 add         sp, sp, #0xC
  00080	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  00084	e12fff1e	 bx          lr
  00088		 |$L39017|
  00088	00000000	 DCD         |??_C@_0O@DJLCAKBK@dma?5registers?$AA@|
  0008c	00000000	 DCD         |??_C@_1GM@BBJNGGCL@?$AAP?$AAh?$AAy?$AAD?$AAm?$AAa?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?0?$AA?5?$AAV?$AAi?$AAr?$AAt?$AAu?$AAa?$AAl@|
  00090		 |$M39013|

			 ENDP  ; |PhyDmaSetUp|

	EXPORT	|PhyDmaRemoveChannel|
	IMPORT	|MmUnmapIoSpace|
	IMPORT	|XllpDmacFreeChannel|
	IMPORT	|HalFreeCommonBuffer|

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

  00000			 AREA	 |.pdata$$PhyDmaRemoveChannel|, PDATA, SELECTION=5, ASSOC=|.text| { |PhyDmaRemoveChannel| } ; comdat associative
|$T39024| DCD	|$L39023|
	DCD	0x40001c02
; Function compile flags: /Ogsy

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

  00000		 |PhyDmaRemoveChannel| PROC

; 68   : {

  00000		 |$L39023|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004	e24dd014	 sub         sp, sp, #0x14
  00008		 |$M39021|
  00008	e1a04000	 mov         r4, r0

; 69   : 	DMA_ADAPTER_OBJECT			adapter;
; 70   : 
; 71   : 	adapter.ObjectSize = sizeof(DMA_ADAPTER_OBJECT);
; 72   : 	adapter.InterfaceType  = Internal;
; 73   : 	adapter.BusNumber = 0;
; 74   : 	//Interrupt has ended, free the descriptors memory allocated on channel config.
; 75   : 	HalFreeCommonBuffer(	&adapter,
; 76   : 							sizeof(DMAC_FRAME_DESCRIPTOR_ST),
; 77   : 							dev->descPhyAddr,
; 78   : 							dev->desc,
; 79   : 							FALSE);

  0000c	e5941038	 ldr         r1, [r4, #0x38]
  00010	e5942030	 ldr         r2, [r4, #0x30]
  00014	e5943034	 ldr         r3, [r4, #0x34]
  00018	e58d1000	 str         r1, [sp]
  0001c	e3a0e00c	 mov         lr, #0xC
  00020	e3a05000	 mov         r5, #0
  00024	e3a06000	 mov         r6, #0
  00028	e3a07000	 mov         r7, #0
  0002c	e3a01010	 mov         r1, #0x10
  00030	e28d0008	 add         r0, sp, #8
  00034	e1cde0b8	 strh        lr, [sp, #8]
  00038	e58d500c	 str         r5, [sp, #0xC]
  0003c	e58d6010	 str         r6, [sp, #0x10]
  00040	e58d7004	 str         r7, [sp, #4]
  00044	eb000000	 bl          HalFreeCommonBuffer

; 80   : 
; 81   : 	XllpDmacFreeChannel(dev->channel, XLLP_DMAC_MEM2MEM_MOVE);

  00048	e5940004	 ldr         r0, [r4, #4]
  0004c	e3a01063	 mov         r1, #0x63
  00050	eb000000	 bl          XllpDmacFreeChannel

; 82   : 
; 83   : 	MmUnmapIoSpace(dev->pDmacAddr, sizeof(DMAC_REGISTERS)); 

  00054	e5940000	 ldr         r0, [r4]
  00058	e3a01c11	 mov         r1, #0x11, 24
  0005c	e381102c	 orr         r1, r1, #0x2C
  00060	eb000000	 bl          MmUnmapIoSpace

; 84   : }

  00064	e28dd014	 add         sp, sp, #0x14
  00068	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  0006c	e12fff1e	 bx          lr
  00070		 |$M39022|

			 ENDP  ; |PhyDmaRemoveChannel|

	EXPORT	|PhyDmaSendDescriptor|
; File e:\wm604\public\common\sdk\inc\kfuncs.h

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

  00000			 AREA	 |.pdata$$PhyDmaSendDescriptor|, PDATA, SELECTION=5, ASSOC=|.text| { |PhyDmaSendDescriptor| } ; comdat associative
|$T39042| DCD	|$L39041|
	DCD	0x40005c02
; Function compile flags: /Ogsy
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\dmapxaxxx\pxadma.c

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

⌨️ 快捷键说明

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