That said, there is an issue with this at the minute due to the fact that the core does not yet use the device model properly and (essentially) hangs all the drivers off the codec device which leads to having both ai23_probe() which registers the I2C driver and aic23_codec_probe(). This is half way to being rectified (the code exists but is in the process of being merged) so that what happens is that all the components of the system register with the ASoC core after being probed normally from registrations done in the board init code or similar. This will remove all the socdev interaction from the codec driver which is, I think, what you're getting at?
Thanks for the explanation and status update. I have no problem with doing both in the codec until this code is merged.
Thanks Troy