diff --git a/src/include/86box/snd_ac97.h b/src/include/86box/snd_ac97.h index e0345227a..9c4bd308a 100644 --- a/src/include/86box/snd_ac97.h +++ b/src/include/86box/snd_ac97.h @@ -42,6 +42,7 @@ extern int ac97_codec_count, ac97_modem_codec_count; extern const device_t alc100_device; extern const device_t cs4297a_device; +extern const device_t wm9701a_device; extern const device_t ac97_via_device; #endif diff --git a/src/machine/m_at_sockets7.c b/src/machine/m_at_sockets7.c index f15ddf01b..ca6c957e2 100644 --- a/src/machine/m_at_sockets7.c +++ b/src/machine/m_at_sockets7.c @@ -40,6 +40,7 @@ #include <86box/video.h> #include "cpu.h" #include <86box/machine.h> +#include <86box/snd_ac97.h> int @@ -112,7 +113,7 @@ machine_at_ficva503a_init(const machine_t *model) { int ret; - ret = bios_load_linear("roms/machines/ficva503a/jo4116.bin", + ret = bios_load_linear("roms/machines/ficva503a/jn4116.bin", 0x000c0000, 262144, 0); if (bios_only || !ret) @@ -140,5 +141,7 @@ machine_at_ficva503a_init(const machine_t *model) hwm_values.temperatures[1] += 2; /* System offset */ hwm_values.temperatures[2] = 0; /* unused */ + device_add(&wm9701a_device); /* on daughtercard */ + return ret; } diff --git a/src/sound/snd_ac97_codec.c b/src/sound/snd_ac97_codec.c index 0074a9601..57083d590 100644 --- a/src/sound/snd_ac97_codec.c +++ b/src/sound/snd_ac97_codec.c @@ -30,7 +30,8 @@ enum { AC97_CODEC_ALC100 = AC97_CODEC_ID('A', 'L', 'C', 0x20), - AC97_CODEC_CS4297A = AC97_CODEC_ID('C', 'R', 'Y', 0x11) + AC97_CODEC_CS4297A = AC97_CODEC_ID('C', 'R', 'Y', 0x11), + AC97_CODEC_WM9701A = AC97_CODEC_ID('W', 'M', 'L', 0x00) }; #define ENABLE_AC97_CODEC_LOG 1 @@ -238,3 +239,15 @@ const device_t cs4297a_device = NULL, NULL }; + +const device_t wm9701a_device = +{ + "Wolfson WM9701A", + DEVICE_AC97, + AC97_CODEC_WM9701A, + ac97_codec_init, ac97_codec_close, ac97_codec_reset, + { NULL }, + NULL, + NULL, + NULL +};