kerneltest/e32test/dmav2/d_dma2.h
changeset 293 0659d0e1a03c
parent 243 c7a0ce20c48c
equal deleted inserted replaced
291:206a6eaaeb71 293:0659d0e1a03c
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 // e32test\dmav2\d_dma2.h
    14 // e32test\dmav2\d_dma2.h
    15 // User-side API for LDD used to test DMAv2 framework.
    15 // User-side API for LDD used to test DMAv2 framework.
    16 // 
    16 //
    17 //
    17 //
    18 
    18 
    19 #ifndef __D_DMA2_H__
    19 #ifndef __D_DMA2_H__
    20 #define __D_DMA2_H__
    20 #define __D_DMA2_H__
    21 
    21 
   310 	*/
   310 	*/
   311 	void AppendString(TDes& aBuf) const
   311 	void AppendString(TDes& aBuf) const
   312 		{
   312 		{
   313 		_LIT(KOutput, "TAddressParms: src=0x%08x (%d) dst=0x%08x (%d) count=0x%08x (%d)\0");
   313 		_LIT(KOutput, "TAddressParms: src=0x%08x (%d) dst=0x%08x (%d) count=0x%08x (%d)\0");
   314 #ifdef __KERNEL_MODE__
   314 #ifdef __KERNEL_MODE__
   315 		DmaAppendFormat(aBuf, (const char*)KOutput().Ptr(), iSrcAddr, iSrcAddr, iDstAddr, iDstAddr, iTransferCount, iTransferCount);
   315 		DmaAppendFormat(aBuf, (const char*)KOutput().Ptr(), iSrcAddr, iSrcAddr,
       
   316 						iDstAddr, iDstAddr, iTransferCount, iTransferCount);
   316 #else
   317 #else
   317 		aBuf.AppendFormat(KOutput, iSrcAddr, iSrcAddr, iDstAddr, iDstAddr, iTransferCount, iTransferCount);
   318 		aBuf.AppendFormat(KOutput, iSrcAddr, iSrcAddr, iDstAddr, iDstAddr, iTransferCount, iTransferCount);
   318 #endif
   319 #endif
   319 		}
   320 		}
   320 
   321 
   409 	friend class DDmaTestSession;
   410 	friend class DDmaTestSession;
   410 public:
   411 public:
   411 #ifndef __KERNEL_MODE__
   412 #ifndef __KERNEL_MODE__
   412 	TInt ChannelIsQueueEmpty(TUint aDriverCookie,TBool& aQueueEmpty)
   413 	TInt ChannelIsQueueEmpty(TUint aDriverCookie,TBool& aQueueEmpty)
   413 		{
   414 		{
   414 		return DoControl(EIsQueueEmpty, reinterpret_cast<TAny*>(aDriverCookie),	&aQueueEmpty);		
   415 		return DoControl(EIsQueueEmpty, reinterpret_cast<TAny*>(aDriverCookie),	&aQueueEmpty);
   415 		}
   416 		}
   416 
   417 
   417 	TInt ChannelIsOpened(TUint aDriverCookie,TBool &aChannelOpen)
   418 	TInt ChannelIsOpened(TUint aDriverCookie,TBool &aChannelOpen)
   418 		{
   419 		{
   419 		return DoControl(EIsOpened, reinterpret_cast<TAny*>(aDriverCookie), &aChannelOpen);		
   420 		return DoControl(EIsOpened, reinterpret_cast<TAny*>(aDriverCookie), &aChannelOpen);
   420 		}
   421 		}
   421 
   422 
   422 	TInt ChannelCancelAll(TUint aDriverCookie)
   423 	TInt ChannelCancelAll(TUint aDriverCookie)
   423 		{	
   424 		{
   424 		return DoControl(ECancelAllChannel, reinterpret_cast<TAny*>(aDriverCookie));
   425 		return DoControl(ECancelAllChannel, reinterpret_cast<TAny*>(aDriverCookie));
   425 		}
   426 		}
   426 
   427 
   427 	TInt ChannelOpen(TUint aPslCookie,  TUint& aDriverCookie)
   428 	TInt ChannelOpen(TUint aPslCookie,  TUint& aDriverCookie)
   428 		{
   429 		{
   434 		TPckg<SCreateInfoTest> package(aInfo);
   435 		TPckg<SCreateInfoTest> package(aInfo);
   435 		return DoControl(EOpenChannelExposed,&aDriverCookie, &package);
   436 		return DoControl(EOpenChannelExposed,&aDriverCookie, &package);
   436 		}
   437 		}
   437 
   438 
   438 	TInt ChannelClose(TUint aDriverCookie)
   439 	TInt ChannelClose(TUint aDriverCookie)
   439 		{	
   440 		{
   440 		return DoControl(ECloseChannel, reinterpret_cast<TAny*>(aDriverCookie));
   441 		return DoControl(ECloseChannel, reinterpret_cast<TAny*>(aDriverCookie));
   441 		}
   442 		}
   442 
   443 
   443 	TInt ChannelPause(TUint aDriverCookie)
   444 	TInt ChannelPause(TUint aDriverCookie)
   444 		{	
   445 		{
   445 		return DoControl(EPauseChannel, reinterpret_cast<TAny*>(aDriverCookie));
   446 		return DoControl(EPauseChannel, reinterpret_cast<TAny*>(aDriverCookie));
   446 		}
   447 		}
   447 	
   448 
   448 	TInt ChannelResume(TUint aDriverCookie)
   449 	TInt ChannelResume(TUint aDriverCookie)
   449 		{	
   450 		{
   450 		return DoControl(EResumeChannel, reinterpret_cast<TAny*>(aDriverCookie));
   451 		return DoControl(EResumeChannel, reinterpret_cast<TAny*>(aDriverCookie));
   451 		}
   452 		}
   452 
   453 
   453 	TInt ChannelLinking(TUint aDriverCookie)
   454 	TInt ChannelLinking(TUint aDriverCookie)
   454 		{	
   455 		{
   455 		return DoControl(ELinkChannel, reinterpret_cast<TAny*>(aDriverCookie));
   456 		return DoControl(ELinkChannel, reinterpret_cast<TAny*>(aDriverCookie));
   456 		}
   457 		}
   457 
   458 
   458 	TInt ChannelUnLinking(TUint aDriverCookie)
   459 	TInt ChannelUnLinking(TUint aDriverCookie)
   459 		{	
   460 		{
   460 		return DoControl(EUnlinkChannel, reinterpret_cast<TAny*>(aDriverCookie));
   461 		return DoControl(EUnlinkChannel, reinterpret_cast<TAny*>(aDriverCookie));
   461 		}
   462 		}
   462 
   463 
   463 	TInt ChannelCaps(TUint aDriverCookie, SDmacCaps& aChannelCaps)
   464 	TInt ChannelCaps(TUint aDriverCookie, SDmacCaps& aChannelCaps)
   464 		{
   465 		{
   471 	TInt ChannelCaps(TUint aDriverCookie, TDmacTestCaps& aChannelCaps)
   472 	TInt ChannelCaps(TUint aDriverCookie, TDmacTestCaps& aChannelCaps)
   472 		{
   473 		{
   473 		TPckg<TDmacTestCaps> package(aChannelCaps);
   474 		TPckg<TDmacTestCaps> package(aChannelCaps);
   474 		return DoControl(EChannelCaps, reinterpret_cast<TAny*>(aDriverCookie), &package);
   475 		return DoControl(EChannelCaps, reinterpret_cast<TAny*>(aDriverCookie), &package);
   475 		}
   476 		}
   476 	
   477 
   477 	TInt Open()
   478 	TInt Open()
   478 		{
   479 		{
   479 		TInt r = KErrNone;
   480 #if defined(DMA_INVERTED_THREAD_PRIORITIES)
   480 		r = DoCreate(KTestDmaLddNameHw,TestDmaLddVersion(), 0, NULL, NULL, EOwnerThread);
   481 		const TInt dfcThreadPriority = 11;
   481 		RDebug::Printf("RDmaSession::Open returned %d", r);
   482 #else
       
   483 		const TInt dfcThreadPriority = 26;
       
   484 #endif
       
   485 		const TInt r = DoCreate(KTestDmaLddNameHw, TestDmaLddVersion(), 0, NULL,
       
   486 								reinterpret_cast<const TDesC8*>(dfcThreadPriority), EOwnerThread);
       
   487 		if (r != KErrNone)
       
   488 			{
       
   489 			RDebug::Printf("RDmaSession::Open(): DoCreate() returned %d", r);
       
   490 			}
   482 		return r;
   491 		return r;
   483 		}
   492 		}
   484 
   493 
   485 	TInt OpenSim()
   494 	TInt OpenSim()
   486 		{
   495 		{
   487 		return DoCreate(KTestDmaLddNameSim,TestDmaLddVersion(), 0, NULL, NULL, EOwnerThread);
   496 #if defined(DMA_INVERTED_THREAD_PRIORITIES)
       
   497 		const TInt dfcThreadPriority = 11;
       
   498 #else
       
   499 		const TInt dfcThreadPriority = 26;
       
   500 #endif
       
   501 		const TInt r = DoCreate(KTestDmaLddNameSim, TestDmaLddVersion(), 0, NULL,
       
   502 								reinterpret_cast<const TDesC8*>(dfcThreadPriority), EOwnerThread);
       
   503 		if (r != KErrNone)
       
   504 			{
       
   505 			RDebug::Printf("RDmaSession::OpenSim(): DoCreate() returned %d", r);
       
   506 			}
       
   507 		return r;
   488 		}
   508 		}
   489 
   509 
   490 	TInt RequestCreateOld(TUint aChannelCookie, TUint& aRequestCookie, TUint aMaxTransferSize=0)
   510 	TInt RequestCreateOld(TUint aChannelCookie, TUint& aRequestCookie, TUint aMaxTransferSize=0)
   491 		{	
   511 		{
   492 		return DoRequestCreate(aChannelCookie, EFalse, aMaxTransferSize, aRequestCookie);
   512 		return DoRequestCreate(aChannelCookie, EFalse, aMaxTransferSize, aRequestCookie);
   493 		}
   513 		}
   494 
   514 
   495 
   515 
   496 	TInt RequestCreate(TUint aChannelCookie, TUint& aRequestCookie, TUint aMaxTransferSize=0)
   516 	TInt RequestCreate(TUint aChannelCookie, TUint& aRequestCookie, TUint aMaxTransferSize=0)
   497 		{
   517 		{
   498 		return DoRequestCreate(aChannelCookie, ETrue, aMaxTransferSize, aRequestCookie);
   518 		return DoRequestCreate(aChannelCookie, ETrue, aMaxTransferSize, aRequestCookie);
   499 		}
   519 		}
   500 
   520 
   501 	TInt RequestDestroy(TUint aRequestCookie)
   521 	TInt RequestDestroy(TUint aRequestCookie)
   502 		{	
   522 		{
   503 		return DoControl(ERequestClose, reinterpret_cast<TAny*>(aRequestCookie));
   523 		return DoControl(ERequestClose, reinterpret_cast<TAny*>(aRequestCookie));
   504 		}
   524 		}
   505 
   525 
   506 	TInt RequestFragmentCount(TUint aRequestCookie)
   526 	TInt RequestFragmentCount(TUint aRequestCookie)
   507 		{	
   527 		{
   508 		return DoControl(EFragmentCount, reinterpret_cast<TAny*>(aRequestCookie));
   528 		return DoControl(EFragmentCount, reinterpret_cast<TAny*>(aRequestCookie));
   509 		}
   529 		}
   510 
   530 
   511 	TInt RequestEnableDstElementCounting(TUint aRequestCookie)
   531 	TInt RequestEnableDstElementCounting(TUint aRequestCookie)
   512 		{					
   532 		{
   513 		return DoControl(EEnableDstElementCounting, reinterpret_cast<TAny*>(aRequestCookie));		
   533 		return DoControl(EEnableDstElementCounting, reinterpret_cast<TAny*>(aRequestCookie));
   514 		}
   534 		}
   515 
   535 
   516 	TInt RequestEnableSrcElementCounting(TUint aRequestCookie)
   536 	TInt RequestEnableSrcElementCounting(TUint aRequestCookie)
   517 		{		
   537 		{
   518 		return DoControl(EEnableSrcElementCounting, reinterpret_cast<TAny*>(aRequestCookie));
   538 		return DoControl(EEnableSrcElementCounting, reinterpret_cast<TAny*>(aRequestCookie));
   519 		}
   539 		}
   520 
   540 
   521 	TInt RequestDisableDstElementCounting(TUint aRequestCookie)
   541 	TInt RequestDisableDstElementCounting(TUint aRequestCookie)
   522 		{	
   542 		{
   523 		return DoControl(EDisableDstElementCounting, reinterpret_cast<TAny*>(aRequestCookie));
   543 		return DoControl(EDisableDstElementCounting, reinterpret_cast<TAny*>(aRequestCookie));
   524 		}
   544 		}
   525 
   545 
   526 	TInt RequestDisableSrcElementCounting(TUint aRequestCookie)
   546 	TInt RequestDisableSrcElementCounting(TUint aRequestCookie)
   527 		{	
   547 		{
   528 		return DoControl(EDisableSrcElementCounting, reinterpret_cast<TAny*>(aRequestCookie));
   548 		return DoControl(EDisableSrcElementCounting, reinterpret_cast<TAny*>(aRequestCookie));
   529 		}
   549 		}
   530 
   550 
   531 	TInt RequestTotalNumDstElementsTransferred(TUint aRequestCookie)
   551 	TInt RequestTotalNumDstElementsTransferred(TUint aRequestCookie)
   532 		{	
   552 		{
   533 		return DoControl(ETotalNumDstElementsTransferred, reinterpret_cast<TAny*>(aRequestCookie));
   553 		return DoControl(ETotalNumDstElementsTransferred, reinterpret_cast<TAny*>(aRequestCookie));
   534 		}
   554 		}
   535 
   555 
   536 	TInt RequestTotalNumSrcElementsTransferred(TUint aRequestCookie)
   556 	TInt RequestTotalNumSrcElementsTransferred(TUint aRequestCookie)
   537 		{	
   557 		{
   538 		return DoControl(ETotalNumSrcElementsTransferred, reinterpret_cast<TAny*>(aRequestCookie));
   558 		return DoControl(ETotalNumSrcElementsTransferred, reinterpret_cast<TAny*>(aRequestCookie));
   539 		}
   559 		}
   540 
   560 
   541 	/**
   561 	/**
   542 	Will fragment a DMA request using the legacy API
   562 	Will fragment a DMA request using the legacy API
   543 	*/
   563 	*/
   544 	TInt FragmentRequestOld(TUint aRequestCookie, const TDmaTransferArgs& aTransferArgs, TUint64* aDurationMicroSecs=NULL)
   564 	TInt FragmentRequestOld(TUint aRequestCookie, const TDmaTransferArgs& aTransferArgs,
       
   565 							TUint64* aDurationMicroSecs=NULL)
   545 		{
   566 		{
   546 		const TFragmentArgs args(aRequestCookie, aTransferArgs, aDurationMicroSecs);
   567 		const TFragmentArgs args(aRequestCookie, aTransferArgs, aDurationMicroSecs);
   547 		TPckgC<TFragmentArgs> package(args);
   568 		TPckgC<TFragmentArgs> package(args);
   548 		return DoControl(EFragmentLegacy, &package);
   569 		return DoControl(EFragmentLegacy, &package);
   549 		}
   570 		}
   550 
   571 
   551 	/**
   572 	/**
   552 	Will fragment a DMA request using the new API
   573 	Will fragment a DMA request using the new API
   553 	*/
   574 	*/
   554 	TInt FragmentRequest(TUint aRequestCookie, const TDmaTransferArgs& aTransferArgs, TUint64* aDurationMicroSecs=NULL)
   575 	TInt FragmentRequest(TUint aRequestCookie, const TDmaTransferArgs& aTransferArgs,
       
   576 						 TUint64* aDurationMicroSecs=NULL)
   555 		{
   577 		{
   556 		const TFragmentArgs args(aRequestCookie, aTransferArgs, aDurationMicroSecs);
   578 		const TFragmentArgs args(aRequestCookie, aTransferArgs, aDurationMicroSecs);
   557 		TPckgC<TFragmentArgs> package(args);
   579 		TPckgC<TFragmentArgs> package(args);
   558 		return DoControl(EFragment, &package);
   580 		return DoControl(EFragment, &package);
   559 		}
   581 		}
   560 
   582 
   561 	TInt QueueRequest(TUint aRequestCookie, TRequestStatus& aStatus, TCallbackRecord* aRecord = NULL, TUint64* aDurationMicroSecs=NULL)
   583 	TInt QueueRequest(TUint aRequestCookie, TRequestStatus& aStatus, TCallbackRecord* aRecord = NULL,
       
   584 					  TUint64* aDurationMicroSecs=NULL)
   562 		{
   585 		{
   563 		//These dummy values can accept the writeback from the driver
   586 		//These dummy values can accept the writeback from the driver
   564 		//if the client does not want them.
   587 		//if the client does not want them.
   565 		//(TClientDataRequest can not be programmed with a NULL to
   588 		//(TClientDataRequest can not be programmed with a NULL to
   566 		//indicate that an argument is unwanted)
   589 		//indicate that an argument is unwanted)
   567 		TCallbackRecord dummyRec;
   590 		TCallbackRecord dummyRec;
   568 		TUint64 dummyTime=0;
   591 		TUint64 dummyTime=0;
   569 
   592 
   570 		aStatus = KRequestPending;
   593 		aStatus = KRequestPending;
   571 
   594 
   572 		TQueueArgs args(aRequestCookie, &aStatus, aRecord ? aRecord : &dummyRec, aDurationMicroSecs ? aDurationMicroSecs : &dummyTime);
   595 		TQueueArgs args(aRequestCookie, &aStatus, aRecord ? aRecord : &dummyRec,
       
   596 						aDurationMicroSecs ? aDurationMicroSecs : &dummyTime);
   573 		TPckgC<TQueueArgs> package(args);
   597 		TPckgC<TQueueArgs> package(args);
   574 		return DoControl(EQueueRequest, &package);
   598 		return DoControl(EQueueRequest, &package);
   575 		}
   599 		}
   576 
   600 
   577 	/**
   601 	/**
   578 	Synchronous version of QueueRequest
   602 	Synchronous version of QueueRequest
   579 	*/
   603 	*/
   580 	TInt QueueRequest(TUint aRequestCookie, TCallbackRecord* aRecord = NULL, TUint64* aDurationMicroSecs=NULL)
   604 	TInt QueueRequest(TUint aRequestCookie, TCallbackRecord* aRecord = NULL,
       
   605 					  TUint64* aDurationMicroSecs=NULL)
   581 		{
   606 		{
   582 		TRequestStatus status;
   607 		TRequestStatus status;
   583 		TInt r = QueueRequest(aRequestCookie, status, aRecord, aDurationMicroSecs);
   608 		TInt r = QueueRequest(aRequestCookie, status, aRecord, aDurationMicroSecs);
   584 		User::WaitForRequest(status);
   609 		User::WaitForRequest(status);
   585 		return r;
   610 		return r;
   590 	Additional request parameters are included in iRequeueArgs, these will be
   615 	Additional request parameters are included in iRequeueArgs, these will be
   591 	transferred from ISR context callback using the TDmaChannel::IsrRedoRequest function
   616 	transferred from ISR context callback using the TDmaChannel::IsrRedoRequest function
   592 
   617 
   593 	@pre Isr callback for completion must have been requested at request fragmentation time
   618 	@pre Isr callback for completion must have been requested at request fragmentation time
   594 	*/
   619 	*/
   595 	TInt QueueRequestWithRequeue(TUint aRequestCookie, TIsrRequeArgs* aRequeueArgs, TInt aCount, TRequestStatus& aStatus, TCallbackRecord* aRecord = NULL, TUint64* aDurationMicroSecs=NULL)
   620 	TInt QueueRequestWithRequeue(TUint aRequestCookie, TIsrRequeArgs* aRequeueArgs, TInt aCount,
       
   621 								 TRequestStatus& aStatus, TCallbackRecord* aRecord = NULL,
       
   622 								 TUint64* aDurationMicroSecs=NULL)
   596 		{
   623 		{
   597 		//These dummy values can accept the writeback from the driver
   624 		//These dummy values can accept the writeback from the driver
   598 		//if the client does not want them.
   625 		//if the client does not want them.
   599 		//(TClientDataRequest can not be programmed with a NULL to
   626 		//(TClientDataRequest can not be programmed with a NULL to
   600 		//indicate that an argument is unwanted)
   627 		//indicate that an argument is unwanted)
   601 		TCallbackRecord dummyRec;
   628 		TCallbackRecord dummyRec;
   602 		TUint64 dummyTime=0;
   629 		TUint64 dummyTime=0;
   603 
   630 
   604 		aStatus = KRequestPending;
   631 		aStatus = KRequestPending;
   605 
   632 
   606 		TQueueArgsWithReque args(aRequeueArgs, aCount, aRequestCookie, &aStatus, aRecord ? aRecord : &dummyRec, aDurationMicroSecs ? aDurationMicroSecs : &dummyTime);
   633 		TQueueArgsWithReque args(aRequeueArgs, aCount, aRequestCookie,
       
   634 								 &aStatus, aRecord ? aRecord : &dummyRec,
       
   635 								 aDurationMicroSecs ? aDurationMicroSecs : &dummyTime);
   607 		TPckgC<TQueueArgsWithReque> package(args);
   636 		TPckgC<TQueueArgsWithReque> package(args);
   608 		return DoControl(EQueueRequestWithReque, &package);
   637 		return DoControl(EQueueRequestWithReque, &package);
   609 		}
   638 		}
   610 
   639 
   611 	/**
   640 	/**
   612 	Synchronous version of QueueRequestWithRequeue
   641 	Synchronous version of QueueRequestWithRequeue
   613 	*/
   642 	*/
   614 	TInt QueueRequestWithRequeue(TUint aRequestCookie, TIsrRequeArgs* aRequeueArgs, TInt aCount, TCallbackRecord* aRecord = NULL, TUint64* aDurationMicroSecs=NULL)
   643 	TInt QueueRequestWithRequeue(TUint aRequestCookie, TIsrRequeArgs* aRequeueArgs, TInt aCount,
       
   644 								 TCallbackRecord* aRecord = NULL, TUint64* aDurationMicroSecs=NULL)
   615 		{
   645 		{
   616 		TRequestStatus status;
   646 		TRequestStatus status;
   617 		TInt r = QueueRequestWithRequeue(aRequestCookie, aRequeueArgs, aCount, status, aRecord, aDurationMicroSecs);
   647 		TInt r = QueueRequestWithRequeue(aRequestCookie, aRequeueArgs, aCount, status, aRecord,
       
   648 										 aDurationMicroSecs);
   618 		User::WaitForRequest(status);
   649 		User::WaitForRequest(status);
   619 		return r;
   650 		return r;
   620 		}
   651 		}
   621 
   652 
   622 	TInt OpenSharedChunk(RChunk& aChunk)
   653 	TInt OpenSharedChunk(RChunk& aChunk)
   636 	static void ApiTest();
   667 	static void ApiTest();
   637 #endif // __KERNEL_MODE__
   668 #endif // __KERNEL_MODE__
   638 
   669 
   639 private:
   670 private:
   640 
   671 
   641 	TInt DoRequestCreate(TUint aChannelCookie, TBool aNewStyle, TUint aMaxTransferSize, TUint& aRequestCookie)
   672 	TInt DoRequestCreate(TUint aChannelCookie, TBool aNewStyle, TUint aMaxTransferSize,
       
   673 						 TUint& aRequestCookie)
   642 		{
   674 		{
   643 		TRequestCreateArgs args(aChannelCookie, aNewStyle, aMaxTransferSize);
   675 		TRequestCreateArgs args(aChannelCookie, aNewStyle, aMaxTransferSize);
   644 		TPckgC<TRequestCreateArgs> package(args);
   676 		TPckgC<TRequestCreateArgs> package(args);
   645 		return DoControl(ERequestOpen, &package, &aRequestCookie);
   677 		return DoControl(ERequestOpen, &package, &aRequestCookie);
   646 		}
   678 		}
   647 	
   679 
   648 	struct TRequestCreateArgs
   680 	struct TRequestCreateArgs
   649 		{
   681 		{
   650 		TRequestCreateArgs(TUint aChannelCookie, TBool aNewStyle, TUint aMaxFragmentSize)
   682 		TRequestCreateArgs(TUint aChannelCookie, TBool aNewStyle, TUint aMaxFragmentSize)
   651 			:iChannelCookie(aChannelCookie), iNewStyle(aNewStyle), iMaxFragmentSize(aMaxFragmentSize)
   683 			:iChannelCookie(aChannelCookie), iNewStyle(aNewStyle), iMaxFragmentSize(aMaxFragmentSize)
   652 			{}
   684 			{}
   659 	struct TFragmentArgs
   691 	struct TFragmentArgs
   660 		{
   692 		{
   661 		TFragmentArgs()
   693 		TFragmentArgs()
   662 			:iRequestCookie(0), iTransferArgs(), iDurationMicroSecs(NULL)
   694 			:iRequestCookie(0), iTransferArgs(), iDurationMicroSecs(NULL)
   663 			{}
   695 			{}
   664 		TFragmentArgs(TUint aRequestCookie, const TDmaTransferArgs& aTransferArgs, TUint64* aDurationMicroSecs = NULL)
   696 		TFragmentArgs(TUint aRequestCookie, const TDmaTransferArgs& aTransferArgs,
   665 			:iRequestCookie(aRequestCookie), iTransferArgs(aTransferArgs), iDurationMicroSecs(aDurationMicroSecs)
   697 					  TUint64* aDurationMicroSecs = NULL)
       
   698 			:iRequestCookie(aRequestCookie), iTransferArgs(aTransferArgs),
       
   699 			 iDurationMicroSecs(aDurationMicroSecs)
   666 			{}
   700 			{}
   667 
   701 
   668 		const TUint iRequestCookie;
   702 		const TUint iRequestCookie;
   669 		const TDmaTransferArgs iTransferArgs;
   703 		const TDmaTransferArgs iTransferArgs;
   670 		TUint64* const iDurationMicroSecs;
   704 		TUint64* const iDurationMicroSecs;
   671 		};
   705 		};
   672 
   706 
   673 	struct TQueueArgs
   707 	struct TQueueArgs
   674 		{
   708 		{
   675 		TQueueArgs(TUint aRequestCookie=0, TRequestStatus* aStatus=NULL, TCallbackRecord* aCallbackRecord=NULL, TUint64* aDurationMicroSecs=NULL)
   709 		TQueueArgs(TUint aRequestCookie=0, TRequestStatus* aStatus=NULL,
   676 			:iRequestCookie(aRequestCookie), iStatus(aStatus), iCallbackRecord(aCallbackRecord), iDurationMicroSecs(aDurationMicroSecs)
   710 				   TCallbackRecord* aCallbackRecord=NULL, TUint64* aDurationMicroSecs=NULL)
       
   711 			:iRequestCookie(aRequestCookie), iStatus(aStatus), iCallbackRecord(aCallbackRecord),
       
   712 			 iDurationMicroSecs(aDurationMicroSecs)
   677 			{}
   713 			{}
   678 		TUint iRequestCookie;
   714 		TUint iRequestCookie;
   679 		TRequestStatus* iStatus;
   715 		TRequestStatus* iStatus;
   680 		TCallbackRecord* iCallbackRecord;
   716 		TCallbackRecord* iCallbackRecord;
   681 		TUint64* iDurationMicroSecs;
   717 		TUint64* iDurationMicroSecs;
   686 	to be setup from ISR context callback
   722 	to be setup from ISR context callback
   687 	*/
   723 	*/
   688 	struct TQueueArgsWithReque : public TQueueArgs
   724 	struct TQueueArgsWithReque : public TQueueArgs
   689 		{
   725 		{
   690 		TQueueArgsWithReque(TIsrRequeArgs* aRequeueArgs=NULL, TInt aCount=0,
   726 		TQueueArgsWithReque(TIsrRequeArgs* aRequeueArgs=NULL, TInt aCount=0,
   691 				TUint aRequestCookie=0, TRequestStatus* aStatus=NULL, TCallbackRecord* aCallbackRecord=NULL, TUint64* aDurationMicroSecs=NULL)
   727 							TUint aRequestCookie=0, TRequestStatus* aStatus=NULL,
   692 			:TQueueArgs(aRequestCookie, aStatus, aCallbackRecord, aDurationMicroSecs), iRequeSet(aRequeueArgs, aCount)
   728 							TCallbackRecord* aCallbackRecord=NULL, TUint64* aDurationMicroSecs=NULL)
       
   729 			:TQueueArgs(aRequestCookie, aStatus, aCallbackRecord, aDurationMicroSecs),
       
   730 			 iRequeSet(aRequeueArgs, aCount)
   693 			{
   731 			{
   694 			}
   732 			}
   695 
   733 
   696 		TIsrRequeArgsSet iRequeSet;
   734 		TIsrRequeArgsSet iRequeSet;
   697 		};
   735 		};
   725 		EDisableSrcElementCounting,
   763 		EDisableSrcElementCounting,
   726 		ETotalNumDstElementsTransferred,
   764 		ETotalNumDstElementsTransferred,
   727 		ETotalNumSrcElementsTransferred,
   765 		ETotalNumSrcElementsTransferred,
   728 		};
   766 		};
   729 	};
   767 	};
       
   768 
   730 #endif // __D_DMA2_H__
   769 #endif // __D_DMA2_H__