diff options
Diffstat (limited to 'src/dev/dma_device.hh')
-rw-r--r-- | src/dev/dma_device.hh | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/src/dev/dma_device.hh b/src/dev/dma_device.hh index 4ea062654..8c2b6e26d 100644 --- a/src/dev/dma_device.hh +++ b/src/dev/dma_device.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013, 2015, 2017 ARM Limited + * Copyright (c) 2012-2013, 2015, 2017, 2019 ARM Limited * All rights reserved. * * The license below extends only to copyright in the software and shall @@ -134,6 +134,12 @@ class DmaPort : public MasterPort, public Drainable * send whatever it is that it's sending. */ bool inRetry; + /** Default streamId */ + const uint32_t defaultSid; + + /** Default substreamId */ + const uint32_t defaultSSid; + protected: bool recvTimingResp(PacketPtr pkt) override; @@ -143,10 +149,17 @@ class DmaPort : public MasterPort, public Drainable public: - DmaPort(ClockedObject *dev, System *s); + DmaPort(ClockedObject *dev, System *s, + uint32_t sid = 0, uint32_t ssid = 0); + + RequestPtr + dmaAction(Packet::Command cmd, Addr addr, int size, Event *event, + uint8_t *data, Tick delay, Request::Flags flag = 0); - RequestPtr dmaAction(Packet::Command cmd, Addr addr, int size, Event *event, - uint8_t *data, Tick delay, Request::Flags flag = 0); + RequestPtr + dmaAction(Packet::Command cmd, Addr addr, int size, Event *event, + uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay, + Request::Flags flag = 0); bool dmaPending() const { return pendingCount > 0; } @@ -164,12 +177,26 @@ class DmaDevice : public PioDevice virtual ~DmaDevice() { } void dmaWrite(Addr addr, int size, Event *event, uint8_t *data, + uint32_t sid, uint32_t ssid, Tick delay = 0) + { + dmaPort.dmaAction(MemCmd::WriteReq, addr, size, event, data, + sid, ssid, delay); + } + + void dmaWrite(Addr addr, int size, Event *event, uint8_t *data, Tick delay = 0) { dmaPort.dmaAction(MemCmd::WriteReq, addr, size, event, data, delay); } void dmaRead(Addr addr, int size, Event *event, uint8_t *data, + uint32_t sid, uint32_t ssid, Tick delay = 0) + { + dmaPort.dmaAction(MemCmd::ReadReq, addr, size, event, data, + sid, ssid, delay); + } + + void dmaRead(Addr addr, int size, Event *event, uint8_t *data, Tick delay = 0) { dmaPort.dmaAction(MemCmd::ReadReq, addr, size, event, data, delay); |