This is the minimal-but-complete setup required for Debian 10 onwards.
Put the lines below into /etc/modprobe.d/snd_hda_intel.conf and reboot.
# snd_hda_intel ------------------------------ options snd_hda_intel beep_mode=0 options snd_hda_intel enable=1,0,0 options snd_hda_intel enable_msi=1 options snd_hda_intel model=alc221-hp-mic options snd_hda_intel power_save=0 options snd_hda_intel power_save_controller=N options snd_hda_intel probe_only=0,0,1
You should find that the audio behaves sanely from now on.
My setup / usage is that I have my 3.5mm dual-jack headphones plugged into the headphone and microphone sockets on the front, and my external amplifier and speakers plugged into the line out socket on the rear.
The audio comes out of both front and rear sockets, the front microphone works, and plugging something into the front headphone socket mutes the output on the rear headphone socket.
Normally I have my headset plugged into the headphone and microphone socket on the front for conference calls. If I want to watch a video with proper sound, I partially unplug the front headphone jack (leaving it teetering in the socket) and the rear socket wakes up and sound comes out of the speakers through the external amplifier.
There is a problem here though — after a reboot, with headphones plugged in the front and amplifier plugged into the rear, no sound comes out of neither socket until I pull and replace the jack from the front headphone socket. If you are reading this and know of a way around this, so that sound comes out of both outputs on boot without manual intervention, please let me know. 🙂