為了能在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對應用程式...