On 2026-09-01 08:07, Takashi Iwai wrote: > But, first off, could you give more details about your hardware? > At best, give alsa-info.sh output (run with --no-upload option and > attach the output). I got access to the machine and configured a VPN for some slower remote testing. It is an HP ENVY 27-p014 with a Sunrise Point HDA controller, 8086:a170, subsystem 103c:2b3e. It has a Conexant CX20753/4 at cad0 and Intel HDMI at cad2. Attached is the output of alsa-info.sh --no-upload. I also put the earlier reduction tests and the newer controls here: https://forge.caseytunturi.com/Fimeg/hp-envy-27-p014-hda Much of the reduction was already done before I sent v1. Runs A through G progressively removed the RINTCNT change, PCI command cycle, IRQ quiescing, abnormal controller init, and clock-gate handling... just standard chew of too much code. The remaining behavior that consistently brought cad0 back was the tight CRST sequence. > Can't the standard snd_hdac_bus_reset_link() work? If not, we may > tweak there in the standard code instead of open-code here. I tested snd_hdac_bus_reset_link(bus, true) at the same probe point. In that test it left STATESTS at 0x4 and only HDMI enumerated. Restoring the reduced tight-reset version brought cad0 back. I also tested with the probe reset removed entirely. That gives HDMI only, including from a cold boot. The source variants, module hashes, and logs for those tests are in the archive above - and I'm happy to double check. With the board on the power-save denylist, removing the system-resume reset leaves cad0 registered after S3, but codec commands time out and capture fails. With the reset restored, capture works after the same deep S3 test. I do not have a narrower condition for the reset yet. I haven't tested S4. > Trying the bus reset at probe is understandable, but... > ... those look too ugly. The use of PIO mode isn't mentioned in the > description, either. Maybe PIO mode should be used always for your > board? Glad you pointed this out - temporary PIO is not needed. I > alternated a version with the PIO switch removed against the current > reduced version; both enumerated cad0 and completed the mixer reads. A > cold boot without the PIO switch also enumerated the codec, so current > running version does not have this anymore. > Add to power_save_denylist, instead. Done, no problems there. I'm unsure why the standard reset helper does not recover cad0 where the tighter sequence does. I haven't tried to modify snd_hdac_bus_reset_link() directly yet - but if that's the subsection this belongs in I can ensure I comprehend it before sending a v2. Casey