Hi,
I never truly solved it. Every step I took made subtle improvements but in the end I came to the conclusion that it is what it is. The CODEC itself does not have exactly hi-fi quality datasheet specs. 85dB SNR. I suppose this is quoted under ideal conditions, but its not great. Indeed if you take a look you see that in bypass mode (ie. not using the ADC) the SNR goes up to 98dB. Although I'm not 100% sure, I also think the ADC its also multiplexed between L & R inputs. There is only really a single ADC.
Anyway, well regulated separate supplies. Careful separation of analog and digital grounds and careful pre-filtering, it was possible to get close to the specs given, but I turned my attention to other devices. I became convinced that the biggest issue is that the ADC does not have differential inputs. At such low signal levels at the ADC front end, you require super clean ground and references, with low uV levels of accuracy. In the application I have been developing, which has power amplifiers just a short copper hop away which are delivering +1000W of audio output, truth is I could not keep it clean enough.
Having said all this, I would like to add that I think Paul made an excellent choice in the SGTL5000. It packs a lot of very useful relatively easy to implement features in a very low cost device. It a great little CODEC. I imagine for battery operated low power applications it is excellent. I came to love it really.
But it is a bit noisy, Still I might well go back and give it another try
But in reality I think I would need an ADC with differential inputs. BTW the Teensy itself has a differential input ADC and it also implements hardware averaging. If it was not for the fact that I need some external DSP functions from any codec I choose, I would actually see just how much mileage it was possible to get out of the Freescale chip and use the SGTL5000 as just a DAC.
Good luck
Aidan