Revision 418dcf5b

b/hw/smc91c111.c
7 7
 * This code is licenced under the GPL
8 8
 */
9 9

  
10
#include "hw.h"
10
#include "sysbus.h"
11 11
#include "net.h"
12 12
#include "devices.h"
13 13
/* For crc32 */
......
17 17
#define NUM_PACKETS 4
18 18

  
19 19
typedef struct {
20
    SysBusDevice busdev;
20 21
    VLANClientState *vc;
21 22
    uint16_t tcr;
22 23
    uint16_t rcr;
......
697 698
    qemu_free(s);
698 699
}
699 700

  
700
void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
701
static void smc91c111_init1(SysBusDevice *dev)
701 702
{
702
    smc91c111_state *s;
703

  
704
    qemu_check_nic_model(nd, "smc91c111");
703
    smc91c111_state *s = FROM_SYSBUS(smc91c111_state, dev);
705 704

  
706
    s = (smc91c111_state *)qemu_mallocz(sizeof(smc91c111_state));
707 705
    s->mmio_index = cpu_register_io_memory(0, smc91c111_readfn,
708 706
                                           smc91c111_writefn, s);
709
    cpu_register_physical_memory(base, 16, s->mmio_index);
710
    s->irq = irq;
711
    memcpy(s->macaddr, nd->macaddr, 6);
707
    sysbus_init_mmio(dev, 16, s->mmio_index);
708
    sysbus_init_irq(dev, &s->irq);
709
    qdev_get_macaddr(&dev->qdev, s->macaddr);
712 710

  
713 711
    smc91c111_reset(s);
714 712

  
715
    s->vc = qemu_new_vlan_client(nd->vlan, nd->model, nd->name,
713
    s->vc = qdev_get_vlan_client(&dev->qdev,
716 714
                                 smc91c111_receive, smc91c111_can_receive,
717 715
                                 smc91c111_cleanup, s);
718 716
    qemu_format_nic_info_str(s->vc, s->macaddr);
719 717
    /* ??? Save/restore.  */
720 718
}
719

  
720
static void smc91c111_register_devices(void)
721
{
722
    sysbus_register_dev("smc91c111", sizeof(smc91c111_state), smc91c111_init1);
723
}
724

  
725
/* Legacy helper function.  Should go away when machine config files are
726
   implemented.  */
727
void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
728
{
729
    DeviceState *dev;
730
    SysBusDevice *s;
731

  
732
    qemu_check_nic_model(nd, "smc91c111");
733
    dev = qdev_create(NULL, "smc91c111");
734
    qdev_set_netdev(dev, nd);
735
    qdev_init(dev);
736
    s = sysbus_from_qdev(dev);
737
    sysbus_mmio_map(s, 0, base);
738
    sysbus_connect_irq(s, 0, irq);
739
}
740

  
741
device_init(smc91c111_register_devices)

Also available in: Unified diff