Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
8c081faf
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
未验证
提交
8c081faf
编写于
3月 28, 2018
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'asoc/topic/pcm512x' into asoc-next
上级
78a1287b
5bdef14a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
80 addition
and
82 deletion
+80
-82
sound/soc/codecs/pcm512x.c
sound/soc/codecs/pcm512x.c
+80
-82
未找到文件。
sound/soc/codecs/pcm512x.c
浏览文件 @
8c081faf
...
...
@@ -226,8 +226,8 @@ static bool pcm512x_volatile(struct device *dev, unsigned int reg)
static
int
pcm512x_overclock_pll_get
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_co
dec
*
codec
=
snd_soc_kcontrol_codec
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
snd_soc_kcontrol_component
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
ucontrol
->
value
.
integer
.
value
[
0
]
=
pcm512x
->
overclock_pll
;
return
0
;
...
...
@@ -236,10 +236,10 @@ static int pcm512x_overclock_pll_get(struct snd_kcontrol *kcontrol,
static
int
pcm512x_overclock_pll_put
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_co
dec
*
codec
=
snd_soc_kcontrol_codec
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
snd_soc_kcontrol_component
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
switch
(
snd_soc_co
dec_get_bias_level
(
codec
))
{
switch
(
snd_soc_co
mponent_get_bias_level
(
component
))
{
case
SND_SOC_BIAS_OFF
:
case
SND_SOC_BIAS_STANDBY
:
break
;
...
...
@@ -254,8 +254,8 @@ static int pcm512x_overclock_pll_put(struct snd_kcontrol *kcontrol,
static
int
pcm512x_overclock_dsp_get
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_co
dec
*
codec
=
snd_soc_kcontrol_codec
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
snd_soc_kcontrol_component
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
ucontrol
->
value
.
integer
.
value
[
0
]
=
pcm512x
->
overclock_dsp
;
return
0
;
...
...
@@ -264,10 +264,10 @@ static int pcm512x_overclock_dsp_get(struct snd_kcontrol *kcontrol,
static
int
pcm512x_overclock_dsp_put
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_co
dec
*
codec
=
snd_soc_kcontrol_codec
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
snd_soc_kcontrol_component
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
switch
(
snd_soc_co
dec_get_bias_level
(
codec
))
{
switch
(
snd_soc_co
mponent_get_bias_level
(
component
))
{
case
SND_SOC_BIAS_OFF
:
case
SND_SOC_BIAS_STANDBY
:
break
;
...
...
@@ -282,8 +282,8 @@ static int pcm512x_overclock_dsp_put(struct snd_kcontrol *kcontrol,
static
int
pcm512x_overclock_dac_get
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_co
dec
*
codec
=
snd_soc_kcontrol_codec
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
snd_soc_kcontrol_component
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
ucontrol
->
value
.
integer
.
value
[
0
]
=
pcm512x
->
overclock_dac
;
return
0
;
...
...
@@ -292,10 +292,10 @@ static int pcm512x_overclock_dac_get(struct snd_kcontrol *kcontrol,
static
int
pcm512x_overclock_dac_put
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_co
dec
*
codec
=
snd_soc_kcontrol_codec
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
snd_soc_kcontrol_component
(
kcontrol
);
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
switch
(
snd_soc_co
dec_get_bias_level
(
codec
))
{
switch
(
snd_soc_co
mponent_get_bias_level
(
component
))
{
case
SND_SOC_BIAS_OFF
:
case
SND_SOC_BIAS_STANDBY
:
break
;
...
...
@@ -522,8 +522,8 @@ static int pcm512x_hw_rule_rate(struct snd_pcm_hw_params *params,
static
int
pcm512x_dai_startup_master
(
struct
snd_pcm_substream
*
substream
,
struct
snd_soc_dai
*
dai
)
{
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
struct
device
*
dev
=
dai
->
dev
;
struct
snd_pcm_hw_constraint_ratnums
*
constraints_no_pll
;
struct
snd_ratnum
*
rats_no_pll
;
...
...
@@ -564,8 +564,8 @@ static int pcm512x_dai_startup_master(struct snd_pcm_substream *substream,
static
int
pcm512x_dai_startup_slave
(
struct
snd_pcm_substream
*
substream
,
struct
snd_soc_dai
*
dai
)
{
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
struct
device
*
dev
=
dai
->
dev
;
struct
regmap
*
regmap
=
pcm512x
->
regmap
;
...
...
@@ -590,8 +590,8 @@ static int pcm512x_dai_startup_slave(struct snd_pcm_substream *substream,
static
int
pcm512x_dai_startup
(
struct
snd_pcm_substream
*
substream
,
struct
snd_soc_dai
*
dai
)
{
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
switch
(
pcm512x
->
fmt
&
SND_SOC_DAIFMT_MASTER_MASK
)
{
case
SND_SOC_DAIFMT_CBM_CFM
:
...
...
@@ -606,10 +606,10 @@ static int pcm512x_dai_startup(struct snd_pcm_substream *substream,
}
}
static
int
pcm512x_set_bias_level
(
struct
snd_soc_co
dec
*
codec
,
static
int
pcm512x_set_bias_level
(
struct
snd_soc_co
mponent
*
component
,
enum
snd_soc_bias_level
level
)
{
struct
pcm512x_priv
*
pcm512x
=
dev_get_drvdata
(
co
dec
->
dev
);
struct
pcm512x_priv
*
pcm512x
=
dev_get_drvdata
(
co
mponent
->
dev
);
int
ret
;
switch
(
level
)
{
...
...
@@ -621,7 +621,7 @@ static int pcm512x_set_bias_level(struct snd_soc_codec *codec,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_POWER
,
PCM512x_RQST
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to remove standby: %d
\n
"
,
dev_err
(
co
mponent
->
dev
,
"Failed to remove standby: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -631,7 +631,7 @@ static int pcm512x_set_bias_level(struct snd_soc_codec *codec,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_POWER
,
PCM512x_RQST
,
PCM512x_RQST
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to request standby: %d
\n
"
,
dev_err
(
co
mponent
->
dev
,
"Failed to request standby: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -645,8 +645,8 @@ static unsigned long pcm512x_find_sck(struct snd_soc_dai *dai,
unsigned
long
bclk_rate
)
{
struct
device
*
dev
=
dai
->
dev
;
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
unsigned
long
sck_rate
;
int
pow2
;
...
...
@@ -691,8 +691,8 @@ static int pcm512x_find_pll_coeff(struct snd_soc_dai *dai,
unsigned
long
pll_rate
)
{
struct
device
*
dev
=
dai
->
dev
;
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
unsigned
long
common
;
int
R
,
J
,
D
,
P
;
unsigned
long
K
;
/* 10000 * J.D */
...
...
@@ -798,8 +798,8 @@ static unsigned long pcm512x_pllin_dac_rate(struct snd_soc_dai *dai,
unsigned
long
osr_rate
,
unsigned
long
pllin_rate
)
{
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
unsigned
long
dac_rate
;
if
(
!
pcm512x
->
pll_out
)
...
...
@@ -829,8 +829,8 @@ static int pcm512x_set_dividers(struct snd_soc_dai *dai,
struct
snd_pcm_hw_params
*
params
)
{
struct
device
*
dev
=
dai
->
dev
;
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
unsigned
long
pllin_rate
=
0
;
unsigned
long
pll_rate
;
unsigned
long
sck_rate
;
...
...
@@ -949,7 +949,7 @@ static int pcm512x_set_dividers(struct snd_soc_dai *dai,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_DAC_REF
,
PCM512x_SDAC
,
PCM512x_SDAC_GPIO
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to set gpio as dacref: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -958,7 +958,7 @@ static int pcm512x_set_dividers(struct snd_soc_dai *dai,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_GPIO_DACIN
,
PCM512x_GREF
,
gpio
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to set gpio %d as dacin: %d
\n
"
,
pcm512x
->
pll_in
,
ret
);
return
ret
;
...
...
@@ -987,7 +987,7 @@ static int pcm512x_set_dividers(struct snd_soc_dai *dai,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_DAC_REF
,
PCM512x_SDAC
,
PCM512x_SDAC_SCK
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to set sck as dacref: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -1082,18 +1082,18 @@ static int pcm512x_set_dividers(struct snd_soc_dai *dai,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_FS_SPEED_MODE
,
PCM512x_FSSP
,
fssp
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to set fs speed: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to set fs speed: %d
\n
"
,
ret
);
return
ret
;
}
dev_dbg
(
co
dec
->
dev
,
"DSP divider %d
\n
"
,
dsp_div
);
dev_dbg
(
co
dec
->
dev
,
"DAC divider %d
\n
"
,
dac_div
);
dev_dbg
(
co
dec
->
dev
,
"NCP divider %d
\n
"
,
ncp_div
);
dev_dbg
(
co
dec
->
dev
,
"OSR divider %d
\n
"
,
osr_div
);
dev_dbg
(
co
dec
->
dev
,
"BCK divider %d
\n
"
,
bclk_div
);
dev_dbg
(
co
dec
->
dev
,
"LRCK divider %d
\n
"
,
lrclk_div
);
dev_dbg
(
co
dec
->
dev
,
"IDAC %d
\n
"
,
idac
);
dev_dbg
(
co
dec
->
dev
,
"1<<FSSP %d
\n
"
,
1
<<
fssp
);
dev_dbg
(
co
mponent
->
dev
,
"DSP divider %d
\n
"
,
dsp_div
);
dev_dbg
(
co
mponent
->
dev
,
"DAC divider %d
\n
"
,
dac_div
);
dev_dbg
(
co
mponent
->
dev
,
"NCP divider %d
\n
"
,
ncp_div
);
dev_dbg
(
co
mponent
->
dev
,
"OSR divider %d
\n
"
,
osr_div
);
dev_dbg
(
co
mponent
->
dev
,
"BCK divider %d
\n
"
,
bclk_div
);
dev_dbg
(
co
mponent
->
dev
,
"LRCK divider %d
\n
"
,
lrclk_div
);
dev_dbg
(
co
mponent
->
dev
,
"IDAC %d
\n
"
,
idac
);
dev_dbg
(
co
mponent
->
dev
,
"1<<FSSP %d
\n
"
,
1
<<
fssp
);
return
0
;
}
...
...
@@ -1102,15 +1102,15 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
struct
snd_pcm_hw_params
*
params
,
struct
snd_soc_dai
*
dai
)
{
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
int
alen
;
int
gpio
;
int
clock_output
;
int
master_mode
;
int
ret
;
dev_dbg
(
co
dec
->
dev
,
"hw_params %u Hz, %u channels
\n
"
,
dev_dbg
(
co
mponent
->
dev
,
"hw_params %u Hz, %u channels
\n
"
,
params_rate
(
params
),
params_channels
(
params
));
...
...
@@ -1128,7 +1128,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
alen
=
PCM512x_ALEN_32
;
break
;
default:
dev_err
(
co
dec
->
dev
,
"Bad frame size: %d
\n
"
,
dev_err
(
co
mponent
->
dev
,
"Bad frame size: %d
\n
"
,
params_width
(
params
));
return
-
EINVAL
;
}
...
...
@@ -1141,7 +1141,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
|
PCM512x_BCKO
|
PCM512x_LRKO
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to enable slave mode: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -1149,7 +1149,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_ERROR_DETECT
,
PCM512x_DCAS
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to enable clock divider autoset: %d
\n
"
,
ret
);
return
ret
;
...
...
@@ -1170,20 +1170,20 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_I2S_1
,
PCM512x_ALEN
,
alen
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to set frame size: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to set frame size: %d
\n
"
,
ret
);
return
ret
;
}
if
(
pcm512x
->
pll_out
)
{
ret
=
regmap_write
(
pcm512x
->
regmap
,
PCM512x_FLEX_A
,
0x11
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to set FLEX_A: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to set FLEX_A: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
regmap_write
(
pcm512x
->
regmap
,
PCM512x_FLEX_B
,
0xff
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to set FLEX_B: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to set FLEX_B: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -1196,7 +1196,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
|
PCM512x_IDSK
|
PCM512x_IDCH
|
PCM512x_DCAS
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to ignore auto-clock failures: %d
\n
"
,
ret
);
return
ret
;
...
...
@@ -1211,7 +1211,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
|
PCM512x_IDSK
|
PCM512x_IDCH
|
PCM512x_DCAS
|
PCM512x_IPLK
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to ignore auto-clock failures: %d
\n
"
,
ret
);
return
ret
;
...
...
@@ -1220,7 +1220,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_PLL_EN
,
PCM512x_PLLE
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to disable pll: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to disable pll: %d
\n
"
,
ret
);
return
ret
;
}
}
...
...
@@ -1233,7 +1233,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_PLL_REF
,
PCM512x_SREF
,
PCM512x_SREF_GPIO
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to set gpio as pllref: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -1242,7 +1242,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_GPIO_PLLIN
,
PCM512x_GREF
,
gpio
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
dev_err
(
co
mponent
->
dev
,
"Failed to set gpio %d as pllin: %d
\n
"
,
pcm512x
->
pll_in
,
ret
);
return
ret
;
...
...
@@ -1251,7 +1251,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_PLL_EN
,
PCM512x_PLLE
,
PCM512x_PLLE
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to enable pll: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to enable pll: %d
\n
"
,
ret
);
return
ret
;
}
}
...
...
@@ -1260,7 +1260,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
PCM512x_BCKP
|
PCM512x_BCKO
|
PCM512x_LRKO
,
clock_output
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to enable clock output: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to enable clock output: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -1268,7 +1268,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
PCM512x_RLRK
|
PCM512x_RBCK
,
master_mode
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to enable master mode: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to enable master mode: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -1277,7 +1277,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_GPIO_EN
,
gpio
,
gpio
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to enable gpio %d: %d
\n
"
,
dev_err
(
co
mponent
->
dev
,
"Failed to enable gpio %d: %d
\n
"
,
pcm512x
->
pll_out
,
ret
);
return
ret
;
}
...
...
@@ -1286,7 +1286,7 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
gpio
,
PCM512x_GxSL
,
PCM512x_GxSL_PLLCK
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to output pll on %d: %d
\n
"
,
dev_err
(
co
mponent
->
dev
,
"Failed to output pll on %d: %d
\n
"
,
ret
,
pcm512x
->
pll_out
);
return
ret
;
}
...
...
@@ -1295,14 +1295,14 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_SYNCHRONIZE
,
PCM512x_RQSY
,
PCM512x_RQSY_HALT
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to halt clocks: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to halt clocks: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
regmap_update_bits
(
pcm512x
->
regmap
,
PCM512x_SYNCHRONIZE
,
PCM512x_RQSY
,
PCM512x_RQSY_RESUME
);
if
(
ret
!=
0
)
{
dev_err
(
co
dec
->
dev
,
"Failed to resume clocks: %d
\n
"
,
ret
);
dev_err
(
co
mponent
->
dev
,
"Failed to resume clocks: %d
\n
"
,
ret
);
return
ret
;
}
...
...
@@ -1311,8 +1311,8 @@ static int pcm512x_hw_params(struct snd_pcm_substream *substream,
static
int
pcm512x_set_fmt
(
struct
snd_soc_dai
*
dai
,
unsigned
int
fmt
)
{
struct
snd_soc_co
dec
*
codec
=
dai
->
codec
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
dec_get_drvdata
(
codec
);
struct
snd_soc_co
mponent
*
component
=
dai
->
component
;
struct
pcm512x_priv
*
pcm512x
=
snd_soc_co
mponent_get_drvdata
(
component
);
pcm512x
->
fmt
=
fmt
;
...
...
@@ -1341,18 +1341,17 @@ static struct snd_soc_dai_driver pcm512x_dai = {
.
ops
=
&
pcm512x_dai_ops
,
};
static
const
struct
snd_soc_codec_driver
pcm512x_codec_driver
=
{
.
set_bias_level
=
pcm512x_set_bias_level
,
.
idle_bias_off
=
true
,
.
component_driver
=
{
.
controls
=
pcm512x_controls
,
.
num_controls
=
ARRAY_SIZE
(
pcm512x_controls
),
.
dapm_widgets
=
pcm512x_dapm_widgets
,
.
num_dapm_widgets
=
ARRAY_SIZE
(
pcm512x_dapm_widgets
),
.
dapm_routes
=
pcm512x_dapm_routes
,
.
num_dapm_routes
=
ARRAY_SIZE
(
pcm512x_dapm_routes
),
},
static
const
struct
snd_soc_component_driver
pcm512x_component_driver
=
{
.
set_bias_level
=
pcm512x_set_bias_level
,
.
controls
=
pcm512x_controls
,
.
num_controls
=
ARRAY_SIZE
(
pcm512x_controls
),
.
dapm_widgets
=
pcm512x_dapm_widgets
,
.
num_dapm_widgets
=
ARRAY_SIZE
(
pcm512x_dapm_widgets
),
.
dapm_routes
=
pcm512x_dapm_routes
,
.
num_dapm_routes
=
ARRAY_SIZE
(
pcm512x_dapm_routes
),
.
use_pmdown_time
=
1
,
.
endianness
=
1
,
.
non_legacy_dai_naming
=
1
,
};
static
const
struct
regmap_range_cfg
pcm512x_range
=
{
...
...
@@ -1498,7 +1497,7 @@ int pcm512x_probe(struct device *dev, struct regmap *regmap)
}
#endif
ret
=
snd_soc_register_codec
(
dev
,
&
pcm512x_codec
_driver
,
ret
=
devm_snd_soc_register_component
(
dev
,
&
pcm512x_component
_driver
,
&
pcm512x_dai
,
1
);
if
(
ret
!=
0
)
{
dev_err
(
dev
,
"Failed to register CODEC: %d
\n
"
,
ret
);
...
...
@@ -1523,7 +1522,6 @@ void pcm512x_remove(struct device *dev)
{
struct
pcm512x_priv
*
pcm512x
=
dev_get_drvdata
(
dev
);
snd_soc_unregister_codec
(
dev
);
pm_runtime_disable
(
dev
);
if
(
!
IS_ERR
(
pcm512x
->
sclk
))
clk_disable_unprepare
(
pcm512x
->
sclk
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录