2
0
Эх сурвалжийг харах

Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-peter' into staging

QOM infrastructure fixes and device conversions

* QTest cleanups and test cases for PCI NICs
* NAND fix for "info qtree"
* Cleanup and extension of QOM machine tests
* IndustryPack test cases and conversion to QOM realize
* I2C cleanups
* Cleanups of legacy qdev properties

# gpg: Signature made Mon 17 Feb 2014 22:15:37 GMT using RSA key ID 3E7E013F
# gpg: Good signature from "Andreas Färber <afaerber@suse.de>"
# gpg:                 aka "Andreas Färber <afaerber@suse.com>"

* remotes/afaerber/tags/qom-devices-for-peter: (49 commits)
  qtest: Include system headers before user headers
  qapi: Refine human printing of sizes
  qdev: Use QAPI type names for properties
  qdev: Add enum property types to QAPI schema
  block: Handle "rechs" and "large" translation options
  qdev: Remove hex8/32/64 property types
  qdev: Remove most legacy printers
  qdev: Use human mode in "info qtree"
  qapi: Add human mode to StringOutputVisitor
  qdev: Inline qdev_prop_parse()
  qdev: Legacy properties are just strings
  qdev: Legacy properties are now read-only
  qdev: Remove legacy parsers for hex8/32/64
  qdev: Sizes are now parsed by StringInputVisitor
  qapi: Add size parser to StringInputVisitor
  qtest: Don't segfault with invalid -qtest option
  ipack: Move IndustryPack out of hw/char/
  ipoctal232: QOM parent field cleanup
  ipack: QOM parent field cleanup for IPackDevice
  ipack: QOM parent field cleanup for IPackBus
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Peter Maydell 11 жил өмнө
parent
commit
61e8a92364
100 өөрчлөгдсөн 523 нэмэгдсэн , 560 устгасан
  1. 4 0
      blockdev.c
  2. 1 0
      default-configs/ppc-softmmu.mak
  3. 1 0
      default-configs/ppc64-softmmu.mak
  4. 0 20
      default-configs/ppcemb-softmmu.mak
  5. 1 0
      hw/Makefile.objs
  6. 3 3
      hw/acpi/piix4.c
  7. 1 1
      hw/arm/exynos4210.c
  8. 2 2
      hw/arm/musicpal.c
  9. 1 1
      hw/arm/nseries.c
  10. 28 16
      hw/arm/pxa2xx.c
  11. 2 2
      hw/arm/realview.c
  12. 1 1
      hw/arm/spitz.c
  13. 4 4
      hw/arm/stellaris.c
  14. 12 6
      hw/arm/tosa.c
  15. 2 2
      hw/arm/versatilepb.c
  16. 14 8
      hw/arm/z2.c
  17. 1 1
      hw/audio/adlib.c
  18. 1 1
      hw/audio/cs4231a.c
  19. 1 1
      hw/audio/gus.c
  20. 1 1
      hw/audio/pcspk.c
  21. 2 2
      hw/audio/sb16.c
  22. 20 13
      hw/audio/wm8750.c
  23. 1 1
      hw/block/fdc.c
  24. 1 1
      hw/block/nand.c
  25. 1 1
      hw/char/Makefile.objs
  26. 2 2
      hw/char/debugcon.c
  27. 10 10
      hw/char/ipoctal232.c
  28. 1 1
      hw/char/parallel.c
  29. 1 1
      hw/char/serial-isa.c
  30. 8 4
      hw/core/qdev-properties-system.c
  31. 15 189
      hw/core/qdev-properties.c
  32. 4 34
      hw/core/qdev.c
  33. 1 1
      hw/display/g364fb.c
  34. 12 6
      hw/display/ssd0303.c
  35. 2 2
      hw/display/tcx.c
  36. 1 1
      hw/dma/i82374.c
  37. 1 1
      hw/dma/sun4m_iommu.c
  38. 14 9
      hw/gpio/max7310.c
  39. 3 3
      hw/i2c/bitbang_i2c.c
  40. 1 1
      hw/i2c/bitbang_i2c.h
  41. 16 16
      hw/i2c/core.c
  42. 1 1
      hw/i2c/exynos4210_i2c.c
  43. 2 2
      hw/i2c/omap_i2c.c
  44. 1 1
      hw/i2c/pm_smbus.c
  45. 9 9
      hw/i2c/smbus.c
  46. 1 1
      hw/i2c/smbus_eeprom.c
  47. 1 1
      hw/i2c/smbus_ich9.c
  48. 1 1
      hw/i2c/versatile_i2c.c
  49. 4 4
      hw/i386/kvm/i8254.c
  50. 1 1
      hw/i386/pc_piix.c
  51. 2 2
      hw/ide/isa.c
  52. 1 1
      hw/ide/qdev.c
  53. 13 9
      hw/input/lm832x.c
  54. 3 3
      hw/intc/i8259_common.c
  55. 2 0
      hw/ipack/Makefile.objs
  56. 23 20
      hw/ipack/ipack.c
  57. 1 1
      hw/ipack/tpci200.c
  58. 1 1
      hw/isa/pc87312.c
  59. 2 2
      hw/isa/vt82c686.c
  60. 1 1
      hw/mips/mips_fulong2e.c
  61. 1 1
      hw/mips/mips_malta.c
  62. 1 1
      hw/misc/applesmc.c
  63. 2 2
      hw/misc/debugexit.c
  64. 1 1
      hw/misc/eccmemctl.c
  65. 1 1
      hw/net/ne2000-isa.c
  66. 2 2
      hw/nvram/fw_cfg.c
  67. 2 2
      hw/ppc/Makefile.objs
  68. 8 8
      hw/ppc/spapr_pci.c
  69. 1 1
      hw/scsi/megasas.c
  70. 3 3
      hw/scsi/scsi-disk.c
  71. 2 2
      hw/sd/sdhci.c
  72. 13 8
      hw/timer/ds1338.c
  73. 1 1
      hw/timer/i8254.c
  74. 2 2
      hw/timer/m48t59.c
  75. 7 7
      hw/timer/mc146818rtc.c
  76. 21 14
      hw/timer/twl92230.c
  77. 2 2
      hw/usb/host-libusb.c
  78. 3 3
      hw/virtio/virtio-pci.c
  79. 1 1
      include/hw/arm/exynos4210.h
  80. 1 1
      include/hw/arm/omap.h
  81. 1 1
      include/hw/arm/pxa.h
  82. 0 6
      include/hw/block/block.h
  83. 9 11
      include/hw/i2c/i2c.h
  84. 1 1
      include/hw/i2c/pm_smbus.h
  85. 10 10
      include/hw/i2c/smbus.h
  86. 1 1
      include/hw/i386/ich9.h
  87. 3 3
      include/hw/i386/pc.h
  88. 11 4
      include/hw/ipack/ipack.h
  89. 2 2
      include/hw/isa/vt82c686.h
  90. 0 1
      include/hw/qdev-core.h
  91. 1 1
      include/hw/qdev-dma.h
  92. 0 11
      include/hw/qdev-properties.h
  93. 1 1
      include/qapi/string-output-visitor.h
  94. 0 8
      include/qemu-common.h
  95. 1 1
      include/qemu/typedefs.h
  96. 2 1
      include/qom/object.h
  97. 2 1
      include/sysemu/qtest.h
  98. 58 0
      qapi-schema.json
  99. 24 0
      qapi/string-input-visitor.c
  100. 53 3
      qapi/string-output-visitor.c

+ 4 - 0
blockdev.c

@@ -779,6 +779,10 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type)
             translation = BIOS_ATA_TRANSLATION_NONE;
             translation = BIOS_ATA_TRANSLATION_NONE;
         } else if (!strcmp(value, "lba")) {
         } else if (!strcmp(value, "lba")) {
             translation = BIOS_ATA_TRANSLATION_LBA;
             translation = BIOS_ATA_TRANSLATION_LBA;
+        } else if (!strcmp(value, "large")) {
+            translation = BIOS_ATA_TRANSLATION_LARGE;
+        } else if (!strcmp(value, "rechs")) {
+            translation = BIOS_ATA_TRANSLATION_RECHS;
         } else if (!strcmp(value, "auto")) {
         } else if (!strcmp(value, "auto")) {
             translation = BIOS_ATA_TRANSLATION_AUTO;
             translation = BIOS_ATA_TRANSLATION_AUTO;
         } else {
         } else {

+ 1 - 0
default-configs/ppc-softmmu.mak

@@ -42,6 +42,7 @@ CONFIG_XILINX=y
 CONFIG_XILINX_ETHLITE=y
 CONFIG_XILINX_ETHLITE=y
 CONFIG_OPENPIC=y
 CONFIG_OPENPIC=y
 CONFIG_PREP=y
 CONFIG_PREP=y
+CONFIG_MAC=y
 CONFIG_E500=y
 CONFIG_E500=y
 CONFIG_OPENPIC_KVM=$(and $(CONFIG_E500),$(CONFIG_KVM))
 CONFIG_OPENPIC_KVM=$(and $(CONFIG_E500),$(CONFIG_KVM))
 # For PReP
 # For PReP

+ 1 - 0
default-configs/ppc64-softmmu.mak

@@ -43,6 +43,7 @@ CONFIG_XILINX_ETHLITE=y
 CONFIG_OPENPIC=y
 CONFIG_OPENPIC=y
 CONFIG_PSERIES=y
 CONFIG_PSERIES=y
 CONFIG_PREP=y
 CONFIG_PREP=y
+CONFIG_MAC=y
 CONFIG_E500=y
 CONFIG_E500=y
 CONFIG_OPENPIC_KVM=$(and $(CONFIG_E500),$(CONFIG_KVM))
 CONFIG_OPENPIC_KVM=$(and $(CONFIG_E500),$(CONFIG_KVM))
 # For pSeries
 # For pSeries

+ 0 - 20
default-configs/ppcemb-softmmu.mak

@@ -3,30 +3,12 @@
 include pci.mak
 include pci.mak
 include sound.mak
 include sound.mak
 include usb.mak
 include usb.mak
-CONFIG_ISA_MMIO=y
-CONFIG_ESCC=y
 CONFIG_M48T59=y
 CONFIG_M48T59=y
 CONFIG_VGA=y
 CONFIG_VGA=y
 CONFIG_VGA_PCI=y
 CONFIG_VGA_PCI=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL=y
-CONFIG_I8254=y
-CONFIG_FDC=y
 CONFIG_I8257=y
 CONFIG_I8257=y
 CONFIG_OPENPIC=y
 CONFIG_OPENPIC=y
-CONFIG_MACIO=y
-CONFIG_CUDA=y
-CONFIG_ADB=y
-CONFIG_MAC_NVRAM=y
-CONFIG_MAC_DBDMA=y
-CONFIG_HEATHROW_PIC=y
-CONFIG_GRACKLE_PCI=y
-CONFIG_UNIN_PCI=y
-CONFIG_DEC_PCI=y
-CONFIG_PPCE500_PCI=y
-CONFIG_IDE_ISA=y
-CONFIG_IDE_CMD646=y
-CONFIG_IDE_MACIO=y
-CONFIG_NE2000_ISA=y
 CONFIG_PFLASH_CFI01=y
 CONFIG_PFLASH_CFI01=y
 CONFIG_PFLASH_CFI02=y
 CONFIG_PFLASH_CFI02=y
 CONFIG_PTIMER=y
 CONFIG_PTIMER=y
@@ -34,5 +16,3 @@ CONFIG_I8259=y
 CONFIG_XILINX=y
 CONFIG_XILINX=y
 CONFIG_XILINX_ETHLITE=y
 CONFIG_XILINX_ETHLITE=y
 CONFIG_OPENPIC=y
 CONFIG_OPENPIC=y
-CONFIG_E500=y
-CONFIG_OPENPIC_KVM=$(and $(CONFIG_E500),$(CONFIG_KVM))

+ 1 - 0
hw/Makefile.objs

@@ -12,6 +12,7 @@ devices-dirs-$(CONFIG_SOFTMMU) += i2c/
 devices-dirs-$(CONFIG_SOFTMMU) += ide/
 devices-dirs-$(CONFIG_SOFTMMU) += ide/
 devices-dirs-$(CONFIG_SOFTMMU) += input/
 devices-dirs-$(CONFIG_SOFTMMU) += input/
 devices-dirs-$(CONFIG_SOFTMMU) += intc/
 devices-dirs-$(CONFIG_SOFTMMU) += intc/
+devices-dirs-$(CONFIG_IPACK) += ipack/
 devices-dirs-$(CONFIG_SOFTMMU) += isa/
 devices-dirs-$(CONFIG_SOFTMMU) += isa/
 devices-dirs-$(CONFIG_SOFTMMU) += misc/
 devices-dirs-$(CONFIG_SOFTMMU) += misc/
 devices-dirs-$(CONFIG_SOFTMMU) += net/
 devices-dirs-$(CONFIG_SOFTMMU) += net/

+ 3 - 3
hw/acpi/piix4.c

@@ -439,9 +439,9 @@ Object *piix4_pm_find(void)
     return o;
     return o;
 }
 }
 
 
-i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
-                       qemu_irq sci_irq, qemu_irq smi_irq,
-                       int kvm_enabled, FWCfgState *fw_cfg)
+I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
+                      qemu_irq sci_irq, qemu_irq smi_irq,
+                      int kvm_enabled, FWCfgState *fw_cfg)
 {
 {
     DeviceState *dev;
     DeviceState *dev;
     PIIX4PMState *s;
     PIIX4PMState *s;

+ 1 - 1
hw/arm/exynos4210.c

@@ -326,7 +326,7 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem,
         busdev = SYS_BUS_DEVICE(dev);
         busdev = SYS_BUS_DEVICE(dev);
         sysbus_connect_irq(busdev, 0, i2c_irq);
         sysbus_connect_irq(busdev, 0, i2c_irq);
         sysbus_mmio_map(busdev, 0, addr);
         sysbus_mmio_map(busdev, 0, addr);
-        s->i2c_if[n] = (i2c_bus *)qdev_get_child_bus(dev, "i2c");
+        s->i2c_if[n] = (I2CBus *)qdev_get_child_bus(dev, "i2c");
     }
     }
 
 
 
 

+ 2 - 2
hw/arm/musicpal.c

@@ -1593,7 +1593,7 @@ static void musicpal_init(QEMUMachineInitArgs *args)
     DeviceState *key_dev;
     DeviceState *key_dev;
     DeviceState *wm8750_dev;
     DeviceState *wm8750_dev;
     SysBusDevice *s;
     SysBusDevice *s;
-    i2c_bus *i2c;
+    I2CBus *i2c;
     int i;
     int i;
     unsigned long flash_size;
     unsigned long flash_size;
     DriveInfo *dinfo;
     DriveInfo *dinfo;
@@ -1687,7 +1687,7 @@ static void musicpal_init(QEMUMachineInitArgs *args)
     dev = sysbus_create_simple(TYPE_MUSICPAL_GPIO, MP_GPIO_BASE,
     dev = sysbus_create_simple(TYPE_MUSICPAL_GPIO, MP_GPIO_BASE,
                                pic[MP_GPIO_IRQ]);
                                pic[MP_GPIO_IRQ]);
     i2c_dev = sysbus_create_simple("gpio_i2c", -1, NULL);
     i2c_dev = sysbus_create_simple("gpio_i2c", -1, NULL);
-    i2c = (i2c_bus *)qdev_get_child_bus(i2c_dev, "i2c");
+    i2c = (I2CBus *)qdev_get_child_bus(i2c_dev, "i2c");
 
 
     lcd_dev = sysbus_create_simple(TYPE_MUSICPAL_LCD, MP_LCD_BASE, NULL);
     lcd_dev = sysbus_create_simple(TYPE_MUSICPAL_LCD, MP_LCD_BASE, NULL);
     key_dev = sysbus_create_simple(TYPE_MUSICPAL_KEY, -1, NULL);
     key_dev = sysbus_create_simple(TYPE_MUSICPAL_KEY, -1, NULL);

+ 1 - 1
hw/arm/nseries.c

