Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
stks
myalsa
提交
b7a39f26
M
myalsa
项目概览
stks
/
myalsa
通知
129
Star
1
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
myalsa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b7a39f26
编写于
11月 15, 2021
作者:
V
vbox
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
9.加widget, 模拟codec的两条complete path
上级
6fcb2d1c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
103 addition
and
1 deletion
+103
-1
vcodec.c
vcodec.c
+103
-1
未找到文件。
vcodec.c
浏览文件 @
b7a39f26
...
...
@@ -13,6 +13,8 @@
enum
reg
{
VCODEC_DAC_VOL_CTRL
,
VCODEC_ADCL_REG
,
VCODEC_DAC_REG
,
VCODEC_CTRL_NUM
};
...
...
@@ -27,9 +29,100 @@ static const struct snd_kcontrol_new vcodec_codec_controls[] = {
0xFF
,
0
,
dac_vol_tlv
),
};
/* mic controls */
static
const
struct
snd_kcontrol_new
mic1_input_mixer
[]
=
{
SOC_DAPM_SINGLE
(
"MIC1 Boost Switch"
,
VCODEC_ADCL_REG
,
0
,
1
,
0
),
};
static
int
vcodec_capture_event
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
k
,
int
event
)
{
//struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
switch
(
event
)
{
case
SND_SOC_DAPM_POST_PMU
:
printk
(
"-%s,SND_SOC_DAPM_POST_PMU
\n
"
,
__func__
);
break
;
case
SND_SOC_DAPM_POST_PMD
:
printk
(
"-%s,SND_SOC_DAPM_POST_PMD
\n
"
,
__func__
);
break
;
default:
break
;
}
return
0
;
};
static
int
vcodec_playback_event
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
k
,
int
event
)
{
//struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
switch
(
event
)
{
case
SND_SOC_DAPM_PRE_PMU
:
printk
(
"-%s,SND_SOC_DAPM_PRE_PMU
\n
"
,
__func__
);
break
;
case
SND_SOC_DAPM_POST_PMD
:
printk
(
"-%s,SND_SOC_DAPM_POST_PMD
\n
"
,
__func__
);
break
;
default:
break
;
}
return
0
;
};
static
int
vcodec_hpspeaker_event
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
k
,
int
event
)
{
//struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
switch
(
event
)
{
case
SND_SOC_DAPM_POST_PMU
:
printk
(
"-%s,SND_SOC_DAPM_POST_PMU
\n
"
,
__func__
);
//这里可以拉高gpio, 使能功放
break
;
case
SND_SOC_DAPM_PRE_PMD
:
printk
(
"-%s,SND_SOC_DAPM_PRE_PMD
\n
"
,
__func__
);
////这里可以拉低gpio, 失能功放
break
;
default:
break
;
}
return
0
;
}
static
const
struct
snd_soc_dapm_widget
vcodec_dapm_widgets
[]
=
{
SND_SOC_DAPM_INPUT
(
"MIC1"
),
SND_SOC_DAPM_MIXER
(
"ADCL Input"
,
SND_SOC_NOPM
,
0
,
0
,
mic1_input_mixer
,
ARRAY_SIZE
(
mic1_input_mixer
)),
SND_SOC_DAPM_AIF_OUT_E
(
"ADCL"
,
"Capture"
,
0
,
VCODEC_ADCL_REG
,
8
,
0
,
vcodec_capture_event
,
SND_SOC_DAPM_POST_PMU
|
SND_SOC_DAPM_POST_PMD
),
SND_SOC_DAPM_AIF_IN_E
(
"DACL"
,
"Playback"
,
0
,
VCODEC_DAC_REG
,
0
,
0
,
vcodec_playback_event
,
SND_SOC_DAPM_PRE_PMU
|
SND_SOC_DAPM_POST_PMD
),
SND_SOC_DAPM_OUTPUT
(
"HPOUTL"
),
SND_SOC_DAPM_SPK
(
"HpSpeaker"
,
vcodec_hpspeaker_event
),
};
static
const
struct
snd_soc_dapm_route
vcodec_dapm_routes
[]
=
{
/* Mic input route */
{
"ADCL Input"
,
"MIC1 Boost Switch"
,
"MIC1"
},
{
"ADCL"
,
NULL
,
"ADCL Input"
},
/* Headphone output route */
{
"HPOUTL"
,
NULL
,
"DACL"
},
{
"HpSpeaker"
,
NULL
,
"HPOUTL"
},
};
static
int
vcodec_probe
(
struct
snd_soc_codec
*
codec
)
{
int
ret
=
0
;
struct
snd_soc_dapm_context
*
dapm
=
&
codec
->
component
.
dapm
;
printk
(
"-%s,line:%d
\n
"
,
__func__
,
__LINE__
);
/* 1.加controls */
...
...
@@ -40,7 +133,14 @@ static int vcodec_probe(struct snd_soc_codec *codec)
return
ret
;
}
/* 2.初始化codec */
/* 2. 注册widgets和routes */
snd_soc_dapm_new_controls
(
dapm
,
vcodec_dapm_widgets
,
ARRAY_SIZE
(
vcodec_dapm_widgets
));
snd_soc_dapm_add_routes
(
dapm
,
vcodec_dapm_routes
,
ARRAY_SIZE
(
vcodec_dapm_routes
));
/* 3.初始化codec */
reg_data
[
VCODEC_DAC_VOL_CTRL
]
=
0x0d0d
;
//初始化音量
return
ret
;
}
...
...
@@ -161,6 +261,7 @@ static struct snd_soc_dai_driver vcodec_dai[] = {
{
.
name
=
"vcodec_dai"
,
.
playback
=
{
.
stream_name
=
"Playback"
,
.
channels_min
=
1
,
.
channels_max
=
2
,
.
rates
=
SNDRV_PCM_RATE_8000_192000
|
...
...
@@ -170,6 +271,7 @@ static struct snd_soc_dai_driver vcodec_dai[] = {
SNDRV_PCM_FMTBIT_S32_LE
,
},
.
capture
=
{
.
stream_name
=
"Capture"
,
.
channels_min
=
1
,
.
channels_max
=
2
,
.
rates
=
SNDRV_PCM_RATE_8000_48000
|
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录