summaryrefslogtreecommitdiff
path: root/src/dev/alpha/tsunami_pchip.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/alpha/tsunami_pchip.hh')
-rw-r--r--src/dev/alpha/tsunami_pchip.hh32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/dev/alpha/tsunami_pchip.hh b/src/dev/alpha/tsunami_pchip.hh
index 68bd20e9a..212727d61 100644
--- a/src/dev/alpha/tsunami_pchip.hh
+++ b/src/dev/alpha/tsunami_pchip.hh
@@ -36,18 +36,16 @@
#define __TSUNAMI_PCHIP_HH__
#include "dev/alpha/tsunami.hh"
-#include "dev/io_device.hh"
+#include "dev/pci/host.hh"
#include "params/TsunamiPChip.hh"
/**
* A very simple implementation of the Tsunami PCI interface chips.
*/
-class TsunamiPChip : public BasicPioDevice
+class TsunamiPChip : public GenericPciHost
{
protected:
- static const Addr TsunamiPciBus0Config = ULL(0x801fe000000);
-
/** Pchip control register */
uint64_t pctl;
@@ -74,23 +72,27 @@ class TsunamiPChip : public BasicPioDevice
return dynamic_cast<const Params *>(_params);
}
+
+ void serialize(CheckpointOut &cp) const override;
+ void unserialize(CheckpointIn &cp) override;
+
+ public:
+ Tick read(PacketPtr pkt) override;
+ Tick write(PacketPtr pkt) override;
+
+ AddrRangeList getAddrRanges() const override;
+
/**
* Translate a PCI bus address to a memory address for DMA.
* @todo Andrew says this needs to be fixed. What's wrong with it?
- * @param busAddr PCI address to translate.
+ * @param pci_addr PCI address to translate.
* @return memory system address
*/
- Addr translatePciToDma(Addr busAddr);
-
- Addr calcConfigAddr(int bus, int dev, int func);
- Addr calcIOAddr(Addr addr);
- Addr calcMemAddr(Addr addr);
-
- Tick read(PacketPtr pkt) override;
- Tick write(PacketPtr pkt) override;
+ Addr dmaAddr(const PciBusAddr &addr, Addr pci_addr) const override;
- void serialize(CheckpointOut &cp) const override;
- void unserialize(CheckpointIn &cp) override;
+ protected:
+ const AddrRange pioRange;
+ const Tick pioDelay;
};
#endif // __TSUNAMI_PCHIP_HH__