sep4020_audio_fops这个结构体主要实现了i2s控制器的操作,包括读写,控制,查询(poll),打开,释放等等。Audio主要实现了接受上层应用数据,并将数据传递给codec进行播放(放音);从codec接受数据,并传递给上层的功能(录音)。这部分中又以write,read函数最为重要,ioctl可以沿用别人的,因此我们的主要工作也是集中在write,read函数上。
而sep4020_mixer_fops则主要实现了对codec参数的配置,我们也可以很清晰的看到它的operation结构体中只有控制函数,没有读写。并且由于codec的通用性,这部分的代码基本上可以沿用别人的,如2410。
3. 关于sep4020_audio_write函数:
这个是整个驱动的核心,也是难点,牵涉了dma操作,buffer ring的思想,linux中信号量的思想。