Linux ALSA音效卡驅動之二 Platform

2021-10-03 16:55:06 字數 1995 閱讀 9780

asoc被分為machine,platform和codec三大部件,platform驅動的主要作用是完成音訊資料的管理,最終通過cpu的數字音訊介面(dai)把音訊資料傳送給codec進行處理,最終由codec輸出驅動耳機或者是喇叭的音信訊號。在具體實現上,asoc有把platform驅動分為兩個部分:snd_soc_platform_driver和snd_soc_dai_driver。其中,platform_driver負責管理音訊資料,把音訊資料通過dma或其他操作傳送至cpu dai中,dai_driver則主要完成cpu一側的dai的引數配置,同時也會通過一定的途徑把必要的dma等引數與snd_soc_platform_driver進行互動

2.2.1   mtk-soc-pcm-capture.c      mtk_capture_probe函式

static int mtk_capture_probe(struct platform_device *pdev)

struct platform_device ;
static struct snd_soc_platform_driver mtk_soc_platform = ;

//驅動層的open close ioctl 相關方法的具體實現

static struct snd_pcm_ops mtk_afe_capture_ops = ;

2.2.2  snd_soc_register_platform函式

int snd_soc_register_platform(struct device *dev,

const struct snd_soc_platform_driver *platform_drv)

2.2.3  snd_soc_add_platform 函式做了如下事情:1.初始化platform->component和platform結構體:platform_drv和dev的值賦值給platform->component

2.把platform->component新增到component_list,利用platform->list   把之前初始化完成的platform   新增到全域性變數platform_list中,以供soc_bind_dai_link使用。

int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform,

const struct snd_soc_platform_driver *platform_drv)

static void snd_soc_component_add_unlocked(struct snd_soc_component *component)

list_add(&component->list, &component_list);

init_list_head(&component->dobj_list);

}

//當底層驅動註冊platform、codec+codec dai、cpu dai時, 核心層都會建立乙個對應的snd_soc_component,並且會掛到component_list 鍊錶中

struct snd_soc_component ;

struct snd_soc_platform ;

Linux ALSA音效卡驅動之一

標籤 linux audio codec timer playback 嵌入式 2011 03 23 15 19 61136人閱讀收藏 舉報 linux音訊子系統 14 目錄 在核心裝置驅動層,alsa提供了alsa driver,同時在應用層,alsa為我們提供了alsa lib,應用程式只要呼叫...

Linux ALSA音效卡驅動之一 ALSA架構簡介

宣告 本博內容均由 在核心裝置驅動層,alsa提供了alsa driver,同時在應用層,alsa為我們提供了alsa lib,應用程式只要呼叫alsa lib提供的api,即可以完成對底層音訊硬體的控制。圖 1.1 alsa的軟體體系結構 由圖1.1可以看出,使用者空間的alsa lib對應用程式...

Linux ALSA音效卡驅動之一 ALSA架構簡介

宣告 本博內容均由 在核心裝置驅動層,alsa提供了alsa driver,同時在應用層,alsa為我們提供了alsa lib,應用程式只要呼叫alsa lib提供的api,即可以完成對底層音訊硬體的控制。圖 1.1 alsa的軟體體系結構 由圖1.1可以看出,使用者空間的alsa lib對應用程式...