Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
0b05a05d
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0b05a05d
编写于
8月 22, 2013
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'asoc/topic/wm8731' into asoc-next
上级
ab4f0935
0890c2b7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
57 addition
and
3 deletion
+57
-3
sound/soc/codecs/wm8731.c
sound/soc/codecs/wm8731.c
+57
-3
未找到文件。
sound/soc/codecs/wm8731.c
浏览文件 @
0b05a05d
...
...
@@ -45,6 +45,7 @@ static const char *wm8731_supply_names[WM8731_NUM_SUPPLIES] = {
struct
wm8731_priv
{
struct
regmap
*
regmap
;
struct
regulator_bulk_data
supplies
[
WM8731_NUM_SUPPLIES
];
const
struct
snd_pcm_hw_constraint_list
*
constraints
;
unsigned
int
sysclk
;
int
sysclk_type
;
int
playback_fs
;
...
...
@@ -290,6 +291,36 @@ static const struct _coeff_div coeff_div[] = {
{
12000000
,
88200
,
136
,
0xf
,
0x1
,
0x1
},
};
/* rates constraints */
static
const
unsigned
int
wm8731_rates_12000000
[]
=
{
8000
,
32000
,
44100
,
48000
,
96000
,
88200
,
};
static
const
unsigned
int
wm8731_rates_12288000_18432000
[]
=
{
8000
,
32000
,
48000
,
96000
,
};
static
const
unsigned
int
wm8731_rates_11289600_16934400
[]
=
{
8000
,
44100
,
88200
,
};
static
const
struct
snd_pcm_hw_constraint_list
wm8731_constraints_12000000
=
{
.
list
=
wm8731_rates_12000000
,
.
count
=
ARRAY_SIZE
(
wm8731_rates_12000000
),
};
static
const
struct
snd_pcm_hw_constraint_list
wm8731_constraints_12288000_18432000
=
{
.
list
=
wm8731_rates_12288000_18432000
,
.
count
=
ARRAY_SIZE
(
wm8731_rates_12288000_18432000
),
};
static
const
struct
snd_pcm_hw_constraint_list
wm8731_constraints_11289600_16934400
=
{
.
list
=
wm8731_rates_11289600_16934400
,
.
count
=
ARRAY_SIZE
(
wm8731_rates_11289600_16934400
),
};
static
inline
int
get_coeff
(
int
mclk
,
int
rate
)
{
int
i
;
...
...
@@ -362,17 +393,26 @@ static int wm8731_set_dai_sysclk(struct snd_soc_dai *codec_dai,
}
switch
(
freq
)
{
case
11289600
:
case
0
:
wm8731
->
constraints
=
NULL
;
break
;
case
12000000
:
wm8731
->
constraints
=
&
wm8731_constraints_12000000
;
break
;
case
12288000
:
case
16934400
:
case
18432000
:
wm8731
->
sysclk
=
freq
;
wm8731
->
constraints
=
&
wm8731_constraints_12288000_18432000
;
break
;
case
16934400
:
case
11289600
:
wm8731
->
constraints
=
&
wm8731_constraints_11289600_16934400
;
break
;
default:
return
-
EINVAL
;
}
wm8731
->
sysclk
=
freq
;
snd_soc_dapm_sync
(
&
codec
->
dapm
);
return
0
;
...
...
@@ -475,12 +515,26 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec,
return
0
;
}
static
int
wm8731_startup
(
struct
snd_pcm_substream
*
substream
,
struct
snd_soc_dai
*
dai
)
{
struct
wm8731_priv
*
wm8731
=
snd_soc_codec_get_drvdata
(
dai
->
codec
);
if
(
wm8731
->
constraints
)
snd_pcm_hw_constraint_list
(
substream
->
runtime
,
0
,
SNDRV_PCM_HW_PARAM_RATE
,
wm8731
->
constraints
);
return
0
;
}
#define WM8731_RATES SNDRV_PCM_RATE_8000_96000
#define WM8731_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE)
static
const
struct
snd_soc_dai_ops
wm8731_dai_ops
=
{
.
startup
=
wm8731_startup
,
.
hw_params
=
wm8731_hw_params
,
.
digital_mute
=
wm8731_mute
,
.
set_sysclk
=
wm8731_set_dai_sysclk
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录