Some HDA chips need forcing the output amplifier bit 7 to zero
vanfanel opened this issue · 12 comments
Hello there,
Based on this partially fixed bug on VSBHDA (Baron-von-Riedesel/VSBHDA#8) it seems that some HDA chips need forcing the output amplifier bit 7 to zero, so it's no longer possible for the program to mute the amplifier "accidentally".
Can it please be done in SBEMU or added as an option? My DOS notebook (Compaq Mini CQ10-500) was working great with SBEMU initial version, and now it is totally silent with current SBEMU versions...
Yes of course, I'll check it. Thanks for the feedback.
I checked the code, there's no accidental muting happens (the muting might be caused by changes in VSBHDA), but the init code seems having problem after using a double reset, so the initial unmute doesn't work.
can you test if this build works? I'm not sure it will work, but there're problems definitely and I will get it fixed.
sbemu.zip
Here's another experimental fix for O2 and LTO:
sbemu_mmio_volatile.zip
Thanks for your fast reply (and sorry I can't reply in time).
I'll investigate more. please wait. I'll upload a build with HDA init log so that it can be checked.
Please run SBEMU > log.txt
and paste/upload the log file, thanks.
sbemu_HDALOG.zip
The log seems OK, and Sorry it took a while, as I'm not really familiar with all the codes and its log. the DAC node is parsed and unmuted, I doubt there are other problems, but to make sure it DOES have muted problem, I changed the code to force unmute when setting volumes:
sbemu_FORCE_UNMUTE.zip
And if it doesn't work, I guess there's some other problems, I can give you some release builds that is working/notworking after code changes.
The code changes in HDA is little, only 1) CORB/PIO related, and 2) interrupt related, and 3) power states. I think it's easy to find the cause.
Sorry, use this one instead, just mask all the cases of amplifiers bit 7 to make sure every sets of volume is not muted.
sbemu_FORCE_UNMUTE.zip
@crazii That version works! It sounds as good as it used to sound! :)
Mask all the cases of amplifiers bit 7 was the solution!!! Thanks!!!!
@crazii That version works! It sounds as good as it used to sound! :) Mask all the cases of amplifiers bit 7 was the solution!!! Thanks!!!!
Good, but really strange, as I checked code, none of them mutes the amplifier, but it's possible that it got muted itself somehow. and because the mixer will read the original before setting new volume, so all volume sets afterwards will have the bit 7 set.