aboutsummaryrefslogtreecommitdiff
path: root/hw/arm
diff options
context:
space:
mode:
authorJean-Christophe Dubois <jcd@tribudubois.net>2016-05-30 19:26:14 +0200
committerJason Wang <jasowang@redhat.com>2016-06-02 10:42:46 +0800
commit517b5e9a175fe7d47cc0fab6c2310241fd33c115 (patch)
tree3df03725a2f876f68b8fe883a85f68e67b596d5a /hw/arm
parenta699b410d7120dd67bc6c9beae44868780866f09 (diff)
Add ENET device to i.MX6 SOC.
This adds the ENET device to the i.MX6 SOC. This was tested by booting Linux on an Qemu i.MX6 instance and accessing the internet from the linux guest. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'hw/arm')
-rw-r--r--hw/arm/fsl-imx6.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index a5331bfd33..0c00e7a560 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -105,6 +105,10 @@ static void fsl_imx6_init(Object *obj)
snprintf(name, NAME_SIZE, "spi%d", i + 1);
object_property_add_child(obj, name, OBJECT(&s->spi[i]), NULL);
}
+
+ object_initialize(&s->eth, sizeof(s->eth), TYPE_IMX_ENET);
+ qdev_set_parent_bus(DEVICE(&s->eth), sysbus_get_default());
+ object_property_add_child(obj, "eth", OBJECT(&s->eth), NULL);
}
static void fsl_imx6_realize(DeviceState *dev, Error **errp)
@@ -381,6 +385,19 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
spi_table[i].irq));
}
+ object_property_set_bool(OBJECT(&s->eth), true, "realized", &err);
+ if (err) {
+ error_propagate(errp, err);
+ return;
+ }
+ sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth), 0, FSL_IMX6_ENET_ADDR);
+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->eth), 0,
+ qdev_get_gpio_in(DEVICE(&s->a9mpcore),
+ FSL_IMX6_ENET_MAC_IRQ));
+ sysbus_connect_irq(SYS_BUS_DEVICE(&s->eth), 1,
+ qdev_get_gpio_in(DEVICE(&s->a9mpcore),
+ FSL_IMX6_ENET_MAC_1588_IRQ));
+
/* ROM memory */
memory_region_init_rom_device(&s->rom, NULL, NULL, NULL, "imx6.rom",
FSL_IMX6_ROM_SIZE, &err);