将UDA1345移植到2.6的内核上


平台:RedHat9.0 + S3C2440 + UDA1345
编译环境:GCC-3.4.1

2.4的Kernel与2.6的Kernel于音频的部分作了很大的改变,2.4的相对好理解点;
将MP1和MP5分别接HIGH,LOW选择L3 MODE;

由于2.6的kernel只支持UDA1341,而1341与1345主要是多了MP1和MP5;
UDA1345的寄存器也有一些变化:
1.取消的STAT1和RST的设置,只保留了STAT0;
2.data也由原来的6个减少为4个;

在2.6的Kernel中稍作修改就可以驱动UDA1345了。
主要在uda1341_sync中多发送一个0xC1的数据和修改data0_2的值

ADD_FIELD(STAT0, stat0);
if (p != buf)
l3_write(clnt, UDA1341_STATUS, buf, p - buf);

ADD_FIELD(DATA0,data0_0);
ADD_FIELD(DATA1, data0_2);
ADD_FIELD_TMP(0xC1);

if (p != buf)
l3_write(clnt, UDA1341_DATA0, buf, p - buf);

相关内容