> Is alc_fixup_headset_mode() called by the quirk chain? > When this is set up via quirks, alc_update_headset_mode() gets called > at initialization and this should detect the headset type. At that > point, alc_headset_mode_ctia() would be called if the proper type gets > detected. Thanks for pointing me in the right direction, I believe I've managed to find the root problem. I've set it up via quirks to call alc_update_headset_mode(), when I plug in any earphone, alc_determine_headset_type() incorrectly determines that the type is OMTP despite it being CTIA (I've confirmed this on a friend's laptop). Adding my codec to a case in alc_determine_headset_type() for my codec seems to fix this issue. After the headset is detected as CTIA, I also had to add my codec to a case in alc_headset_mode_ctia() to set the process coefficient to 0xD689 (as written in my original patch) to finally pick up the mic input. I hope this is a satisfactory approach, if it is not, please let me know. I'll make an attempt to understand the cases and process coefficients before sending v2.