花費了好久時間 , 終於完成 TLV320AIC3110 Codec Driver 了 !!
整個結構很亂 , 不過按照下列的 Function 動作 , 把相對應的 Code 填寫完畢 ,
差不多就完成了 , 剩下的 DAPM 部分 , 我還不是很了解 , 我只將會用到的 Register
用 amixer 的方式完成 , 其他進階的 Wadge 部份 , 我都先不去實作 , 等有需要再來
修補 !!
soc_pcm_open()
{
cpu_dai->driver->ops->startup() => dabinci_mcaps_startup();
platform->driver->ops->open() => davinci_pcm_open();
codec_dai->driver->ops->startup() => aic3110_startup();
rtd->dai_link->ops->startup() =>
}
soc_pcm_hw_params()
{
rtd->dai_link->ops->hw_params() => evm_aic3110_hw_params()
snd_soc_dai_set_fmt(codec_dai) => aic3110_set_dai_fmt()
snd_soc_dai_set_fmt(cpu_dai) => davinci_mcasp_set_dai_fmt()
snd_soc_dai_set_sysclk(codec_sysclk) => aic3110_set_dai_sysclk()
??? snd_soc_dai_set_sysclk(cpu_sysclk) =>
codec_dai->driver->ops->hw_params() => aic3110_hw_params()
cpu_dai->driver->ops->hw_params() => davinci_mcasp_hw_params()
platform->driver->ops->hw_params() =>
}
soc_pcm_trigger()
{
codec_dai->driver->ops->trigger() => None.
platform->driver->ops->trigger() => davinci_pcm_trigger()
cpu_dai->driver->ops->trigger() => davinci_mcasp_trigger()
}
soc_pcm_prepare()
{
rtd->dai_link->ops->prepare() =>
platform->driver->ops->prepare() => davinci_pcm_prepare();
codec_dai->driver->ops->prepare() => None
cpu_dai->driver->ops->prepare() => None
}
soc_pcm_pointer()
{
platform->driver->ops->pointer() =>
cpu_dai->driver->ops->delay() =>
codec_dai->driver->ops->delay =>
platform->driver->delay =>
}
2012年5月23日 星期三
2012年4月26日 星期四
mDDR2 Problem .... Solved
之前,我們的mDDR 200 一直有問題沒有辦法Initial ,今天終於在FAE幫忙下解決了!!
有兩個Register 設定值不對,這兩個值在所有文件上還找不到說明,真是.......
2012年4月3日 星期二
2012年4月2日 星期一
g_mass_storage driver for windows 7 !!
上星期 ㄊㄨ、 了一個星期,還是沒有辦法法解決 win 7 下 Luns=2 卻只連接ㄧ個Device 的問題!
今天總算被我解開了!!
先解釋ㄧ下 bug 狀況, 使用 BSP Build 出來的g_mass_storage.ko 和 modprobe g_mass_storage luns=2 remoable=1 stall=0 file=/dev/mmc/mmcblk1p1,/dev/mmc/mmcblk0p1
指令來掛載 kernel module !
結果,在Fedora Host 兩個都可以正確Access ! 但是,如果換成Windows 7 的時候,嘿嘿,就是只能看到 第一個Device (mmcblk1p1 ) !!
首先可以到 Win7 的 Mass Driver 中去觀看Driver的訊息 , 例如下圖 可以看到 USB/PID/VID & VER , 和 sub class 狀態 !! 確定 Device descriptor 都沒有傳輸錯誤 !!

重點是下列的圖 ,可發現 "裝置例項路徑" , "匯流排關係" , "上層" & "下層" 中最後一段都是亂碼 (紅色圈起部分 ) !!

發現 , Win 7 對於這樣亂碼的內容好像沒有辦法支援Luns=2 的狀況 , 所以更改 modprobe 指令為
modprobe g_mass_storage iSerialNumber=12345 luns=2 remoable=1 stall=0 file=/dev/mmc/mmcblk1p1,/dev/mmc/mmcblk0p1
得到結果如下 :

上圖 , 可以發現 VID/PID , Class type 都沒有更動 !!

上圖可以發現 , "裝置例項路徑" , "匯流排關係" & "下層" 資料中 , 都用標準的字元 "12345" 來取代 , 並且在最後用 "&1" or "&0" 來標示 device 0 & 1 !!
所以.....給Win 7 的序號需要標準的字元 , 不要含代一些其他字元 , 這樣就可以解決這個 bug 了 !!
這個bog bug花費我... 一星期多的時間 , 一直懷疑 SCSI Command 傳輸有問題 , 在要放棄修正這個 bug 前...想到 , 會不會是 win 7 沒有正確收到 Luns=2 這個 參數 , 才找到原來是不起眼的Serial Number格式問題 !!
先解釋ㄧ下 bug 狀況, 使用 BSP Build 出來的g_mass_storage.ko 和 modprobe g_mass_storage luns=2 remoable=1 stall=0 file=/dev/mmc/mmcblk1p1,/dev/mmc/mmcblk0p1
指令來掛載 kernel module !
結果,在Fedora Host 兩個都可以正確Access ! 但是,如果換成Windows 7 的時候,嘿嘿,就是只能看到 第一個Device (mmcblk1p1 ) !!
首先可以到 Win7 的 Mass Driver 中去觀看Driver的訊息 , 例如下圖 可以看到 USB/PID/VID & VER , 和 sub class 狀態 !! 確定 Device descriptor 都沒有傳輸錯誤 !!

重點是下列的圖 ,可發現 "裝置例項路徑" , "匯流排關係" , "上層" & "下層" 中最後一段都是亂碼 (紅色圈起部分 ) !!

發現 , Win 7 對於這樣亂碼的內容好像沒有辦法支援Luns=2 的狀況 , 所以更改 modprobe 指令為
modprobe g_mass_storage iSerialNumber=12345 luns=2 remoable=1 stall=0 file=/dev/mmc/mmcblk1p1,/dev/mmc/mmcblk0p1
得到結果如下 :

上圖 , 可以發現 VID/PID , Class type 都沒有更動 !!

上圖可以發現 , "裝置例項路徑" , "匯流排關係" & "下層" 資料中 , 都用標準的字元 "12345" 來取代 , 並且在最後用 "&1" or "&0" 來標示 device 0 & 1 !!
所以.....給Win 7 的序號需要標準的字元 , 不要含代一些其他字元 , 這樣就可以解決這個 bug 了 !!
這個
2012年3月24日 星期六
Project Starting .......
農曆過完年後開使進行AM335X CPU 的 Porting !
之前 Samsung Porting 過程都沒有記錄,所以這次我想記錄在Bolgger中 。
訂閱:
文章 (Atom)