1. 程式人生 > >rk3288 audio 驅動分析 (https://github.com/54shady/kernel_drivers_examples/tree/master/debug/codec)

rk3288 audio 驅動分析 (https://github.com/54shady/kernel_drivers_examples/tree/master/debug/codec)

Intro

es8323.c codec驅動

DeviceTree Describe

&i2c2 {
es8323: [email protected] {
            compatible = "es8323";
            reg = <0x10>;
            spk-con-gpio = <&gpio7 GPIO_B7 GPIO_ACTIVE_HIGH>;
            hp-con-gpio = <&gpio0 GPIO_B5 GPIO_ACTIVE_HIGH>;
            hp-det-gpio = <&gpio7 GPIO_A4 GPIO_ACTIVE_HIGH>;
            hub_rest = <&gpio0 GPIO_B6 GPIO_ACTIVE_LOW>;
            hub_en = <&gpio7 GPIO_B2 GPIO_ACTIVE_HIGH>;
        };
};

rk_es8323.c rockchip平臺machine驅動

DeviceTree Describe

/ {
    rockchip-es8323 {
        compatible = "rockchip-es8323";
        dais {
            dai0 {
                audio-codec = <&es8323>;
                audio-controller = <&i2s>;
                format = "i2s";
            };
        };
    };
};

rk_i2s.c rockchip平臺platform驅動

DeviceTree Describe

i2s: [email protected] {
         compatible = "rockchip-i2s";
         reg = <0xff890000 0x10000>;
         i2s-id = <0>;
         clocks = <&clk_i2s>, <&clk_i2s_out>, <&clk_gates10 8>;
         clock-names = "i2s_clk","i2s_mclk", "i2s_hclk";
         interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
         dmas = <&pdma0 0>, <&pdma0 1>;
         dma-names = "tx", "rx";
         pinctrl-names = "default", "sleep";
         pinctrl-0 = <&i2s_mclk &i2s_sclk &i2s_lrckrx &i2s_lrcktx &i2s_sdi &i2s_sdo0 &i2s_sdo1 &i2s_sdo2 &i2s_sdo3>;
         pinctrl-1 = <&i2s_gpio>;
     };

從datasheet裡Address Mapping可以找到I2S控制器被對映到的位置

I2S MAP

中斷號(SPI[85])

I2S INT

DMA編號(tx[0], rx[1])

I2S DMA

I2S暫存器資訊,32bit,步進4

I2S REG

Debug

編譯後得到連個模組es8323.ko, rk_es8323.ko, rk_i2s.ko

載入codec驅動

insmod es8323.ko

cat /sys/kernel/debug/asoc/codecs

內容如下(i2c_driver name.i2c控制器號-I2C裝置地址)
ES8323 codec.2-0010

cat /sys/kernel/debug/asoc/dais
ES8323 HiFi

載入platform驅動

insmod rk_i2s.ko
cat /sys/kernel/debug/asoc/dais
內容如下(i2s控制器號地址.dainame)
ff890000.rockchip-i2s

cat /sys/kernel/debug/asoc/platforms
內容如下(i2s控制器號地址.dainame)
ff890000.rockchip-i2s

載入machine驅動

insmod rk_es8323.ko 有如下資訊表示成功,練接連個dai
ES8323 HiFi <-> ff890000.rockchip-i2s mapping ok

codec probe成功後在下面目錄會有相關資訊

/dev/snd/
/proc/asound/cards
/sys/kernel/debug/asoc/
/sys/class/sound/

Usage

將es8323.dtsi包含到主dts中

#include "es8323.dtsi"

test

錄音

tinycap test.wav

播放

tinyplay test.wav

attached

spin lock

參考文章

如果只是在普通執行緒之間同時訪問共享物件

使用spin_lock()/spin_unlock()

如果是在中斷和普通執行緒之間同時訪問共享物件,並且確信退出臨界區後要開啟中斷

使用spin_lock_irq()/spin_unlock_irq()

如果是在中斷和普通執行緒之間同時訪問共享物件,並且退出臨界區後要保持中斷的狀態

使用spin_lock_irqsave()/spin_unlock_irqrestore()

PCM是什麼

參考文章

PCM是英文Pulse-code modulation的縮寫,中文譯名是脈衝編碼調製

PCM就是要把聲音從模擬轉換成數字訊號的一種技術

playback:如何把使用者空間的應用程式發過來的PCM資料,轉化為人耳可以辨別的模擬音訊

capture:把mic拾取到得模擬訊號,經過取樣,量化,轉換為PCM訊號送回給使用者空間的應用程式

相關推薦

rk3288 audio 驅動分析 https://github.com/54shady/kernel_drivers_examples/tree/master/debug/codec

Intro es8323.c codec驅動 DeviceTree Describe &i2c2 { es8323: [email protected] { compatible = "es8323";

11、比對軟件STARhttps://github.com/alexdobin/STAR

之前 sam tween 4.3 rand dex 帶來 註釋 是我 轉載:https://mp.weixin.qq.com/s?__biz=MzI1MjU5MjMzNA==&mid=2247484731&idx=1&sn=b15fbee5910b3

LUCKYOJhttps://github.com/lucky521

計算機中的數學 本專欄的主題是電腦科學中的數學問題。主要講述組合數學、具體數學、概率論、博弈論中的計算機經典問題。同時也是程式設計師求職面試中經常遇到的數學問題。讓我們一起享受數學之美吧。 https://github.com/

python heapq簡述 從https://github.com/qiwsir/algorithm/blob/master/heapq.mdfuzh複製

python中的堆排序peapq模組 heapq模組實現了python中的堆排序,並提供了有關方法。讓用Python實現排序演算法有了簡單快捷的方式。 下面通過舉例的方式說明heapq的應用方法 實現堆排序 #! /usr/bin/evn pyt

Java分散式中文分片語件 - word分詞轉自 https //github com/ysc/word

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

git 報錯:error: failed to push some refs to 'https://github.com/Anderson-An/******.git'已解決

提交push 報錯: $ git push origin masterTo https://github.com/Anderson-An/******.git ! [rejected] master -> master (fetch first)error: failed to push some r

Keep Learning學習Spark、CarbonData 、Alluxio等,且為其Contributor,Github為:https://github.com/xubo245。歡迎微信聯絡601450868!

學習Spark、CarbonData 、Alluxio等,且為其Contributor,Github為:https://github.com/xubo245。歡迎微信聯絡601450868!...

https://github.com/xiaohuoni知識才是一個程式設計師最虔誠的信仰

小程式-高仿豆瓣評分 一個小程式的入門教程,以線上的豆瓣評分為效果圖,以豆瓣評分API作為資料介面,從簡單的建立小程式,再到小程式頁面的編寫,及小程式頁面邏輯的講解,摻雜部分的原理和理論,特別適合沒有前端基礎,沒有開發經驗的朋友,

如何走上更高平臺分享傳遞乾貨知識:開通個人Github面向開源及私有軟體專案的託管平臺:https://github.com/zlslch/圖文詳解博主推薦

歡迎您的加入! 微信公眾號平臺: 大資料躺過的坑 微信公眾號平臺: 人工智慧躺過的坑 大資料和人工智慧躺過的坑(總群): 161156071 更多QQ技術分群,詳情請見:http://www.cnblogs.com/zls

vue2.0配置 https://github.com/wike933/vuebook

random 新項目 靜態資源 name project 環境配置 定義 詳細 目錄 前言: 學習VUE幾個月,看了很多例子和資料,vue雖然中文文檔比較多,但是都是一些零散的教程,我這裏打算寫一本完整的VUE2.0的開發教程(因為時間有限,每天更新一小塊,希望大家支持)

https://github.com/MediaTek-Labs/linkit-smart-7688-feed編譯失敗

lin tar.bz2 tar gdb prepare com gin err evel 2017-06-26 16:08:49 (8.82 KB/s) - Read error at byte 10119560/24112160 (Connection timed out

git推送到github報錯:error: The requested URL returned error: 403 Forbidden while accessing https://github.com

rep 發的 rac adc lob hub sta stat forward 最近使用git命令從github克隆倉庫到版本,然後進行提交到github時報錯如下: [[email protected]/* */ git_test]# git push ori

Detectron系統實現了最先進的物體檢測算法https://github.com/facebookresearch/Detectron

ctr 領域 oss bject 代碼 很多 github res 平臺 ,包括Mask R-CNN。 它是用Python編寫的,支持Caffe2深度學習框架。 不久前,FAIR才開源了語音識別的工具wav2letter,戳這裏看大數據文摘介紹《快訊 | Faceb

git同步遇到報錯“fatal: unable to access 'https://github.com/ruanwenwu/newp.git/': Peer reports incompatible or unsupported protocol version.”

版本升級 pat gpo new 依然 curl ted git pos git同步遇到報錯“fatal: unable to access ‘https://github.com/ruanwenwu/newp.git/‘: Peer reports incompatibl

git同步遇到報錯“fatal: unable to access 'https://github.com/lizhong24/mysite2.git/': Peer reports incompatible or unsupported protocol version.”

tps 問題解決 問題 ces proto fat version prot nco git同步遇到報錯“fatal: unable to access ‘https://github.com/lizhong24/mysite2.git/‘: Peer reports in

fatal: unable to access 'https://github.com/open-falcon/falcon-plus.git/': Peer reports incompatible or unsupported protocol version

fat AC pan 通過 access 解決 pla total 出現 git通過git clone下載github上的資源到機器上,結果出現如題所示的錯誤。 [plain] view plain copy [root@server data]# git

安裝ionic cordova專案並打包成apk中遇到的問題(安裝的是https://github.com/SilvaEmerson/face_recognition_app)

安裝依賴npm install 解決:安裝了python2.7(版本python3+不行) 再次npm install 解決:以管理員身份在cmd執行 npm install -global -production windows-build-tools 參考:htt

Git使用常見錯誤,建立倉庫-提交程式碼攻略 Github錯誤:fatal: Authentication failed for 'https://github.com/ ...

專案開發進入測試階段,公司非IT公司,臨時搭建起來的開發團隊,沒有運維,服務端那邊也沒有提供SVN 或者git地址。所以一個月的時間都是把程式碼放到本地。幸好是公司桌上型電腦,並沒有出現硬碟損壞,程式碼丟失等天災人禍,不過已經進入發版階段,肯定設計開設分支等問題,所以還是抽出一點時間,把程式碼上傳至

hexo報錯fatal: unable to access 'https://github.com/messi1002/messi1002.github.io.git/':

  【問題】:hexo提交hexo d命令時報錯:         fatal: unable to access 'https://github.com/messi1002/messi1002.github.io.git/': The re

iOS - 解決Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named

轉載自: https://www.cnblogs.com/hero11223/p/8882732.html 1  本來cocopods沒有問題,最近建立專案,利用cocopods匯入第三方庫的時候,出現如下錯誤: [!] Unable to add a source with