equal
deleted
inserted
replaced
170 */ |
170 */ |
171 class TDmac |
171 class TDmac |
172 { |
172 { |
173 friend class DmaChannelMgr; |
173 friend class DmaChannelMgr; |
174 |
174 |
175 // The following two friend declarations will become obsolete once that |
175 // The following friend declaration will become obsolete once header |
176 // functionality is owned and provided by the controller class instead of the |
176 // pool manipulation functionality is owned and provided by the controller |
177 // request class. (TDmac::iFreeHdr could then also be made private.) |
177 // class instead of the request class. |
178 friend TInt DDmaRequest::ExpandDesList(TInt, TInt&, SDmaDesHdr*&, SDmaDesHdr*&); |
178 // (TDmac::iFreeHdr could then also be made private.) |
179 friend void DDmaRequest::FreeDesList(TInt&, SDmaDesHdr*&, SDmaDesHdr*&); |
179 friend class DDmaRequest; |
|
180 |
|
181 friend class TSkelDmac; |
180 |
182 |
181 protected: |
183 protected: |
182 /** Data required for creating a new instance. */ |
184 /** Data required for creating a new instance. */ |
183 struct SCreateInfo |
185 struct SCreateInfo |
184 { |
186 { |
846 private: |
848 private: |
847 virtual void DoQueue(const DDmaRequest& aReq); |
849 virtual void DoQueue(const DDmaRequest& aReq); |
848 virtual void DoCancelAll(); |
850 virtual void DoCancelAll(); |
849 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr); |
851 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr); |
850 |
852 |
851 private: |
853 protected: |
852 enum {EIdle = 0, ETransferring} iState; |
854 enum {EIdle = 0, ETransferring} iState; |
853 }; |
855 }; |
854 |
856 |
855 |
857 |
856 /** Double-buffer DMA channel. |
858 /** Double-buffer DMA channel. |
862 private: |
864 private: |
863 virtual void DoQueue(const DDmaRequest& aReq); |
865 virtual void DoQueue(const DDmaRequest& aReq); |
864 virtual void DoCancelAll(); |
866 virtual void DoCancelAll(); |
865 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr); |
867 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr); |
866 |
868 |
867 private: |
869 protected: |
868 enum {EIdle = 0, ETransferring, ETransferringLast} iState; |
870 enum {EIdle = 0, ETransferring, ETransferringLast} iState; |
869 }; |
871 }; |
870 |
872 |
871 |
873 |
872 /** Scatter-gather DMA channel. |
874 /** Scatter-gather DMA channel. |
879 virtual void DoQueue(const DDmaRequest& aReq); |
881 virtual void DoQueue(const DDmaRequest& aReq); |
880 virtual void DoCancelAll(); |
882 virtual void DoCancelAll(); |
881 virtual void DoUnlink(SDmaDesHdr& aHdr); |
883 virtual void DoUnlink(SDmaDesHdr& aHdr); |
882 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr); |
884 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr); |
883 |
885 |
884 private: |
886 protected: |
885 enum {EIdle = 0, ETransferring} iState; |
887 enum {EIdle = 0, ETransferring} iState; |
886 }; |
888 }; |
887 |
889 |
888 |
890 |
889 /** Scatter-gather DMA channel with asymmetric linked-lists. |
891 /** Scatter-gather DMA channel with asymmetric linked-lists. |
899 virtual void DoCancelAll(); |
901 virtual void DoCancelAll(); |
900 virtual void DoUnlink(SDmaDesHdr& aHdr); |
902 virtual void DoUnlink(SDmaDesHdr& aHdr); |
901 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aSrcCompletedHdr, |
903 virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aSrcCompletedHdr, |
902 SDmaDesHdr*& aDstCompletedHdr); |
904 SDmaDesHdr*& aDstCompletedHdr); |
903 |
905 |
904 private: |
906 protected: |
905 SDmaDesHdr* iSrcCurHdr; // source fragment being transferred or NULL |
907 SDmaDesHdr* iSrcCurHdr; // source fragment being transferred or NULL |
906 SDmaDesHdr** iSrcNullPtr; // Pointer to NULL pointer following last source fragment |
908 SDmaDesHdr** iSrcNullPtr; // Pointer to NULL pointer following last source fragment |
907 SDmaDesHdr* iDstCurHdr; // destination fragment being transferred or NULL |
909 SDmaDesHdr* iDstCurHdr; // destination fragment being transferred or NULL |
908 SDmaDesHdr** iDstNullPtr; // Pointer to NULL pointer following last destination fragment |
910 SDmaDesHdr** iDstNullPtr; // Pointer to NULL pointer following last destination fragment |
909 enum {EIdle = 0, ETransferring} iState; |
911 enum {EIdle = 0, ETransferring} iState; |