Other Parts Discussed in Thread: TLV320AIC33, TLV320AIC3101,
I'm having problems with headset detection on TLC320AIC3111 platform. I am not using the EVM; the device is integrated on a custom board running Linux, using the tlv320aic31xx driver.
The headphone interface is AC coupled as recommended in the device data sheet, Figure 5-1, and shown in the schematic of the custom board below.
For testing I am using a standard stereo headset with microphone and switch; it is the one distributed by Apple for use with their phones with 3.5mm audio jacks a number of years ago.
A short summary of the problem I am having is this:
(1) The headset is detected as a headset if the headset is plugged into the jack prior to playing sound output.
(2) The headset is detected as headphones (not headset) if the headset is plugged into the jack while sound output is playing.
I have tried a number of settings but so far have not been able to get the device to detect the headset as a headset type when the headset is plugged in while sound is playing. It seems to be something having to do with the debounce settings, but I think I have tried all combinations.
The driver is configured for headset detection using INT1. The INT1 interrupt consistently activates on headset plug events. I have tried a number of configurations inside the interrupt to check status of the headset insertion/removal flag in registers 0:44 and 0:46 and headset type in 0:67. I have also tried a number of MICBIAS settings (maybe not exhaustive).
I also tried disabling the interrupt operation, thinking that somehow the reading of the sticky flags in register 0:44 was interfering with the debounce filtering. I ran the following two tests:
(1) With headset already inserted into the jack, no audio output, I read register 0:67 manually. Both bits 5 and 6 are zero. Then I started audio output, and read the register manually again. Both bits were now set to '1', indicating that a headset with microphone is attached.
(2) With headset out of the jack, I read register 0:67 manually and saw that both bits 5 and 6 are zero. Then I started audio output and read the register again. Both bits still zero. Then I inserted the headset and then read the register manually. I found that bit 5 was set to '1' and bit 6 was '0', indicating headset without microphone.
In searching this forum I found this document: SLAA454 – June 2010 "Headset Detection for TLV320AIC33 and TLV320AIC3101/4/5/6 Family"; it doesn't seem to directly apply (register references do not match my device), but it seems to have some useful information that may partially apply (?).
Please advise on how I can resolve this problem.