hw/audio/via-ac97: Basic implementation of audio playback

Add basic implementation of the AC'97 sound part used in VIA south
bridge chips. Not all features of the device is emulated, only one
playback channel is supported for now but this is enough to get sound
output from some guests using this device on pegasos2.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de>
Tested-by: Rene Engel <ReneEngel80@emailn.de>
Message-Id: <63b99410895312f40e7be479f581da0805e605a1.1678188711.git.balaton@eik.bme.hu>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
BALATON Zoltan 2022-01-23 21:40:42 +01:00 committed by Philippe Mathieu-Daudé
parent 422a6e8075
commit eb604411a7
5 changed files with 482 additions and 7 deletions

View file

@ -1,6 +1,8 @@
#ifndef HW_VT82C686_H
#define HW_VT82C686_H
#include "hw/pci/pci_device.h"
#include "audio/audio.h"
#define TYPE_VT82C686B_ISA "vt82c686b-isa"
#define TYPE_VT82C686B_USB_UHCI "vt82c686b-usb-uhci"
@ -9,6 +11,29 @@
#define TYPE_VIA_IDE "via-ide"
#define TYPE_VIA_MC97 "via-mc97"
typedef struct {
uint8_t stat;
uint8_t type;
uint32_t base;
uint32_t curr;
uint32_t addr;
uint32_t clen;
} ViaAC97SGDChannel;
OBJECT_DECLARE_SIMPLE_TYPE(ViaAC97State, VIA_AC97);
struct ViaAC97State {
PCIDevice dev;
QEMUSoundCard card;
MemoryRegion sgd;
MemoryRegion fm;
MemoryRegion midi;
SWVoiceOut *vo;
ViaAC97SGDChannel aur;
uint16_t codec_regs[128];
uint32_t ac97_cmd;
};
void via_isa_set_irq(PCIDevice *d, int n, int level);
#endif