diff --git a/devices/ioctrl/grandcentral.cpp b/devices/ioctrl/grandcentral.cpp index c8b31d3..c04a42a 100644 --- a/devices/ioctrl/grandcentral.cpp +++ b/devices/ioctrl/grandcentral.cpp @@ -20,6 +20,7 @@ along with this program. If not, see . */ #include +#include #include #include #include @@ -270,3 +271,13 @@ void GrandCentral::ack_dma_int(uint32_t irq_id, uint8_t irq_line_state) { ABORT_F("GC: ack_dma_int() not implemened"); } + +static const vector GCSubdevices = { + "Swim3", "Escc" +}; + +static const DeviceDescription GC_Descriptor = { + GrandCentral::create, GCSubdevices, {} +}; + +REGISTER_DEVICE(GrandCentral, GC_Descriptor); diff --git a/devices/ioctrl/heathrow.cpp b/devices/ioctrl/heathrow.cpp index e03cb0d..20d2c2c 100644 --- a/devices/ioctrl/heathrow.cpp +++ b/devices/ioctrl/heathrow.cpp @@ -20,6 +20,7 @@ along with this program. If not, see . */ #include +#include #include #include #include @@ -356,3 +357,13 @@ void HeathrowIC::ack_int(uint32_t irq_id, uint8_t irq_line_state) void HeathrowIC::ack_dma_int(uint32_t irq_id, uint8_t irq_line_state) { } + +static const vector Heathrow_Subdevices = { + "Swim3", "Escc" +}; + +static const DeviceDescription Heathrow_Descriptor = { + HeathrowIC::create, Heathrow_Subdevices, {} +}; + +REGISTER_DEVICE(Heathrow, Heathrow_Descriptor); diff --git a/devices/ioctrl/macio.h b/devices/ioctrl/macio.h index 98ee1f8..c994d64 100644 --- a/devices/ioctrl/macio.h +++ b/devices/ioctrl/macio.h @@ -89,6 +89,10 @@ public: GrandCentral(); ~GrandCentral() = default; + static std::unique_ptr create() { + return std::unique_ptr(new GrandCentral()); + } + // MMIO device methods uint32_t read(uint32_t reg_start, uint32_t offset, int size); void write(uint32_t reg_start, uint32_t offset, uint32_t value, int size); @@ -153,6 +157,10 @@ public: HeathrowIC(); ~HeathrowIC() = default; + static std::unique_ptr create() { + return std::unique_ptr(new HeathrowIC()); + } + // MMIO device methods uint32_t read(uint32_t reg_start, uint32_t offset, int size); void write(uint32_t reg_start, uint32_t offset, uint32_t value, int size);