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>
This commit is contained in:
parent
a699b410d7
commit
517b5e9a17
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user