Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
953de782
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
未验证
提交
953de782
编写于
4月 16, 2018
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'asoc-4.17' into asoc-4.18 to get adau17x1 changes so
further patches can be applied.
上级
3fd391fb
d0f8b9c5
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
72 addition
and
26 deletion
+72
-26
sound/soc/codecs/adau17x1.c
sound/soc/codecs/adau17x1.c
+20
-6
sound/soc/codecs/adau17x1.h
sound/soc/codecs/adau17x1.h
+2
-1
sound/soc/fsl/fsl_esai.c
sound/soc/fsl/fsl_esai.c
+7
-0
sound/soc/fsl/fsl_ssi.c
sound/soc/fsl/fsl_ssi.c
+11
-3
sound/soc/intel/Kconfig
sound/soc/intel/Kconfig
+13
-9
sound/soc/omap/omap-dmic.c
sound/soc/omap/omap-dmic.c
+11
-3
sound/soc/sh/rcar/core.c
sound/soc/sh/rcar/core.c
+2
-2
sound/soc/soc-topology.c
sound/soc/soc-topology.c
+6
-2
未找到文件。
sound/soc/codecs/adau17x1.c
浏览文件 @
953de782
...
@@ -502,7 +502,7 @@ static int adau17x1_hw_params(struct snd_pcm_substream *substream,
...
@@ -502,7 +502,7 @@ static int adau17x1_hw_params(struct snd_pcm_substream *substream,
}
}
if
(
adau
->
sigmadsp
)
{
if
(
adau
->
sigmadsp
)
{
ret
=
adau17x1_setup_firmware
(
adau
,
params_rate
(
params
));
ret
=
adau17x1_setup_firmware
(
component
,
params_rate
(
params
));
if
(
ret
<
0
)
if
(
ret
<
0
)
return
ret
;
return
ret
;
}
}
...
@@ -835,26 +835,40 @@ bool adau17x1_volatile_register(struct device *dev, unsigned int reg)
...
@@ -835,26 +835,40 @@ bool adau17x1_volatile_register(struct device *dev, unsigned int reg)
}
}
EXPORT_SYMBOL_GPL
(
adau17x1_volatile_register
);
EXPORT_SYMBOL_GPL
(
adau17x1_volatile_register
);
int
adau17x1_setup_firmware
(
struct
adau
*
adau
,
unsigned
int
rate
)
int
adau17x1_setup_firmware
(
struct
snd_soc_component
*
component
,
unsigned
int
rate
)
{
{
int
ret
;
int
ret
;
int
dspsr
;
int
dspsr
,
dsp_run
;
struct
adau
*
adau
=
snd_soc_component_get_drvdata
(
component
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
snd_soc_dapm_mutex_lock
(
dapm
);
ret
=
regmap_read
(
adau
->
regmap
,
ADAU17X1_DSP_SAMPLING_RATE
,
&
dspsr
);
ret
=
regmap_read
(
adau
->
regmap
,
ADAU17X1_DSP_SAMPLING_RATE
,
&
dspsr
);
if
(
ret
)
if
(
ret
)
return
ret
;
goto
err
;
ret
=
regmap_read
(
adau
->
regmap
,
ADAU17X1_DSP_RUN
,
&
dsp_run
);
if
(
ret
)
goto
err
;
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_ENABLE
,
1
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_ENABLE
,
1
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_SAMPLING_RATE
,
0xf
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_SAMPLING_RATE
,
0xf
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_RUN
,
0
);
ret
=
sigmadsp_setup
(
adau
->
sigmadsp
,
rate
);
ret
=
sigmadsp_setup
(
adau
->
sigmadsp
,
rate
);
if
(
ret
)
{
if
(
ret
)
{
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_ENABLE
,
0
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_ENABLE
,
0
);
return
ret
;
goto
err
;
}
}
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_SAMPLING_RATE
,
dspsr
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_SAMPLING_RATE
,
dspsr
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_DSP_RUN
,
dsp_run
);
return
0
;
err:
snd_soc_dapm_mutex_unlock
(
dapm
);
return
ret
;
}
}
EXPORT_SYMBOL_GPL
(
adau17x1_setup_firmware
);
EXPORT_SYMBOL_GPL
(
adau17x1_setup_firmware
);
...
...
sound/soc/codecs/adau17x1.h
浏览文件 @
953de782
...
@@ -68,7 +68,8 @@ int adau17x1_resume(struct snd_soc_component *component);
...
@@ -68,7 +68,8 @@ int adau17x1_resume(struct snd_soc_component *component);
extern
const
struct
snd_soc_dai_ops
adau17x1_dai_ops
;
extern
const
struct
snd_soc_dai_ops
adau17x1_dai_ops
;
int
adau17x1_setup_firmware
(
struct
adau
*
adau
,
unsigned
int
rate
);
int
adau17x1_setup_firmware
(
struct
snd_soc_component
*
component
,
unsigned
int
rate
);
bool
adau17x1_has_dsp
(
struct
adau
*
adau
);
bool
adau17x1_has_dsp
(
struct
adau
*
adau
);
#define ADAU17X1_CLOCK_CONTROL 0x4000
#define ADAU17X1_CLOCK_CONTROL 0x4000
...
...
sound/soc/fsl/fsl_esai.c
浏览文件 @
953de782
...
@@ -144,6 +144,13 @@ static int fsl_esai_divisor_cal(struct snd_soc_dai *dai, bool tx, u32 ratio,
...
@@ -144,6 +144,13 @@ static int fsl_esai_divisor_cal(struct snd_soc_dai *dai, bool tx, u32 ratio,
psr
=
ratio
<=
256
*
maxfp
?
ESAI_xCCR_xPSR_BYPASS
:
ESAI_xCCR_xPSR_DIV8
;
psr
=
ratio
<=
256
*
maxfp
?
ESAI_xCCR_xPSR_BYPASS
:
ESAI_xCCR_xPSR_DIV8
;
/* Do not loop-search if PM (1 ~ 256) alone can serve the ratio */
if
(
ratio
<=
256
)
{
pm
=
ratio
;
fp
=
1
;
goto
out
;
}
/* Set the max fluctuation -- 0.1% of the max devisor */
/* Set the max fluctuation -- 0.1% of the max devisor */
savesub
=
(
psr
?
1
:
8
)
*
256
*
maxfp
/
1000
;
savesub
=
(
psr
?
1
:
8
)
*
256
*
maxfp
/
1000
;
...
...
sound/soc/fsl/fsl_ssi.c
浏览文件 @
953de782
...
@@ -217,6 +217,7 @@ struct fsl_ssi_soc_data {
...
@@ -217,6 +217,7 @@ struct fsl_ssi_soc_data {
* @dai_fmt: DAI configuration this device is currently used with
* @dai_fmt: DAI configuration this device is currently used with
* @streams: Mask of current active streams: BIT(TX) and BIT(RX)
* @streams: Mask of current active streams: BIT(TX) and BIT(RX)
* @i2s_net: I2S and Network mode configurations of SCR register
* @i2s_net: I2S and Network mode configurations of SCR register
* (this is the initial settings based on the DAI format)
* @synchronous: Use synchronous mode - both of TX and RX use STCK and SFCK
* @synchronous: Use synchronous mode - both of TX and RX use STCK and SFCK
* @use_dma: DMA is used or FIQ with stream filter
* @use_dma: DMA is used or FIQ with stream filter
* @use_dual_fifo: DMA with support for dual FIFO mode
* @use_dual_fifo: DMA with support for dual FIFO mode
...
@@ -829,16 +830,23 @@ static int fsl_ssi_hw_params(struct snd_pcm_substream *substream,
...
@@ -829,16 +830,23 @@ static int fsl_ssi_hw_params(struct snd_pcm_substream *substream,
}
}
if
(
!
fsl_ssi_is_ac97
(
ssi
))
{
if
(
!
fsl_ssi_is_ac97
(
ssi
))
{
/*
* Keep the ssi->i2s_net intact while having a local variable
* to override settings for special use cases. Otherwise, the
* ssi->i2s_net will lose the settings for regular use cases.
*/
u8
i2s_net
=
ssi
->
i2s_net
;
/* Normal + Network mode to send 16-bit data in 32-bit frames */
/* Normal + Network mode to send 16-bit data in 32-bit frames */
if
(
fsl_ssi_is_i2s_cbm_cfs
(
ssi
)
&&
sample_size
==
16
)
if
(
fsl_ssi_is_i2s_cbm_cfs
(
ssi
)
&&
sample_size
==
16
)
ssi
->
i2s_net
=
SSI_SCR_I2S_MODE_NORMAL
|
SSI_SCR_NET
;
i2s_net
=
SSI_SCR_I2S_MODE_NORMAL
|
SSI_SCR_NET
;
/* Use Normal mode to send mono data at 1st slot of 2 slots */
/* Use Normal mode to send mono data at 1st slot of 2 slots */
if
(
channels
==
1
)
if
(
channels
==
1
)
ssi
->
i2s_net
=
SSI_SCR_I2S_MODE_NORMAL
;
i2s_net
=
SSI_SCR_I2S_MODE_NORMAL
;
regmap_update_bits
(
regs
,
REG_SSI_SCR
,
regmap_update_bits
(
regs
,
REG_SSI_SCR
,
SSI_SCR_I2S_NET_MASK
,
ssi
->
i2s_net
);
SSI_SCR_I2S_NET_MASK
,
i2s_net
);
}
}
/* In synchronous mode, the SSI uses STCCR for capture */
/* In synchronous mode, the SSI uses STCCR for capture */
...
...
sound/soc/intel/Kconfig
浏览文件 @
953de782
...
@@ -72,24 +72,28 @@ config SND_SOC_INTEL_BAYTRAIL
...
@@ -72,24 +72,28 @@ config SND_SOC_INTEL_BAYTRAIL
for Baytrail Chromebooks but this option is now deprecated and is
for Baytrail Chromebooks but this option is now deprecated and is
not recommended, use SND_SST_ATOM_HIFI2_PLATFORM instead.
not recommended, use SND_SST_ATOM_HIFI2_PLATFORM instead.
config SND_SST_ATOM_HIFI2_PLATFORM
tristate
select SND_SOC_COMPRESS
config SND_SST_ATOM_HIFI2_PLATFORM_PCI
config SND_SST_ATOM_HIFI2_PLATFORM_PCI
tristate "PCI HiFi2 (Me
dfield, Me
rrifield) Platforms"
tristate "PCI HiFi2 (Merrifield) Platforms"
depends on X86 && PCI
depends on X86 && PCI
select SND_SST_IPC_PCI
select SND_SST_IPC_PCI
select SND_S
OC_COMPRESS
select SND_S
ST_ATOM_HIFI2_PLATFORM
help
help
If you have a Intel Me
dfield or Me
rrifield/Edison platform, then
If you have a Intel Merrifield/Edison platform, then
enable this option by saying Y or m. Distros will typically not
enable this option by saying Y or m. Distros will typically not
enable this option: Medfield devices are not available to
enable this option: while Merrifield/Edison can run a mainline
developers and while Merrifield/Edison can run a mainline kernel with
kernel with limited functionality it will require a firmware file
limited functionality it will require a firmware file which
which is not in the standard firmware tree
is not in the standard firmware tree
config SND_SST_ATOM_HIFI2_PLATFORM
config SND_SST_ATOM_HIFI2_PLATFORM
_ACPI
tristate "ACPI HiFi2 (Baytrail, Cherrytrail) Platforms"
tristate "ACPI HiFi2 (Baytrail, Cherrytrail) Platforms"
default ACPI
depends on X86 && ACPI
depends on X86 && ACPI
select SND_SST_IPC_ACPI
select SND_SST_IPC_ACPI
select SND_S
OC_COMPRESS
select SND_S
ST_ATOM_HIFI2_PLATFORM
select SND_SOC_ACPI_INTEL_MATCH
select SND_SOC_ACPI_INTEL_MATCH
select IOSF_MBI
select IOSF_MBI
help
help
...
...
sound/soc/omap/omap-dmic.c
浏览文件 @
953de782
...
@@ -281,7 +281,7 @@ static int omap_dmic_dai_trigger(struct snd_pcm_substream *substream,
...
@@ -281,7 +281,7 @@ static int omap_dmic_dai_trigger(struct snd_pcm_substream *substream,
static
int
omap_dmic_select_fclk
(
struct
omap_dmic
*
dmic
,
int
clk_id
,
static
int
omap_dmic_select_fclk
(
struct
omap_dmic
*
dmic
,
int
clk_id
,
unsigned
int
freq
)
unsigned
int
freq
)
{
{
struct
clk
*
parent_clk
;
struct
clk
*
parent_clk
,
*
mux
;
char
*
parent_clk_name
;
char
*
parent_clk_name
;
int
ret
=
0
;
int
ret
=
0
;
...
@@ -329,14 +329,21 @@ static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id,
...
@@ -329,14 +329,21 @@ static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id,
return
-
ENODEV
;
return
-
ENODEV
;
}
}
mux
=
clk_get_parent
(
dmic
->
fclk
);
if
(
IS_ERR
(
mux
))
{
dev_err
(
dmic
->
dev
,
"can't get fck mux parent
\n
"
);
clk_put
(
parent_clk
);
return
-
ENODEV
;
}
mutex_lock
(
&
dmic
->
mutex
);
mutex_lock
(
&
dmic
->
mutex
);
if
(
dmic
->
active
)
{
if
(
dmic
->
active
)
{
/* disable clock while reparenting */
/* disable clock while reparenting */
pm_runtime_put_sync
(
dmic
->
dev
);
pm_runtime_put_sync
(
dmic
->
dev
);
ret
=
clk_set_parent
(
dmic
->
fclk
,
parent_clk
);
ret
=
clk_set_parent
(
mux
,
parent_clk
);
pm_runtime_get_sync
(
dmic
->
dev
);
pm_runtime_get_sync
(
dmic
->
dev
);
}
else
{
}
else
{
ret
=
clk_set_parent
(
dmic
->
fclk
,
parent_clk
);
ret
=
clk_set_parent
(
mux
,
parent_clk
);
}
}
mutex_unlock
(
&
dmic
->
mutex
);
mutex_unlock
(
&
dmic
->
mutex
);
...
@@ -349,6 +356,7 @@ static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id,
...
@@ -349,6 +356,7 @@ static int omap_dmic_select_fclk(struct omap_dmic *dmic, int clk_id,
dmic
->
fclk_freq
=
freq
;
dmic
->
fclk_freq
=
freq
;
err_busy:
err_busy:
clk_put
(
mux
);
clk_put
(
parent_clk
);
clk_put
(
parent_clk
);
return
ret
;
return
ret
;
...
...
sound/soc/sh/rcar/core.c
浏览文件 @
953de782
...
@@ -1573,7 +1573,7 @@ static int rsnd_remove(struct platform_device *pdev)
...
@@ -1573,7 +1573,7 @@ static int rsnd_remove(struct platform_device *pdev)
return
ret
;
return
ret
;
}
}
static
int
rsnd_suspend
(
struct
device
*
dev
)
static
int
__maybe_unused
rsnd_suspend
(
struct
device
*
dev
)
{
{
struct
rsnd_priv
*
priv
=
dev_get_drvdata
(
dev
);
struct
rsnd_priv
*
priv
=
dev_get_drvdata
(
dev
);
...
@@ -1582,7 +1582,7 @@ static int rsnd_suspend(struct device *dev)
...
@@ -1582,7 +1582,7 @@ static int rsnd_suspend(struct device *dev)
return
0
;
return
0
;
}
}
static
int
rsnd_resume
(
struct
device
*
dev
)
static
int
__maybe_unused
rsnd_resume
(
struct
device
*
dev
)
{
{
struct
rsnd_priv
*
priv
=
dev_get_drvdata
(
dev
);
struct
rsnd_priv
*
priv
=
dev_get_drvdata
(
dev
);
...
...
sound/soc/soc-topology.c
浏览文件 @
953de782
...
@@ -1325,8 +1325,10 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_denum_create(
...
@@ -1325,8 +1325,10 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_denum_create(
ec
->
hdr
.
name
);
ec
->
hdr
.
name
);
kc
[
i
].
name
=
kstrdup
(
ec
->
hdr
.
name
,
GFP_KERNEL
);
kc
[
i
].
name
=
kstrdup
(
ec
->
hdr
.
name
,
GFP_KERNEL
);
if
(
kc
[
i
].
name
==
NULL
)
if
(
kc
[
i
].
name
==
NULL
)
{
kfree
(
se
);
goto
err_se
;
goto
err_se
;
}
kc
[
i
].
private_value
=
(
long
)
se
;
kc
[
i
].
private_value
=
(
long
)
se
;
kc
[
i
].
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
;
kc
[
i
].
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
;
kc
[
i
].
access
=
ec
->
hdr
.
access
;
kc
[
i
].
access
=
ec
->
hdr
.
access
;
...
@@ -1442,8 +1444,10 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_dbytes_create(
...
@@ -1442,8 +1444,10 @@ static struct snd_kcontrol_new *soc_tplg_dapm_widget_dbytes_create(
be
->
hdr
.
name
,
be
->
hdr
.
access
);
be
->
hdr
.
name
,
be
->
hdr
.
access
);
kc
[
i
].
name
=
kstrdup
(
be
->
hdr
.
name
,
GFP_KERNEL
);
kc
[
i
].
name
=
kstrdup
(
be
->
hdr
.
name
,
GFP_KERNEL
);
if
(
kc
[
i
].
name
==
NULL
)
if
(
kc
[
i
].
name
==
NULL
)
{
kfree
(
sbe
);
goto
err
;
goto
err
;
}
kc
[
i
].
private_value
=
(
long
)
sbe
;
kc
[
i
].
private_value
=
(
long
)
sbe
;
kc
[
i
].
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
;
kc
[
i
].
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
;
kc
[
i
].
access
=
be
->
hdr
.
access
;
kc
[
i
].
access
=
be
->
hdr
.
access
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录