I had made the changes to the sound/soc/davinci/davinci-aic31xx.c and sound/soc/codecs/tlv320aic31xx.c (renamed your file) to the the I2C driver poll for the codec. It was able to see it during boot-up but just playing the sound wasn't working. I tracked down the issue though! :)
I did a diff between the sound/soc/davinci/davinci-aic31xx.c that I'd copied from https://gitorious.org/ti-codecs/ti-codecs/commit/a8e9dc847e683318810693ff9e3c0d95fc0d0f85 and the native sound/soc/davinci/davinci-evm.c and noticed in evm_hw_params() funciton that it was using
ret = snd_soc_dai_set_pll(codec_dai, 0, AIC31XX_PLL_CLKIN_MCLK, 24000000, params_rate(params));
instead of:
ret = snd_soc_dai_set_sysclk(codec_dai, 0, sysclk, SND_SOC_CLOCK_OUT);
That was returning the error code I was seeing, EINVAL. I changed the line back to using snd_soc_dai_set_sysclk and hunky dory! It's working now.
Thank you very much for your source. It was really helpful and much easier to follow that the other stuff using binaries.