mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-27 03:51:57 -06:00
xilinx_axienet: converted init->realize
The prescribed transition from SysBusDevice::init to Device::realize. Im going with Andreas suggestion to move the sysbus foo to Object::init for early IRQ visibility. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Andreas Färber <afaerber@suse.de> Acked-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
This commit is contained in:
parent
9ee0ceb7a8
commit
b2d9dfe94c
1 changed files with 11 additions and 13 deletions
|
@ -853,18 +853,13 @@ static NetClientInfo net_xilinx_enet_info = {
|
||||||
.cleanup = eth_cleanup,
|
.cleanup = eth_cleanup,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int xilinx_enet_init(SysBusDevice *dev)
|
static void xilinx_enet_realize(DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
XilinxAXIEnet *s = XILINX_AXI_ENET(dev);
|
XilinxAXIEnet *s = XILINX_AXI_ENET(dev);
|
||||||
|
|
||||||
sysbus_init_irq(dev, &s->irq);
|
|
||||||
|
|
||||||
memory_region_init_io(&s->iomem, &enet_ops, s, "enet", 0x40000);
|
|
||||||
sysbus_init_mmio(dev, &s->iomem);
|
|
||||||
|
|
||||||
qemu_macaddr_default_if_unset(&s->conf.macaddr);
|
qemu_macaddr_default_if_unset(&s->conf.macaddr);
|
||||||
s->nic = qemu_new_nic(&net_xilinx_enet_info, &s->conf,
|
s->nic = qemu_new_nic(&net_xilinx_enet_info, &s->conf,
|
||||||
object_get_typename(OBJECT(dev)), dev->qdev.id, s);
|
object_get_typename(OBJECT(dev)), dev->id, s);
|
||||||
qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a);
|
qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a);
|
||||||
|
|
||||||
tdk_init(&s->TEMAC.phy);
|
tdk_init(&s->TEMAC.phy);
|
||||||
|
@ -873,18 +868,22 @@ static int xilinx_enet_init(SysBusDevice *dev)
|
||||||
s->TEMAC.parent = s;
|
s->TEMAC.parent = s;
|
||||||
|
|
||||||
s->rxmem = g_malloc(s->c_rxmem);
|
s->rxmem = g_malloc(s->c_rxmem);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xilinx_enet_initfn(Object *obj)
|
static void xilinx_enet_init(Object *obj)
|
||||||
{
|
{
|
||||||
XilinxAXIEnet *s = XILINX_AXI_ENET(obj);
|
XilinxAXIEnet *s = XILINX_AXI_ENET(obj);
|
||||||
|
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
|
||||||
Error *errp = NULL;
|
Error *errp = NULL;
|
||||||
|
|
||||||
object_property_add_link(obj, "axistream-connected", TYPE_STREAM_SLAVE,
|
object_property_add_link(obj, "axistream-connected", TYPE_STREAM_SLAVE,
|
||||||
(Object **) &s->tx_dev, &errp);
|
(Object **) &s->tx_dev, &errp);
|
||||||
assert_no_error(errp);
|
assert_no_error(errp);
|
||||||
|
|
||||||
|
sysbus_init_irq(sbd, &s->irq);
|
||||||
|
|
||||||
|
memory_region_init_io(&s->iomem, &enet_ops, s, "enet", 0x40000);
|
||||||
|
sysbus_init_mmio(sbd, &s->iomem);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Property xilinx_enet_properties[] = {
|
static Property xilinx_enet_properties[] = {
|
||||||
|
@ -898,10 +897,9 @@ static Property xilinx_enet_properties[] = {
|
||||||
static void xilinx_enet_class_init(ObjectClass *klass, void *data)
|
static void xilinx_enet_class_init(ObjectClass *klass, void *data)
|
||||||
{
|
{
|
||||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
|
|
||||||
StreamSlaveClass *ssc = STREAM_SLAVE_CLASS(klass);
|
StreamSlaveClass *ssc = STREAM_SLAVE_CLASS(klass);
|
||||||
|
|
||||||
k->init = xilinx_enet_init;
|
dc->realize = xilinx_enet_realize;
|
||||||
dc->props = xilinx_enet_properties;
|
dc->props = xilinx_enet_properties;
|
||||||
dc->reset = xilinx_axienet_reset;
|
dc->reset = xilinx_axienet_reset;
|
||||||
ssc->push = axienet_stream_push;
|
ssc->push = axienet_stream_push;
|
||||||
|
@ -912,7 +910,7 @@ static const TypeInfo xilinx_enet_info = {
|
||||||
.parent = TYPE_SYS_BUS_DEVICE,
|
.parent = TYPE_SYS_BUS_DEVICE,
|
||||||
.instance_size = sizeof(XilinxAXIEnet),
|
.instance_size = sizeof(XilinxAXIEnet),
|
||||||
.class_init = xilinx_enet_class_init,
|
.class_init = xilinx_enet_class_init,
|
||||||
.instance_init = xilinx_enet_initfn,
|
.instance_init = xilinx_enet_init,
|
||||||
.interfaces = (InterfaceInfo[]) {
|
.interfaces = (InterfaceInfo[]) {
|
||||||
{ TYPE_STREAM_SLAVE },
|
{ TYPE_STREAM_SLAVE },
|
||||||
{ }
|
{ }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue