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);