Commit 1de9610c8ff80aa2a47b6cbe8c198b935916feda

Authored by Paul Brook
1 parent e325e1f8

Stellaris I2C qdev conversion

Signed-off-by: Paul Brook <paul@codesourcery.com>
Showing 1 changed file with 18 additions and 7 deletions
hw/stellaris.c
... ... @@ -680,6 +680,7 @@ static void stellaris_sys_init(uint32_t base, qemu_irq irq,
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,18 +871,19 @@ static int stellaris_i2c_load(QEMUFile *f, void *opaque, int version_id)
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,8 +1323,9 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model,
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,3 +1412,11 @@ QEMUMachine lm3s6965evb_machine = {
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)
... ...