Revision 1de9610c hw/stellaris.c

b/hw/stellaris.c
680 680
/* I2C controller.  */
681 681

  
682 682
typedef struct {
683
    SysBusDevice busdev;
683 684
    i2c_bus *bus;
684 685
    qemu_irq irq;
685 686
    uint32_t msa;
......
870 871
    return 0;
871 872
}
872 873

  
873
static void stellaris_i2c_init(uint32_t base, qemu_irq irq, i2c_bus *bus)
874
static void stellaris_i2c_init(SysBusDevice * dev)
874 875
{
875
    stellaris_i2c_state *s;
876
    stellaris_i2c_state *s = FROM_SYSBUS(stellaris_i2c_state, dev);
877
    i2c_bus *bus = i2c_init_bus();
876 878
    int iomemtype;
877 879

  
878
    s = (stellaris_i2c_state *)qemu_mallocz(sizeof(stellaris_i2c_state));
879
    s->irq = irq;
880
    sysbus_init_irq(dev, &s->irq);
881
    qdev_attach_child_bus(&dev->qdev, "i2c", bus);
880 882
    s->bus = bus;
881 883

  
882 884
    iomemtype = cpu_register_io_memory(0, stellaris_i2c_readfn,
883 885
                                       stellaris_i2c_writefn, s);
884
    cpu_register_physical_memory(base, 0x00001000, iomemtype);
886
    sysbus_init_mmio(dev, 0x1000, iomemtype);
885 887
    /* ??? For now we only implement the master interface.  */
886 888
    stellaris_i2c_reset(s);
887 889
    register_savevm("stellaris_i2c", -1, 1,
......
1321 1323
    }
1322 1324

  
1323 1325
    if (board->dc2 & (1 << 12)) {
1324
        i2c = i2c_init_bus();
1325
        stellaris_i2c_init(0x40020000, pic[8], i2c);
1326
        DeviceState *dev;
1327
        dev = sysbus_create_simple("stellaris-i2c", 0x40020000, pic[8]);
1328
        i2c = qdev_get_child_bus(dev, "i2c");
1326 1329
        if (board->peripherals & BP_OLED_I2C) {
1327 1330
            i2c_create_slave(i2c, "ssd0303", 0x3d);
1328 1331
        }
......
1409 1412
    .desc = "Stellaris LM3S6965EVB",
1410 1413
    .init = lm3s6965evb_init,
1411 1414
};
1415

  
1416
static void stellaris_register_devices(void)
1417
{
1418
    sysbus_register_dev("stellaris-i2c", sizeof(stellaris_i2c_state),
1419
                        stellaris_i2c_init);
1420
}
1421

  
1422
device_init(stellaris_register_devices)

Also available in: Unified diff