dma_device.hh (13892:0182a0601f66) | dma_device.hh (13930:c5e728ccd2e2) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2012-2013, 2015, 2017 ARM Limited | 2 * Copyright (c) 2012-2013, 2015, 2017, 2019 ARM Limited |
3 * All rights reserved. 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 118 unchanged lines hidden (view full) --- 129 130 /** Number of outstanding packets the dma port has. */ 131 uint32_t pendingCount; 132 133 /** If the port is currently waiting for a retry before it can 134 * send whatever it is that it's sending. */ 135 bool inRetry; 136 | 3 * All rights reserved. 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 118 unchanged lines hidden (view full) --- 129 130 /** Number of outstanding packets the dma port has. */ 131 uint32_t pendingCount; 132 133 /** If the port is currently waiting for a retry before it can 134 * send whatever it is that it's sending. */ 135 bool inRetry; 136 |
137 /** Default streamId */ 138 const uint32_t defaultSid; 139 140 /** Default substreamId */ 141 const uint32_t defaultSSid; 142 |
|
137 protected: 138 139 bool recvTimingResp(PacketPtr pkt) override; 140 void recvReqRetry() override; 141 142 void queueDma(PacketPtr pkt); 143 144 public: 145 | 143 protected: 144 145 bool recvTimingResp(PacketPtr pkt) override; 146 void recvReqRetry() override; 147 148 void queueDma(PacketPtr pkt); 149 150 public: 151 |
146 DmaPort(ClockedObject *dev, System *s); | 152 DmaPort(ClockedObject *dev, System *s, 153 uint32_t sid = 0, uint32_t ssid = 0); |
147 | 154 |
148 RequestPtr dmaAction(Packet::Command cmd, Addr addr, int size, Event *event, 149 uint8_t *data, Tick delay, Request::Flags flag = 0); | 155 RequestPtr 156 dmaAction(Packet::Command cmd, Addr addr, int size, Event *event, 157 uint8_t *data, Tick delay, Request::Flags flag = 0); |
150 | 158 |
159 RequestPtr 160 dmaAction(Packet::Command cmd, Addr addr, int size, Event *event, 161 uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay, 162 Request::Flags flag = 0); 163 |
|
151 bool dmaPending() const { return pendingCount > 0; } 152 153 DrainState drain() override; 154}; 155 156class DmaDevice : public PioDevice 157{ 158 protected: 159 DmaPort dmaPort; 160 161 public: 162 typedef DmaDeviceParams Params; 163 DmaDevice(const Params *p); 164 virtual ~DmaDevice() { } 165 166 void dmaWrite(Addr addr, int size, Event *event, uint8_t *data, | 164 bool dmaPending() const { return pendingCount > 0; } 165 166 DrainState drain() override; 167}; 168 169class DmaDevice : public PioDevice 170{ 171 protected: 172 DmaPort dmaPort; 173 174 public: 175 typedef DmaDeviceParams Params; 176 DmaDevice(const Params *p); 177 virtual ~DmaDevice() { } 178 179 void dmaWrite(Addr addr, int size, Event *event, uint8_t *data, |
180 uint32_t sid, uint32_t ssid, Tick delay = 0) 181 { 182 dmaPort.dmaAction(MemCmd::WriteReq, addr, size, event, data, 183 sid, ssid, delay); 184 } 185 186 void dmaWrite(Addr addr, int size, Event *event, uint8_t *data, |
|
167 Tick delay = 0) 168 { 169 dmaPort.dmaAction(MemCmd::WriteReq, addr, size, event, data, delay); 170 } 171 172 void dmaRead(Addr addr, int size, Event *event, uint8_t *data, | 187 Tick delay = 0) 188 { 189 dmaPort.dmaAction(MemCmd::WriteReq, addr, size, event, data, delay); 190 } 191 192 void dmaRead(Addr addr, int size, Event *event, uint8_t *data, |
193 uint32_t sid, uint32_t ssid, Tick delay = 0) 194 { 195 dmaPort.dmaAction(MemCmd::ReadReq, addr, size, event, data, 196 sid, ssid, delay); 197 } 198 199 void dmaRead(Addr addr, int size, Event *event, uint8_t *data, |
|
173 Tick delay = 0) 174 { 175 dmaPort.dmaAction(MemCmd::ReadReq, addr, size, event, data, delay); 176 } 177 178 bool dmaPending() const { return dmaPort.dmaPending(); } 179 180 void init() override; --- 323 unchanged lines hidden --- | 200 Tick delay = 0) 201 { 202 dmaPort.dmaAction(MemCmd::ReadReq, addr, size, event, data, delay); 203 } 204 205 bool dmaPending() const { return dmaPort.dmaPending(); } 206 207 void init() override; --- 323 unchanged lines hidden --- |