DMASequencer.hh revision 6922:1620cffaa3b6
17019SBrad.Beckmann@amd.com 27019SBrad.Beckmann@amd.com#ifndef DMASEQUENCER_H 37019SBrad.Beckmann@amd.com#define DMASEQUENCER_H 47019SBrad.Beckmann@amd.com 57019SBrad.Beckmann@amd.com#include <ostream> 67019SBrad.Beckmann@amd.com#include "mem/ruby/common/DataBlock.hh" 77019SBrad.Beckmann@amd.com#include "mem/ruby/system/RubyPort.hh" 87019SBrad.Beckmann@amd.com 97019SBrad.Beckmann@amd.com#include "params/DMASequencer.hh" 107019SBrad.Beckmann@amd.com 117019SBrad.Beckmann@amd.comstruct DMARequest { 127019SBrad.Beckmann@amd.com uint64_t start_paddr; 137019SBrad.Beckmann@amd.com int len; 147019SBrad.Beckmann@amd.com bool write; 157019SBrad.Beckmann@amd.com int bytes_completed; 167019SBrad.Beckmann@amd.com int bytes_issued; 177019SBrad.Beckmann@amd.com uint8* data; 187019SBrad.Beckmann@amd.com PacketPtr pkt; 197019SBrad.Beckmann@amd.com}; 207019SBrad.Beckmann@amd.com 217019SBrad.Beckmann@amd.comclass DMASequencer :public RubyPort { 227019SBrad.Beckmann@amd.compublic: 237019SBrad.Beckmann@amd.com typedef DMASequencerParams Params; 247019SBrad.Beckmann@amd.com DMASequencer(const Params *); 257019SBrad.Beckmann@amd.com void init(); 267019SBrad.Beckmann@amd.com /* external interface */ 277019SBrad.Beckmann@amd.com RequestStatus makeRequest(const RubyRequest & request); 287019SBrad.Beckmann@amd.com bool busy() { return m_is_busy;} 297019SBrad.Beckmann@amd.com 306876Ssteve.reinhardt@amd.com /* SLICC callback */ 319206Snilay@cs.wisc.edu void dataCallback(const DataBlock & dblk); 326876Ssteve.reinhardt@amd.com void ackCallback(); 339206Snilay@cs.wisc.edu 346876Ssteve.reinhardt@amd.com void printConfig(std::ostream & out); 359338SAndreas.Sandberg@arm.com 366876Ssteve.reinhardt@amd.comprivate: 376876Ssteve.reinhardt@amd.com void issueNext(); 386876Ssteve.reinhardt@amd.com 399206Snilay@cs.wisc.eduprivate: 409504Snilay@cs.wisc.edu bool m_is_busy; 416876Ssteve.reinhardt@amd.com uint64_t m_data_block_mask; 426903SBrad.Beckmann@amd.com DMARequest active_request; 436895SBrad.Beckmann@amd.com int num_active_requests; 446895SBrad.Beckmann@amd.com}; 457026SBrad.Beckmann@amd.com 46#endif // DMACONTROLLER_H 47