#define TYPE_INTEL_HDA_GENERIC "intel-hda-generic"
+#define INTEL_HDA(obj) \
+ OBJECT_CHECK(IntelHDAState, (obj), TYPE_INTEL_HDA_GENERIC)
+
struct IntelHDAReg {
const char *name; /* register name */
uint32_t size; /* size in bytes */
static void intel_hda_set_g_ctl(IntelHDAState *d, const IntelHDAReg *reg, uint32_t old)
{
if ((d->g_ctl & ICH6_GCTL_RESET) == 0) {
- intel_hda_reset(&d->pci.qdev);
+ intel_hda_reset(DEVICE(d));
}
}
static void intel_hda_reset(DeviceState *dev)
{
BusChild *kid;
- IntelHDAState *d = DO_UPCAST(IntelHDAState, pci.qdev, dev);
+ IntelHDAState *d = INTEL_HDA(dev);
HDACodecDevice *cdev;
intel_hda_regs_reset(d);
static int intel_hda_init(PCIDevice *pci)
{
- IntelHDAState *d = DO_UPCAST(IntelHDAState, pci, pci);
+ IntelHDAState *d = INTEL_HDA(pci);
uint8_t *conf = d->pci.config;
d->name = object_get_typename(OBJECT(d));
msi_init(&d->pci, 0x50, 1, true, false);
}
- hda_codec_bus_init(&d->pci.qdev, &d->codecs,
+ hda_codec_bus_init(DEVICE(pci), &d->codecs,
intel_hda_response, intel_hda_xfer);
return 0;
static void intel_hda_exit(PCIDevice *pci)
{
- IntelHDAState *d = DO_UPCAST(IntelHDAState, pci, pci);
+ IntelHDAState *d = INTEL_HDA(pci);
msi_uninit(&d->pci);
memory_region_destroy(&d->mmio);
*/
static int intel_hda_and_codec_init(PCIBus *bus)
{
- PCIDevice *controller;
+ DeviceState *controller;
BusState *hdabus;
DeviceState *codec;
- controller = pci_create_simple(bus, -1, "intel-hda");
- hdabus = QLIST_FIRST(&controller->qdev.child_bus);
+ controller = DEVICE(pci_create_simple(bus, -1, "intel-hda"));
+ hdabus = QLIST_FIRST(&controller->child_bus);
codec = qdev_create(hdabus, "hda-duplex");
qdev_init_nofail(codec);
return 0;