@@ -202,7 +202,7 @@ static void n8x0_i2c_setup(struct n800_s *s)
 {
 {
     DeviceState *dev;
     DeviceState *dev;
     qemu_irq tmp_irq = qdev_get_gpio_in(s->mpu->gpio, N8X0_TMP105_GPIO);
     qemu_irq tmp_irq = qdev_get_gpio_in(s->mpu->gpio, N8X0_TMP105_GPIO);
-    i2c_bus *i2c = omap_i2c_bus(s->mpu->i2c[0]);
+    I2CBus *i2c = omap_i2c_bus(s->mpu->i2c[0]);
 
 
     /* Attach a menelaus PM chip */
     /* Attach a menelaus PM chip */
     dev = i2c_create_slave(i2c, "twl92230", N8X0_MENELAUS_ADDR);
     dev = i2c_create_slave(i2c, "twl92230", N8X0_MENELAUS_ADDR);

+ 28 - 16
hw/arm/pxa2xx.c

@@ -1222,8 +1222,14 @@ static const TypeInfo pxa2xx_rtc_sysbus_info = {
 };
 };
 
 
 /* I2C Interface */
 /* I2C Interface */
-typedef struct {
-    I2CSlave i2c;
+
+#define TYPE_PXA2XX_I2C_SLAVE "pxa2xx-i2c-slave"
+#define PXA2XX_I2C_SLAVE(obj) \
+    OBJECT_CHECK(PXA2xxI2CSlaveState, (obj), TYPE_PXA2XX_I2C_SLAVE)
+
+typedef struct PXA2xxI2CSlaveState {
+    I2CSlave parent_obj;
+
     PXA2xxI2CState *host;
     PXA2xxI2CState *host;
 } PXA2xxI2CSlaveState;
 } PXA2xxI2CSlaveState;
 
 
@@ -1238,7 +1244,7 @@ struct PXA2xxI2CState {
 
 
     MemoryRegion iomem;
     MemoryRegion iomem;
     PXA2xxI2CSlaveState *slave;
     PXA2xxI2CSlaveState *slave;
-    i2c_bus *bus;
+    I2CBus *bus;
     qemu_irq irq;
     qemu_irq irq;
     uint32_t offset;
     uint32_t offset;
     uint32_t region_size;
     uint32_t region_size;
@@ -1268,7 +1274,7 @@ static void pxa2xx_i2c_update(PXA2xxI2CState *s)
 /* These are only stubs now.  */
 /* These are only stubs now.  */
 static void pxa2xx_i2c_event(I2CSlave *i2c, enum i2c_event event)
 static void pxa2xx_i2c_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    PXA2xxI2CSlaveState *slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, i2c);
+    PXA2xxI2CSlaveState *slave = PXA2XX_I2C_SLAVE(i2c);
     PXA2xxI2CState *s = slave->host;
     PXA2xxI2CState *s = slave->host;
 
 
     switch (event) {
     switch (event) {
@@ -1292,10 +1298,12 @@ static void pxa2xx_i2c_event(I2CSlave *i2c, enum i2c_event event)
 
 
 static int pxa2xx_i2c_rx(I2CSlave *i2c)
 static int pxa2xx_i2c_rx(I2CSlave *i2c)
 {
 {
-    PXA2xxI2CSlaveState *slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, i2c);
+    PXA2xxI2CSlaveState *slave = PXA2XX_I2C_SLAVE(i2c);
     PXA2xxI2CState *s = slave->host;
     PXA2xxI2CState *s = slave->host;
-    if ((s->control & (1 << 14)) || !(s->control & (1 << 6)))
+
+    if ((s->control & (1 << 14)) || !(s->control & (1 << 6))) {
         return 0;
         return 0;
+    }
 
 
     if (s->status & (1 << 0)) {			/* RWM */
     if (s->status & (1 << 0)) {			/* RWM */
         s->status |= 1 << 6;			/* set ITE */
         s->status |= 1 << 6;			/* set ITE */
@@ -1307,10 +1315,12 @@ static int pxa2xx_i2c_rx(I2CSlave *i2c)
 
 
 static int pxa2xx_i2c_tx(I2CSlave *i2c, uint8_t data)
 static int pxa2xx_i2c_tx(I2CSlave *i2c, uint8_t data)
 {
 {
-    PXA2xxI2CSlaveState *slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, i2c);
+    PXA2xxI2CSlaveState *slave = PXA2XX_I2C_SLAVE(i2c);
     PXA2xxI2CState *s = slave->host;
     PXA2xxI2CState *s = slave->host;
-    if ((s->control & (1 << 14)) || !(s->control & (1 << 6)))
+
+    if ((s->control & (1 << 14)) || !(s->control & (1 << 6))) {
         return 1;
         return 1;
+    }
 
 
     if (!(s->status & (1 << 0))) {		/* RWM */
     if (!(s->status & (1 << 0))) {		/* RWM */
         s->status |= 1 << 7;			/* set IRF */
         s->status |= 1 << 7;			/* set IRF */
@@ -1325,6 +1335,7 @@ static uint64_t pxa2xx_i2c_read(void *opaque, hwaddr addr,
                                 unsigned size)
                                 unsigned size)
 {
 {
     PXA2xxI2CState *s = (PXA2xxI2CState *) opaque;
     PXA2xxI2CState *s = (PXA2xxI2CState *) opaque;
+    I2CSlave *slave;
 
 
     addr -= s->offset;
     addr -= s->offset;
     switch (addr) {
     switch (addr) {
@@ -1333,7 +1344,8 @@ static uint64_t pxa2xx_i2c_read(void *opaque, hwaddr addr,
     case ISR:
     case ISR:
         return s->status | (i2c_bus_busy(s->bus) << 2);
         return s->status | (i2c_bus_busy(s->bus) << 2);
     case ISAR:
     case ISAR:
-        return s->slave->i2c.address;
+        slave = I2C_SLAVE(s->slave);
+        return slave->address;
     case IDBR:
     case IDBR:
         return s->data;
         return s->data;
     case IBMR:
     case IBMR:
@@ -1408,7 +1420,7 @@ static void pxa2xx_i2c_write(void *opaque, hwaddr addr,
         break;
         break;
 
 
     case ISAR:
     case ISAR:
-        i2c_set_slave_address(&s->slave->i2c, value & 0x7f);
+        i2c_set_slave_address(I2C_SLAVE(s->slave), value & 0x7f);
         break;
         break;
 
 
     case IDBR:
     case IDBR:
@@ -1432,7 +1444,7 @@ static const VMStateDescription vmstate_pxa2xx_i2c_slave = {
     .minimum_version_id = 1,
     .minimum_version_id = 1,
     .minimum_version_id_old = 1,
     .minimum_version_id_old = 1,
     .fields      = (VMStateField []) {
     .fields      = (VMStateField []) {
-        VMSTATE_I2C_SLAVE(i2c, PXA2xxI2CSlaveState),
+        VMSTATE_I2C_SLAVE(parent_obj, PXA2xxI2CSlaveState),
         VMSTATE_END_OF_LIST()
         VMSTATE_END_OF_LIST()
     }
     }
 };
 };
@@ -1470,7 +1482,7 @@ static void pxa2xx_i2c_slave_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo pxa2xx_i2c_slave_info = {
 static const TypeInfo pxa2xx_i2c_slave_info = {
-    .name          = "pxa2xx-i2c-slave",
+    .name          = TYPE_PXA2XX_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(PXA2xxI2CSlaveState),
     .instance_size = sizeof(PXA2xxI2CSlaveState),
     .class_init    = pxa2xx_i2c_slave_class_init,
     .class_init    = pxa2xx_i2c_slave_class_init,
@@ -1482,7 +1494,7 @@ PXA2xxI2CState *pxa2xx_i2c_init(hwaddr base,
     DeviceState *dev;
     DeviceState *dev;
     SysBusDevice *i2c_dev;
     SysBusDevice *i2c_dev;
     PXA2xxI2CState *s;
     PXA2xxI2CState *s;
-    i2c_bus *i2cbus;
+    I2CBus *i2cbus;
 
 
     dev = qdev_create(NULL, TYPE_PXA2XX_I2C);
     dev = qdev_create(NULL, TYPE_PXA2XX_I2C);
     qdev_prop_set_uint32(dev, "size", region_size + 1);
     qdev_prop_set_uint32(dev, "size", region_size + 1);
@@ -1496,8 +1508,8 @@ PXA2xxI2CState *pxa2xx_i2c_init(hwaddr base,
     s = PXA2XX_I2C(i2c_dev);
     s = PXA2XX_I2C(i2c_dev);
     /* FIXME: Should the slave device really be on a separate bus?  */
     /* FIXME: Should the slave device really be on a separate bus?  */
     i2cbus = i2c_init_bus(dev, "dummy");
     i2cbus = i2c_init_bus(dev, "dummy");
-    dev = i2c_create_slave(i2cbus, "pxa2xx-i2c-slave", 0);
-    s->slave = FROM_I2C_SLAVE(PXA2xxI2CSlaveState, I2C_SLAVE(dev));
+    dev = i2c_create_slave(i2cbus, TYPE_PXA2XX_I2C_SLAVE, 0);
+    s->slave = PXA2XX_I2C_SLAVE(dev);
     s->slave->host = s;
     s->slave->host = s;
 
 
     return s;
     return s;
@@ -1518,7 +1530,7 @@ static int pxa2xx_i2c_initfn(SysBusDevice *sbd)
     return 0;
     return 0;
 }
 }
 
 
-i2c_bus *pxa2xx_i2c_bus(PXA2xxI2CState *s)
+I2CBus *pxa2xx_i2c_bus(PXA2xxI2CState *s)
 {
 {
     return s->bus;
     return s->bus;
 }
 }

+ 2 - 2
hw/arm/realview.c

@@ -60,7 +60,7 @@ static void realview_init(QEMUMachineInitArgs *args,
     qemu_irq mmc_irq[2];
     qemu_irq mmc_irq[2];
     PCIBus *pci_bus = NULL;
     PCIBus *pci_bus = NULL;
     NICInfo *nd;
     NICInfo *nd;
-    i2c_bus *i2c;
+    I2CBus *i2c;
     int n;
     int n;
     int done_nic = 0;
     int done_nic = 0;
     qemu_irq cpu_irq[4];
     qemu_irq cpu_irq[4];
@@ -255,7 +255,7 @@ static void realview_init(QEMUMachineInitArgs *args,
     }
     }
 
 
     dev = sysbus_create_simple("versatile_i2c", 0x10002000, NULL);
     dev = sysbus_create_simple("versatile_i2c", 0x10002000, NULL);
-    i2c = (i2c_bus *)qdev_get_child_bus(dev, "i2c");
+    i2c = (I2CBus *)qdev_get_child_bus(dev, "i2c");
     i2c_create_slave(i2c, "ds1338", 0x68);
     i2c_create_slave(i2c, "ds1338", 0x68);
 
 
     /* Memory map for RealView Emulation Baseboard:  */
     /* Memory map for RealView Emulation Baseboard:  */

+ 1 - 1
hw/arm/spitz.c

@@ -734,7 +734,7 @@ static void spitz_wm8750_addr(void *opaque, int line, int level)
 static void spitz_i2c_setup(PXA2xxState *cpu)
 static void spitz_i2c_setup(PXA2xxState *cpu)
 {
 {
     /* Attach the CPU on one end of our I2C bus.  */
     /* Attach the CPU on one end of our I2C bus.  */
-    i2c_bus *bus = pxa2xx_i2c_bus(cpu->i2c[0]);
+    I2CBus *bus = pxa2xx_i2c_bus(cpu->i2c[0]);
 
 
     DeviceState *wm;
     DeviceState *wm;
 
 

+ 4 - 4
hw/arm/stellaris.c

@@ -692,7 +692,7 @@ static int stellaris_sys_init(uint32_t base, qemu_irq irq,
 typedef struct {
 typedef struct {
     SysBusDevice parent_obj;
     SysBusDevice parent_obj;
 
 
-    i2c_bus *bus;
+    I2CBus *bus;
     qemu_irq irq;
     qemu_irq irq;
     MemoryRegion iomem;
     MemoryRegion iomem;
     uint32_t msa;
     uint32_t msa;
@@ -868,7 +868,7 @@ static int stellaris_i2c_init(SysBusDevice *sbd)
 {
 {
     DeviceState *dev = DEVICE(sbd);
     DeviceState *dev = DEVICE(sbd);
     stellaris_i2c_state *s = STELLARIS_I2C(dev);
     stellaris_i2c_state *s = STELLARIS_I2C(dev);
-    i2c_bus *bus;
+    I2CBus *bus;
 
 
     sysbus_init_irq(sbd, &s->irq);
     sysbus_init_irq(sbd, &s->irq);
     bus = i2c_init_bus(dev, "i2c");
     bus = i2c_init_bus(dev, "i2c");
@@ -1213,7 +1213,7 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model,
     qemu_irq adc;
     qemu_irq adc;
     int sram_size;
     int sram_size;
     int flash_size;
     int flash_size;
-    i2c_bus *i2c;
+    I2CBus *i2c;
     DeviceState *dev;
     DeviceState *dev;
     int i;
     int i;
     int j;
     int j;
@@ -1256,7 +1256,7 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model,
 
 
     if (board->dc2 & (1 << 12)) {
     if (board->dc2 & (1 << 12)) {
         dev = sysbus_create_simple(TYPE_STELLARIS_I2C, 0x40020000, pic[8]);
         dev = sysbus_create_simple(TYPE_STELLARIS_I2C, 0x40020000, pic[8]);
-        i2c = (i2c_bus *)qdev_get_child_bus(dev, "i2c");
+        i2c = (I2CBus *)qdev_get_child_bus(dev, "i2c");
         if (board->peripherals & BP_OLED_I2C) {
         if (board->peripherals & BP_OLED_I2C) {
             i2c_create_slave(i2c, "ssd0303", 0x3d);
             i2c_create_slave(i2c, "ssd0303", 0x3d);
         }
         }

+ 12 - 6
hw/arm/tosa.c

@@ -132,15 +132,20 @@ static int tosa_ssp_init(SSISlave *dev)
     return 0;
     return 0;
 }
 }
 
 
+#define TYPE_TOSA_DAC "tosa_dac"
+#define TOSA_DAC(obj) OBJECT_CHECK(TosaDACState, (obj), TYPE_TOSA_DAC)
+
 typedef struct {
 typedef struct {
-    I2CSlave i2c;
+    I2CSlave parent_obj;
+
     int len;
     int len;
     char buf[3];
     char buf[3];
 } TosaDACState;
 } TosaDACState;
 
 
 static int tosa_dac_send(I2CSlave *i2c, uint8_t data)
 static int tosa_dac_send(I2CSlave *i2c, uint8_t data)
 {
 {
-    TosaDACState *s = FROM_I2C_SLAVE(TosaDACState, i2c);
+    TosaDACState *s = TOSA_DAC(i2c);
+
     s->buf[s->len] = data;
     s->buf[s->len] = data;
     if (s->len ++ > 2) {
     if (s->len ++ > 2) {
 #ifdef VERBOSE
 #ifdef VERBOSE
@@ -159,7 +164,8 @@ static int tosa_dac_send(I2CSlave *i2c, uint8_t data)
 
 
 static void tosa_dac_event(I2CSlave *i2c, enum i2c_event event)
 static void tosa_dac_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    TosaDACState *s = FROM_I2C_SLAVE(TosaDACState, i2c);
+    TosaDACState *s = TOSA_DAC(i2c);
+
     s->len = 0;
     s->len = 0;
     switch (event) {
     switch (event) {
     case I2C_START_SEND:
     case I2C_START_SEND:
@@ -194,8 +200,8 @@ static int tosa_dac_init(I2CSlave *i2c)
 
 
 static void tosa_tg_init(PXA2xxState *cpu)
 static void tosa_tg_init(PXA2xxState *cpu)
 {
 {
-    i2c_bus *bus = pxa2xx_i2c_bus(cpu->i2c[0]);
-    i2c_create_slave(bus, "tosa_dac", DAC_BASE);
+    I2CBus *bus = pxa2xx_i2c_bus(cpu->i2c[0]);
+    i2c_create_slave(bus, TYPE_TOSA_DAC, DAC_BASE);
     ssi_create_slave(cpu->ssp[1], "tosa-ssp");
     ssi_create_slave(cpu->ssp[1], "tosa-ssp");
 }
 }
 
 
@@ -271,7 +277,7 @@ static void tosa_dac_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo tosa_dac_info = {
 static const TypeInfo tosa_dac_info = {
-    .name          = "tosa_dac",
+    .name          = TYPE_TOSA_DAC,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(TosaDACState),
     .instance_size = sizeof(TosaDACState),
     .class_init    = tosa_dac_class_init,
     .class_init    = tosa_dac_class_init,

+ 2 - 2
hw/arm/versatilepb.c

@@ -185,7 +185,7 @@ static void versatile_init(QEMUMachineInitArgs *args, int board_id)
     DeviceState *pl041;
     DeviceState *pl041;
     PCIBus *pci_bus;
     PCIBus *pci_bus;
     NICInfo *nd;
     NICInfo *nd;
-    i2c_bus *i2c;
+    I2CBus *i2c;
     int n;
     int n;
     int done_smc = 0;
     int done_smc = 0;
     DriveInfo *dinfo;
     DriveInfo *dinfo;
@@ -288,7 +288,7 @@ static void versatile_init(QEMUMachineInitArgs *args, int board_id)
     sysbus_create_simple("pl031", 0x101e8000, pic[10]);
     sysbus_create_simple("pl031", 0x101e8000, pic[10]);
 
 
     dev = sysbus_create_simple("versatile_i2c", 0x10002000, NULL);
     dev = sysbus_create_simple("versatile_i2c", 0x10002000, NULL);
-    i2c = (i2c_bus *)qdev_get_child_bus(dev, "i2c");
+    i2c = (I2CBus *)qdev_get_child_bus(dev, "i2c");
     i2c_create_slave(i2c, "ds1338", 0x68);
     i2c_create_slave(i2c, "ds1338", 0x68);
 
 
     /* Add PL041 AACI Interface to the LM4549 codec */
     /* Add PL041 AACI Interface to the LM4549 codec */

+ 14 - 8
hw/arm/z2.c

@@ -193,15 +193,20 @@ static const TypeInfo zipit_lcd_info = {
     .class_init    = zipit_lcd_class_init,
     .class_init    = zipit_lcd_class_init,
 };
 };
 
 
-typedef struct {
-    I2CSlave i2c;
+#define TYPE_AER915 "aer915"
+#define AER915(obj) OBJECT_CHECK(AER915State, (obj), TYPE_AER915)
+
+typedef struct AER915State {
+    I2CSlave parent_obj;
+
     int len;
     int len;
     uint8_t buf[3];
     uint8_t buf[3];
 } AER915State;
 } AER915State;
 
 
 static int aer915_send(I2CSlave *i2c, uint8_t data)
 static int aer915_send(I2CSlave *i2c, uint8_t data)
 {
 {
-    AER915State *s = FROM_I2C_SLAVE(AER915State, i2c);
+    AER915State *s = AER915(i2c);
+
     s->buf[s->len] = data;
     s->buf[s->len] = data;
     if (s->len++ > 2) {
     if (s->len++ > 2) {
         DPRINTF("%s: message too long (%i bytes)\n",
         DPRINTF("%s: message too long (%i bytes)\n",
@@ -219,7 +224,8 @@ static int aer915_send(I2CSlave *i2c, uint8_t data)
 
 
 static void aer915_event(I2CSlave *i2c, enum i2c_event event)
 static void aer915_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    AER915State *s = FROM_I2C_SLAVE(AER915State, i2c);
+    AER915State *s = AER915(i2c);
+
     switch (event) {
     switch (event) {
     case I2C_START_SEND:
     case I2C_START_SEND:
         s->len = 0;
         s->len = 0;
@@ -238,8 +244,8 @@ static void aer915_event(I2CSlave *i2c, enum i2c_event event)
 
 
 static int aer915_recv(I2CSlave *slave)
 static int aer915_recv(I2CSlave *slave)
 {
 {
+    AER915State *s = AER915(slave);
     int retval = 0x00;
     int retval = 0x00;
-    AER915State *s = FROM_I2C_SLAVE(AER915State, slave);
 
 
     switch (s->buf[0]) {
     switch (s->buf[0]) {
     /* Return hardcoded battery voltage,
     /* Return hardcoded battery voltage,
@@ -290,7 +296,7 @@ static void aer915_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo aer915_info = {
 static const TypeInfo aer915_info = {
-    .name          = "aer915",
+    .name          = TYPE_AER915,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(AER915State),
     .instance_size = sizeof(AER915State),
     .class_init    = aer915_class_init,
     .class_init    = aer915_class_init,
@@ -308,7 +314,7 @@ static void z2_init(QEMUMachineInitArgs *args)
     DriveInfo *dinfo;
     DriveInfo *dinfo;
     int be;
     int be;
     void *z2_lcd;
     void *z2_lcd;
-    i2c_bus *bus;
+    I2CBus *bus;
     DeviceState *wm;
     DeviceState *wm;
 
 
     if (!cpu_model) {
     if (!cpu_model) {
@@ -351,7 +357,7 @@ static void z2_init(QEMUMachineInitArgs *args)
     type_register_static(&aer915_info);
     type_register_static(&aer915_info);
     z2_lcd = ssi_create_slave(mpu->ssp[1], "zipit-lcd");
     z2_lcd = ssi_create_slave(mpu->ssp[1], "zipit-lcd");
     bus = pxa2xx_i2c_bus(mpu->i2c[0]);
     bus = pxa2xx_i2c_bus(mpu->i2c[0]);
-    i2c_create_slave(bus, "aer915", 0x55);
+    i2c_create_slave(bus, TYPE_AER915, 0x55);
     wm = i2c_create_slave(bus, "wm8750", 0x1b);
     wm = i2c_create_slave(bus, "wm8750", 0x1b);
     mpu->i2s->opaque = wm;
     mpu->i2s->opaque = wm;
     mpu->i2s->codec_out = wm8750_dac_dat;
     mpu->i2s->codec_out = wm8750_dac_dat;

+ 1 - 1
hw/audio/adlib.c

@@ -354,7 +354,7 @@ static void adlib_realizefn (DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property adlib_properties[] = {
 static Property adlib_properties[] = {
-    DEFINE_PROP_HEX32  ("iobase",  AdlibState, port, 0x220),
+    DEFINE_PROP_UINT32 ("iobase",  AdlibState, port, 0x220),
     DEFINE_PROP_UINT32 ("freq",    AdlibState, freq,  44100),
     DEFINE_PROP_UINT32 ("freq",    AdlibState, freq,  44100),
     DEFINE_PROP_END_OF_LIST (),
     DEFINE_PROP_END_OF_LIST (),
 };
 };

+ 1 - 1
hw/audio/cs4231a.c

@@ -673,7 +673,7 @@ static int cs4231a_init (ISABus *bus)
 }
 }
 
 
 static Property cs4231a_properties[] = {
 static Property cs4231a_properties[] = {
-    DEFINE_PROP_HEX32  ("iobase",  CSState, port, 0x534),
+    DEFINE_PROP_UINT32 ("iobase",  CSState, port, 0x534),
     DEFINE_PROP_UINT32 ("irq",     CSState, irq,  9),
     DEFINE_PROP_UINT32 ("irq",     CSState, irq,  9),
     DEFINE_PROP_UINT32 ("dma",     CSState, dma,  3),
     DEFINE_PROP_UINT32 ("dma",     CSState, dma,  3),
     DEFINE_PROP_END_OF_LIST (),
     DEFINE_PROP_END_OF_LIST (),

+ 1 - 1
hw/audio/gus.c

@@ -304,7 +304,7 @@ static int GUS_init (ISABus *bus)
 
 
 static Property gus_properties[] = {
 static Property gus_properties[] = {
     DEFINE_PROP_UINT32 ("freq",    GUSState, freq,        44100),
     DEFINE_PROP_UINT32 ("freq",    GUSState, freq,        44100),
-    DEFINE_PROP_HEX32  ("iobase",  GUSState, port,        0x240),
+    DEFINE_PROP_UINT32 ("iobase",  GUSState, port,        0x240),
     DEFINE_PROP_UINT32 ("irq",     GUSState, emu.gusirq,  7),
     DEFINE_PROP_UINT32 ("irq",     GUSState, emu.gusirq,  7),
     DEFINE_PROP_UINT32 ("dma",     GUSState, emu.gusdma,  3),
     DEFINE_PROP_UINT32 ("dma",     GUSState, emu.gusdma,  3),
     DEFINE_PROP_END_OF_LIST (),
     DEFINE_PROP_END_OF_LIST (),

+ 1 - 1
hw/audio/pcspk.c

@@ -181,7 +181,7 @@ static void pcspk_realizefn(DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property pcspk_properties[] = {
 static Property pcspk_properties[] = {
-    DEFINE_PROP_HEX32("iobase", PCSpkState, iobase,  -1),
+    DEFINE_PROP_UINT32("iobase", PCSpkState, iobase,  -1),
     DEFINE_PROP_PTR("pit", PCSpkState, pit),
     DEFINE_PROP_PTR("pit", PCSpkState, pit),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };

+ 2 - 2
hw/audio/sb16.c

@@ -1399,8 +1399,8 @@ static int SB16_init (ISABus *bus)
 }
 }
 
 
 static Property sb16_properties[] = {
 static Property sb16_properties[] = {
-    DEFINE_PROP_HEX32  ("version", SB16State, ver,  0x0405), /* 4.5 */
-    DEFINE_PROP_HEX32  ("iobase",  SB16State, port, 0x220),
+    DEFINE_PROP_UINT32 ("version", SB16State, ver,  0x0405), /* 4.5 */
+    DEFINE_PROP_UINT32 ("iobase",  SB16State, port, 0x220),
     DEFINE_PROP_UINT32 ("irq",     SB16State, irq,  5),
     DEFINE_PROP_UINT32 ("irq",     SB16State, irq,  5),
     DEFINE_PROP_UINT32 ("dma",     SB16State, dma,  1),
     DEFINE_PROP_UINT32 ("dma",     SB16State, dma,  1),
     DEFINE_PROP_UINT32 ("dma16",   SB16State, hdma, 5),
     DEFINE_PROP_UINT32 ("dma16",   SB16State, hdma, 5),

+ 20 - 13
hw/audio/wm8750.c

@@ -23,8 +23,12 @@ typedef struct {
     int dac_hz;
     int dac_hz;
 } WMRate;
 } WMRate;
 
 
-typedef struct {
-    I2CSlave i2c;
+#define TYPE_WM8750 "wm8750"
+#define WM8750(obj) OBJECT_CHECK(WM8750State, (obj), TYPE_WM8750)
+
+typedef struct WM8750State {
+    I2CSlave parent_obj;
+
     uint8_t i2c_data[2];
     uint8_t i2c_data[2];
     int i2c_len;
     int i2c_len;
     QEMUSoundCard card;
     QEMUSoundCard card;
@@ -256,7 +260,8 @@ static void wm8750_clk_update(WM8750State *s, int ext)
 
 
 static void wm8750_reset(I2CSlave *i2c)
 static void wm8750_reset(I2CSlave *i2c)
 {
 {
-    WM8750State *s = (WM8750State *) i2c;
+    WM8750State *s = WM8750(i2c);
+
     s->rate = &wm_rate_table[0];
     s->rate = &wm_rate_table[0];
     s->enable = 0;
     s->enable = 0;
     wm8750_clk_update(s, 1);
     wm8750_clk_update(s, 1);
@@ -299,7 +304,7 @@ static void wm8750_reset(I2CSlave *i2c)
 
 
 static void wm8750_event(I2CSlave *i2c, enum i2c_event event)
 static void wm8750_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    WM8750State *s = (WM8750State *) i2c;
+    WM8750State *s = WM8750(i2c);
 
 
     switch (event) {
     switch (event) {
     case I2C_START_SEND:
     case I2C_START_SEND:
@@ -356,7 +361,7 @@ static void wm8750_event(I2CSlave *i2c, enum i2c_event event)
 
 
 static int wm8750_tx(I2CSlave *i2c, uint8_t data)
 static int wm8750_tx(I2CSlave *i2c, uint8_t data)
 {
 {
-    WM8750State *s = (WM8750State *) i2c;
+    WM8750State *s = WM8750(i2c);
     uint8_t cmd;
     uint8_t cmd;
     uint16_t value;
     uint16_t value;
 
 
@@ -542,7 +547,7 @@ static int wm8750_tx(I2CSlave *i2c, uint8_t data)
         break;
         break;
 
 
     case WM8750_RESET:	/* Reset */
     case WM8750_RESET:	/* Reset */
-        wm8750_reset(&s->i2c);
+        wm8750_reset(I2C_SLAVE(s));
         break;
         break;
 
 
 #ifdef VERBOSE
 #ifdef VERBOSE
@@ -604,17 +609,17 @@ static const VMStateDescription vmstate_wm8750 = {
         VMSTATE_UINT8(format, WM8750State),
         VMSTATE_UINT8(format, WM8750State),
         VMSTATE_UINT8(power, WM8750State),
         VMSTATE_UINT8(power, WM8750State),
         VMSTATE_UINT8(rate_vmstate, WM8750State),
         VMSTATE_UINT8(rate_vmstate, WM8750State),
-        VMSTATE_I2C_SLAVE(i2c, WM8750State),
+        VMSTATE_I2C_SLAVE(parent_obj, WM8750State),
         VMSTATE_END_OF_LIST()
         VMSTATE_END_OF_LIST()
     }
     }
 };
 };
 
 
 static int wm8750_init(I2CSlave *i2c)
 static int wm8750_init(I2CSlave *i2c)
 {
 {
-    WM8750State *s = FROM_I2C_SLAVE(WM8750State, i2c);
+    WM8750State *s = WM8750(i2c);
 
 
     AUD_register_card(CODEC, &s->card);
     AUD_register_card(CODEC, &s->card);
-    wm8750_reset(&s->i2c);
+    wm8750_reset(I2C_SLAVE(s));
 
 
     return 0;
     return 0;
 }
 }
@@ -622,8 +627,9 @@ static int wm8750_init(I2CSlave *i2c)
 #if 0
 #if 0
 static void wm8750_fini(I2CSlave *i2c)
 static void wm8750_fini(I2CSlave *i2c)
 {
 {
-    WM8750State *s = (WM8750State *) i2c;
-    wm8750_reset(&s->i2c);
+    WM8750State *s = WM8750(i2c);
+
+    wm8750_reset(I2C_SLAVE(s));
     AUD_remove_card(&s->card);
     AUD_remove_card(&s->card);
     g_free(s);
     g_free(s);
 }
 }
@@ -632,7 +638,8 @@ static void wm8750_fini(I2CSlave *i2c)
 void wm8750_data_req_set(DeviceState *dev,
 void wm8750_data_req_set(DeviceState *dev,
                 void (*data_req)(void *, int, int), void *opaque)
                 void (*data_req)(void *, int, int), void *opaque)
 {
 {
-    WM8750State *s = FROM_I2C_SLAVE(WM8750State, I2C_SLAVE(dev));
+    WM8750State *s = WM8750(dev);
+
     s->data_req = data_req;
     s->data_req = data_req;
     s->opaque = opaque;
     s->opaque = opaque;
 }
 }
@@ -702,7 +709,7 @@ static void wm8750_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo wm8750_info = {
 static const TypeInfo wm8750_info = {
-    .name          = "wm8750",
+    .name          = TYPE_WM8750,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(WM8750State),
     .instance_size = sizeof(WM8750State),
     .class_init    = wm8750_class_init,
     .class_init    = wm8750_class_init,

+ 1 - 1
hw/block/fdc.c

@@ -2216,7 +2216,7 @@ static const VMStateDescription vmstate_isa_fdc ={
 };
 };
 
 
 static Property isa_fdc_properties[] = {
 static Property isa_fdc_properties[] = {
-    DEFINE_PROP_HEX32("iobase", FDCtrlISABus, iobase, 0x3f0),
+    DEFINE_PROP_UINT32("iobase", FDCtrlISABus, iobase, 0x3f0),
     DEFINE_PROP_UINT32("irq", FDCtrlISABus, irq, 6),
     DEFINE_PROP_UINT32("irq", FDCtrlISABus, irq, 6),
     DEFINE_PROP_UINT32("dma", FDCtrlISABus, dma, 2),
     DEFINE_PROP_UINT32("dma", FDCtrlISABus, dma, 2),
     DEFINE_PROP_DRIVE("driveA", FDCtrlISABus, state.drives[0].bs),
     DEFINE_PROP_DRIVE("driveA", FDCtrlISABus, state.drives[0].bs),

+ 1 - 1
hw/block/nand.c

@@ -632,7 +632,7 @@ DeviceState *nand_init(BlockDriverState *bdrv, int manf_id, int chip_id)
     if (nand_flash_ids[chip_id].size == 0) {
     if (nand_flash_ids[chip_id].size == 0) {
         hw_error("%s: Unsupported NAND chip ID.\n", __FUNCTION__);
         hw_error("%s: Unsupported NAND chip ID.\n", __FUNCTION__);
     }
     }
-    dev = qdev_create(NULL, "nand");
+    dev = DEVICE(object_new(TYPE_NAND));
     qdev_prop_set_uint8(dev, "manufacturer_id", manf_id);
     qdev_prop_set_uint8(dev, "manufacturer_id", manf_id);
     qdev_prop_set_uint8(dev, "chip_id", chip_id);
     qdev_prop_set_uint8(dev, "chip_id", chip_id);
     if (bdrv) {
     if (bdrv) {

+ 1 - 1
hw/char/Makefile.objs

@@ -1,4 +1,4 @@
-common-obj-$(CONFIG_IPACK) += tpci200.o ipoctal232.o ipack.o
+common-obj-$(CONFIG_IPACK) += ipoctal232.o
 common-obj-$(CONFIG_ESCC) += escc.o
 common-obj-$(CONFIG_ESCC) += escc.o
 common-obj-$(CONFIG_PARALLEL) += parallel.o
 common-obj-$(CONFIG_PARALLEL) += parallel.o
 common-obj-$(CONFIG_PL011) += pl011.o
 common-obj-$(CONFIG_PL011) += pl011.o

+ 2 - 2
hw/char/debugcon.c

@@ -110,9 +110,9 @@ static void debugcon_isa_realizefn(DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property debugcon_isa_properties[] = {
 static Property debugcon_isa_properties[] = {
-    DEFINE_PROP_HEX32("iobase", ISADebugconState, iobase, 0xe9),
+    DEFINE_PROP_UINT32("iobase", ISADebugconState, iobase, 0xe9),
     DEFINE_PROP_CHR("chardev",  ISADebugconState, state.chr),
     DEFINE_PROP_CHR("chardev",  ISADebugconState, state.chr),
-    DEFINE_PROP_HEX32("readback", ISADebugconState, state.readback, 0xe9),
+    DEFINE_PROP_UINT32("readback", ISADebugconState, state.readback, 0xe9),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 10 - 10
hw/char/ipoctal232.c

@@ -8,7 +8,7 @@
  * later version.
  * later version.
  */
  */
 
 
-#include "ipack.h"
+#include "hw/ipack/ipack.h"
 #include "qemu/bitops.h"
 #include "qemu/bitops.h"
 #include "sysemu/char.h"
 #include "sysemu/char.h"
 
 
@@ -108,7 +108,8 @@ struct SCC2698Block {
 };
 };
 
 
 struct IPOctalState {
 struct IPOctalState {
-    IPackDevice dev;
+    IPackDevice parent_obj;
+
     SCC2698Channel ch[N_CHANNELS];
     SCC2698Channel ch[N_CHANNELS];
     SCC2698Block blk[N_BLOCKS];
     SCC2698Block blk[N_BLOCKS];
     uint8_t irq_vector;
     uint8_t irq_vector;
@@ -154,7 +155,7 @@ static const VMStateDescription vmstate_ipoctal = {
     .minimum_version_id = 1,
     .minimum_version_id = 1,
     .minimum_version_id_old = 1,
     .minimum_version_id_old = 1,
     .fields      = (VMStateField[]) {
     .fields      = (VMStateField[]) {
-        VMSTATE_IPACK_DEVICE(dev, IPOctalState),
+        VMSTATE_IPACK_DEVICE(parent_obj, IPOctalState),
         VMSTATE_STRUCT_ARRAY(ch, IPOctalState, N_CHANNELS, 1,
         VMSTATE_STRUCT_ARRAY(ch, IPOctalState, N_CHANNELS, 1,
                              vmstate_scc2698_channel, SCC2698Channel),
                              vmstate_scc2698_channel, SCC2698Channel),
         VMSTATE_STRUCT_ARRAY(blk, IPOctalState, N_BLOCKS, 1,
         VMSTATE_STRUCT_ARRAY(blk, IPOctalState, N_BLOCKS, 1,
@@ -172,6 +173,7 @@ static const uint8_t id_prom_data[] = {
 
 
 static void update_irq(IPOctalState *dev, unsigned block)
 static void update_irq(IPOctalState *dev, unsigned block)
 {
 {
+    IPackDevice *idev = IPACK_DEVICE(dev);
     /* Blocks A and B interrupt on INT0#, C and D on INT1#.
     /* Blocks A and B interrupt on INT0#, C and D on INT1#.
        Thus, to get the status we have to check two blocks. */
        Thus, to get the status we have to check two blocks. */
     SCC2698Block *blk0 = &dev->blk[block];
     SCC2698Block *blk0 = &dev->blk[block];
@@ -179,9 +181,9 @@ static void update_irq(IPOctalState *dev, unsigned block)
     unsigned intno = block / 2;
     unsigned intno = block / 2;
 
 
     if ((blk0->isr & blk0->imr) || (blk1->isr & blk1->imr)) {
     if ((blk0->isr & blk0->imr) || (blk1->isr & blk1->imr)) {
-        qemu_irq_raise(dev->dev.irq[intno]);
+        qemu_irq_raise(idev->irq[intno]);
     } else {
     } else {
-        qemu_irq_lower(dev->dev.irq[intno]);
+        qemu_irq_lower(idev->irq[intno]);
     }
     }
 }
 }
 
 
@@ -534,9 +536,9 @@ static void hostdev_event(void *opaque, int event)
     }
     }
 }
 }
 
 
-static int ipoctal_init(IPackDevice *ip)
+static void ipoctal_realize(DeviceState *dev, Error **errp)
 {
 {
-    IPOctalState *s = IPOCTAL(ip);
+    IPOctalState *s = IPOCTAL(dev);
     unsigned i;
     unsigned i;
 
 
     for (i = 0; i < N_CHANNELS; i++) {
     for (i = 0; i < N_CHANNELS; i++) {
@@ -552,8 +554,6 @@ static int ipoctal_init(IPackDevice *ip)
             DPRINTF("Could not redirect channel %u, no chardev set\n", i);
             DPRINTF("Could not redirect channel %u, no chardev set\n", i);
         }
         }
     }
     }
-
-    return 0;
 }
 }
 
 
 static Property ipoctal_properties[] = {
 static Property ipoctal_properties[] = {
@@ -573,7 +573,7 @@ static void ipoctal_class_init(ObjectClass *klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
     DeviceClass *dc = DEVICE_CLASS(klass);
     IPackDeviceClass *ic = IPACK_DEVICE_CLASS(klass);
     IPackDeviceClass *ic = IPACK_DEVICE_CLASS(klass);
 
 
-    ic->init        = ipoctal_init;
+    ic->realize     = ipoctal_realize;
     ic->io_read     = io_read;
     ic->io_read     = io_read;
     ic->io_write    = io_write;
     ic->io_write    = io_write;
     ic->id_read     = id_read;
     ic->id_read     = id_read;

+ 1 - 1
hw/char/parallel.c

@@ -595,7 +595,7 @@ bool parallel_mm_init(MemoryRegion *address_space,
 
 
 static Property parallel_isa_properties[] = {
 static Property parallel_isa_properties[] = {
     DEFINE_PROP_UINT32("index", ISAParallelState, index,   -1),
     DEFINE_PROP_UINT32("index", ISAParallelState, index,   -1),
-    DEFINE_PROP_HEX32("iobase", ISAParallelState, iobase,  -1),
+    DEFINE_PROP_UINT32("iobase", ISAParallelState, iobase,  -1),
     DEFINE_PROP_UINT32("irq",   ISAParallelState, isairq,  7),
     DEFINE_PROP_UINT32("irq",   ISAParallelState, isairq,  7),
     DEFINE_PROP_CHR("chardev",  ISAParallelState, state.chr),
     DEFINE_PROP_CHR("chardev",  ISAParallelState, state.chr),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),

+ 1 - 1
hw/char/serial-isa.c

@@ -88,7 +88,7 @@ static const VMStateDescription vmstate_isa_serial = {
 
 
 static Property serial_isa_properties[] = {
 static Property serial_isa_properties[] = {
     DEFINE_PROP_UINT32("index",  ISASerialState, index,   -1),
     DEFINE_PROP_UINT32("index",  ISASerialState, index,   -1),
-    DEFINE_PROP_HEX32("iobase",  ISASerialState, iobase,  -1),
+    DEFINE_PROP_UINT32("iobase",  ISASerialState, iobase,  -1),
     DEFINE_PROP_UINT32("irq",    ISASerialState, isairq,  -1),
     DEFINE_PROP_UINT32("irq",    ISASerialState, isairq,  -1),
     DEFINE_PROP_CHR("chardev",   ISASerialState, state.chr),
     DEFINE_PROP_CHR("chardev",   ISASerialState, state.chr),
     DEFINE_PROP_UINT32("wakeup", ISASerialState, state.wakeup, 0),
     DEFINE_PROP_UINT32("wakeup", ISASerialState, state.wakeup, 0),

+ 8 - 4
hw/core/qdev-properties-system.c

@@ -109,7 +109,8 @@ static void set_drive(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_drive = {
 PropertyInfo qdev_prop_drive = {
-    .name  = "drive",
+    .name  = "str",
+    .legacy_name  = "drive",
     .get   = get_drive,
     .get   = get_drive,
     .set   = set_drive,
     .set   = set_drive,
     .release = release_drive,
     .release = release_drive,
@@ -164,7 +165,8 @@ static void set_chr(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_chr = {
 PropertyInfo qdev_prop_chr = {
-    .name  = "chr",
+    .name  = "str",
+    .legacy_name  = "chr",
     .get   = get_chr,
     .get   = get_chr,
     .set   = set_chr,
     .set   = set_chr,
     .release = release_chr,
     .release = release_chr,
@@ -242,7 +244,8 @@ static void set_netdev(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_netdev = {
 PropertyInfo qdev_prop_netdev = {
-    .name  = "netdev",
+    .name  = "str",
+    .legacy_name  = "netdev",
     .get   = get_netdev,
     .get   = get_netdev,
     .set   = set_netdev,
     .set   = set_netdev,
 };
 };
@@ -321,7 +324,8 @@ static void set_vlan(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_vlan = {
 PropertyInfo qdev_prop_vlan = {
-    .name  = "vlan",
+    .name  = "int32",
+    .legacy_name  = "vlan",
     .print = print_vlan,
     .print = print_vlan,
     .get   = get_vlan,
     .get   = get_vlan,
     .set   = set_vlan,
     .set   = set_vlan,

+ 15 - 189
hw/core/qdev-properties.c

@@ -74,13 +74,6 @@ static void bit_prop_set(DeviceState *dev, Property *props, bool val)
     }
     }
 }
 }
 
 
-static int prop_print_bit(DeviceState *dev, Property *prop, char *dest,
-                          size_t len)
-{
-    uint32_t *p = qdev_get_prop_ptr(dev, prop);
-    return snprintf(dest, len, (*p & qdev_get_prop_mask(prop)) ? "on" : "off");
-}
-
 static void prop_get_bit(Object *obj, Visitor *v, void *opaque,
 static void prop_get_bit(Object *obj, Visitor *v, void *opaque,
                     const char *name, Error **errp)
                     const char *name, Error **errp)
 {
 {
@@ -114,9 +107,8 @@ static void prop_set_bit(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_bit = {
 PropertyInfo qdev_prop_bit = {
-    .name  = "boolean",
+    .name  = "bool",
     .legacy_name  = "on/off",
     .legacy_name  = "on/off",
-    .print = prop_print_bit,
     .get   = prop_get_bit,
     .get   = prop_get_bit,
     .set   = prop_set_bit,
     .set   = prop_set_bit,
 };
 };
@@ -149,7 +141,7 @@ static void set_bool(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_bool = {
 PropertyInfo qdev_prop_bool = {
-    .name  = "boolean",
+    .name  = "bool",
     .get   = get_bool,
     .get   = get_bool,
     .set   = set_bool,
     .set   = set_bool,
 };
 };
@@ -187,40 +179,6 @@ PropertyInfo qdev_prop_uint8 = {
     .set   = set_uint8,
     .set   = set_uint8,
 };
 };
 
 
-/* --- 8bit hex value --- */
-
-static int parse_hex8(DeviceState *dev, Property *prop, const char *str)
-{
-    uint8_t *ptr = qdev_get_prop_ptr(dev, prop);
-    char *end;
-
-    if (str[0] != '0' || str[1] != 'x') {
-        return -EINVAL;
-    }
-
-    *ptr = strtoul(str, &end, 16);
-    if ((*end != '\0') || (end == str)) {
-        return -EINVAL;
-    }
-
-    return 0;
-}
-
-static int print_hex8(DeviceState *dev, Property *prop, char *dest, size_t len)
-{
-    uint8_t *ptr = qdev_get_prop_ptr(dev, prop);
-    return snprintf(dest, len, "0x%" PRIx8, *ptr);
-}
-
-PropertyInfo qdev_prop_hex8 = {
-    .name  = "uint8",
-    .legacy_name  = "hex8",
-    .parse = parse_hex8,
-    .print = print_hex8,
-    .get   = get_uint8,
-    .set   = set_uint8,
-};
-
 /* --- 16bit integer --- */
 /* --- 16bit integer --- */
 
 
 static void get_uint16(Object *obj, Visitor *v, void *opaque,
 static void get_uint16(Object *obj, Visitor *v, void *opaque,
@@ -318,40 +276,6 @@ PropertyInfo qdev_prop_int32 = {
     .set   = set_int32,
     .set   = set_int32,
 };
 };
 
 
-/* --- 32bit hex value --- */
-
-static int parse_hex32(DeviceState *dev, Property *prop, const char *str)
-{
-    uint32_t *ptr = qdev_get_prop_ptr(dev, prop);
-    char *end;
-
-    if (str[0] != '0' || str[1] != 'x') {
-        return -EINVAL;
-    }
-
-    *ptr = strtoul(str, &end, 16);
-    if ((*end != '\0') || (end == str)) {
-        return -EINVAL;
-    }
-
-    return 0;
-}
-
-static int print_hex32(DeviceState *dev, Property *prop, char *dest, size_t len)
-{
-    uint32_t *ptr = qdev_get_prop_ptr(dev, prop);
-    return snprintf(dest, len, "0x%" PRIx32, *ptr);
-}
-
-PropertyInfo qdev_prop_hex32 = {
-    .name  = "uint32",
-    .legacy_name  = "hex32",
-    .parse = parse_hex32,
-    .print = print_hex32,
-    .get   = get_uint32,
-    .set   = set_uint32,
-};
-
 /* --- 64bit integer --- */
 /* --- 64bit integer --- */
 
 
 static void get_uint64(Object *obj, Visitor *v, void *opaque,
 static void get_uint64(Object *obj, Visitor *v, void *opaque,
@@ -385,40 +309,6 @@ PropertyInfo qdev_prop_uint64 = {
     .set   = set_uint64,
     .set   = set_uint64,
 };
 };
 
 
-/* --- 64bit hex value --- */
-
-static int parse_hex64(DeviceState *dev, Property *prop, const char *str)
-{
-    uint64_t *ptr = qdev_get_prop_ptr(dev, prop);
-    char *end;
-
-    if (str[0] != '0' || str[1] != 'x') {
-        return -EINVAL;
-    }
-
-    *ptr = strtoull(str, &end, 16);
-    if ((*end != '\0') || (end == str)) {
-        return -EINVAL;
-    }
-
-    return 0;
-}
-
-static int print_hex64(DeviceState *dev, Property *prop, char *dest, size_t len)
-{
-    uint64_t *ptr = qdev_get_prop_ptr(dev, prop);
-    return snprintf(dest, len, "0x%" PRIx64, *ptr);
-}
-
-PropertyInfo qdev_prop_hex64 = {
-    .name  = "uint64",
-    .legacy_name  = "hex64",
-    .parse = parse_hex64,
-    .print = print_hex64,
-    .get   = get_uint64,
-    .set   = set_uint64,
-};
-
 /* --- string --- */
 /* --- string --- */
 
 
 static void release_string(Object *obj, const char *name, void *opaque)
 static void release_string(Object *obj, const char *name, void *opaque)
@@ -427,16 +317,6 @@ static void release_string(Object *obj, const char *name, void *opaque)
     g_free(*(char **)qdev_get_prop_ptr(DEVICE(obj), prop));
     g_free(*(char **)qdev_get_prop_ptr(DEVICE(obj), prop));
 }
 }
 
 
-static int print_string(DeviceState *dev, Property *prop, char *dest,
-                        size_t len)
-{
-    char **ptr = qdev_get_prop_ptr(dev, prop);
-    if (!*ptr) {
-        return snprintf(dest, len, "<null>");
-    }
-    return snprintf(dest, len, "\"%s\"", *ptr);
-}
-
 static void get_string(Object *obj, Visitor *v, void *opaque,
 static void get_string(Object *obj, Visitor *v, void *opaque,
                        const char *name, Error **errp)
                        const char *name, Error **errp)
 {
 {
@@ -478,8 +358,7 @@ static void set_string(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_string = {
 PropertyInfo qdev_prop_string = {
-    .name  = "string",
-    .print = print_string,
+    .name  = "str",
     .release = release_string,
     .release = release_string,
     .get   = get_string,
     .get   = get_string,
     .set   = set_string,
     .set   = set_string,
@@ -563,41 +442,31 @@ inval:
 }
 }
 
 
 PropertyInfo qdev_prop_macaddr = {
 PropertyInfo qdev_prop_macaddr = {
-    .name  = "macaddr",
+    .name  = "str",
+    .legacy_name  = "macaddr",
     .get   = get_mac,
     .get   = get_mac,
     .set   = set_mac,
     .set   = set_mac,
 };
 };
 
 
 /* --- lost tick policy --- */
 /* --- lost tick policy --- */
 
 
-static const char *lost_tick_policy_table[LOST_TICK_MAX+1] = {
-    [LOST_TICK_DISCARD] = "discard",
-    [LOST_TICK_DELAY] = "delay",
-    [LOST_TICK_MERGE] = "merge",
-    [LOST_TICK_SLEW] = "slew",
-    [LOST_TICK_MAX] = NULL,
-};
-
 QEMU_BUILD_BUG_ON(sizeof(LostTickPolicy) != sizeof(int));
 QEMU_BUILD_BUG_ON(sizeof(LostTickPolicy) != sizeof(int));
 
 
 PropertyInfo qdev_prop_losttickpolicy = {
 PropertyInfo qdev_prop_losttickpolicy = {
     .name  = "LostTickPolicy",
     .name  = "LostTickPolicy",
-    .enum_table  = lost_tick_policy_table,
+    .enum_table  = LostTickPolicy_lookup,
     .get   = get_enum,
     .get   = get_enum,
     .set   = set_enum,
     .set   = set_enum,
 };
 };
 
 
 /* --- BIOS CHS translation */
 /* --- BIOS CHS translation */
 
 
-static const char *bios_chs_trans_table[] = {
-    [BIOS_ATA_TRANSLATION_AUTO] = "auto",
-    [BIOS_ATA_TRANSLATION_NONE] = "none",
-    [BIOS_ATA_TRANSLATION_LBA]  = "lba",
-};
+QEMU_BUILD_BUG_ON(sizeof(BiosAtaTranslation) != sizeof(int));
 
 
 PropertyInfo qdev_prop_bios_chs_trans = {
 PropertyInfo qdev_prop_bios_chs_trans = {
-    .name = "bios-chs-trans",
-    .enum_table = bios_chs_trans_table,
+    .name = "BiosAtaTranslation",
+    .legacy_name = "bios-chs-trans",
+    .enum_table = BiosAtaTranslation_lookup,
     .get = get_enum,
     .get = get_enum,
     .set = set_enum,
     .set = set_enum,
 };
 };
@@ -715,7 +584,8 @@ static void set_blocksize(Object *obj, Visitor *v, void *opaque,
 }
 }
 
 
 PropertyInfo qdev_prop_blocksize = {
 PropertyInfo qdev_prop_blocksize = {
-    .name  = "blocksize",
+    .name  = "uint16",
+    .legacy_name  = "blocksize",
     .get   = get_uint16,
     .get   = get_uint16,
     .set   = set_blocksize,
     .set   = set_blocksize,
 };
 };
@@ -822,7 +692,8 @@ inval:
 }
 }
 
 
 PropertyInfo qdev_prop_pci_host_devaddr = {
 PropertyInfo qdev_prop_pci_host_devaddr = {
-    .name = "pci-host-devaddr",
+    .name = "str",
+    .legacy_name = "pci-host-devaddr",
     .get = get_pci_host_devaddr,
     .get = get_pci_host_devaddr,
     .set = set_pci_host_devaddr,
     .set = set_pci_host_devaddr,
 };
 };
@@ -987,20 +858,6 @@ void error_set_from_qdev_prop_error(Error **errp, int ret, DeviceState *dev,
     }
     }
 }
 }
 
 
-void qdev_prop_parse(DeviceState *dev, const char *name, const char *value,
-                     Error **errp)
-{
-    char *legacy_name;
-
-    legacy_name = g_strdup_printf("legacy-%s", name);
-    if (object_property_get_type(OBJECT(dev), legacy_name, NULL)) {
-        object_property_parse(OBJECT(dev), value, legacy_name, errp);
-    } else {
-        object_property_parse(OBJECT(dev), value, name, errp);
-    }
-    g_free(legacy_name);
-}
-
 void qdev_prop_set_bit(DeviceState *dev, const char *name, bool value)
 void qdev_prop_set_bit(DeviceState *dev, const char *name, bool value)
 {
 {
     object_property_set_bool(OBJECT(dev), value, name, &error_abort);
     object_property_set_bool(OBJECT(dev), value, name, &error_abort);
@@ -1093,7 +950,7 @@ void qdev_prop_set_globals_for_type(DeviceState *dev, const char *typename,
         if (strcmp(typename, prop->driver) != 0) {
         if (strcmp(typename, prop->driver) != 0) {
             continue;
             continue;
         }
         }
-        qdev_prop_parse(dev, prop->property, prop->value, &err);
+        object_property_parse(OBJECT(dev), prop->value, prop->property, &err);
         if (err != NULL) {
         if (err != NULL) {
             error_propagate(errp, err);
             error_propagate(errp, err);
             return;
             return;
@@ -1140,39 +997,8 @@ static void set_size(Object *obj, Visitor *v, void *opaque,
     visit_type_size(v, ptr, name, errp);
     visit_type_size(v, ptr, name, errp);
 }
 }
 
 
-static int parse_size(DeviceState *dev, Property *prop, const char *str)
-{
-    uint64_t *ptr = qdev_get_prop_ptr(dev, prop);
-
-    if (str != NULL) {
-        parse_option_size(prop->name, str, ptr, &error_abort);
-    }
-    return 0;
-}
-
-static int print_size(DeviceState *dev, Property *prop, char *dest, size_t len)
-{
-    static const char suffixes[] = { 'B', 'K', 'M', 'G', 'T' };
-    uint64_t div, val = *(uint64_t *)qdev_get_prop_ptr(dev, prop);
-    int i;
-
-    /* Compute floor(log2(val)).  */
-    i = 64 - clz64(val);
-
-    /* Find the power of 1024 that we'll display as the units.  */
-    i /= 10;
-    if (i >= ARRAY_SIZE(suffixes)) {
-        i = ARRAY_SIZE(suffixes) - 1;
-    }
-    div = 1ULL << (i * 10);
-
-    return snprintf(dest, len, "%0.03f%c", (double)val/div, suffixes[i]);
-}
-
 PropertyInfo qdev_prop_size = {
 PropertyInfo qdev_prop_size = {
     .name  = "size",
     .name  = "size",
-    .parse = parse_size,
-    .print = print_size,
     .get = get_size,
     .get = get_size,
     .set = set_size,
     .set = set_size,
 };
 };

+ 4 - 34
hw/core/qdev.c

@@ -588,31 +588,6 @@ static void qdev_get_legacy_property(Object *obj, Visitor *v, void *opaque,
     visit_type_str(v, &ptr, name, errp);
     visit_type_str(v, &ptr, name, errp);
 }
 }
 
 
-static void qdev_set_legacy_property(Object *obj, Visitor *v, void *opaque,
-                                     const char *name, Error **errp)
-{
-    DeviceState *dev = DEVICE(obj);
-    Property *prop = opaque;
-    Error *local_err = NULL;
-    char *ptr = NULL;
-    int ret;
-
-    if (dev->realized) {
-        qdev_prop_set_after_realize(dev, name, errp);
-        return;
-    }
-
-    visit_type_str(v, &ptr, name, &local_err);
-    if (local_err) {
-        error_propagate(errp, local_err);
-        return;
-    }
-
-    ret = prop->info->parse(dev, prop, ptr);
-    error_set_from_qdev_prop_error(errp, ret, dev, prop, ptr);
-    g_free(ptr);
-}
-
 /**
 /**
  * @qdev_add_legacy_property - adds a legacy property
  * @qdev_add_legacy_property - adds a legacy property
  *
  *
@@ -625,25 +600,20 @@ static void qdev_set_legacy_property(Object *obj, Visitor *v, void *opaque,
 void qdev_property_add_legacy(DeviceState *dev, Property *prop,
 void qdev_property_add_legacy(DeviceState *dev, Property *prop,
                               Error **errp)
                               Error **errp)
 {
 {
-    gchar *name, *type;
+    gchar *name;
 
 
     /* Register pointer properties as legacy properties */
     /* Register pointer properties as legacy properties */
-    if (!prop->info->print && !prop->info->parse &&
-        (prop->info->set || prop->info->get)) {
+    if (!prop->info->print && prop->info->get) {
         return;
         return;
     }
     }
 
 
     name = g_strdup_printf("legacy-%s", prop->name);
     name = g_strdup_printf("legacy-%s", prop->name);
-    type = g_strdup_printf("legacy<%s>",
-                           prop->info->legacy_name ?: prop->info->name);
-
-    object_property_add(OBJECT(dev), name, type,
+    object_property_add(OBJECT(dev), name, "str",
                         prop->info->print ? qdev_get_legacy_property : prop->info->get,
                         prop->info->print ? qdev_get_legacy_property : prop->info->get,
-                        prop->info->parse ? qdev_set_legacy_property : prop->info->set,
+                        NULL,
                         NULL,
                         NULL,
                         prop, errp);
                         prop, errp);
 
 
-    g_free(type);
     g_free(name);
     g_free(name);
 }
 }
 
 

+ 1 - 1
hw/display/g364fb.c

@@ -524,7 +524,7 @@ static void g364fb_sysbus_reset(DeviceState *d)
 }
 }
 
 
 static Property g364fb_sysbus_properties[] = {
 static Property g364fb_sysbus_properties[] = {
-    DEFINE_PROP_HEX32("vram_size", G364SysBusState, g364.vram_size,
+    DEFINE_PROP_UINT32("vram_size", G364SysBusState, g364.vram_size,
     8 * 1024 * 1024),
     8 * 1024 * 1024),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };

+ 12 - 6
hw/display/ssd0303.c

@@ -41,8 +41,12 @@ enum ssd0303_cmd {
     SSD0303_CMD_SKIP1
     SSD0303_CMD_SKIP1
 };
 };
 
 
+#define TYPE_SSD0303 "ssd0303"
+#define SSD0303(obj) OBJECT_CHECK(ssd0303_state, (obj), TYPE_SSD0303)
+
 typedef struct {
 typedef struct {
-    I2CSlave i2c;
+    I2CSlave parent_obj;
+
     QemuConsole *con;
     QemuConsole *con;
     int row;
     int row;
     int col;
     int col;
@@ -65,8 +69,9 @@ static int ssd0303_recv(I2CSlave *i2c)
 
 
 static int ssd0303_send(I2CSlave *i2c, uint8_t data)
 static int ssd0303_send(I2CSlave *i2c, uint8_t data)
 {
 {
-    ssd0303_state *s = (ssd0303_state *)i2c;
+    ssd0303_state *s = SSD0303(i2c);
     enum ssd0303_cmd old_cmd_state;
     enum ssd0303_cmd old_cmd_state;
+
     switch (s->mode) {
     switch (s->mode) {
     case SSD0303_IDLE:
     case SSD0303_IDLE:
         DPRINTF("byte 0x%02x\n", data);
         DPRINTF("byte 0x%02x\n", data);
@@ -175,7 +180,8 @@ static int ssd0303_send(I2CSlave *i2c, uint8_t data)
 
 
 static void ssd0303_event(I2CSlave *i2c, enum i2c_event event)
 static void ssd0303_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    ssd0303_state *s = (ssd0303_state *)i2c;
+    ssd0303_state *s = SSD0303(i2c);
+
     switch (event) {
     switch (event) {
     case I2C_FINISH:
     case I2C_FINISH:
         s->mode = SSD0303_IDLE;
         s->mode = SSD0303_IDLE;
@@ -279,7 +285,7 @@ static const VMStateDescription vmstate_ssd0303 = {
         VMSTATE_UINT32(mode, ssd0303_state),
         VMSTATE_UINT32(mode, ssd0303_state),
         VMSTATE_UINT32(cmd_state, ssd0303_state),
         VMSTATE_UINT32(cmd_state, ssd0303_state),
         VMSTATE_BUFFER(framebuffer, ssd0303_state),
         VMSTATE_BUFFER(framebuffer, ssd0303_state),
-        VMSTATE_I2C_SLAVE(i2c, ssd0303_state),
+        VMSTATE_I2C_SLAVE(parent_obj, ssd0303_state),
         VMSTATE_END_OF_LIST()
         VMSTATE_END_OF_LIST()
     }
     }
 };
 };
@@ -291,7 +297,7 @@ static const GraphicHwOps ssd0303_ops = {
 
 
 static int ssd0303_init(I2CSlave *i2c)
 static int ssd0303_init(I2CSlave *i2c)
 {
 {
-    ssd0303_state *s = FROM_I2C_SLAVE(ssd0303_state, i2c);
+    ssd0303_state *s = SSD0303(i2c);
 
 
     s->con = graphic_console_init(DEVICE(i2c), &ssd0303_ops, s);
     s->con = graphic_console_init(DEVICE(i2c), &ssd0303_ops, s);
     qemu_console_resize(s->con, 96 * MAGNIFY, 16 * MAGNIFY);
     qemu_console_resize(s->con, 96 * MAGNIFY, 16 * MAGNIFY);
@@ -311,7 +317,7 @@ static void ssd0303_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo ssd0303_info = {
 static const TypeInfo ssd0303_info = {
-    .name          = "ssd0303",
+    .name          = TYPE_SSD0303,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(ssd0303_state),
     .instance_size = sizeof(ssd0303_state),
     .class_init    = ssd0303_class_init,
     .class_init    = ssd0303_class_init,

+ 2 - 2
hw/display/tcx.c

@@ -617,11 +617,11 @@ static int tcx_init1(SysBusDevice *dev)
 }
 }
 
 
 static Property tcx_properties[] = {
 static Property tcx_properties[] = {
-    DEFINE_PROP_HEX32("vram_size", TCXState, vram_size, -1),
+    DEFINE_PROP_UINT32("vram_size", TCXState, vram_size, -1),
     DEFINE_PROP_UINT16("width",    TCXState, width,     -1),
     DEFINE_PROP_UINT16("width",    TCXState, width,     -1),
     DEFINE_PROP_UINT16("height",   TCXState, height,    -1),
     DEFINE_PROP_UINT16("height",   TCXState, height,    -1),
     DEFINE_PROP_UINT16("depth",    TCXState, depth,     -1),
     DEFINE_PROP_UINT16("depth",    TCXState, depth,     -1),
-    DEFINE_PROP_HEX64("prom_addr", TCXState, prom_addr, -1),
+    DEFINE_PROP_UINT64("prom_addr", TCXState, prom_addr, -1),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 1 - 1
hw/dma/i82374.c

@@ -149,7 +149,7 @@ static void i82374_isa_realize(DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property i82374_properties[] = {
 static Property i82374_properties[] = {
-    DEFINE_PROP_HEX32("iobase", ISAi82374State, iobase, 0x400),
+    DEFINE_PROP_UINT32("iobase", ISAi82374State, iobase, 0x400),
     DEFINE_PROP_END_OF_LIST()
     DEFINE_PROP_END_OF_LIST()
 };
 };
 
 

+ 1 - 1
hw/dma/sun4m_iommu.c

@@ -362,7 +362,7 @@ static int iommu_init1(SysBusDevice *dev)
 }
 }
 
 
 static Property iommu_properties[] = {
 static Property iommu_properties[] = {
-    DEFINE_PROP_HEX32("version", IOMMUState, version, 0),
+    DEFINE_PROP_UINT32("version", IOMMUState, version, 0),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 14 - 9
hw/gpio/max7310.c

@@ -9,8 +9,12 @@
 
 
 #include "hw/i2c/i2c.h"
 #include "hw/i2c/i2c.h"
 
 
-typedef struct {
-    I2CSlave i2c;
+#define TYPE_MAX7310 "max7310"
+#define MAX7310(obj) OBJECT_CHECK(MAX7310State, (obj), TYPE_MAX7310)
+
+typedef struct MAX7310State {
+    I2CSlave parent_obj;
+
     int i2c_command_byte;
     int i2c_command_byte;
     int len;
     int len;
 
 
@@ -25,7 +29,8 @@ typedef struct {
 
 
 static void max7310_reset(DeviceState *dev)
 static void max7310_reset(DeviceState *dev)
 {
 {
-    MAX7310State *s = FROM_I2C_SLAVE(MAX7310State, I2C_SLAVE(dev));
+    MAX7310State *s = MAX7310(dev);
+
     s->level &= s->direction;
     s->level &= s->direction;
     s->direction = 0xff;
     s->direction = 0xff;
     s->polarity = 0xf0;
     s->polarity = 0xf0;
@@ -35,7 +40,7 @@ static void max7310_reset(DeviceState *dev)
 
 
 static int max7310_rx(I2CSlave *i2c)
 static int max7310_rx(I2CSlave *i2c)
 {
 {
-    MAX7310State *s = (MAX7310State *) i2c;
+    MAX7310State *s = MAX7310(i2c);
 
 
     switch (s->command) {
     switch (s->command) {
     case 0x00:	/* Input port */
     case 0x00:	/* Input port */
@@ -70,7 +75,7 @@ static int max7310_rx(I2CSlave *i2c)
 
 
 static int max7310_tx(I2CSlave *i2c, uint8_t data)
 static int max7310_tx(I2CSlave *i2c, uint8_t data)
 {
 {
-    MAX7310State *s = (MAX7310State *) i2c;
+    MAX7310State *s = MAX7310(i2c);
     uint8_t diff;
     uint8_t diff;
     int line;
     int line;
 
 
@@ -125,7 +130,7 @@ static int max7310_tx(I2CSlave *i2c, uint8_t data)
 
 
 static void max7310_event(I2CSlave *i2c, enum i2c_event event)
 static void max7310_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    MAX7310State *s = (MAX7310State *) i2c;
+    MAX7310State *s = MAX7310(i2c);
     s->len = 0;
     s->len = 0;
 
 
     switch (event) {
     switch (event) {
@@ -156,7 +161,7 @@ static const VMStateDescription vmstate_max7310 = {
         VMSTATE_UINT8(polarity, MAX7310State),
         VMSTATE_UINT8(polarity, MAX7310State),
         VMSTATE_UINT8(status, MAX7310State),
         VMSTATE_UINT8(status, MAX7310State),
         VMSTATE_UINT8(command, MAX7310State),
         VMSTATE_UINT8(command, MAX7310State),
-        VMSTATE_I2C_SLAVE(i2c, MAX7310State),
+        VMSTATE_I2C_SLAVE(parent_obj, MAX7310State),
         VMSTATE_END_OF_LIST()
         VMSTATE_END_OF_LIST()
     }
     }
 };
 };
@@ -177,7 +182,7 @@ static void max7310_gpio_set(void *opaque, int line, int level)
  * but also accepts sequences that are not SMBus so return an I2C device.  */
  * but also accepts sequences that are not SMBus so return an I2C device.  */
 static int max7310_init(I2CSlave *i2c)
 static int max7310_init(I2CSlave *i2c)
 {
 {
-    MAX7310State *s = FROM_I2C_SLAVE(MAX7310State, i2c);
+    MAX7310State *s = MAX7310(i2c);
 
 
     qdev_init_gpio_in(&i2c->qdev, max7310_gpio_set, 8);
     qdev_init_gpio_in(&i2c->qdev, max7310_gpio_set, 8);
     qdev_init_gpio_out(&i2c->qdev, s->handler, 8);
     qdev_init_gpio_out(&i2c->qdev, s->handler, 8);
@@ -199,7 +204,7 @@ static void max7310_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo max7310_info = {
 static const TypeInfo max7310_info = {
-    .name          = "max7310",
+    .name          = TYPE_MAX7310,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(MAX7310State),
     .instance_size = sizeof(MAX7310State),
     .class_init    = max7310_class_init,
     .class_init    = max7310_class_init,

+ 3 - 3
hw/i2c/bitbang_i2c.c

@@ -46,7 +46,7 @@ typedef enum bitbang_i2c_state {
 } bitbang_i2c_state;
 } bitbang_i2c_state;
 
 
 struct bitbang_i2c_interface {
 struct bitbang_i2c_interface {
-    i2c_bus *bus;
+    I2CBus *bus;
     bitbang_i2c_state state;
     bitbang_i2c_state state;
     int last_data;
     int last_data;
     int last_clock;
     int last_clock;
@@ -170,7 +170,7 @@ int bitbang_i2c_set(bitbang_i2c_interface *i2c, int line, int level)
     abort();
     abort();
 }
 }
 
 
-bitbang_i2c_interface *bitbang_i2c_init(i2c_bus *bus)
+bitbang_i2c_interface *bitbang_i2c_init(I2CBus *bus)
 {
 {
     bitbang_i2c_interface *s;
     bitbang_i2c_interface *s;
 
 
@@ -213,7 +213,7 @@ static int gpio_i2c_init(SysBusDevice *sbd)
 {
 {
     DeviceState *dev = DEVICE(sbd);
     DeviceState *dev = DEVICE(sbd);
     GPIOI2CState *s = GPIO_I2C(dev);
     GPIOI2CState *s = GPIO_I2C(dev);
-    i2c_bus *bus;
+    I2CBus *bus;
 
 
     memory_region_init(&s->dummy_iomem, OBJECT(s), "gpio_i2c", 0);
     memory_region_init(&s->dummy_iomem, OBJECT(s), "gpio_i2c", 0);
     sysbus_init_mmio(sbd, &s->dummy_iomem);
     sysbus_init_mmio(sbd, &s->dummy_iomem);

+ 1 - 1
hw/i2c/bitbang_i2c.h

@@ -8,7 +8,7 @@ typedef struct bitbang_i2c_interface bitbang_i2c_interface;
 #define BITBANG_I2C_SDA 0
 #define BITBANG_I2C_SDA 0
 #define BITBANG_I2C_SCL 1
 #define BITBANG_I2C_SCL 1
 
 
-bitbang_i2c_interface *bitbang_i2c_init(i2c_bus *bus);
+bitbang_i2c_interface *bitbang_i2c_init(I2CBus *bus);
 int bitbang_i2c_set(bitbang_i2c_interface *i2c, int line, int level);
 int bitbang_i2c_set(bitbang_i2c_interface *i2c, int line, int level);
 
 
 #endif
 #endif

+ 16 - 16
hw/i2c/core.c

@@ -9,7 +9,7 @@
 
 
 #include "hw/i2c/i2c.h"
 #include "hw/i2c/i2c.h"
 
 
-struct i2c_bus
+struct I2CBus
 {
 {
     BusState qbus;
     BusState qbus;
     I2CSlave *current_dev;
     I2CSlave *current_dev;
@@ -23,24 +23,24 @@ static Property i2c_props[] = {
 };
 };
 
 
 #define TYPE_I2C_BUS "i2c-bus"
 #define TYPE_I2C_BUS "i2c-bus"
-#define I2C_BUS(obj) OBJECT_CHECK(i2c_bus, (obj), TYPE_I2C_BUS)
+#define I2C_BUS(obj) OBJECT_CHECK(I2CBus, (obj), TYPE_I2C_BUS)
 
 
 static const TypeInfo i2c_bus_info = {
 static const TypeInfo i2c_bus_info = {
     .name = TYPE_I2C_BUS,
     .name = TYPE_I2C_BUS,
     .parent = TYPE_BUS,
     .parent = TYPE_BUS,
-    .instance_size = sizeof(i2c_bus),
+    .instance_size = sizeof(I2CBus),
 };
 };
 
 
 static void i2c_bus_pre_save(void *opaque)
 static void i2c_bus_pre_save(void *opaque)
 {
 {
-    i2c_bus *bus = opaque;
+    I2CBus *bus = opaque;
 
 
     bus->saved_address = bus->current_dev ? bus->current_dev->address : -1;
     bus->saved_address = bus->current_dev ? bus->current_dev->address : -1;
 }
 }
 
 
 static int i2c_bus_post_load(void *opaque, int version_id)
 static int i2c_bus_post_load(void *opaque, int version_id)
 {
 {
-    i2c_bus *bus = opaque;
+    I2CBus *bus = opaque;
 
 
     /* The bus is loaded before attached devices, so load and save the
     /* The bus is loaded before attached devices, so load and save the
        current device id.  Devices will check themselves as loaded.  */
        current device id.  Devices will check themselves as loaded.  */
@@ -56,15 +56,15 @@ static const VMStateDescription vmstate_i2c_bus = {
     .pre_save = i2c_bus_pre_save,
     .pre_save = i2c_bus_pre_save,
     .post_load = i2c_bus_post_load,
     .post_load = i2c_bus_post_load,
     .fields      = (VMStateField []) {
     .fields      = (VMStateField []) {
-        VMSTATE_UINT8(saved_address, i2c_bus),
+        VMSTATE_UINT8(saved_address, I2CBus),
         VMSTATE_END_OF_LIST()
         VMSTATE_END_OF_LIST()
     }
     }
 };
 };
 
 
 /* Create a new I2C bus.  */
 /* Create a new I2C bus.  */
-i2c_bus *i2c_init_bus(DeviceState *parent, const char *name)
+I2CBus *i2c_init_bus(DeviceState *parent, const char *name)
 {
 {
-    i2c_bus *bus;
+    I2CBus *bus;
 
 
     bus = I2C_BUS(qbus_create(TYPE_I2C_BUS, parent, name));
     bus = I2C_BUS(qbus_create(TYPE_I2C_BUS, parent, name));
     vmstate_register(NULL, -1, &vmstate_i2c_bus, bus);
     vmstate_register(NULL, -1, &vmstate_i2c_bus, bus);
@@ -77,14 +77,14 @@ void i2c_set_slave_address(I2CSlave *dev, uint8_t address)
 }
 }
 
 
 /* Return nonzero if bus is busy.  */
 /* Return nonzero if bus is busy.  */
-int i2c_bus_busy(i2c_bus *bus)
+int i2c_bus_busy(I2CBus *bus)
 {
 {
     return bus->current_dev != NULL;
     return bus->current_dev != NULL;
 }
 }
 
 
 /* Returns non-zero if the address is not valid.  */
 /* Returns non-zero if the address is not valid.  */
 /* TODO: Make this handle multiple masters.  */
 /* TODO: Make this handle multiple masters.  */
-int i2c_start_transfer(i2c_bus *bus, uint8_t address, int recv)
+int i2c_start_transfer(I2CBus *bus, uint8_t address, int recv)
 {
 {
     BusChild *kid;
     BusChild *kid;
     I2CSlave *slave = NULL;
     I2CSlave *slave = NULL;
@@ -113,7 +113,7 @@ int i2c_start_transfer(i2c_bus *bus, uint8_t address, int recv)
     return 0;
     return 0;
 }
 }
 
 
-void i2c_end_transfer(i2c_bus *bus)
+void i2c_end_transfer(I2CBus *bus)
 {
 {
     I2CSlave *dev = bus->current_dev;
     I2CSlave *dev = bus->current_dev;
     I2CSlaveClass *sc;
     I2CSlaveClass *sc;
@@ -130,7 +130,7 @@ void i2c_end_transfer(i2c_bus *bus)
     bus->current_dev = NULL;
     bus->current_dev = NULL;
 }
 }
 
 
-int i2c_send(i2c_bus *bus, uint8_t data)
+int i2c_send(I2CBus *bus, uint8_t data)
 {
 {
     I2CSlave *dev = bus->current_dev;
     I2CSlave *dev = bus->current_dev;
     I2CSlaveClass *sc;
     I2CSlaveClass *sc;
@@ -147,7 +147,7 @@ int i2c_send(i2c_bus *bus, uint8_t data)
     return -1;
     return -1;
 }
 }
 
 
-int i2c_recv(i2c_bus *bus)
+int i2c_recv(I2CBus *bus)
 {
 {
     I2CSlave *dev = bus->current_dev;
     I2CSlave *dev = bus->current_dev;
     I2CSlaveClass *sc;
     I2CSlaveClass *sc;
@@ -164,7 +164,7 @@ int i2c_recv(i2c_bus *bus)
     return -1;
     return -1;
 }
 }
 
 
-void i2c_nack(i2c_bus *bus)
+void i2c_nack(I2CBus *bus)
 {
 {
     I2CSlave *dev = bus->current_dev;
     I2CSlave *dev = bus->current_dev;
     I2CSlaveClass *sc;
     I2CSlaveClass *sc;
@@ -182,7 +182,7 @@ void i2c_nack(i2c_bus *bus)
 static int i2c_slave_post_load(void *opaque, int version_id)
 static int i2c_slave_post_load(void *opaque, int version_id)
 {
 {
     I2CSlave *dev = opaque;
     I2CSlave *dev = opaque;
-    i2c_bus *bus;
+    I2CBus *bus;
     bus = I2C_BUS(qdev_get_parent_bus(DEVICE(dev)));
     bus = I2C_BUS(qdev_get_parent_bus(DEVICE(dev)));
     if (bus->saved_address == dev->address) {
     if (bus->saved_address == dev->address) {
         bus->current_dev = dev;
         bus->current_dev = dev;
@@ -210,7 +210,7 @@ static int i2c_slave_qdev_init(DeviceState *dev)
     return sc->init(s);
     return sc->init(s);
 }
 }
 
 
-DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, uint8_t addr)
+DeviceState *i2c_create_slave(I2CBus *bus, const char *name, uint8_t addr)
 {
 {
     DeviceState *dev;
     DeviceState *dev;
 
 

+ 1 - 1
hw/i2c/exynos4210_i2c.c

@@ -83,7 +83,7 @@ typedef struct Exynos4210I2CState {
     SysBusDevice parent_obj;
     SysBusDevice parent_obj;
 
 
     MemoryRegion iomem;
     MemoryRegion iomem;
-    i2c_bus *bus;
+    I2CBus *bus;
     qemu_irq irq;
     qemu_irq irq;
 
 
     uint8_t i2ccon;
     uint8_t i2ccon;

+ 2 - 2
hw/i2c/omap_i2c.c

@@ -30,7 +30,7 @@ typedef struct OMAPI2CState {
     MemoryRegion iomem;
     MemoryRegion iomem;
     qemu_irq irq;
     qemu_irq irq;
     qemu_irq drq[2];
     qemu_irq drq[2];
-    i2c_bus *bus;
+    I2CBus *bus;
 
 
     uint8_t revision;
     uint8_t revision;
     void *iclk;
     void *iclk;
@@ -491,7 +491,7 @@ static void omap_i2c_register_types(void)
     type_register_static(&omap_i2c_info);
     type_register_static(&omap_i2c_info);
 }
 }
 
 
-i2c_bus *omap_i2c_bus(DeviceState *omap_i2c)
+I2CBus *omap_i2c_bus(DeviceState *omap_i2c)
 {
 {
     OMAPI2CState *s = OMAP_I2C(omap_i2c);
     OMAPI2CState *s = OMAP_I2C(omap_i2c);
     return s->bus;
     return s->bus;

+ 1 - 1
hw/i2c/pm_smbus.c

@@ -59,7 +59,7 @@ static void smb_transaction(PMSMBus *s)
     uint8_t read = s->smb_addr & 0x01;
     uint8_t read = s->smb_addr & 0x01;
     uint8_t cmd = s->smb_cmd;
     uint8_t cmd = s->smb_cmd;
     uint8_t addr = s->smb_addr >> 1;
     uint8_t addr = s->smb_addr >> 1;
-    i2c_bus *bus = s->smbus;
+    I2CBus *bus = s->smbus;
 
 
     SMBUS_DPRINTF("SMBus trans addr=0x%02x prot=0x%02x\n", addr, prot);
     SMBUS_DPRINTF("SMBus trans addr=0x%02x prot=0x%02x\n", addr, prot);
     /* Transaction isn't exec if STS_DEV_ERR bit set */
     /* Transaction isn't exec if STS_DEV_ERR bit set */

+ 9 - 9
hw/i2c/smbus.c

@@ -208,13 +208,13 @@ static int smbus_device_init(I2CSlave *i2c)
 }
 }
 
 
 /* Master device commands.  */
 /* Master device commands.  */
-void smbus_quick_command(i2c_bus *bus, uint8_t addr, int read)
+void smbus_quick_command(I2CBus *bus, uint8_t addr, int read)
 {
 {
     i2c_start_transfer(bus, addr, read);
     i2c_start_transfer(bus, addr, read);
     i2c_end_transfer(bus);
     i2c_end_transfer(bus);
 }
 }
 
 
-uint8_t smbus_receive_byte(i2c_bus *bus, uint8_t addr)
+uint8_t smbus_receive_byte(I2CBus *bus, uint8_t addr)
 {
 {
     uint8_t data;
     uint8_t data;
 
 
@@ -225,14 +225,14 @@ uint8_t smbus_receive_byte(i2c_bus *bus, uint8_t addr)
     return data;
     return data;
 }
 }
 
 
-void smbus_send_byte(i2c_bus *bus, uint8_t addr, uint8_t data)
+void smbus_send_byte(I2CBus *bus, uint8_t addr, uint8_t data)
 {
 {
     i2c_start_transfer(bus, addr, 0);
     i2c_start_transfer(bus, addr, 0);
     i2c_send(bus, data);
     i2c_send(bus, data);
     i2c_end_transfer(bus);
     i2c_end_transfer(bus);
 }
 }
 
 
-uint8_t smbus_read_byte(i2c_bus *bus, uint8_t addr, uint8_t command)
+uint8_t smbus_read_byte(I2CBus *bus, uint8_t addr, uint8_t command)
 {
 {
     uint8_t data;
     uint8_t data;
     i2c_start_transfer(bus, addr, 0);
     i2c_start_transfer(bus, addr, 0);
@@ -244,7 +244,7 @@ uint8_t smbus_read_byte(i2c_bus *bus, uint8_t addr, uint8_t command)
     return data;
     return data;
 }
 }
 
 
-void smbus_write_byte(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t data)
+void smbus_write_byte(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t data)
 {
 {
     i2c_start_transfer(bus, addr, 0);
     i2c_start_transfer(bus, addr, 0);
     i2c_send(bus, command);
     i2c_send(bus, command);
@@ -252,7 +252,7 @@ void smbus_write_byte(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t data)
     i2c_end_transfer(bus);
     i2c_end_transfer(bus);
 }
 }
 
 
-uint16_t smbus_read_word(i2c_bus *bus, uint8_t addr, uint8_t command)
+uint16_t smbus_read_word(I2CBus *bus, uint8_t addr, uint8_t command)
 {
 {
     uint16_t data;
     uint16_t data;
     i2c_start_transfer(bus, addr, 0);
     i2c_start_transfer(bus, addr, 0);
@@ -265,7 +265,7 @@ uint16_t smbus_read_word(i2c_bus *bus, uint8_t addr, uint8_t command)
     return data;
     return data;
 }
 }
 
 
-void smbus_write_word(i2c_bus *bus, uint8_t addr, uint8_t command, uint16_t data)
+void smbus_write_word(I2CBus *bus, uint8_t addr, uint8_t command, uint16_t data)
 {
 {
     i2c_start_transfer(bus, addr, 0);
     i2c_start_transfer(bus, addr, 0);
     i2c_send(bus, command);
     i2c_send(bus, command);
@@ -274,7 +274,7 @@ void smbus_write_word(i2c_bus *bus, uint8_t addr, uint8_t command, uint16_t data
     i2c_end_transfer(bus);
     i2c_end_transfer(bus);
 }
 }
 
 
-int smbus_read_block(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t *data)
+int smbus_read_block(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t *data)
 {
 {
     int len;
     int len;
     int i;
     int i;
@@ -292,7 +292,7 @@ int smbus_read_block(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t *data)
     return len;
     return len;
 }
 }
 
 
-void smbus_write_block(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t *data,
+void smbus_write_block(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t *data,
                        int len)
                        int len)
 {
 {
     int i;
     int i;

+ 1 - 1
hw/i2c/smbus_eeprom.c

@@ -139,7 +139,7 @@ static void smbus_eeprom_register_types(void)
 
 
 type_init(smbus_eeprom_register_types)
 type_init(smbus_eeprom_register_types)
 
 
-void smbus_eeprom_init(i2c_bus *smbus, int nb_eeprom,
+void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom,
                        const uint8_t *eeprom_spd, int eeprom_spd_size)
                        const uint8_t *eeprom_spd, int eeprom_spd_size)
 {
 {
     int i;
     int i;

+ 1 - 1
hw/i2c/smbus_ich9.c

@@ -108,7 +108,7 @@ static void ich9_smb_class_init(ObjectClass *klass, void *data)
     dc->cannot_instantiate_with_device_add_yet = true;
     dc->cannot_instantiate_with_device_add_yet = true;
 }
 }
 
 
-i2c_bus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base)
+I2CBus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base)
 {
 {
     PCIDevice *d =
     PCIDevice *d =
         pci_create_simple_multifunction(bus, devfn, true, TYPE_ICH9_SMB_DEVICE);
         pci_create_simple_multifunction(bus, devfn, true, TYPE_ICH9_SMB_DEVICE);

+ 1 - 1
hw/i2c/versatile_i2c.c

@@ -81,7 +81,7 @@ static int versatile_i2c_init(SysBusDevice *sbd)
 {
 {
     DeviceState *dev = DEVICE(sbd);
     DeviceState *dev = DEVICE(sbd);
     VersatileI2CState *s = VERSATILE_I2C(dev);
     VersatileI2CState *s = VERSATILE_I2C(dev);
-    i2c_bus *bus;
+    I2CBus *bus;
 
 
     bus = i2c_init_bus(dev, "i2c");
     bus = i2c_init_bus(dev, "i2c");
     s->bitbang = bitbang_i2c_init(bus);
     s->bitbang = bitbang_i2c_init(bus);

+ 4 - 4
hw/i386/kvm/i8254.c

@@ -268,9 +268,9 @@ static void kvm_pit_realizefn(DeviceState *dev, Error **errp)
         return;
         return;
     }
     }
     switch (s->lost_tick_policy) {
     switch (s->lost_tick_policy) {
-    case LOST_TICK_DELAY:
+    case LOST_TICK_POLICY_DELAY:
         break; /* enabled by default */
         break; /* enabled by default */
-    case LOST_TICK_DISCARD:
+    case LOST_TICK_POLICY_DISCARD:
         if (kvm_check_extension(kvm_state, KVM_CAP_REINJECT_CONTROL)) {
         if (kvm_check_extension(kvm_state, KVM_CAP_REINJECT_CONTROL)) {
             struct kvm_reinject_control control = { .pit_reinject = 0 };
             struct kvm_reinject_control control = { .pit_reinject = 0 };
 
 
@@ -298,9 +298,9 @@ static void kvm_pit_realizefn(DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property kvm_pit_properties[] = {
 static Property kvm_pit_properties[] = {
-    DEFINE_PROP_HEX32("iobase", PITCommonState, iobase,  -1),
+    DEFINE_PROP_UINT32("iobase", PITCommonState, iobase,  -1),
     DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", KVMPITState,
     DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", KVMPITState,
-                               lost_tick_policy, LOST_TICK_DELAY),
+                               lost_tick_policy, LOST_TICK_POLICY_DELAY),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 1 - 1
hw/i386/pc_piix.c

@@ -236,7 +236,7 @@ static void pc_init1(QEMUMachineInitArgs *args,
     }
     }
 
 
     if (pci_enabled && acpi_enabled) {
     if (pci_enabled && acpi_enabled) {
-        i2c_bus *smbus;
+        I2CBus *smbus;
 
 
         smi_irq = qemu_allocate_irqs(pc_acpi_smi_interrupt, first_cpu, 1);
         smi_irq = qemu_allocate_irqs(pc_acpi_smi_interrupt, first_cpu, 1);
         /* TODO: Populate SPD eeprom data.  */
         /* TODO: Populate SPD eeprom data.  */

+ 2 - 2
hw/ide/isa.c

@@ -104,8 +104,8 @@ ISADevice *isa_ide_init(ISABus *bus, int iobase, int iobase2, int isairq,
 }
 }
 
 
 static Property isa_ide_properties[] = {
 static Property isa_ide_properties[] = {
-    DEFINE_PROP_HEX32("iobase",  ISAIDEState, iobase,  0x1f0),
-    DEFINE_PROP_HEX32("iobase2", ISAIDEState, iobase2, 0x3f6),
+    DEFINE_PROP_UINT32("iobase",  ISAIDEState, iobase,  0x1f0),
+    DEFINE_PROP_UINT32("iobase2", ISAIDEState, iobase2, 0x3f6),
     DEFINE_PROP_UINT32("irq",    ISAIDEState, isairq,  14),
     DEFINE_PROP_UINT32("irq",    ISAIDEState, isairq,  14),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };

+ 1 - 1
hw/ide/qdev.c

@@ -206,7 +206,7 @@ static int ide_drive_initfn(IDEDevice *dev)
 #define DEFINE_IDE_DEV_PROPERTIES()                     \
 #define DEFINE_IDE_DEV_PROPERTIES()                     \
     DEFINE_BLOCK_PROPERTIES(IDEDrive, dev.conf),        \
     DEFINE_BLOCK_PROPERTIES(IDEDrive, dev.conf),        \
     DEFINE_PROP_STRING("ver",  IDEDrive, dev.version),  \
     DEFINE_PROP_STRING("ver",  IDEDrive, dev.version),  \
-    DEFINE_PROP_HEX64("wwn",  IDEDrive, dev.wwn, 0),    \
+    DEFINE_PROP_UINT64("wwn",  IDEDrive, dev.wwn, 0),    \
     DEFINE_PROP_STRING("serial",  IDEDrive, dev.serial),\
     DEFINE_PROP_STRING("serial",  IDEDrive, dev.serial),\
     DEFINE_PROP_STRING("model", IDEDrive, dev.model)
     DEFINE_PROP_STRING("model", IDEDrive, dev.model)
 
 

+ 13 - 9
hw/input/lm832x.c

@@ -23,8 +23,12 @@
 #include "qemu/timer.h"
 #include "qemu/timer.h"
 #include "ui/console.h"
 #include "ui/console.h"
 
 
+#define TYPE_LM8323 "lm8323"
+#define LM8323(obj) OBJECT_CHECK(LM823KbdState, (obj), TYPE_LM8323)
+
 typedef struct {
 typedef struct {
-    I2CSlave i2c;
+    I2CSlave parent_obj;
+
     uint8_t i2c_dir;
     uint8_t i2c_dir;
     uint8_t i2c_cycle;
     uint8_t i2c_cycle;
     uint8_t reg;
     uint8_t reg;
@@ -380,7 +384,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
 
 
 static void lm_i2c_event(I2CSlave *i2c, enum i2c_event event)
 static void lm_i2c_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, i2c);
+    LM823KbdState *s = LM8323(i2c);
 
 
     switch (event) {
     switch (event) {
     case I2C_START_RECV:
     case I2C_START_RECV:
@@ -396,14 +400,14 @@ static void lm_i2c_event(I2CSlave *i2c, enum i2c_event event)
 
 
 static int lm_i2c_rx(I2CSlave *i2c)
 static int lm_i2c_rx(I2CSlave *i2c)
 {
 {
-    LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, i2c);
+    LM823KbdState *s = LM8323(i2c);
 
 
     return lm_kbd_read(s, s->reg, s->i2c_cycle ++);
     return lm_kbd_read(s, s->reg, s->i2c_cycle ++);
 }
 }
 
 
 static int lm_i2c_tx(I2CSlave *i2c, uint8_t data)
 static int lm_i2c_tx(I2CSlave *i2c, uint8_t data)
 {
 {
-    LM823KbdState *s = (LM823KbdState *) i2c;
+    LM823KbdState *s = LM8323(i2c);
 
 
     if (!s->i2c_cycle)
     if (!s->i2c_cycle)
         s->reg = data;
         s->reg = data;
@@ -431,7 +435,7 @@ static const VMStateDescription vmstate_lm_kbd = {
     .minimum_version_id_old = 0,
     .minimum_version_id_old = 0,
     .post_load = lm_kbd_post_load,
     .post_load = lm_kbd_post_load,
     .fields      = (VMStateField []) {
     .fields      = (VMStateField []) {
-        VMSTATE_I2C_SLAVE(i2c, LM823KbdState),
+        VMSTATE_I2C_SLAVE(parent_obj, LM823KbdState),
         VMSTATE_UINT8(i2c_dir, LM823KbdState),
         VMSTATE_UINT8(i2c_dir, LM823KbdState),
         VMSTATE_UINT8(i2c_cycle, LM823KbdState),
         VMSTATE_UINT8(i2c_cycle, LM823KbdState),
         VMSTATE_UINT8(reg, LM823KbdState),
         VMSTATE_UINT8(reg, LM823KbdState),
@@ -460,13 +464,13 @@ static const VMStateDescription vmstate_lm_kbd = {
 
 
 static int lm8323_init(I2CSlave *i2c)
 static int lm8323_init(I2CSlave *i2c)
 {
 {
-    LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, i2c);
+    LM823KbdState *s = LM8323(i2c);
 
 
     s->model = 0x8323;
     s->model = 0x8323;
     s->pwm.tm[0] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm0_tick, s);
     s->pwm.tm[0] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm0_tick, s);
     s->pwm.tm[1] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm1_tick, s);
     s->pwm.tm[1] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm1_tick, s);
     s->pwm.tm[2] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm2_tick, s);
     s->pwm.tm[2] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm2_tick, s);
-    qdev_init_gpio_out(&i2c->qdev, &s->nirq, 1);
+    qdev_init_gpio_out(DEVICE(i2c), &s->nirq, 1);
 
 
     lm_kbd_reset(s);
     lm_kbd_reset(s);
 
 
@@ -476,7 +480,7 @@ static int lm8323_init(I2CSlave *i2c)
 
 
 void lm832x_key_event(DeviceState *dev, int key, int state)
 void lm832x_key_event(DeviceState *dev, int key, int state)
 {
 {
-    LM823KbdState *s = FROM_I2C_SLAVE(LM823KbdState, I2C_SLAVE(dev));
+    LM823KbdState *s = LM8323(dev);
 
 
     if ((s->status & INT_ERROR) && (s->error & ERR_FIFOOVR))
     if ((s->status & INT_ERROR) && (s->error & ERR_FIFOOVR))
         return;
         return;
@@ -507,7 +511,7 @@ static void lm8323_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo lm8323_info = {
 static const TypeInfo lm8323_info = {
-    .name          = "lm8323",
+    .name          = TYPE_LM8323,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(LM823KbdState),
     .instance_size = sizeof(LM823KbdState),
     .class_init    = lm8323_class_init,
     .class_init    = lm8323_class_init,

+ 3 - 3
hw/intc/i8259_common.c

@@ -123,9 +123,9 @@ static const VMStateDescription vmstate_pic_common = {
 };
 };
 
 
 static Property pic_properties_common[] = {
 static Property pic_properties_common[] = {
-    DEFINE_PROP_HEX32("iobase", PICCommonState, iobase,  -1),
-    DEFINE_PROP_HEX32("elcr_addr", PICCommonState, elcr_addr,  -1),
-    DEFINE_PROP_HEX8("elcr_mask", PICCommonState, elcr_mask,  -1),
+    DEFINE_PROP_UINT32("iobase", PICCommonState, iobase,  -1),
+    DEFINE_PROP_UINT32("elcr_addr", PICCommonState, elcr_addr,  -1),
+    DEFINE_PROP_UINT8("elcr_mask", PICCommonState, elcr_mask,  -1),
     DEFINE_PROP_BIT("master", PICCommonState, master,  0, false),
     DEFINE_PROP_BIT("master", PICCommonState, master,  0, false),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };

+ 2 - 0
hw/ipack/Makefile.objs

@@ -0,0 +1,2 @@
+common-obj-$(CONFIG_IPACK) += ipack.o
+common-obj-$(CONFIG_IPACK) += tpci200.o

+ 23 - 20
hw/char/ipack.c → hw/ipack/ipack.c

@@ -8,7 +8,7 @@
  * later version.
  * later version.
  */
  */
 
 
-#include "ipack.h"
+#include "hw/ipack/ipack.h"
 
 
 IPackDevice *ipack_device_find(IPackBus *bus, int32_t slot)
 IPackDevice *ipack_device_find(IPackBus *bus, int32_t slot)
 {
 {
@@ -34,37 +34,39 @@ void ipack_bus_new_inplace(IPackBus *bus, size_t bus_size,
     bus->set_irq = handler;
     bus->set_irq = handler;
 }
 }
 
 
-static int ipack_device_dev_init(DeviceState *qdev)
+static void ipack_device_realize(DeviceState *dev, Error **errp)
 {
 {
-    IPackBus *bus = IPACK_BUS(qdev_get_parent_bus(qdev));
-    IPackDevice *dev = IPACK_DEVICE(qdev);
+    IPackDevice *idev = IPACK_DEVICE(dev);
+    IPackBus *bus = IPACK_BUS(qdev_get_parent_bus(dev));
     IPackDeviceClass *k = IPACK_DEVICE_GET_CLASS(dev);
     IPackDeviceClass *k = IPACK_DEVICE_GET_CLASS(dev);
 
 
-    if (dev->slot < 0) {
-        dev->slot = bus->free_slot;
+    if (idev->slot < 0) {
+        idev->slot = bus->free_slot;
     }
     }
-    if (dev->slot >= bus->n_slots) {
-        return -1;
+    if (idev->slot >= bus->n_slots) {
+        error_setg(errp, "Only %" PRIu8 " slots available.", bus->n_slots);
+        return;
     }
     }
-    bus->free_slot = dev->slot + 1;
+    bus->free_slot = idev->slot + 1;
 
 
-    dev->irq = qemu_allocate_irqs(bus->set_irq, dev, 2);
+    idev->irq = qemu_allocate_irqs(bus->set_irq, idev, 2);
 
 
-    return k->init(dev);
+    k->realize(dev, errp);
 }
 }
 
 
-static int ipack_device_dev_exit(DeviceState *qdev)
+static void ipack_device_unrealize(DeviceState *dev, Error **errp)
 {
 {
-    IPackDevice *dev = IPACK_DEVICE(qdev);
+    IPackDevice *idev = IPACK_DEVICE(dev);
     IPackDeviceClass *k = IPACK_DEVICE_GET_CLASS(dev);
     IPackDeviceClass *k = IPACK_DEVICE_GET_CLASS(dev);
+    Error *err = NULL;
 
 
-    if (k->exit) {
-        k->exit(dev);
+    if (k->unrealize) {
+        k->unrealize(dev, &err);
+        error_propagate(errp, err);
+        return;
     }
     }
 
 
-    qemu_free_irqs(dev->irq);
-
-    return 0;
+    qemu_free_irqs(idev->irq);
 }
 }
 
 
 static Property ipack_device_props[] = {
 static Property ipack_device_props[] = {
@@ -75,10 +77,11 @@ static Property ipack_device_props[] = {
 static void ipack_device_class_init(ObjectClass *klass, void *data)
 static void ipack_device_class_init(ObjectClass *klass, void *data)
 {
 {
     DeviceClass *k = DEVICE_CLASS(klass);
     DeviceClass *k = DEVICE_CLASS(klass);
+
     set_bit(DEVICE_CATEGORY_INPUT, k->categories);
     set_bit(DEVICE_CATEGORY_INPUT, k->categories);
     k->bus_type = TYPE_IPACK_BUS;
     k->bus_type = TYPE_IPACK_BUS;
-    k->init = ipack_device_dev_init;
-    k->exit = ipack_device_dev_exit;
+    k->realize = ipack_device_realize;
+    k->unrealize = ipack_device_unrealize;
     k->props = ipack_device_props;
     k->props = ipack_device_props;
 }
 }
 
 

+ 1 - 1
hw/char/tpci200.c → hw/ipack/tpci200.c

@@ -8,7 +8,7 @@
  * later version.
  * later version.
  */
  */
 
 
-#include "ipack.h"
+#include "hw/ipack/ipack.h"
 #include "hw/pci/pci.h"
 #include "hw/pci/pci.h"
 #include "qemu/bitops.h"
 #include "qemu/bitops.h"
 #include <stdio.h>
 #include <stdio.h>

+ 1 - 1
hw/isa/pc87312.c

@@ -369,7 +369,7 @@ static const VMStateDescription vmstate_pc87312 = {
 };
 };
 
 
 static Property pc87312_properties[] = {
 static Property pc87312_properties[] = {
-    DEFINE_PROP_HEX32("iobase", PC87312State, iobase, 0x398),
+    DEFINE_PROP_UINT32("iobase", PC87312State, iobase, 0x398),
     DEFINE_PROP_UINT8("config", PC87312State, config, 1),
     DEFINE_PROP_UINT8("config", PC87312State, config, 1),
     DEFINE_PROP_END_OF_LIST()
     DEFINE_PROP_END_OF_LIST()
 };
 };

+ 2 - 2
hw/isa/vt82c686.c

@@ -369,8 +369,8 @@ static int vt82c686b_pm_initfn(PCIDevice *dev)
     return 0;
     return 0;
 }
 }
 
 
-i2c_bus *vt82c686b_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
-                       qemu_irq sci_irq)
+I2CBus *vt82c686b_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
+                          qemu_irq sci_irq)
 {
 {
     PCIDevice *dev;
     PCIDevice *dev;
     VT686PMState *s;
     VT686PMState *s;

+ 1 - 1
hw/mips/mips_fulong2e.c

@@ -276,7 +276,7 @@ static void mips_fulong2e_init(QEMUMachineInitArgs *args)
     qemu_irq *cpu_exit_irq;
     qemu_irq *cpu_exit_irq;
     PCIBus *pci_bus;
     PCIBus *pci_bus;
     ISABus *isa_bus;
     ISABus *isa_bus;
-    i2c_bus *smbus;
+    I2CBus *smbus;
     int i;
     int i;
     DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
     DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
     MIPSCPU *cpu;
     MIPSCPU *cpu;

+ 1 - 1
hw/mips/mips_malta.c

@@ -900,7 +900,7 @@ void mips_malta_init(QEMUMachineInitArgs *args)
     qemu_irq *isa_irq;
     qemu_irq *isa_irq;
     qemu_irq *cpu_exit_irq;
     qemu_irq *cpu_exit_irq;
     int piix4_devfn;
     int piix4_devfn;
-    i2c_bus *smbus;
+    I2CBus *smbus;
     int i;
     int i;
     DriveInfo *dinfo;
     DriveInfo *dinfo;
     DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
     DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];

+ 1 - 1
hw/misc/applesmc.c

@@ -249,7 +249,7 @@ static void applesmc_isa_realize(DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property applesmc_isa_properties[] = {
 static Property applesmc_isa_properties[] = {
-    DEFINE_PROP_HEX32("iobase", AppleSMCState, iobase,
+    DEFINE_PROP_UINT32("iobase", AppleSMCState, iobase,
                       APPLESMC_DEFAULT_IOBASE),
                       APPLESMC_DEFAULT_IOBASE),
     DEFINE_PROP_STRING("osk", AppleSMCState, osk),
     DEFINE_PROP_STRING("osk", AppleSMCState, osk),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),

+ 2 - 2
hw/misc/debugexit.c

@@ -47,8 +47,8 @@ static void debug_exit_realizefn(DeviceState *d, Error **errp)
 }
 }
 
 
 static Property debug_exit_properties[] = {
 static Property debug_exit_properties[] = {
-    DEFINE_PROP_HEX32("iobase", ISADebugExitState, iobase, 0x501),
-    DEFINE_PROP_HEX32("iosize", ISADebugExitState, iosize, 0x02),
+    DEFINE_PROP_UINT32("iobase", ISADebugExitState, iobase, 0x501),
+    DEFINE_PROP_UINT32("iosize", ISADebugExitState, iosize, 0x02),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 1 - 1
hw/misc/eccmemctl.c

@@ -314,7 +314,7 @@ static int ecc_init1(SysBusDevice *dev)
 }
 }
 
 
 static Property ecc_properties[] = {
 static Property ecc_properties[] = {
-    DEFINE_PROP_HEX32("version", ECCState, version, -1),
+    DEFINE_PROP_UINT32("version", ECCState, version, -1),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 1 - 1
hw/net/ne2000-isa.c

@@ -86,7 +86,7 @@ static void isa_ne2000_realizefn(DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property ne2000_isa_properties[] = {
 static Property ne2000_isa_properties[] = {
-    DEFINE_PROP_HEX32("iobase", ISANE2000State, iobase, 0x300),
+    DEFINE_PROP_UINT32("iobase", ISANE2000State, iobase, 0x300),
     DEFINE_PROP_UINT32("irq",   ISANE2000State, isairq, 9),
     DEFINE_PROP_UINT32("irq",   ISANE2000State, isairq, 9),
     DEFINE_NIC_PROPERTIES(ISANE2000State, ne2000.c),
     DEFINE_NIC_PROPERTIES(ISANE2000State, ne2000.c),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),

+ 2 - 2
hw/nvram/fw_cfg.c

@@ -584,8 +584,8 @@ static void fw_cfg_realize(DeviceState *dev, Error **errp)
 }
 }
 
 
 static Property fw_cfg_properties[] = {
 static Property fw_cfg_properties[] = {
-    DEFINE_PROP_HEX32("ctl_iobase", FWCfgState, ctl_iobase, -1),
-    DEFINE_PROP_HEX32("data_iobase", FWCfgState, data_iobase, -1),
+    DEFINE_PROP_UINT32("ctl_iobase", FWCfgState, ctl_iobase, -1),
+    DEFINE_PROP_UINT32("data_iobase", FWCfgState, data_iobase, -1),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 2 - 2
hw/ppc/Makefile.objs

@@ -10,9 +10,9 @@ obj-y += ppc4xx_pci.o
 # PReP
 # PReP
 obj-$(CONFIG_PREP) += prep.o
 obj-$(CONFIG_PREP) += prep.o
 # OldWorld PowerMac
 # OldWorld PowerMac
-obj-y += mac_oldworld.o
+obj-$(CONFIG_MAC) += mac_oldworld.o
 # NewWorld PowerMac
 # NewWorld PowerMac
-obj-y += mac_newworld.o
+obj-$(CONFIG_MAC) += mac_newworld.o
 # e500
 # e500
 obj-$(CONFIG_E500) += e500.o mpc8544ds.o e500plat.o
 obj-$(CONFIG_E500) += e500.o mpc8544ds.o e500plat.o
 obj-$(CONFIG_E500) += mpc8544_guts.o ppce500_spin.o
 obj-$(CONFIG_E500) += mpc8544_guts.o ppce500_spin.o

+ 8 - 8
hw/ppc/spapr_pci.c

@@ -651,14 +651,14 @@ static void spapr_phb_reset(DeviceState *qdev)
 
 
 static Property spapr_phb_properties[] = {
 static Property spapr_phb_properties[] = {
     DEFINE_PROP_INT32("index", sPAPRPHBState, index, -1),
     DEFINE_PROP_INT32("index", sPAPRPHBState, index, -1),
-    DEFINE_PROP_HEX64("buid", sPAPRPHBState, buid, -1),
-    DEFINE_PROP_HEX32("liobn", sPAPRPHBState, dma_liobn, -1),
-    DEFINE_PROP_HEX64("mem_win_addr", sPAPRPHBState, mem_win_addr, -1),
-    DEFINE_PROP_HEX64("mem_win_size", sPAPRPHBState, mem_win_size,
-                      SPAPR_PCI_MMIO_WIN_SIZE),
-    DEFINE_PROP_HEX64("io_win_addr", sPAPRPHBState, io_win_addr, -1),
-    DEFINE_PROP_HEX64("io_win_size", sPAPRPHBState, io_win_size,
-                      SPAPR_PCI_IO_WIN_SIZE),
+    DEFINE_PROP_UINT64("buid", sPAPRPHBState, buid, -1),
+    DEFINE_PROP_UINT32("liobn", sPAPRPHBState, dma_liobn, -1),
+    DEFINE_PROP_UINT64("mem_win_addr", sPAPRPHBState, mem_win_addr, -1),
+    DEFINE_PROP_UINT64("mem_win_size", sPAPRPHBState, mem_win_size,
+                       SPAPR_PCI_MMIO_WIN_SIZE),
+    DEFINE_PROP_UINT64("io_win_addr", sPAPRPHBState, io_win_addr, -1),
+    DEFINE_PROP_UINT64("io_win_size", sPAPRPHBState, io_win_size,
+                       SPAPR_PCI_IO_WIN_SIZE),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 1 - 1
hw/scsi/megasas.c

@@ -2195,7 +2195,7 @@ static Property megasas_properties[] = {
     DEFINE_PROP_UINT32("max_cmds", MegasasState, fw_cmds,
     DEFINE_PROP_UINT32("max_cmds", MegasasState, fw_cmds,
                        MEGASAS_DEFAULT_FRAMES),
                        MEGASAS_DEFAULT_FRAMES),
     DEFINE_PROP_STRING("hba_serial", MegasasState, hba_serial),
     DEFINE_PROP_STRING("hba_serial", MegasasState, hba_serial),
-    DEFINE_PROP_HEX64("sas_address", MegasasState, sas_addr, 0),
+    DEFINE_PROP_UINT64("sas_address", MegasasState, sas_addr, 0),
 #ifdef USE_MSIX
 #ifdef USE_MSIX
     DEFINE_PROP_BIT("use_msix", MegasasState, flags,
     DEFINE_PROP_BIT("use_msix", MegasasState, flags,
                     MEGASAS_FLAG_USE_MSIX, false),
                     MEGASAS_FLAG_USE_MSIX, false),

+ 3 - 3
hw/scsi/scsi-disk.c

@@ -2535,7 +2535,7 @@ static Property scsi_hd_properties[] = {
                     SCSI_DISK_F_REMOVABLE, false),
                     SCSI_DISK_F_REMOVABLE, false),
     DEFINE_PROP_BIT("dpofua", SCSIDiskState, features,
     DEFINE_PROP_BIT("dpofua", SCSIDiskState, features,
                     SCSI_DISK_F_DPOFUA, false),
                     SCSI_DISK_F_DPOFUA, false),
-    DEFINE_PROP_HEX64("wwn", SCSIDiskState, wwn, 0),
+    DEFINE_PROP_UINT64("wwn", SCSIDiskState, wwn, 0),
     DEFINE_PROP_UINT64("max_unmap_size", SCSIDiskState, max_unmap_size,
     DEFINE_PROP_UINT64("max_unmap_size", SCSIDiskState, max_unmap_size,
                        DEFAULT_MAX_UNMAP_SIZE),
                        DEFAULT_MAX_UNMAP_SIZE),
     DEFINE_BLOCK_CHS_PROPERTIES(SCSIDiskState, qdev.conf),
     DEFINE_BLOCK_CHS_PROPERTIES(SCSIDiskState, qdev.conf),
@@ -2583,7 +2583,7 @@ static const TypeInfo scsi_hd_info = {
 
 
 static Property scsi_cd_properties[] = {
 static Property scsi_cd_properties[] = {
     DEFINE_SCSI_DISK_PROPERTIES(),
     DEFINE_SCSI_DISK_PROPERTIES(),
-    DEFINE_PROP_HEX64("wwn", SCSIDiskState, wwn, 0),
+    DEFINE_PROP_UINT64("wwn", SCSIDiskState, wwn, 0),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 
@@ -2646,7 +2646,7 @@ static Property scsi_disk_properties[] = {
                     SCSI_DISK_F_REMOVABLE, false),
                     SCSI_DISK_F_REMOVABLE, false),
     DEFINE_PROP_BIT("dpofua", SCSIDiskState, features,
     DEFINE_PROP_BIT("dpofua", SCSIDiskState, features,
                     SCSI_DISK_F_DPOFUA, false),
                     SCSI_DISK_F_DPOFUA, false),
-    DEFINE_PROP_HEX64("wwn", SCSIDiskState, wwn, 0),
+    DEFINE_PROP_UINT64("wwn", SCSIDiskState, wwn, 0),
     DEFINE_PROP_UINT64("max_unmap_size", SCSIDiskState, max_unmap_size,
     DEFINE_PROP_UINT64("max_unmap_size", SCSIDiskState, max_unmap_size,
                        DEFAULT_MAX_UNMAP_SIZE),
                        DEFAULT_MAX_UNMAP_SIZE),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),

+ 2 - 2
hw/sd/sdhci.c

@@ -1233,9 +1233,9 @@ const VMStateDescription sdhci_vmstate = {
 /* Capabilities registers provide information on supported features of this
 /* Capabilities registers provide information on supported features of this
  * specific host controller implementation */
  * specific host controller implementation */
 static Property sdhci_properties[] = {
 static Property sdhci_properties[] = {
-    DEFINE_PROP_HEX32("capareg", SDHCIState, capareg,
+    DEFINE_PROP_UINT32("capareg", SDHCIState, capareg,
             SDHC_CAPAB_REG_DEFAULT),
             SDHC_CAPAB_REG_DEFAULT),
-    DEFINE_PROP_HEX32("maxcurr", SDHCIState, maxcurr, 0),
+    DEFINE_PROP_UINT32("maxcurr", SDHCIState, maxcurr, 0),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 13 - 8
hw/timer/ds1338.c

@@ -23,8 +23,12 @@
 #define HOURS_PM   0x20
 #define HOURS_PM   0x20
 #define CTRL_OSF   0x20
 #define CTRL_OSF   0x20
 
 
-typedef struct {
-    I2CSlave i2c;
+#define TYPE_DS1338 "ds1338"
+#define DS1338(obj) OBJECT_CHECK(DS1338State, (obj), TYPE_DS1338)
+
+typedef struct DS1338State {
+    I2CSlave parent_obj;
+
     int64_t offset;
     int64_t offset;
     uint8_t wday_offset;
     uint8_t wday_offset;
     uint8_t nvram[NVRAM_SIZE];
     uint8_t nvram[NVRAM_SIZE];
@@ -38,7 +42,7 @@ static const VMStateDescription vmstate_ds1338 = {
     .minimum_version_id = 1,
     .minimum_version_id = 1,
     .minimum_version_id_old = 1,
     .minimum_version_id_old = 1,
     .fields = (VMStateField[]) {
     .fields = (VMStateField[]) {
-        VMSTATE_I2C_SLAVE(i2c, DS1338State),
+        VMSTATE_I2C_SLAVE(parent_obj, DS1338State),
         VMSTATE_INT64(offset, DS1338State),
         VMSTATE_INT64(offset, DS1338State),
         VMSTATE_UINT8_V(wday_offset, DS1338State, 2),
         VMSTATE_UINT8_V(wday_offset, DS1338State, 2),
         VMSTATE_UINT8_ARRAY(nvram, DS1338State, NVRAM_SIZE),
         VMSTATE_UINT8_ARRAY(nvram, DS1338State, NVRAM_SIZE),
@@ -90,7 +94,7 @@ static void inc_regptr(DS1338State *s)
 
 
 static void ds1338_event(I2CSlave *i2c, enum i2c_event event)
 static void ds1338_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    DS1338State *s = FROM_I2C_SLAVE(DS1338State, i2c);
+    DS1338State *s = DS1338(i2c);
 
 
     switch (event) {
     switch (event) {
     case I2C_START_RECV:
     case I2C_START_RECV:
@@ -111,7 +115,7 @@ static void ds1338_event(I2CSlave *i2c, enum i2c_event event)
 
 
 static int ds1338_recv(I2CSlave *i2c)
 static int ds1338_recv(I2CSlave *i2c)
 {
 {
-    DS1338State *s = FROM_I2C_SLAVE(DS1338State, i2c);
+    DS1338State *s = DS1338(i2c);
     uint8_t res;
     uint8_t res;
 
 
     res  = s->nvram[s->ptr];
     res  = s->nvram[s->ptr];
@@ -121,7 +125,8 @@ static int ds1338_recv(I2CSlave *i2c)
 
 
 static int ds1338_send(I2CSlave *i2c, uint8_t data)
 static int ds1338_send(I2CSlave *i2c, uint8_t data)
 {
 {
-    DS1338State *s = FROM_I2C_SLAVE(DS1338State, i2c);
+    DS1338State *s = DS1338(i2c);
+
     if (s->addr_byte) {
     if (s->addr_byte) {
         s->ptr = data & (NVRAM_SIZE - 1);
         s->ptr = data & (NVRAM_SIZE - 1);
         s->addr_byte = false;
         s->addr_byte = false;
@@ -198,7 +203,7 @@ static int ds1338_init(I2CSlave *i2c)
 
 
 static void ds1338_reset(DeviceState *dev)
 static void ds1338_reset(DeviceState *dev)
 {
 {
-    DS1338State *s = FROM_I2C_SLAVE(DS1338State, I2C_SLAVE(dev));
+    DS1338State *s = DS1338(dev);
 
 
     /* The clock is running and synchronized with the host */
     /* The clock is running and synchronized with the host */
     s->offset = 0;
     s->offset = 0;
@@ -222,7 +227,7 @@ static void ds1338_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo ds1338_info = {
 static const TypeInfo ds1338_info = {
-    .name          = "ds1338",
+    .name          = TYPE_DS1338,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(DS1338State),
     .instance_size = sizeof(DS1338State),
     .class_init    = ds1338_class_init,
     .class_init    = ds1338_class_init,

+ 1 - 1
hw/timer/i8254.c

@@ -342,7 +342,7 @@ static void pit_realizefn(DeviceState *dev, Error **err)
 }
 }
 
 
 static Property pit_properties[] = {
 static Property pit_properties[] = {
-    DEFINE_PROP_HEX32("iobase", PITCommonState, iobase,  -1),
+    DEFINE_PROP_UINT32("iobase", PITCommonState, iobase,  -1),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 2 - 2
hw/timer/m48t59.c

@@ -741,7 +741,7 @@ static int m48t59_init1(SysBusDevice *dev)
 static Property m48t59_isa_properties[] = {
 static Property m48t59_isa_properties[] = {
     DEFINE_PROP_UINT32("size",    M48t59ISAState, state.size,    -1),
     DEFINE_PROP_UINT32("size",    M48t59ISAState, state.size,    -1),
     DEFINE_PROP_UINT32("model",   M48t59ISAState, state.model,   -1),
     DEFINE_PROP_UINT32("model",   M48t59ISAState, state.model,   -1),
-    DEFINE_PROP_HEX32( "io_base", M48t59ISAState, state.io_base,  0),
+    DEFINE_PROP_UINT32("io_base", M48t59ISAState, state.io_base,  0),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 
@@ -766,7 +766,7 @@ static const TypeInfo m48t59_isa_info = {
 static Property m48t59_properties[] = {
 static Property m48t59_properties[] = {
     DEFINE_PROP_UINT32("size",    M48t59SysBusState, state.size,    -1),
     DEFINE_PROP_UINT32("size",    M48t59SysBusState, state.size,    -1),
     DEFINE_PROP_UINT32("model",   M48t59SysBusState, state.model,   -1),
     DEFINE_PROP_UINT32("model",   M48t59SysBusState, state.model,   -1),
-    DEFINE_PROP_HEX32( "io_base", M48t59SysBusState, state.io_base,  0),
+    DEFINE_PROP_UINT32("io_base", M48t59SysBusState, state.io_base,  0),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 7 - 7
hw/timer/mc146818rtc.c

@@ -185,7 +185,7 @@ static void rtc_periodic_timer(void *opaque)
     if (s->cmos_data[RTC_REG_B] & REG_B_PIE) {
     if (s->cmos_data[RTC_REG_B] & REG_B_PIE) {
         s->cmos_data[RTC_REG_C] |= REG_C_IRQF;
         s->cmos_data[RTC_REG_C] |= REG_C_IRQF;
 #ifdef TARGET_I386
 #ifdef TARGET_I386
-        if (s->lost_tick_policy == LOST_TICK_SLEW) {
+        if (s->lost_tick_policy == LOST_TICK_POLICY_SLEW) {
             if (s->irq_reinject_on_ack_count >= RTC_REINJECT_ON_ACK_COUNT)
             if (s->irq_reinject_on_ack_count >= RTC_REINJECT_ON_ACK_COUNT)
                 s->irq_reinject_on_ack_count = 0;		
                 s->irq_reinject_on_ack_count = 0;		
             apic_reset_irq_delivered();
             apic_reset_irq_delivered();
@@ -708,7 +708,7 @@ static int rtc_post_load(void *opaque, int version_id)
 
 
 #ifdef TARGET_I386
 #ifdef TARGET_I386
     if (version_id >= 2) {
     if (version_id >= 2) {
-        if (s->lost_tick_policy == LOST_TICK_SLEW) {
+        if (s->lost_tick_policy == LOST_TICK_POLICY_SLEW) {
             rtc_coalesced_timer_update(s);
             rtc_coalesced_timer_update(s);
         }
         }
     }
     }
@@ -749,7 +749,7 @@ static void rtc_notify_clock_reset(Notifier *notifier, void *data)
     periodic_timer_update(s, now);
     periodic_timer_update(s, now);
     check_update_timer(s);
     check_update_timer(s);
 #ifdef TARGET_I386
 #ifdef TARGET_I386
-    if (s->lost_tick_policy == LOST_TICK_SLEW) {
+    if (s->lost_tick_policy == LOST_TICK_POLICY_SLEW) {
         rtc_coalesced_timer_update(s);
         rtc_coalesced_timer_update(s);
     }
     }
 #endif
 #endif
@@ -774,7 +774,7 @@ static void rtc_reset(void *opaque)
     qemu_irq_lower(s->irq);
     qemu_irq_lower(s->irq);
 
 
 #ifdef TARGET_I386
 #ifdef TARGET_I386
-    if (s->lost_tick_policy == LOST_TICK_SLEW) {
+    if (s->lost_tick_policy == LOST_TICK_POLICY_SLEW) {
         s->irq_coalesced = 0;
         s->irq_coalesced = 0;
     }
     }
 #endif
 #endif
@@ -835,11 +835,11 @@ static void rtc_realizefn(DeviceState *dev, Error **errp)
 
 
 #ifdef TARGET_I386
 #ifdef TARGET_I386
     switch (s->lost_tick_policy) {
     switch (s->lost_tick_policy) {
-    case LOST_TICK_SLEW:
+    case LOST_TICK_POLICY_SLEW:
         s->coalesced_timer =
         s->coalesced_timer =
             timer_new_ns(rtc_clock, rtc_coalesced_timer, s);
             timer_new_ns(rtc_clock, rtc_coalesced_timer, s);
         break;
         break;
-    case LOST_TICK_DISCARD:
+    case LOST_TICK_POLICY_DISCARD:
         break;
         break;
     default:
     default:
         error_setg(errp, "Invalid lost tick policy.");
         error_setg(errp, "Invalid lost tick policy.");
@@ -890,7 +890,7 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
 static Property mc146818rtc_properties[] = {
 static Property mc146818rtc_properties[] = {
     DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
     DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
     DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
     DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
-                               lost_tick_policy, LOST_TICK_DISCARD),
+                               lost_tick_policy, LOST_TICK_POLICY_DISCARD),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 

+ 21 - 14
hw/timer/twl92230.c

@@ -27,8 +27,11 @@
 
 
 #define VERBOSE 1
 #define VERBOSE 1
 
 
-typedef struct {
-    I2CSlave i2c;
+#define TYPE_TWL92230 "twl92230"
+#define TWL92230(obj) OBJECT_CHECK(MenelausState, (obj), TYPE_TWL92230)
+
+typedef struct MenelausState {
+    I2CSlave parent_obj;
 
 
     int firstbyte;
     int firstbyte;
     uint8_t reg;
     uint8_t reg;
@@ -127,7 +130,8 @@ static void menelaus_rtc_hz(void *opaque)
 
 
 static void menelaus_reset(I2CSlave *i2c)
 static void menelaus_reset(I2CSlave *i2c)
 {
 {
-    MenelausState *s = (MenelausState *) i2c;
+    MenelausState *s = TWL92230(i2c);
+
     s->reg = 0x00;
     s->reg = 0x00;
 
 
     s->vcore[0] = 0x0c;	/* XXX: X-loader needs 0x8c? check!  */
     s->vcore[0] = 0x0c;	/* XXX: X-loader needs 0x8c? check!  */
@@ -492,8 +496,9 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
         break;
         break;
 
 
     case MENELAUS_DEVICE_OFF:
     case MENELAUS_DEVICE_OFF:
-        if (value & 1)
-            menelaus_reset(&s->i2c);
+        if (value & 1) {
+            menelaus_reset(I2C_SLAVE(s));
+        }
         break;
         break;
 
 
     case MENELAUS_OSC_CTRL:
     case MENELAUS_OSC_CTRL:
@@ -708,7 +713,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
 
 
 static void menelaus_event(I2CSlave *i2c, enum i2c_event event)
 static void menelaus_event(I2CSlave *i2c, enum i2c_event event)
 {
 {
-    MenelausState *s = (MenelausState *) i2c;
+    MenelausState *s = TWL92230(i2c);
 
 
     if (event == I2C_START_SEND)
     if (event == I2C_START_SEND)
         s->firstbyte = 1;
         s->firstbyte = 1;
@@ -716,7 +721,8 @@ static void menelaus_event(I2CSlave *i2c, enum i2c_event event)
 
 
 static int menelaus_tx(I2CSlave *i2c, uint8_t data)
 static int menelaus_tx(I2CSlave *i2c, uint8_t data)
 {
 {
-    MenelausState *s = (MenelausState *) i2c;
+    MenelausState *s = TWL92230(i2c);
+
     /* Interpret register address byte */
     /* Interpret register address byte */
     if (s->firstbyte) {
     if (s->firstbyte) {
         s->reg = data;
         s->reg = data;
@@ -729,7 +735,7 @@ static int menelaus_tx(I2CSlave *i2c, uint8_t data)
 
 
 static int menelaus_rx(I2CSlave *i2c)
 static int menelaus_rx(I2CSlave *i2c)
 {
 {
-    MenelausState *s = (MenelausState *) i2c;
+    MenelausState *s = TWL92230(i2c);
 
 
     return menelaus_read(s, s->reg ++);
     return menelaus_read(s, s->reg ++);
 }
 }
@@ -834,23 +840,24 @@ static const VMStateDescription vmstate_menelaus = {
         VMSTATE_STRUCT(rtc.alm, MenelausState, 0, vmstate_menelaus_tm,
         VMSTATE_STRUCT(rtc.alm, MenelausState, 0, vmstate_menelaus_tm,
                        struct tm),
                        struct tm),
         VMSTATE_UINT8(pwrbtn_state, MenelausState),
         VMSTATE_UINT8(pwrbtn_state, MenelausState),
-        VMSTATE_I2C_SLAVE(i2c, MenelausState),
+        VMSTATE_I2C_SLAVE(parent_obj, MenelausState),
         VMSTATE_END_OF_LIST()
         VMSTATE_END_OF_LIST()
     }
     }
 };
 };
 
 
 static int twl92230_init(I2CSlave *i2c)
 static int twl92230_init(I2CSlave *i2c)
 {
 {
-    MenelausState *s = FROM_I2C_SLAVE(MenelausState, i2c);
+    DeviceState *dev = DEVICE(i2c);
+    MenelausState *s = TWL92230(i2c);
 
 
     s->rtc.hz_tm = timer_new_ms(rtc_clock, menelaus_rtc_hz, s);
     s->rtc.hz_tm = timer_new_ms(rtc_clock, menelaus_rtc_hz, s);
     /* Three output pins plus one interrupt pin.  */
     /* Three output pins plus one interrupt pin.  */
-    qdev_init_gpio_out(&i2c->qdev, s->out, 4);
+    qdev_init_gpio_out(dev, s->out, 4);
 
 
     /* Three input pins plus one power-button pin.  */
     /* Three input pins plus one power-button pin.  */
-    qdev_init_gpio_in(&i2c->qdev, menelaus_gpio_set, 4);
+    qdev_init_gpio_in(dev, menelaus_gpio_set, 4);
 
 
-    menelaus_reset(&s->i2c);
+    menelaus_reset(i2c);
 
 
     return 0;
     return 0;
 }
 }
@@ -868,7 +875,7 @@ static void twl92230_class_init(ObjectClass *klass, void *data)
 }
 }
 
 
 static const TypeInfo twl92230_info = {
 static const TypeInfo twl92230_info = {
-    .name          = "twl92230",
+    .name          = TYPE_TWL92230,
     .parent        = TYPE_I2C_SLAVE,
     .parent        = TYPE_I2C_SLAVE,
     .instance_size = sizeof(MenelausState),
     .instance_size = sizeof(MenelausState),
     .class_init    = twl92230_class_init,
     .class_init    = twl92230_class_init,

+ 2 - 2
hw/usb/host-libusb.c

@@ -1324,8 +1324,8 @@ static Property usb_host_dev_properties[] = {
     DEFINE_PROP_UINT32("hostbus",  USBHostDevice, match.bus_num,    0),
     DEFINE_PROP_UINT32("hostbus",  USBHostDevice, match.bus_num,    0),
     DEFINE_PROP_UINT32("hostaddr", USBHostDevice, match.addr,       0),
     DEFINE_PROP_UINT32("hostaddr", USBHostDevice, match.addr,       0),
     DEFINE_PROP_STRING("hostport", USBHostDevice, match.port),
     DEFINE_PROP_STRING("hostport", USBHostDevice, match.port),
-    DEFINE_PROP_HEX32("vendorid",  USBHostDevice, match.vendor_id,  0),
-    DEFINE_PROP_HEX32("productid", USBHostDevice, match.product_id, 0),
+    DEFINE_PROP_UINT32("vendorid",  USBHostDevice, match.vendor_id,  0),
+    DEFINE_PROP_UINT32("productid", USBHostDevice, match.product_id, 0),
     DEFINE_PROP_UINT32("isobufs",  USBHostDevice, iso_urb_count,    4),
     DEFINE_PROP_UINT32("isobufs",  USBHostDevice, iso_urb_count,    4),
     DEFINE_PROP_UINT32("isobsize", USBHostDevice, iso_urb_frames,   32),
     DEFINE_PROP_UINT32("isobsize", USBHostDevice, iso_urb_frames,   32),
     DEFINE_PROP_INT32("bootindex", USBHostDevice, bootindex,        -1),
     DEFINE_PROP_INT32("bootindex", USBHostDevice, bootindex,        -1),

+ 3 - 3
hw/virtio/virtio-pci.c

@@ -1063,7 +1063,7 @@ static const TypeInfo virtio_pci_info = {
 /* virtio-blk-pci */
 /* virtio-blk-pci */
 
 
 static Property virtio_blk_pci_properties[] = {
 static Property virtio_blk_pci_properties[] = {
-    DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0),
+    DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0),
     DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags,
     DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags,
                     VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true),
                     VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true),
     DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
     DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
@@ -1275,7 +1275,7 @@ static void balloon_pci_stats_set_poll_interval(Object *obj, struct Visitor *v,
 
 
 static Property virtio_balloon_pci_properties[] = {
 static Property virtio_balloon_pci_properties[] = {
     DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
     DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
-    DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0),
+    DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),
 };
 };
 
 
@@ -1376,7 +1376,7 @@ static Property virtio_serial_pci_properties[] = {
     DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags,
     DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags,
                     VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true),
                     VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, true),
     DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
     DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
-    DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0),
+    DEFINE_PROP_UINT32("class", VirtIOPCIProxy, class_code, 0),
     DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
     DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
     DEFINE_VIRTIO_SERIAL_PROPERTIES(VirtIOSerialPCI, vdev.serial),
     DEFINE_VIRTIO_SERIAL_PROPERTIES(VirtIOSerialPCI, vdev.serial),
     DEFINE_PROP_END_OF_LIST(),
     DEFINE_PROP_END_OF_LIST(),

+ 1 - 1
include/hw/arm/exynos4210.h

@@ -97,7 +97,7 @@ typedef struct Exynos4210State {
     MemoryRegion dram1_mem;
     MemoryRegion dram1_mem;
     MemoryRegion boot_secondary;
     MemoryRegion boot_secondary;
     MemoryRegion bootreg_mem;
     MemoryRegion bootreg_mem;
-    i2c_bus *i2c_if[EXYNOS4210_I2C_NUMBER];
+    I2CBus *i2c_if[EXYNOS4210_I2C_NUMBER];
 } Exynos4210State;
 } Exynos4210State;
 
 
 void exynos4210_write_secondary(ARMCPU *cpu,
 void exynos4210_write_secondary(ARMCPU *cpu,

+ 1 - 1
include/hw/arm/omap.h

@@ -765,7 +765,7 @@ void omap_mmc_handlers(struct omap_mmc_s *s, qemu_irq ro, qemu_irq cover);
 void omap_mmc_enable(struct omap_mmc_s *s, int enable);
 void omap_mmc_enable(struct omap_mmc_s *s, int enable);
 
 
 /* omap_i2c.c */
 /* omap_i2c.c */
-i2c_bus *omap_i2c_bus(DeviceState *omap_i2c);
+I2CBus *omap_i2c_bus(DeviceState *omap_i2c);
 
 
 # define cpu_is_omap310(cpu)		(cpu->mpu_model == omap310)
 # define cpu_is_omap310(cpu)		(cpu->mpu_model == omap310)
 # define cpu_is_omap1510(cpu)		(cpu->mpu_model == omap1510)
 # define cpu_is_omap1510(cpu)		(cpu->mpu_model == omap1510)

+ 1 - 1
include/hw/arm/pxa.h

@@ -116,7 +116,7 @@ void pxa27x_register_keypad(PXA2xxKeyPadState *kp,
 typedef struct PXA2xxI2CState PXA2xxI2CState;
 typedef struct PXA2xxI2CState PXA2xxI2CState;
 PXA2xxI2CState *pxa2xx_i2c_init(hwaddr base,
 PXA2xxI2CState *pxa2xx_i2c_init(hwaddr base,
                 qemu_irq irq, uint32_t page_size);
                 qemu_irq irq, uint32_t page_size);
-i2c_bus *pxa2xx_i2c_bus(PXA2xxI2CState *s);
+I2CBus *pxa2xx_i2c_bus(PXA2xxI2CState *s);
 
 
 typedef struct PXA2xxI2SState PXA2xxI2SState;
 typedef struct PXA2xxI2SState PXA2xxI2SState;
 typedef struct PXA2xxFIrState PXA2xxFIrState;
 typedef struct PXA2xxFIrState PXA2xxFIrState;

+ 0 - 6
include/hw/block/block.h

@@ -65,12 +65,6 @@ int blkconf_geometry(BlockConf *conf, int *trans,
 
 
 /* Hard disk geometry */
 /* Hard disk geometry */
 
 
-#define BIOS_ATA_TRANSLATION_AUTO   0
-#define BIOS_ATA_TRANSLATION_NONE   1
-#define BIOS_ATA_TRANSLATION_LBA    2
-#define BIOS_ATA_TRANSLATION_LARGE  3
-#define BIOS_ATA_TRANSLATION_RECHS  4
-
 void hd_geometry_guess(BlockDriverState *bs,
 void hd_geometry_guess(BlockDriverState *bs,
                        uint32_t *pcyls, uint32_t *pheads, uint32_t *psecs,
                        uint32_t *pcyls, uint32_t *pheads, uint32_t *psecs,
                        int *ptrans);
                        int *ptrans);

+ 9 - 11
include/hw/i2c/i2c.h

@@ -50,18 +50,16 @@ struct I2CSlave
     uint8_t address;
     uint8_t address;
 };
 };
 
 
-i2c_bus *i2c_init_bus(DeviceState *parent, const char *name);
+I2CBus *i2c_init_bus(DeviceState *parent, const char *name);
 void i2c_set_slave_address(I2CSlave *dev, uint8_t address);
 void i2c_set_slave_address(I2CSlave *dev, uint8_t address);
-int i2c_bus_busy(i2c_bus *bus);
-int i2c_start_transfer(i2c_bus *bus, uint8_t address, int recv);
-void i2c_end_transfer(i2c_bus *bus);
-void i2c_nack(i2c_bus *bus);
-int i2c_send(i2c_bus *bus, uint8_t data);
-int i2c_recv(i2c_bus *bus);
-
-#define FROM_I2C_SLAVE(type, dev) DO_UPCAST(type, i2c, dev)
-
-DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, uint8_t addr);
+int i2c_bus_busy(I2CBus *bus);
+int i2c_start_transfer(I2CBus *bus, uint8_t address, int recv);
+void i2c_end_transfer(I2CBus *bus);
+void i2c_nack(I2CBus *bus);
+int i2c_send(I2CBus *bus, uint8_t data);
+int i2c_recv(I2CBus *bus);
+
+DeviceState *i2c_create_slave(I2CBus *bus, const char *name, uint8_t addr);
 
 
 /* wm8750.c */
 /* wm8750.c */
 void wm8750_data_req_set(DeviceState *dev,
 void wm8750_data_req_set(DeviceState *dev,

+ 1 - 1
include/hw/i2c/pm_smbus.h

@@ -2,7 +2,7 @@
 #define PM_SMBUS_H
 #define PM_SMBUS_H
 
 
 typedef struct PMSMBus {
 typedef struct PMSMBus {
-    i2c_bus *smbus;
+    I2CBus *smbus;
     MemoryRegion io;
     MemoryRegion io;
 
 
     uint8_t smb_stat;
     uint8_t smb_stat;

+ 10 - 10
include/hw/i2c/smbus.h

@@ -66,18 +66,18 @@ struct SMBusDevice {
 };
 };
 
 
 /* Master device commands.  */
 /* Master device commands.  */
-void smbus_quick_command(i2c_bus *bus, uint8_t addr, int read);
-uint8_t smbus_receive_byte(i2c_bus *bus, uint8_t addr);
-void smbus_send_byte(i2c_bus *bus, uint8_t addr, uint8_t data);
-uint8_t smbus_read_byte(i2c_bus *bus, uint8_t addr, uint8_t command);
-void smbus_write_byte(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t data);
-uint16_t smbus_read_word(i2c_bus *bus, uint8_t addr, uint8_t command);
-void smbus_write_word(i2c_bus *bus, uint8_t addr, uint8_t command, uint16_t data);
-int smbus_read_block(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t *data);
-void smbus_write_block(i2c_bus *bus, uint8_t addr, uint8_t command, uint8_t *data,
+void smbus_quick_command(I2CBus *bus, uint8_t addr, int read);
+uint8_t smbus_receive_byte(I2CBus *bus, uint8_t addr);
+void smbus_send_byte(I2CBus *bus, uint8_t addr, uint8_t data);
+uint8_t smbus_read_byte(I2CBus *bus, uint8_t addr, uint8_t command);
+void smbus_write_byte(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t data);
+uint16_t smbus_read_word(I2CBus *bus, uint8_t addr, uint8_t command);
+void smbus_write_word(I2CBus *bus, uint8_t addr, uint8_t command, uint16_t data);
+int smbus_read_block(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t *data);
+void smbus_write_block(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t *data,
                        int len);
                        int len);
 
 
-void smbus_eeprom_init(i2c_bus *smbus, int nb_eeprom,
+void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom,
                        const uint8_t *eeprom_spd, int size);
                        const uint8_t *eeprom_spd, int size);
 
 
 #endif
 #endif

+ 1 - 1
include/hw/i386/ich9.h

@@ -20,7 +20,7 @@ int ich9_lpc_map_irq(PCIDevice *pci_dev, int intx);
 PCIINTxRoute ich9_route_intx_pin_to_irq(void *opaque, int pirq_pin);
 PCIINTxRoute ich9_route_intx_pin_to_irq(void *opaque, int pirq_pin);
 void ich9_lpc_pm_init(PCIDevice *pci_lpc);
 void ich9_lpc_pm_init(PCIDevice *pci_lpc);
 PCIBus *ich9_d2pbr_init(PCIBus *bus, int devfn, int sec_bus);
 PCIBus *ich9_d2pbr_init(PCIBus *bus, int devfn, int sec_bus);
-i2c_bus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base);
+I2CBus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base);
 
 
 #define ICH9_CC_SIZE                            (16 * 1024)     /* 16KB */
 #define ICH9_CC_SIZE                            (16 * 1024)     /* 16KB */
 
 

+ 3 - 3
include/hw/i386/pc.h

@@ -165,9 +165,9 @@ void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name);
 
 
 /* acpi_piix.c */
 /* acpi_piix.c */
 
 
-i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
-                       qemu_irq sci_irq, qemu_irq smi_irq,
-                       int kvm_enabled, FWCfgState *fw_cfg);
+I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
+                      qemu_irq sci_irq, qemu_irq smi_irq,
+                      int kvm_enabled, FWCfgState *fw_cfg);
 void piix4_smbus_register_device(SMBusDevice *dev, uint8_t addr);
 void piix4_smbus_register_device(SMBusDevice *dev, uint8_t addr);
 
 
 /* hpet.c */
 /* hpet.c */

+ 11 - 4
hw/char/ipack.h → include/hw/ipack/ipack.h

@@ -19,7 +19,9 @@ typedef struct IPackBus IPackBus;
 #define IPACK_BUS(obj) OBJECT_CHECK(IPackBus, (obj), TYPE_IPACK_BUS)
 #define IPACK_BUS(obj) OBJECT_CHECK(IPackBus, (obj), TYPE_IPACK_BUS)
 
 
 struct IPackBus {
 struct IPackBus {
-    BusState qbus;
+    /*< private >*/
+    BusState parent_obj;
+
     /* All fields are private */
     /* All fields are private */
     uint8_t n_slots;
     uint8_t n_slots;
     uint8_t free_slot;
     uint8_t free_slot;
@@ -38,10 +40,12 @@ typedef struct IPackDeviceClass IPackDeviceClass;
      OBJECT_GET_CLASS(IPackDeviceClass, (obj), TYPE_IPACK_DEVICE)
      OBJECT_GET_CLASS(IPackDeviceClass, (obj), TYPE_IPACK_DEVICE)
 
 
 struct IPackDeviceClass {
 struct IPackDeviceClass {
+    /*< private >*/
     DeviceClass parent_class;
     DeviceClass parent_class;
+    /*< public >*/
 
 
-    int (*init)(IPackDevice *dev);
-    int (*exit)(IPackDevice *dev);
+    DeviceRealize realize;
+    DeviceUnrealize unrealize;
 
 
     uint16_t (*io_read)(IPackDevice *dev, uint8_t addr);
     uint16_t (*io_read)(IPackDevice *dev, uint8_t addr);
     void (*io_write)(IPackDevice *dev, uint8_t addr, uint16_t val);
     void (*io_write)(IPackDevice *dev, uint8_t addr, uint16_t val);
@@ -60,7 +64,10 @@ struct IPackDeviceClass {
 };
 };
 
 
 struct IPackDevice {
 struct IPackDevice {
-    DeviceState qdev;
+    /*< private >*/
+    DeviceState parent_obj;
+    /*< public >*/
+
     int32_t slot;
     int32_t slot;
     /* IRQ objects for the IndustryPack INT0# and INT1# */
     /* IRQ objects for the IndustryPack INT0# and INT1# */
     qemu_irq *irq;
     qemu_irq *irq;

+ 2 - 2
include/hw/isa/vt82c686.h

@@ -5,7 +5,7 @@
 ISABus *vt82c686b_init(PCIBus * bus, int devfn);
 ISABus *vt82c686b_init(PCIBus * bus, int devfn);
 void vt82c686b_ac97_init(PCIBus *bus, int devfn);
 void vt82c686b_ac97_init(PCIBus *bus, int devfn);
 void vt82c686b_mc97_init(PCIBus *bus, int devfn);
 void vt82c686b_mc97_init(PCIBus *bus, int devfn);
-i2c_bus *vt82c686b_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
-            qemu_irq sci_irq);
+I2CBus *vt82c686b_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
+                          qemu_irq sci_irq);
 
 
 #endif
 #endif

+ 0 - 1
include/hw/qdev-core.h

@@ -217,7 +217,6 @@ struct PropertyInfo {
     const char *name;
     const char *name;
     const char *legacy_name;
     const char *legacy_name;
     const char **enum_table;
     const char **enum_table;
-    int (*parse)(DeviceState *dev, Property *prop, const char *str);
     int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len);
     int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len);
     ObjectPropertyAccessor *get;
     ObjectPropertyAccessor *get;
     ObjectPropertyAccessor *set;
     ObjectPropertyAccessor *set;

+ 1 - 1
include/hw/qdev-dma.h

@@ -7,4 +7,4 @@
  * See the COPYING file in the top-level directory.
  * See the COPYING file in the top-level directory.
  */
  */
 #define DEFINE_PROP_DMAADDR(_n, _s, _f, _d)                               \
 #define DEFINE_PROP_DMAADDR(_n, _s, _f, _d)                               \
-    DEFINE_PROP_HEX64(_n, _s, _f, _d)
+    DEFINE_PROP_UINT64(_n, _s, _f, _d)

+ 0 - 11
include/hw/qdev-properties.h

@@ -12,9 +12,6 @@ extern PropertyInfo qdev_prop_uint16;
 extern PropertyInfo qdev_prop_uint32;
 extern PropertyInfo qdev_prop_uint32;
 extern PropertyInfo qdev_prop_int32;
 extern PropertyInfo qdev_prop_int32;
 extern PropertyInfo qdev_prop_uint64;
 extern PropertyInfo qdev_prop_uint64;
-extern PropertyInfo qdev_prop_hex8;
-extern PropertyInfo qdev_prop_hex32;
-extern PropertyInfo qdev_prop_hex64;
 extern PropertyInfo qdev_prop_size;
 extern PropertyInfo qdev_prop_size;
 extern PropertyInfo qdev_prop_string;
 extern PropertyInfo qdev_prop_string;
 extern PropertyInfo qdev_prop_chr;
 extern PropertyInfo qdev_prop_chr;
@@ -111,12 +108,6 @@ extern PropertyInfo qdev_prop_arraylen;
     DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_int32, int32_t)
     DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_int32, int32_t)
 #define DEFINE_PROP_UINT64(_n, _s, _f, _d)                      \
 #define DEFINE_PROP_UINT64(_n, _s, _f, _d)                      \
     DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_uint64, uint64_t)
     DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_uint64, uint64_t)
-#define DEFINE_PROP_HEX8(_n, _s, _f, _d)                       \
-    DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_hex8, uint8_t)
-#define DEFINE_PROP_HEX32(_n, _s, _f, _d)                       \
-    DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_hex32, uint32_t)
-#define DEFINE_PROP_HEX64(_n, _s, _f, _d)                       \
-    DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_hex64, uint64_t)
 #define DEFINE_PROP_SIZE(_n, _s, _f, _d)                       \
 #define DEFINE_PROP_SIZE(_n, _s, _f, _d)                       \
     DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_size, uint64_t)
     DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_size, uint64_t)
 #define DEFINE_PROP_PCI_DEVFN(_n, _s, _f, _d)                   \
 #define DEFINE_PROP_PCI_DEVFN(_n, _s, _f, _d)                   \
@@ -168,8 +159,6 @@ extern PropertyInfo qdev_prop_arraylen;
 
 
 /* Set properties between creation and init.  */
 /* Set properties between creation and init.  */
 void *qdev_get_prop_ptr(DeviceState *dev, Property *prop);
 void *qdev_get_prop_ptr(DeviceState *dev, Property *prop);
-void qdev_prop_parse(DeviceState *dev, const char *name, const char *value,
-                     Error **errp);
 void qdev_prop_set_bit(DeviceState *dev, const char *name, bool value);
 void qdev_prop_set_bit(DeviceState *dev, const char *name, bool value);
 void qdev_prop_set_uint8(DeviceState *dev, const char *name, uint8_t value);
 void qdev_prop_set_uint8(DeviceState *dev, const char *name, uint8_t value);
 void qdev_prop_set_uint16(DeviceState *dev, const char *name, uint16_t value);
 void qdev_prop_set_uint16(DeviceState *dev, const char *name, uint16_t value);

+ 1 - 1
include/qapi/string-output-visitor.h

@@ -17,7 +17,7 @@
 
 
 typedef struct StringOutputVisitor StringOutputVisitor;
 typedef struct StringOutputVisitor StringOutputVisitor;
 
 
-StringOutputVisitor *string_output_visitor_new(void);
+StringOutputVisitor *string_output_visitor_new(bool human);
 void string_output_visitor_cleanup(StringOutputVisitor *v);
 void string_output_visitor_cleanup(StringOutputVisitor *v);
 
 
 char *string_output_get_string(StringOutputVisitor *v);
 char *string_output_get_string(StringOutputVisitor *v);

+ 0 - 8
include/qemu-common.h

@@ -261,14 +261,6 @@ typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size)
 
 
 typedef uint64_t pcibus_t;
 typedef uint64_t pcibus_t;
 
 
-typedef enum LostTickPolicy {
-    LOST_TICK_DISCARD,
-    LOST_TICK_DELAY,
-    LOST_TICK_MERGE,
-    LOST_TICK_SLEW,
-    LOST_TICK_MAX
-} LostTickPolicy;
-
 typedef struct PCIHostDeviceAddress {
 typedef struct PCIHostDeviceAddress {
     unsigned int domain;
     unsigned int domain;
     unsigned int bus;
     unsigned int bus;

+ 1 - 1
include/qemu/typedefs.h

@@ -43,7 +43,7 @@ typedef struct QemuConsole QemuConsole;
 typedef struct CharDriverState CharDriverState;
 typedef struct CharDriverState CharDriverState;
 typedef struct MACAddr MACAddr;
 typedef struct MACAddr MACAddr;
 typedef struct NetClientState NetClientState;
 typedef struct NetClientState NetClientState;
-typedef struct i2c_bus i2c_bus;
+typedef struct I2CBus I2CBus;
 typedef struct ISABus ISABus;
 typedef struct ISABus ISABus;
 typedef struct ISADevice ISADevice;
 typedef struct ISADevice ISADevice;
 typedef struct SMBusDevice SMBusDevice;
 typedef struct SMBusDevice SMBusDevice;

+ 2 - 1
include/qom/object.h

@@ -946,12 +946,13 @@ void object_property_parse(Object *obj, const char *string,
  * object_property_print:
  * object_property_print:
  * @obj: the object
  * @obj: the object
  * @name: the name of the property
  * @name: the name of the property
+ * @human: if true, print for human consumption
  * @errp: returns an error if this function fails
  * @errp: returns an error if this function fails
  *
  *
  * Returns a string representation of the value of the property.  The
  * Returns a string representation of the value of the property.  The
  * caller shall free the string.
  * caller shall free the string.
  */
  */
-char *object_property_print(Object *obj, const char *name,
+char *object_property_print(Object *obj, const char *name, bool human,
                             Error **errp);
                             Error **errp);
 
 
 /**
 /**

+ 2 - 1
include/sysemu/qtest.h

@@ -15,6 +15,7 @@
 #define QTEST_H
 #define QTEST_H
 
 
 #include "qemu-common.h"
 #include "qemu-common.h"
+#include "qapi/error.h"
 
 
 extern bool qtest_allowed;
 extern bool qtest_allowed;
 
 
@@ -26,7 +27,7 @@ static inline bool qtest_enabled(void)
 bool qtest_driver(void);
 bool qtest_driver(void);
 
 
 int qtest_init_accel(void);
 int qtest_init_accel(void);
-void qtest_init(const char *qtest_chrdev, const char *qtest_log);
+void qtest_init(const char *qtest_chrdev, const char *qtest_log, Error **errp);
 
 
 static inline int qtest_available(void)
 static inline int qtest_available(void)
 {
 {

+ 58 - 0
qapi-schema.json

@@ -28,7 +28,65 @@
   'data': [ 'GenericError', 'CommandNotFound', 'DeviceEncrypted',
   'data': [ 'GenericError', 'CommandNotFound', 'DeviceEncrypted',
             'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
             'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
 
 
+
+##
+# LostTickPolicy:
+#
+# Policy for handling lost ticks in timer devices.
+#
+# @discard: throw away the missed tick(s) and continue with future injection
+#           normally.  Guest time may be delayed, unless the OS has explicit
+#           handling of lost ticks
+#
+# @delay: continue to deliver ticks at the normal rate.  Guest time will be
+#         delayed due to the late tick
+#
+# @merge: merge the missed tick(s) into one tick and inject.  Guest time
+#         may be delayed, depending on how the OS reacts to the merging
+#         of ticks
+#
+# @slew: deliver ticks at a higher rate to catch up with the missed tick. The
+#        guest time should not be delayed once catchup is complete.
+#
+# Since: 2.0
+##
+{ 'enum': 'LostTickPolicy',
+  'data': ['discard', 'delay', 'merge', 'slew' ] }
+
 ##
 ##
+# BiosAtaTranslation:
+#
+# Policy that BIOS should use to interpret cylinder/head/sector
+# addresses.  Note that Bochs BIOS and SeaBIOS will not actually
+# translate logical CHS to physical; instead, they will use logical
+# block addressing.
+#
+# @auto: If cylinder/heads/sizes are passed, choose between none and LBA
+#        depending on the size of the disk.  If they are not passed,
+#        choose none if QEMU can guess that the disk had 16 or fewer
+#        heads, large if QEMU can guess that the disk had 131072 or
+#        fewer tracks across all heads (i.e. cylinders*heads<131072),
+#        otherwise LBA.
+#
+# @none: The physical disk geometry is equal to the logical geometry.
+#
+# @lba: Assume 63 sectors per track and one of 16, 32, 64, 128 or 255
+#       heads (if fewer than 255 are enough to cover the whole disk
+#       with 1024 cylinders/head).  The number of cylinders/head is
+#       then computed based on the number of sectors and heads.
+#
+# @large: The number of cylinders per head is scaled down to 1024
+#         by correspondingly scaling up the number of heads.
+#
+# @rechs: Same as @large, but first convert a 16-head geometry to
+#         15-head, by proportionally scaling up the number of
+#         cylinders/head.
+#
+# Since: 2.0
+##
+{ 'enum': 'BiosAtaTranslation',
+  'data': ['auto', 'none', 'lba', 'large', 'rechs']}
+
 # @add_client
 # @add_client
 #
 #
 # Allow client connections for VNC, Spice and socket based
 # Allow client connections for VNC, Spice and socket based

+ 24 - 0
qapi/string-input-visitor.c

@@ -14,6 +14,7 @@
 #include "qapi/string-input-visitor.h"
 #include "qapi/string-input-visitor.h"
 #include "qapi/visitor-impl.h"
 #include "qapi/visitor-impl.h"
 #include "qapi/qmp/qerror.h"
 #include "qapi/qmp/qerror.h"
+#include "qemu/option.h"
 
 
 struct StringInputVisitor
 struct StringInputVisitor
 {
 {
@@ -41,6 +42,28 @@ static void parse_type_int(Visitor *v, int64_t *obj, const char *name,
     *obj = val;
     *obj = val;
 }
 }
 
 
+static void parse_type_size(Visitor *v, uint64_t *obj, const char *name,
+                            Error **errp)
+{
+    StringInputVisitor *siv = DO_UPCAST(StringInputVisitor, visitor, v);
+    Error *err = NULL;
+    uint64_t val;
+
+    if (siv->string) {
+        parse_option_size(name, siv->string, &val, &err);
+    } else {
+        error_set(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+                  "size");
+        return;
+    }
+    if (err) {
+        error_propagate(errp, err);
+        return;
+    }
+
+    *obj = val;
+}
+
 static void parse_type_bool(Visitor *v, bool *obj, const char *name,
 static void parse_type_bool(Visitor *v, bool *obj, const char *name,
                             Error **errp)
                             Error **errp)
 {
 {
@@ -128,6 +151,7 @@ StringInputVisitor *string_input_visitor_new(const char *str)
 
 
     v->visitor.type_enum = input_type_enum;
     v->visitor.type_enum = input_type_enum;
     v->visitor.type_int = parse_type_int;
     v->visitor.type_int = parse_type_int;
+    v->visitor.type_size = parse_type_size;
     v->visitor.type_bool = parse_type_bool;
     v->visitor.type_bool = parse_type_bool;
     v->visitor.type_str = parse_type_str;
     v->visitor.type_str = parse_type_str;
     v->visitor.type_number = parse_type_number;
     v->visitor.type_number = parse_type_number;

+ 53 - 3
qapi/string-output-visitor.c

@@ -14,10 +14,13 @@
 #include "qapi/string-output-visitor.h"
 #include "qapi/string-output-visitor.h"
 #include "qapi/visitor-impl.h"
 #include "qapi/visitor-impl.h"
 #include "qapi/qmp/qerror.h"
 #include "qapi/qmp/qerror.h"
+#include "qemu/host-utils.h"
+#include <math.h>
 
 
 struct StringOutputVisitor
 struct StringOutputVisitor
 {
 {
     Visitor visitor;
     Visitor visitor;
+    bool human;
     char *string;
     char *string;
 };
 };
 
 
@@ -31,7 +34,45 @@ static void print_type_int(Visitor *v, int64_t *obj, const char *name,
                            Error **errp)
                            Error **errp)
 {
 {
     StringOutputVisitor *sov = DO_UPCAST(StringOutputVisitor, visitor, v);
     StringOutputVisitor *sov = DO_UPCAST(StringOutputVisitor, visitor, v);
-    string_output_set(sov, g_strdup_printf("%lld", (long long) *obj));
+    char *out;
+
+    if (sov->human) {
+        out = g_strdup_printf("%lld (%#llx)", (long long) *obj, (long long) *obj);
+    } else {
+        out = g_strdup_printf("%lld", (long long) *obj);
+    }
+    string_output_set(sov, out);
+}
+
+static void print_type_size(Visitor *v, uint64_t *obj, const char *name,
+                           Error **errp)
+{
+    StringOutputVisitor *sov = DO_UPCAST(StringOutputVisitor, visitor, v);
+    static const char suffixes[] = { 'B', 'K', 'M', 'G', 'T', 'P', 'E' };
+    uint64_t div, val;
+    char *out;
+    int i;
+
+    if (!sov->human) {
+        out = g_strdup_printf("%"PRIu64, *obj);
+        string_output_set(sov, out);
+        return;
+    }
+
+    val = *obj;
+
+    /* The exponent (returned in i) minus one gives us
+     * floor(log2(val * 1024 / 1000).  The correction makes us
+     * switch to the higher power when the integer part is >= 1000.
+     */
+    frexp(val / (1000.0 / 1024.0), &i);
+    i = (i - 1) / 10;
+    assert(i < ARRAY_SIZE(suffixes));
+    div = 1ULL << (i * 10);
+
+    out = g_strdup_printf("%"PRIu64" (%0.3g %c%s)", val,
+                          (double)val/div, suffixes[i], i ? "iB" : "");
+    string_output_set(sov, out);
 }
 }
 
 
 static void print_type_bool(Visitor *v, bool *obj, const char *name,
 static void print_type_bool(Visitor *v, bool *obj, const char *name,
@@ -45,7 +86,14 @@ static void print_type_str(Visitor *v, char **obj, const char *name,
                            Error **errp)
                            Error **errp)
 {
 {
     StringOutputVisitor *sov = DO_UPCAST(StringOutputVisitor, visitor, v);
     StringOutputVisitor *sov = DO_UPCAST(StringOutputVisitor, visitor, v);
-    string_output_set(sov, g_strdup(*obj ? *obj : ""));
+    char *out;
+
+    if (sov->human) {
+        out = *obj ? g_strdup_printf("\"%s\"", *obj) : g_strdup("<null>");
+    } else {
+        out = g_strdup(*obj ? *obj : "");
+    }
+    string_output_set(sov, out);
 }
 }
 
 
 static void print_type_number(Visitor *v, double *obj, const char *name,
 static void print_type_number(Visitor *v, double *obj, const char *name,
@@ -73,14 +121,16 @@ void string_output_visitor_cleanup(StringOutputVisitor *sov)
     g_free(sov);
     g_free(sov);
 }
 }
 
 
-StringOutputVisitor *string_output_visitor_new(void)
+StringOutputVisitor *string_output_visitor_new(bool human)
 {
 {
     StringOutputVisitor *v;
     StringOutputVisitor *v;
 
 
     v = g_malloc0(sizeof(*v));
     v = g_malloc0(sizeof(*v));
 
 
+    v->human = human;
     v->visitor.type_enum = output_type_enum;
     v->visitor.type_enum = output_type_enum;
     v->visitor.type_int = print_type_int;
     v->visitor.type_int = print_type_int;
+    v->visitor.type_size = print_type_size;
     v->visitor.type_bool = print_type_bool;
     v->visitor.type_bool = print_type_bool;
     v->visitor.type_str = print_type_str;
     v->visitor.type_str = print_type_str;
     v->visitor.type_number = print_type_number;
     v->visitor.type_number = print_type_number;

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно