Commit 517b5e9a authored by Jean-Christophe Dubois's avatar Jean-Christophe Dubois Committed by Jason Wang
Browse files

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: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarJean-Christophe Dubois <jcd@tribudubois.net>
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
parent a699b410
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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);
+4 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include "hw/gpio/imx_gpio.h"
#include "hw/sd/sdhci.h"
#include "hw/ssi/imx_spi.h"
#include "hw/net/imx_fec.h"
#include "exec/memory.h"
#include "cpu.h"

@@ -58,6 +59,7 @@ typedef struct FslIMX6State {
    IMXGPIOState   gpio[FSL_IMX6_NUM_GPIOS];
    SDHCIState     esdhc[FSL_IMX6_NUM_ESDHCS];
    IMXSPIState    spi[FSL_IMX6_NUM_ECSPIS];
    IMXFECState    eth;
    MemoryRegion   rom;
    MemoryRegion   caam;
    MemoryRegion   ocram;
@@ -436,8 +438,8 @@ typedef struct FslIMX6State {
#define FSL_IMX6_HDMI_MASTER_IRQ 115
#define FSL_IMX6_HDMI_CEC_IRQ 116
#define FSL_IMX6_MLB150_LOW_IRQ 117
#define FSL_IMX6_ENET_MAC_IRQ 118
#define FSL_IMX6_ENET_MAC_1588_IRQ 119
#define FSL_IMX6_ENET_MAC_1588_IRQ 118
#define FSL_IMX6_ENET_MAC_IRQ 119
#define FSL_IMX6_PCIE1_IRQ 120
#define FSL_IMX6_PCIE2_IRQ 121
#define FSL_IMX6_PCIE3_IRQ 122