mirror of
https://github.com/qemu/qemu.git
synced 2024-11-25 20:03:37 +08:00
audio/intel-hda: Fix Inheritance hierachy
The ich6 and ich9 variants either need to inherit one from the other, or both from a common base class, otherwise its not possible to create a QOM cast macro for use by the shared implementation functions. Went for option B, with a common base class. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Andreas Färber <afaerber@suse.de> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 54453b6aa8afa1a76b2ec1932f1d7fd25205d0bc.1370496582.git.peter.crosthwaite@xilinx.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
6e5c4540d1
commit
062db74023
@ -189,6 +189,8 @@ struct IntelHDAState {
|
||||
uint32_t msi;
|
||||
};
|
||||
|
||||
#define TYPE_INTEL_HDA_GENERIC "intel-hda-generic"
|
||||
|
||||
struct IntelHDAReg {
|
||||
const char *name; /* register name */
|
||||
uint32_t size; /* size in bytes */
|
||||
@ -1232,7 +1234,7 @@ static Property intel_hda_properties[] = {
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
static void intel_hda_class_init_common(ObjectClass *klass)
|
||||
static void intel_hda_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||
@ -1251,7 +1253,6 @@ static void intel_hda_class_init_ich6(ObjectClass *klass, void *data)
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||
|
||||
intel_hda_class_init_common(klass);
|
||||
k->device_id = 0x2668;
|
||||
k->revision = 1;
|
||||
dc->desc = "Intel HD Audio Controller (ich6)";
|
||||
@ -1262,23 +1263,28 @@ static void intel_hda_class_init_ich9(ObjectClass *klass, void *data)
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
|
||||
|
||||
intel_hda_class_init_common(klass);
|
||||
k->device_id = 0x293e;
|
||||
k->revision = 3;
|
||||
dc->desc = "Intel HD Audio Controller (ich9)";
|
||||
}
|
||||
|
||||
static const TypeInfo intel_hda_info_ich6 = {
|
||||
.name = "intel-hda",
|
||||
static const TypeInfo intel_hda_info = {
|
||||
.name = TYPE_INTEL_HDA_GENERIC,
|
||||
.parent = TYPE_PCI_DEVICE,
|
||||
.instance_size = sizeof(IntelHDAState),
|
||||
.class_init = intel_hda_class_init,
|
||||
.abstract = true,
|
||||
};
|
||||
|
||||
static const TypeInfo intel_hda_info_ich6 = {
|
||||
.name = "intel-hda",
|
||||
.parent = TYPE_INTEL_HDA_GENERIC,
|
||||
.class_init = intel_hda_class_init_ich6,
|
||||
};
|
||||
|
||||
static const TypeInfo intel_hda_info_ich9 = {
|
||||
.name = "ich9-intel-hda",
|
||||
.parent = TYPE_PCI_DEVICE,
|
||||
.instance_size = sizeof(IntelHDAState),
|
||||
.parent = TYPE_INTEL_HDA_GENERIC,
|
||||
.class_init = intel_hda_class_init_ich9,
|
||||
};
|
||||
|
||||
@ -1320,6 +1326,7 @@ static int intel_hda_and_codec_init(PCIBus *bus)
|
||||
static void intel_hda_register_types(void)
|
||||
{
|
||||
type_register_static(&hda_codec_bus_info);
|
||||
type_register_static(&intel_hda_info);
|
||||
type_register_static(&intel_hda_info_ich6);
|
||||
type_register_static(&intel_hda_info_ich9);
|
||||
type_register_static(&hda_codec_device_type_info);
|
||||
|
Loading…
Reference in New Issue
Block a user