Revision e5944641 hw/es1370.c
b/hw/es1370.c | ||
---|---|---|
266 | 266 |
}; |
267 | 267 |
|
268 | 268 |
typedef struct ES1370State { |
269 |
PCIDevice *pci_dev; |
|
270 |
|
|
269 |
PCIDevice dev; |
|
271 | 270 |
QEMUSoundCard card; |
272 | 271 |
struct chan chan[NB_CHANNELS]; |
273 | 272 |
SWVoiceOut *dac_voice[2]; |
... | ... | |
280 | 279 |
uint32_t sctl; |
281 | 280 |
} ES1370State; |
282 | 281 |
|
283 |
typedef struct PCIES1370State { |
|
284 |
PCIDevice dev; |
|
285 |
ES1370State es1370; |
|
286 |
} PCIES1370State; |
|
287 |
|
|
288 | 282 |
struct chan_bits { |
289 | 283 |
uint32_t ctl_en; |
290 | 284 |
uint32_t stat_int; |
... | ... | |
327 | 321 |
else { |
328 | 322 |
s->status = new_status & ~STAT_INTR; |
329 | 323 |
} |
330 |
qemu_set_irq (s->pci_dev->irq[0], !!level);
|
|
324 |
qemu_set_irq (s->dev.irq[0], !!level);
|
|
331 | 325 |
} |
332 | 326 |
|
333 | 327 |
static void es1370_reset (ES1370State *s) |
... | ... | |
353 | 347 |
s->dac_voice[i] = NULL; |
354 | 348 |
} |
355 | 349 |
} |
356 |
qemu_irq_lower (s->pci_dev->irq[0]);
|
|
350 |
qemu_irq_lower (s->dev.irq[0]);
|
|
357 | 351 |
} |
358 | 352 |
|
359 | 353 |
static void es1370_maybe_lower_irq (ES1370State *s, uint32_t sctl) |
... | ... | |
915 | 909 |
static void es1370_map (PCIDevice *pci_dev, int region_num, |
916 | 910 |
uint32_t addr, uint32_t size, int type) |
917 | 911 |
{ |
918 |
PCIES1370State *d = (PCIES1370State *) pci_dev; |
|
919 |
ES1370State *s = &d->es1370; |
|
912 |
ES1370State *s = DO_UPCAST(ES1370State, dev, pci_dev); |
|
920 | 913 |
|
921 | 914 |
(void) region_num; |
922 | 915 |
(void) size; |
... | ... | |
936 | 929 |
ES1370State *s = opaque; |
937 | 930 |
size_t i; |
938 | 931 |
|
939 |
pci_device_save (s->pci_dev, f);
|
|
932 |
pci_device_save (&s->dev, f);
|
|
940 | 933 |
for (i = 0; i < NB_CHANNELS; ++i) { |
941 | 934 |
struct chan *d = &s->chan[i]; |
942 | 935 |
qemu_put_be32s (f, &d->shift); |
... | ... | |
962 | 955 |
if (version_id != 2) |
963 | 956 |
return -EINVAL; |
964 | 957 |
|
965 |
ret = pci_device_load (s->pci_dev, f);
|
|
958 |
ret = pci_device_load (&s->dev, f);
|
|
966 | 959 |
if (ret) |
967 | 960 |
return ret; |
968 | 961 |
|
... | ... | |
1007 | 1000 |
|
1008 | 1001 |
static void es1370_initfn(PCIDevice *dev) |
1009 | 1002 |
{ |
1010 |
PCIES1370State *d = DO_UPCAST(PCIES1370State, dev, dev); |
|
1011 |
ES1370State *s = &d->es1370; |
|
1012 |
uint8_t *c = d->dev.config; |
|
1003 |
ES1370State *s = DO_UPCAST(ES1370State, dev, dev); |
|
1004 |
uint8_t *c = s->dev.config; |
|
1013 | 1005 |
|
1014 | 1006 |
pci_config_set_vendor_id (c, PCI_VENDOR_ID_ENSONIQ); |
1015 | 1007 |
pci_config_set_device_id (c, PCI_DEVICE_ID_ENSONIQ_ES1370); |
... | ... | |
1035 | 1027 |
c[0x3e] = 0x0c; |
1036 | 1028 |
c[0x3f] = 0x80; |
1037 | 1029 |
|
1038 |
s = &d->es1370; |
|
1039 |
s->pci_dev = &d->dev; |
|
1040 |
|
|
1041 |
pci_register_bar (&d->dev, 0, 256, PCI_ADDRESS_SPACE_IO, es1370_map); |
|
1030 |
pci_register_bar (&s->dev, 0, 256, PCI_ADDRESS_SPACE_IO, es1370_map); |
|
1042 | 1031 |
register_savevm ("es1370", 0, 2, es1370_save, es1370_load, s); |
1043 | 1032 |
qemu_register_reset (es1370_on_reset, s); |
1044 | 1033 |
|
... | ... | |
1055 | 1044 |
static PCIDeviceInfo es1370_info = { |
1056 | 1045 |
.qdev.name = "ES1370", |
1057 | 1046 |
.qdev.desc = "ENSONIQ AudioPCI ES1370", |
1058 |
.qdev.size = sizeof (PCIES1370State),
|
|
1047 |
.qdev.size = sizeof (ES1370State), |
|
1059 | 1048 |
.init = es1370_initfn, |
1060 | 1049 |
}; |
1061 | 1050 |
|
Also available in: Unified diff