Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
26b9b559
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
26b9b559
编写于
8月 26, 2011
作者:
T
Takashi Iwai
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fix/asoc' into for-linus
上级
468c5458
18036b58
变更
22
显示空白变更内容
内联
并排
Showing
22 changed file
with
95 addition
and
45 deletion
+95
-45
MAINTAINERS
MAINTAINERS
+1
-0
sound/soc/blackfin/bf5xx-ad193x.c
sound/soc/blackfin/bf5xx-ad193x.c
+1
-1
sound/soc/codecs/ad193x.c
sound/soc/codecs/ad193x.c
+2
-9
sound/soc/codecs/ad193x.h
sound/soc/codecs/ad193x.h
+3
-2
sound/soc/codecs/sta32x.c
sound/soc/codecs/sta32x.c
+1
-0
sound/soc/codecs/wm8962.c
sound/soc/codecs/wm8962.c
+8
-4
sound/soc/codecs/wm8996.c
sound/soc/codecs/wm8996.c
+18
-10
sound/soc/ep93xx/ep93xx-i2s.c
sound/soc/ep93xx/ep93xx-i2s.c
+3
-2
sound/soc/fsl/fsl_dma.c
sound/soc/fsl/fsl_dma.c
+2
-0
sound/soc/fsl/mpc8610_hpcd.c
sound/soc/fsl/mpc8610_hpcd.c
+9
-9
sound/soc/fsl/p1022_ds.c
sound/soc/fsl/p1022_ds.c
+3
-1
sound/soc/kirkwood/kirkwood-i2s.c
sound/soc/kirkwood/kirkwood-i2s.c
+1
-1
sound/soc/omap/ams-delta.c
sound/soc/omap/ams-delta.c
+4
-2
sound/soc/samsung/Kconfig
sound/soc/samsung/Kconfig
+1
-0
sound/soc/samsung/h1940_uda1380.c
sound/soc/samsung/h1940_uda1380.c
+1
-0
sound/soc/samsung/rx1950_uda1380.c
sound/soc/samsung/rx1950_uda1380.c
+1
-0
sound/soc/samsung/speyside_wm8962.c
sound/soc/samsung/speyside_wm8962.c
+6
-0
sound/soc/soc-core.c
sound/soc/soc-core.c
+1
-1
sound/soc/soc-io.c
sound/soc/soc-io.c
+23
-0
sound/soc/soc-jack.c
sound/soc/soc-jack.c
+1
-1
sound/soc/soc-pcm.c
sound/soc/soc-pcm.c
+3
-0
sound/soc/tegra/tegra_wm8903.c
sound/soc/tegra/tegra_wm8903.c
+2
-2
未找到文件。
MAINTAINERS
浏览文件 @
26b9b559
...
...
@@ -5532,6 +5532,7 @@ F: include/media/*7146*
SAMSUNG AUDIO (ASoC) DRIVERS
M: Jassi Brar <jassisinghbrar@gmail.com>
M: Sangbeom Kim <sbkim73@samsung.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
S: Supported
F: sound/soc/samsung
...
...
sound/soc/blackfin/bf5xx-ad193x.c
浏览文件 @
26b9b559
...
...
@@ -56,7 +56,7 @@ static int bf5xx_ad193x_hw_params(struct snd_pcm_substream *substream,
switch
(
params_rate
(
params
))
{
case
48000
:
clk
=
12288
000
;
clk
=
24576
000
;
break
;
}
...
...
sound/soc/codecs/ad193x.c
浏览文件 @
26b9b559
...
...
@@ -27,11 +27,6 @@ struct ad193x_priv {
int
sysclk
;
};
/* ad193x register cache & default register settings */
static
const
u8
ad193x_reg
[
AD193X_NUM_REGS
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0
,
0
,
0
,
};
/*
* AD193X volume/mute/de-emphasis etc. controls
*/
...
...
@@ -307,7 +302,8 @@ static int ad193x_hw_params(struct snd_pcm_substream *substream,
snd_soc_write
(
codec
,
AD193X_PLL_CLK_CTRL0
,
reg
);
reg
=
snd_soc_read
(
codec
,
AD193X_DAC_CTRL2
);
reg
=
(
reg
&
(
~
AD193X_DAC_WORD_LEN_MASK
))
|
word_len
;
reg
=
(
reg
&
(
~
AD193X_DAC_WORD_LEN_MASK
))
|
(
word_len
<<
AD193X_DAC_WORD_LEN_SHFT
);
snd_soc_write
(
codec
,
AD193X_DAC_CTRL2
,
reg
);
reg
=
snd_soc_read
(
codec
,
AD193X_ADC_CTRL1
);
...
...
@@ -389,9 +385,6 @@ static int ad193x_probe(struct snd_soc_codec *codec)
static
struct
snd_soc_codec_driver
soc_codec_dev_ad193x
=
{
.
probe
=
ad193x_probe
,
.
reg_cache_default
=
ad193x_reg
,
.
reg_cache_size
=
AD193X_NUM_REGS
,
.
reg_word_size
=
sizeof
(
u16
),
};
#if defined(CONFIG_SPI_MASTER)
...
...
sound/soc/codecs/ad193x.h
浏览文件 @
26b9b559
...
...
@@ -34,7 +34,8 @@
#define AD193X_DAC_LEFT_HIGH (1 << 3)
#define AD193X_DAC_BCLK_INV (1 << 7)
#define AD193X_DAC_CTRL2 0x804
#define AD193X_DAC_WORD_LEN_MASK 0xC
#define AD193X_DAC_WORD_LEN_SHFT 3
#define AD193X_DAC_WORD_LEN_MASK 0x18
#define AD193X_DAC_MASTER_MUTE 1
#define AD193X_DAC_CHNL_MUTE 0x805
#define AD193X_DACL1_MUTE 0
...
...
@@ -63,7 +64,7 @@
#define AD193X_ADC_CTRL1 0x80f
#define AD193X_ADC_SERFMT_MASK 0x60
#define AD193X_ADC_SERFMT_STEREO (0 << 5)
#define AD193X_ADC_SERFMT_TDM (1 <<
2
)
#define AD193X_ADC_SERFMT_TDM (1 <<
5
)
#define AD193X_ADC_SERFMT_AUX (2 << 5)
#define AD193X_ADC_WORD_LEN_MASK 0x3
#define AD193X_ADC_CTRL2 0x810
...
...
sound/soc/codecs/sta32x.c
浏览文件 @
26b9b559
...
...
@@ -857,6 +857,7 @@ static __devinit int sta32x_i2c_probe(struct i2c_client *i2c,
ret
=
snd_soc_register_codec
(
&
i2c
->
dev
,
&
sta32x_codec
,
&
sta32x_dai
,
1
);
if
(
ret
!=
0
)
{
dev_err
(
&
i2c
->
dev
,
"Failed to register codec (%d)
\n
"
,
ret
);
kfree
(
sta32x
);
return
ret
;
}
...
...
sound/soc/codecs/wm8962.c
浏览文件 @
26b9b559
...
...
@@ -2221,6 +2221,8 @@ static int sysclk_event(struct snd_soc_dapm_widget *w,
switch
(
event
)
{
case
SND_SOC_DAPM_PRE_PMU
:
if
(
fll
)
{
try_wait_for_completion
(
&
wm8962
->
fll_lock
);
snd_soc_update_bits
(
codec
,
WM8962_FLL_CONTROL_1
,
WM8962_FLL_ENA
,
WM8962_FLL_ENA
);
if
(
wm8962
->
irq
)
{
...
...
@@ -2927,10 +2929,6 @@ static int wm8962_set_bias_level(struct snd_soc_codec *codec,
WM8962_BIAS_ENA
|
0x180
);
msleep
(
5
);
snd_soc_update_bits
(
codec
,
WM8962_CLOCKING2
,
WM8962_CLKREG_OVD
,
WM8962_CLKREG_OVD
);
}
/* VMID 2*250k */
...
...
@@ -3288,6 +3286,8 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
snd_soc_write
(
codec
,
WM8962_FLL_CONTROL_7
,
fll_div
.
lambda
);
snd_soc_write
(
codec
,
WM8962_FLL_CONTROL_8
,
fll_div
.
n
);
try_wait_for_completion
(
&
wm8962
->
fll_lock
);
snd_soc_update_bits
(
codec
,
WM8962_FLL_CONTROL_1
,
WM8962_FLL_FRAC
|
WM8962_FLL_REFCLK_SRC_MASK
|
WM8962_FLL_ENA
,
fll1
);
...
...
@@ -3868,6 +3868,10 @@ static int wm8962_probe(struct snd_soc_codec *codec)
*/
snd_soc_update_bits
(
codec
,
WM8962_CLOCKING2
,
WM8962_SYSCLK_ENA
,
0
);
/* Ensure we have soft control over all registers */
snd_soc_update_bits
(
codec
,
WM8962_CLOCKING2
,
WM8962_CLKREG_OVD
,
WM8962_CLKREG_OVD
);
regulator_bulk_disable
(
ARRAY_SIZE
(
wm8962
->
supplies
),
wm8962
->
supplies
);
if
(
pdata
)
{
...
...
sound/soc/codecs/wm8996.c
浏览文件 @
26b9b559
...
...
@@ -420,7 +420,7 @@ static const char *sidetone_hpf_text[] = {
};
static
const
struct
soc_enum
sidetone_hpf
=
SOC_ENUM_SINGLE
(
WM8996_SIDETONE
,
7
,
6
,
sidetone_hpf_text
);
SOC_ENUM_SINGLE
(
WM8996_SIDETONE
,
7
,
7
,
sidetone_hpf_text
);
static
const
char
*
hpf_mode_text
[]
=
{
"HiFi"
,
"Custom"
,
"Voice"
...
...
@@ -988,15 +988,10 @@ SND_SOC_DAPM_MICBIAS("MICB1", WM8996_POWER_MANAGEMENT_1, 8, 0),
SND_SOC_DAPM_PGA
(
"IN1L PGA"
,
WM8996_POWER_MANAGEMENT_2
,
5
,
0
,
NULL
,
0
),
SND_SOC_DAPM_PGA
(
"IN1R PGA"
,
WM8996_POWER_MANAGEMENT_2
,
4
,
0
,
NULL
,
0
),
SND_SOC_DAPM_MUX
(
"IN1L Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
in1_mux
),
SND_SOC_DAPM_MUX
(
"IN1R Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
in1_mux
),
SND_SOC_DAPM_MUX
(
"IN2L Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
in2_mux
),
SND_SOC_DAPM_MUX
(
"IN2R Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
in2_mux
),
SND_SOC_DAPM_PGA
(
"IN1L"
,
WM8996_POWER_MANAGEMENT_7
,
2
,
0
,
NULL
,
0
),
SND_SOC_DAPM_PGA
(
"IN1R"
,
WM8996_POWER_MANAGEMENT_7
,
3
,
0
,
NULL
,
0
),
SND_SOC_DAPM_PGA
(
"IN2L"
,
WM8996_POWER_MANAGEMENT_7
,
6
,
0
,
NULL
,
0
),
SND_SOC_DAPM_PGA
(
"IN2R"
,
WM8996_POWER_MANAGEMENT_7
,
7
,
0
,
NULL
,
0
),
SND_SOC_DAPM_MUX
(
"IN1L Mux"
,
WM8996_POWER_MANAGEMENT_7
,
2
,
0
,
&
in1_mux
),
SND_SOC_DAPM_MUX
(
"IN1R Mux"
,
WM8996_POWER_MANAGEMENT_7
,
3
,
0
,
&
in1_mux
),
SND_SOC_DAPM_MUX
(
"IN2L Mux"
,
WM8996_POWER_MANAGEMENT_7
,
6
,
0
,
&
in2_mux
),
SND_SOC_DAPM_MUX
(
"IN2R Mux"
,
WM8996_POWER_MANAGEMENT_7
,
7
,
0
,
&
in2_mux
),
SND_SOC_DAPM_SUPPLY
(
"DMIC2"
,
WM8996_POWER_MANAGEMENT_7
,
9
,
0
,
NULL
,
0
),
SND_SOC_DAPM_SUPPLY
(
"DMIC1"
,
WM8996_POWER_MANAGEMENT_7
,
8
,
0
,
NULL
,
0
),
...
...
@@ -1213,6 +1208,16 @@ static const struct snd_soc_dapm_route wm8996_dapm_routes[] = {
{
"AIF2RX0"
,
NULL
,
"AIFCLK"
},
{
"AIF2RX1"
,
NULL
,
"AIFCLK"
},
{
"AIF1TX0"
,
NULL
,
"AIFCLK"
},
{
"AIF1TX1"
,
NULL
,
"AIFCLK"
},
{
"AIF1TX2"
,
NULL
,
"AIFCLK"
},
{
"AIF1TX3"
,
NULL
,
"AIFCLK"
},
{
"AIF1TX4"
,
NULL
,
"AIFCLK"
},
{
"AIF1TX5"
,
NULL
,
"AIFCLK"
},
{
"AIF2TX0"
,
NULL
,
"AIFCLK"
},
{
"AIF2TX1"
,
NULL
,
"AIFCLK"
},
{
"DSP1RXL"
,
NULL
,
"SYSDSPCLK"
},
{
"DSP1RXR"
,
NULL
,
"SYSDSPCLK"
},
{
"DSP2RXL"
,
NULL
,
"SYSDSPCLK"
},
...
...
@@ -2106,6 +2111,9 @@ static int wm8996_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
snd_soc_write
(
codec
,
WM8996_FLL_EFS_1
,
fll_div
.
lambda
);
/* Clear any pending completions (eg, from failed startups) */
try_wait_for_completion
(
&
wm8996
->
fll_lock
);
snd_soc_update_bits
(
codec
,
WM8996_FLL_CONTROL_1
,
WM8996_FLL_ENA
,
WM8996_FLL_ENA
);
...
...
sound/soc/ep93xx/ep93xx-i2s.c
浏览文件 @
26b9b559
...
...
@@ -385,14 +385,14 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)
res
=
platform_get_resource
(
pdev
,
IORESOURCE_MEM
,
0
);
if
(
!
res
)
{
err
=
-
ENODEV
;
goto
fail
;
goto
fail
_free_info
;
}
info
->
mem
=
request_mem_region
(
res
->
start
,
resource_size
(
res
),
pdev
->
name
);
if
(
!
info
->
mem
)
{
err
=
-
EBUSY
;
goto
fail
;
goto
fail
_free_info
;
}
info
->
regs
=
ioremap
(
info
->
mem
->
start
,
resource_size
(
info
->
mem
));
...
...
@@ -435,6 +435,7 @@ static int ep93xx_i2s_probe(struct platform_device *pdev)
iounmap
(
info
->
regs
);
fail_release_mem:
release_mem_region
(
info
->
mem
->
start
,
resource_size
(
info
->
mem
));
fail_free_info:
kfree
(
info
);
fail:
return
err
;
...
...
sound/soc/fsl/fsl_dma.c
浏览文件 @
26b9b559
...
...
@@ -879,10 +879,12 @@ static struct device_node *find_ssi_node(struct device_node *dma_channel_np)
* assume that device_node pointers are a valid comparison.
*/
np
=
of_parse_phandle
(
ssi_np
,
"fsl,playback-dma"
,
0
);
of_node_put
(
np
);
if
(
np
==
dma_channel_np
)
return
ssi_np
;
np
=
of_parse_phandle
(
ssi_np
,
"fsl,capture-dma"
,
0
);
of_node_put
(
np
);
if
(
np
==
dma_channel_np
)
return
ssi_np
;
}
...
...
sound/soc/fsl/mpc8610_hpcd.c
浏览文件 @
26b9b559
...
...
@@ -345,8 +345,10 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
}
machine_data
=
kzalloc
(
sizeof
(
struct
mpc8610_hpcd_data
),
GFP_KERNEL
);
if
(
!
machine_data
)
return
-
ENOMEM
;
if
(
!
machine_data
)
{
ret
=
-
ENOMEM
;
goto
error_alloc
;
}
machine_data
->
dai
[
0
].
cpu_dai_name
=
dev_name
(
&
ssi_pdev
->
dev
);
machine_data
->
dai
[
0
].
ops
=
&
mpc8610_hpcd_ops
;
...
...
@@ -494,7 +496,7 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
ret
=
platform_device_add
(
sound_device
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"platform device add failed
\n
"
);
goto
error
;
goto
error
_sound
;
}
dev_set_drvdata
(
&
pdev
->
dev
,
sound_device
);
...
...
@@ -502,14 +504,12 @@ static int mpc8610_hpcd_probe(struct platform_device *pdev)
return
0
;
error:
of_node_put
(
codec_np
);
if
(
sound_device
)
error_sound:
platform_device_unregister
(
sound_device
);
error:
kfree
(
machine_data
);
error_alloc:
of_node_put
(
codec_np
);
return
ret
;
}
...
...
sound/soc/fsl/p1022_ds.c
浏览文件 @
26b9b559
...
...
@@ -297,8 +297,10 @@ static int get_dma_channel(struct device_node *ssi_np,
* dai->platform name should already point to an allocated buffer.
*/
ret
=
of_address_to_resource
(
dma_channel_np
,
0
,
&
res
);
if
(
ret
)
if
(
ret
)
{
of_node_put
(
dma_channel_np
);
return
ret
;
}
snprintf
((
char
*
)
dai
->
platform_name
,
DAI_NAME_SIZE
,
"%llx.%s"
,
(
unsigned
long
long
)
res
.
start
,
dma_channel_np
->
name
);
...
...
sound/soc/kirkwood/kirkwood-i2s.c
浏览文件 @
26b9b559
...
...
@@ -424,7 +424,7 @@ static __devinit int kirkwood_i2s_dev_probe(struct platform_device *pdev)
if
(
!
priv
->
mem
)
{
dev_err
(
&
pdev
->
dev
,
"request_mem_region failed
\n
"
);
err
=
-
EBUSY
;
goto
error
;
goto
error
_alloc
;
}
priv
->
io
=
ioremap
(
priv
->
mem
->
start
,
SZ_16K
);
...
...
sound/soc/omap/ams-delta.c
浏览文件 @
26b9b559
...
...
@@ -514,7 +514,7 @@ static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
}
/* Set codec bias level */
ams_delta_set_bias_level
(
card
,
SND_SOC_BIAS_STANDBY
);
ams_delta_set_bias_level
(
card
,
dapm
,
SND_SOC_BIAS_STANDBY
);
/* Add hook switch - can be used to control the codec from userspace
* even if line discipline fails */
...
...
@@ -649,7 +649,9 @@ static void __exit ams_delta_module_exit(void)
ams_delta_hook_switch_gpios
);
/* Keep modem power on */
ams_delta_set_bias_level
(
&
ams_delta_audio_card
,
SND_SOC_BIAS_STANDBY
);
ams_delta_set_bias_level
(
&
ams_delta_audio_card
,
&
ams_delta_audio_card
.
rtd
[
0
].
codec
->
dapm
,
SND_SOC_BIAS_STANDBY
);
platform_device_unregister
(
cx20442_platform_device
);
platform_device_unregister
(
ams_delta_audio_platform_device
);
...
...
sound/soc/samsung/Kconfig
浏览文件 @
26b9b559
...
...
@@ -185,6 +185,7 @@ config SND_SOC_SPEYSIDE
select SND_SAMSUNG_I2S
select SND_SOC_WM8996
select SND_SOC_WM9081
select SND_SOC_WM1250_EV1
config SND_SOC_SPEYSIDE_WM8962
tristate "Audio support for Wolfson Speyside with WM8962"
...
...
sound/soc/samsung/h1940_uda1380.c
浏览文件 @
26b9b559
...
...
@@ -13,6 +13,7 @@
*
*/
#include <linux/types.h>
#include <linux/gpio.h>
#include <sound/soc.h>
...
...
sound/soc/samsung/rx1950_uda1380.c
浏览文件 @
26b9b559
...
...
@@ -17,6 +17,7 @@
*
*/
#include <linux/types.h>
#include <linux/gpio.h>
#include <sound/soc.h>
...
...
sound/soc/samsung/speyside_wm8962.c
浏览文件 @
26b9b559
...
...
@@ -23,6 +23,9 @@ static int speyside_wm8962_set_bias_level(struct snd_soc_card *card,
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
int
ret
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
switch
(
level
)
{
case
SND_SOC_BIAS_PREPARE
:
if
(
dapm
->
bias_level
==
SND_SOC_BIAS_STANDBY
)
{
...
...
@@ -57,6 +60,9 @@ static int speyside_wm8962_set_bias_level_post(struct snd_soc_card *card,
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
int
ret
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
return
0
;
switch
(
level
)
{
case
SND_SOC_BIAS_STANDBY
:
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
WM8962_SYSCLK_MCLK
,
...
...
sound/soc/soc-core.c
浏览文件 @
26b9b559
...
...
@@ -1913,7 +1913,7 @@ struct snd_kcontrol *snd_soc_cnew(const struct snd_kcontrol_new *_template,
if
(
prefix
)
{
name_len
=
strlen
(
long_name
)
+
strlen
(
prefix
)
+
2
;
name
=
kmalloc
(
name_len
,
GFP_
ATOMIC
);
name
=
kmalloc
(
name_len
,
GFP_
KERNEL
);
if
(
!
name
)
return
NULL
;
...
...
sound/soc/soc-io.c
浏览文件 @
26b9b559
...
...
@@ -205,6 +205,25 @@ static unsigned int snd_soc_16_8_read_i2c(struct snd_soc_codec *codec,
#define snd_soc_16_8_read_i2c NULL
#endif
#if defined(CONFIG_SPI_MASTER)
static
unsigned
int
snd_soc_16_8_read_spi
(
struct
snd_soc_codec
*
codec
,
unsigned
int
r
)
{
struct
spi_device
*
spi
=
codec
->
control_data
;
const
u16
reg
=
cpu_to_be16
(
r
|
0x100
);
u8
data
;
int
ret
;
ret
=
spi_write_then_read
(
spi
,
&
reg
,
2
,
&
data
,
1
);
if
(
ret
<
0
)
return
0
;
return
data
;
}
#else
#define snd_soc_16_8_read_spi NULL
#endif
static
int
snd_soc_16_8_write
(
struct
snd_soc_codec
*
codec
,
unsigned
int
reg
,
unsigned
int
value
)
{
...
...
@@ -295,6 +314,7 @@ static struct {
int
(
*
write
)(
struct
snd_soc_codec
*
codec
,
unsigned
int
,
unsigned
int
);
unsigned
int
(
*
read
)(
struct
snd_soc_codec
*
,
unsigned
int
);
unsigned
int
(
*
i2c_read
)(
struct
snd_soc_codec
*
,
unsigned
int
);
unsigned
int
(
*
spi_read
)(
struct
snd_soc_codec
*
,
unsigned
int
);
}
io_types
[]
=
{
{
.
addr_bits
=
4
,
.
data_bits
=
12
,
...
...
@@ -318,6 +338,7 @@ static struct {
.
addr_bits
=
16
,
.
data_bits
=
8
,
.
write
=
snd_soc_16_8_write
,
.
i2c_read
=
snd_soc_16_8_read_i2c
,
.
spi_read
=
snd_soc_16_8_read_spi
,
},
{
.
addr_bits
=
16
,
.
data_bits
=
16
,
...
...
@@ -383,6 +404,8 @@ int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
#ifdef CONFIG_SPI_MASTER
codec
->
hw_write
=
do_spi_write
;
#endif
if
(
io_types
[
i
].
spi_read
)
codec
->
hw_read
=
io_types
[
i
].
spi_read
;
codec
->
control_data
=
container_of
(
codec
->
dev
,
struct
spi_device
,
...
...
sound/soc/soc-jack.c
浏览文件 @
26b9b559
...
...
@@ -327,7 +327,7 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
IRQF_TRIGGER_FALLING
,
gpios
[
i
].
name
,
&
gpios
[
i
]);
if
(
ret
)
if
(
ret
<
0
)
goto
err
;
if
(
gpios
[
i
].
wake
)
{
...
...
sound/soc/soc-pcm.c
浏览文件 @
26b9b559
...
...
@@ -290,6 +290,9 @@ static int soc_pcm_close(struct snd_pcm_substream *substream)
codec_dai
->
active
--
;
codec
->
active
--
;
if
(
!
cpu_dai
->
active
&&
!
codec_dai
->
active
)
rtd
->
rate
=
0
;
/* Muting the DAC suppresses artifacts caused during digital
* shutdown, for example from stopping clocks.
*/
...
...
sound/soc/tegra/tegra_wm8903.c
浏览文件 @
26b9b559
...
...
@@ -319,7 +319,7 @@ static int tegra_wm8903_init(struct snd_soc_pcm_runtime *rtd)
snd_soc_dapm_force_enable_pin
(
dapm
,
"Mic Bias"
);
/* FIXME: Calculate automatically based on DAPM routes? */
if
(
!
machine_is_harmony
()
&&
!
machine_is_ventana
()
)
if
(
!
machine_is_harmony
())
snd_soc_dapm_nc_pin
(
dapm
,
"IN1L"
);
if
(
!
machine_is_seaboard
()
&&
!
machine_is_aebl
())
snd_soc_dapm_nc_pin
(
dapm
,
"IN1R"
);
...
...
@@ -395,7 +395,7 @@ static __devinit int tegra_wm8903_driver_probe(struct platform_device *pdev)
platform_set_drvdata
(
pdev
,
card
);
snd_soc_card_set_drvdata
(
card
,
machine
);
if
(
machine_is_harmony
()
||
machine_is_ventana
()
)
{
if
(
machine_is_harmony
())
{
card
->
dapm_routes
=
harmony_audio_map
;
card
->
num_dapm_routes
=
ARRAY_SIZE
(
harmony_audio_map
);
}
else
if
(
machine_is_seaboard
())
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录