http://blog.csdn.net/hanxuefan/article/details/7370074
1.6.1 在初始化文件中加入 UDA1341 設(shè)備結(jié)構(gòu)
Linux-2.6.32.2已經(jīng)完美的支持UDA1341音頻芯片的驅(qū)動,我們只要在arch/arm/mach-s3c2440/mach-mini2440.c 文件中注冊 UDA1341 平臺設(shè)備的控制端口就可以了,打開 mach-mini2440.c,添加如下內(nèi)容: //在文件首部添加頭文件 #include <sound/s3c24xx_uda134x.h>
//在 LCD 平臺設(shè)備后面添加 UDA1341 設(shè)備結(jié)構(gòu) static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = { .l3_clk = S3C2410_GPB(4), .l3_data = S3C2410_GPB(3), .l3_mode = S3C2410_GPB(2), .model = UDA134X_UDA1341, };
static struct platform_device s3c24xx_uda134x = { .name = "s3c24xx_uda134x", .dev = { .platform_data = &s3c24xx_uda134x_data, } };
//注冊 UDA1341 設(shè)備平臺到內(nèi)核中 //這些注冊的結(jié)構(gòu)在哪定義的?? static struct platform_device *mini2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_rtc, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &mini2440_device_eth, &s3c24xx_uda134x, &s3c_device_nand, }; 這樣,我們基本就添加好了 UDA1341 音頻設(shè)備的驅(qū)動,接下來我們在內(nèi)核中配置該驅(qū)動。
注意:其實(shí)在做完以上工作時(shí)還是不能放MP3,沒有DSP節(jié)點(diǎn),我后面根據(jù) http://www./read.php?tid-1481-fpage-0-toread--page-2.html 引用
No device for DAI UDA134X
引用
S3C24XX_UDA134X SoC Audio driver
1.6.2 在內(nèi)核中配置 UDA1341 設(shè)備驅(qū)動
在內(nèi)核源代碼目錄輸入:make menuconfig 開始配置內(nèi)核,依次選擇如下子菜單,找到音頻驅(qū)動配置菜單: Device Drivers ---> <*> Sound card support ---> 按空格選中"[*] Preclaim OSS device numbers ", 再選中"<*> Advanced Linux Sound Architecture --->",并回車進(jìn)入該子菜單 出現(xiàn)音頻驅(qū)動體系結(jié)構(gòu)菜單,在這里,我們選擇 OSS 接口相關(guān)的配置選項(xiàng),需 要注意的是,這里的 OSS 接口其實(shí)是基于 ALSA 接口創(chuàng)建的,因?yàn)樾碌膬?nèi)核中現(xiàn)在都已經(jīng)改用 ALSA 設(shè)計(jì),這里是為了和以前的軟件兼容才這樣做的, 再選擇"<*> ALSA for SoC audio support --->"子菜單并回車進(jìn)入,在這里我們可以看到專門為 S3C24xx 系列芯片(包括 S3C2410/2440/2443 等)而做的 配置選項(xiàng),打開 linux-2.6.32.2/sound/soc/s3c24xx/Makefile 文件就可以看到, 我們的開發(fā)板使用的是 UDA1341 音頻芯片,在這里當(dāng)然要選擇 "-*- SoC I2S Audio support UDA134X wired to a S3C24XX"了。 退出保存以上各項(xiàng)配置。
1.6.3 mp3 放音測試 在內(nèi)核源代碼目錄執(zhí)行:make zImage,把生成的內(nèi)核映像文件燒寫到開發(fā)板,依然使用友善之臂提供的文件系統(tǒng) root_qtopia,系統(tǒng)啟動后,使用系統(tǒng)自帶的madplay 軟件播放一首mp3 進(jìn)行測試,把音箱或者耳機(jī)插入開發(fā)板的綠色音頻輸出插座,就可以聽到音樂了,
1.6.4 修正驅(qū)動中的錄音代碼
雖然播放 mp3 很正常,但當(dāng)使用系統(tǒng)自帶的錄音程序進(jìn)行錄音時(shí),我們發(fā)現(xiàn)無法聽到任何結(jié)果,這是因?yàn)殚_發(fā)板的錄音電路和 SMDK2440 目標(biāo)板的電路是有所區(qū)別的。 mini2440 開發(fā)板使用的錄音通道為 VIN2,而 SMDK2440 使用的則是 VIN1,打開 linux-2.6.32.2/sound/soc/codecs/ uda134x.c,在大概 201 行添加如下紅色代碼: uda134x->slave_substream = substream; } else uda134x->master_substream = substream;
uda134x_write(codec, 2, 2|(5U<<2)); //把錄音通道改為 VIN2 return 0; }
static void uda134x_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { 這樣,我們就完成了錄音驅(qū)動的修正,在內(nèi)核源代碼目錄下執(zhí)行:make zImage,重新編譯內(nèi)核并燒寫到開發(fā)板中。
1.6.5 錄音測試
打開 Qtopia 中的"錄音機(jī)"測試程序,根據(jù)提示,點(diǎn)"REC"按鈕開始錄音,這時(shí)對著板上的麥克風(fēng)說話,可以看到錄音的波形,點(diǎn)"STOP"按鈕結(jié)束錄音,此時(shí)可以點(diǎn)"PLAY"按鈕播放剛才的錄音,同時(shí)錄制的音頻文件將以"WAV"格式 自動存儲到"文檔"中:說明:Qtopia2.2.0 系統(tǒng)自帶了一個(gè)錄音程序,中文名為"語音便簽",但它不能正常使用板上的麥克風(fēng)進(jìn)行錄制。 |
|