ALSA 驅動配置外部HP MIC SPK

2021-08-16 19:13:28 字數 1609 閱讀 4261

為了能在alsa上層控制spk,hp,mic的開啟關閉,定義kcontrol例項。

為了能讓alsa自動控制spk,hp,mic的功耗,定義widget,route例項。

在snd_soc_card--dai_link--init裡,註冊上面宣告的kcontrol,widget,route例項。

向下的實際控制函式,用於底層驅動程式控制hp mic spk的開關。

static

const

char *jack_function = ;

static

const

char *spk_function = ;

static

const

struct

soc_enum

corgi_enum = ;

static

const

struct

snd_kcontrol_new

wm8731_corgi_controls = ;

static

int corgi_get_spk(struct snd_kcontrol *kcontrol,

struct snd_ctl_elem_value *ucontrol)

static

int corgi_set_spk(struct snd_kcontrol *kcontrol,

struct snd_ctl_elem_value *ucontrol)

//corgi_ext_control函式的實現

static

void corgi_ext_control(struct snd_soc_codec *codec)

//定義widget

/* corgi machine dapm widgets */

static

const

struct

snd_soc_dapm_widget

wm8731_dapm_widgets = ;

//電源控制介面的實現

static

intcorgi_amp_event

(struct snd_soc_dapm_widget *w,

struct snd_kcontrol *k, int event)

//定義route

/* corgi machine audio map (connections to the codec pins) */

static

const

struct

snd_soc_dapm_route

audio_map = ,//設定spk直連codec的rout和lout

,};

static

const

struct

snd_soc_dapm_widget

wm8731_dapm_widgets = ;

一般產品開發,codec驅動和platform驅動由晶元廠商提供,只需要開發machine驅動。

Alsa驅動移植

華清遠見嵌入式學院講師。二 預設情況下核心已經支援alsa驅動,保險情況下先去確認一下,如下圖 device drivers sound card support advanced linux sound architecture alsa for soc audio support soc aud...

Alsa驅動移植

華清遠見嵌入式培訓中心講師。二 預設情況下核心已經支援alsa驅動,保險情況下先去確認一下,如下圖 device drivers sound card support advanced linux sound architecture alsa for soc audio support soc a...

ALSA驅動之 ALSA架構簡介

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