I'm trying to interface a Blackfin processor to a TLV320aic23 codec via uClinux.
A driver, tlv320aic23.c, exists inside sound/soc/codecs, but there is no
corresponding machine driver in sound/blackfin. (There are other low-level
drivers in sound/blackfin).
Is my assumption correct that two drivers are required, a machine-independent
driver and a seperate low-level driver?
If so, how do the two drivers co-operate?
I have looked at the source of the high-level driver, tlv320aic23.c, and quote
the following code snippet :- "codec->hw_write(codec->control_data, data, 2)".
"codec" is a structure and the member "hw->write" evaluates to a callable
function. For the life of me, I cannot find what function "hw->write" points to,
but it must eventually write to hardware. Another example of my confusion!
So, what function is called, and how is it initialised in the structure.
Any help will be appreciated, including referencing to examples.