@zhangjie
声卡部分用的是UDA1341
驱动已经贴出来了 内核版本linux-2.6.26
2.6.26中semaphore结构体做了改动,所以我修改的驱动不一定适合你.你可以参考luofuchong大侠的2.6.22版本的驱动
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=embedded&Number=674018&page=0&view=collapsed&sb=5&o=0&fpart=&vc=1&PHPSESSID
我就是用他的驱动加上修改了semaphore相关部分就可以了.
如果你用的是mplayer,还应该做如下修改:
加上如下一段代码,
if ((file->f_mode & FMODE_WRITE)){
init_s3c2410_iis_bus_tx();
audio_clear_buf(&output_stream);
// 加上以下这行代码
if (!output_stream .buffers && audio_setup_buf(&output_stream))
return -ENOMEM;
按以上的方法做了,但是还是出现同样的提示,仔细的看了驱动,在驱动上加了大量的调试信息最后发现在smdk2410_audio_ioctl 中调用的一个函数老是返回错误,这个函数是access_ok(VERIFY_WRITE, inf, sizeof(*inf)),查了这个函数的代码发现返回1的时候是表示可以访问,而不是错误,所以导致下面代码老是出错,其实运行都是对的:
int err = access_ok(VERIFY_WRITE, inf, sizeof(*inf));
if (err)
return err;
于是改成int err = !access_ok(VERIFY_WRITE, inf, sizeof(*inf));