Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
ceb8ef5e
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ceb8ef5e
编写于
12月 10, 2012
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'asoc/topic/samsung' into asoc-next
上级
a5034515
a08485d8
变更
46
隐藏空白更改
内联
并排
Showing
46 changed file
with
292 addition
and
157 deletion
+292
-157
arch/arm/mach-exynos/mach-armlex4210.c
arch/arm/mach-exynos/mach-armlex4210.c
+0
-1
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-exynos/mach-smdkv310.c
+0
-1
arch/arm/mach-s3c24xx/mach-gta02.c
arch/arm/mach-s3c24xx/mach-gta02.c
+0
-1
arch/arm/mach-s3c24xx/mach-h1940.c
arch/arm/mach-s3c24xx/mach-h1940.c
+0
-1
arch/arm/mach-s3c24xx/mach-mini2440.c
arch/arm/mach-s3c24xx/mach-mini2440.c
+0
-1
arch/arm/mach-s3c24xx/mach-rx1950.c
arch/arm/mach-s3c24xx/mach-rx1950.c
+0
-1
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-s3c64xx/mach-crag6410.c
+0
-1
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-s3c64xx/mach-smdk6410.c
+0
-1
arch/arm/mach-s5p64x0/mach-smdk6440.c
arch/arm/mach-s5p64x0/mach-smdk6440.c
+0
-1
arch/arm/mach-s5p64x0/mach-smdk6450.c
arch/arm/mach-s5p64x0/mach-smdk6450.c
+0
-1
arch/arm/mach-s5pc100/mach-smdkc100.c
arch/arm/mach-s5pc100/mach-smdkc100.c
+0
-1
arch/arm/mach-s5pv210/mach-smdkc110.c
arch/arm/mach-s5pv210/mach-smdkc110.c
+0
-1
arch/arm/mach-s5pv210/mach-smdkv210.c
arch/arm/mach-s5pv210/mach-smdkv210.c
+0
-1
arch/arm/plat-samsung/devs.c
arch/arm/plat-samsung/devs.c
+0
-9
arch/arm/plat-samsung/include/plat/devs.h
arch/arm/plat-samsung/include/plat/devs.h
+0
-1
include/linux/platform_data/asoc-s3c.h
include/linux/platform_data/asoc-s3c.h
+0
-6
sound/soc/samsung/ac97.c
sound/soc/samsung/ac97.c
+12
-4
sound/soc/samsung/bells.c
sound/soc/samsung/bells.c
+165
-57
sound/soc/samsung/dma.c
sound/soc/samsung/dma.c
+6
-18
sound/soc/samsung/dma.h
sound/soc/samsung/dma.h
+3
-0
sound/soc/samsung/goni_wm8994.c
sound/soc/samsung/goni_wm8994.c
+1
-1
sound/soc/samsung/h1940_uda1380.c
sound/soc/samsung/h1940_uda1380.c
+1
-1
sound/soc/samsung/i2s.c
sound/soc/samsung/i2s.c
+14
-10
sound/soc/samsung/jive_wm8750.c
sound/soc/samsung/jive_wm8750.c
+1
-1
sound/soc/samsung/littlemill.c
sound/soc/samsung/littlemill.c
+1
-1
sound/soc/samsung/ln2440sbc_alc650.c
sound/soc/samsung/ln2440sbc_alc650.c
+1
-1
sound/soc/samsung/lowland.c
sound/soc/samsung/lowland.c
+1
-1
sound/soc/samsung/neo1973_wm8753.c
sound/soc/samsung/neo1973_wm8753.c
+1
-1
sound/soc/samsung/pcm.c
sound/soc/samsung/pcm.c
+15
-6
sound/soc/samsung/rx1950_uda1380.c
sound/soc/samsung/rx1950_uda1380.c
+1
-1
sound/soc/samsung/s3c2412-i2s.c
sound/soc/samsung/s3c2412-i2s.c
+19
-1
sound/soc/samsung/s3c24xx-i2s.c
sound/soc/samsung/s3c24xx-i2s.c
+19
-1
sound/soc/samsung/s3c24xx_simtec_hermes.c
sound/soc/samsung/s3c24xx_simtec_hermes.c
+1
-1
sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c
sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c
+1
-1
sound/soc/samsung/s3c24xx_uda134x.c
sound/soc/samsung/s3c24xx_uda134x.c
+1
-1
sound/soc/samsung/smartq_wm8987.c
sound/soc/samsung/smartq_wm8987.c
+1
-1
sound/soc/samsung/smdk2443_wm9710.c
sound/soc/samsung/smdk2443_wm9710.c
+1
-1
sound/soc/samsung/smdk_spdif.c
sound/soc/samsung/smdk_spdif.c
+1
-1
sound/soc/samsung/smdk_wm8580.c
sound/soc/samsung/smdk_wm8580.c
+3
-3
sound/soc/samsung/smdk_wm8580pcm.c
sound/soc/samsung/smdk_wm8580pcm.c
+1
-1
sound/soc/samsung/smdk_wm8994.c
sound/soc/samsung/smdk_wm8994.c
+2
-2
sound/soc/samsung/smdk_wm8994pcm.c
sound/soc/samsung/smdk_wm8994pcm.c
+1
-1
sound/soc/samsung/smdk_wm9713.c
sound/soc/samsung/smdk_wm9713.c
+1
-1
sound/soc/samsung/spdif.c
sound/soc/samsung/spdif.c
+15
-7
sound/soc/samsung/speyside.c
sound/soc/samsung/speyside.c
+1
-1
sound/soc/samsung/tobermory.c
sound/soc/samsung/tobermory.c
+1
-1
未找到文件。
arch/arm/mach-exynos/mach-armlex4210.c
浏览文件 @
ceb8ef5e
...
...
@@ -147,7 +147,6 @@ static struct platform_device *armlex4210_devices[] __initdata = {
&
s3c_device_hsmmc3
,
&
s3c_device_rtc
,
&
s3c_device_wdt
,
&
samsung_asoc_dma
,
&
armlex4210_smsc911x
,
&
exynos4_device_ahci
,
};
...
...
arch/arm/mach-exynos/mach-smdkv310.c
浏览文件 @
ceb8ef5e
...
...
@@ -311,7 +311,6 @@ static struct platform_device *smdkv310_devices[] __initdata = {
&
s5p_device_mfc_l
,
&
s5p_device_mfc_r
,
&
exynos4_device_spdif
,
&
samsung_asoc_dma
,
&
samsung_asoc_idma
,
&
s5p_device_fimd0
,
&
smdkv310_device_audio
,
...
...
arch/arm/mach-s3c24xx/mach-gta02.c
浏览文件 @
ceb8ef5e
...
...
@@ -521,7 +521,6 @@ static struct platform_device *gta02_devices[] __initdata = {
&
gta02_nor_flash
,
&
s3c24xx_pwm_device
,
&
s3c_device_iis
,
&
samsung_asoc_dma
,
&
s3c_device_i2c0
,
&
gta02_dfbmcs320_device
,
&
gta02_buttons_device
,
...
...
arch/arm/mach-s3c24xx/mach-h1940.c
浏览文件 @
ceb8ef5e
...
...
@@ -632,7 +632,6 @@ static struct platform_device *h1940_devices[] __initdata = {
&
s3c_device_wdt
,
&
s3c_device_i2c0
,
&
s3c_device_iis
,
&
samsung_asoc_dma
,
&
s3c_device_usbgadget
,
&
h1940_device_leds
,
&
h1940_device_bluetooth
,
...
...
arch/arm/mach-s3c24xx/mach-mini2440.c
浏览文件 @
ceb8ef5e
...
...
@@ -519,7 +519,6 @@ static struct platform_device *mini2440_devices[] __initdata = {
&
s3c_device_iis
,
&
uda1340_codec
,
&
mini2440_audio
,
&
samsung_asoc_dma
,
};
static
void
__init
mini2440_map_io
(
void
)
...
...
arch/arm/mach-s3c24xx/mach-rx1950.c
浏览文件 @
ceb8ef5e
...
...
@@ -712,7 +712,6 @@ static struct platform_device *rx1950_devices[] __initdata = {
&
s3c_device_wdt
,
&
s3c_device_i2c0
,
&
s3c_device_iis
,
&
samsung_asoc_dma
,
&
s3c_device_usbgadget
,
&
s3c_device_rtc
,
&
s3c_device_nand
,
...
...
arch/arm/mach-s3c64xx/mach-crag6410.c
浏览文件 @
ceb8ef5e
...
...
@@ -357,7 +357,6 @@ static struct platform_device *crag6410_devices[] __initdata = {
&
s3c_device_timer
[
0
],
&
s3c64xx_device_iis0
,
&
s3c64xx_device_iis1
,
&
samsung_asoc_dma
,
&
samsung_device_keypad
,
&
crag6410_gpio_keydev
,
&
crag6410_dm9k_device
,
...
...
arch/arm/mach-s3c64xx/mach-smdk6410.c
浏览文件 @
ceb8ef5e
...
...
@@ -275,7 +275,6 @@ static struct platform_device *smdk6410_devices[] __initdata = {
&
s3c_device_fb
,
&
s3c_device_ohci
,
&
s3c_device_usb_hsotg
,
&
samsung_asoc_dma
,
&
s3c64xx_device_iisv4
,
&
samsung_device_keypad
,
...
...
arch/arm/mach-s5p64x0/mach-smdk6440.c
浏览文件 @
ceb8ef5e
...
...
@@ -165,7 +165,6 @@ static struct platform_device *smdk6440_devices[] __initdata = {
&
s3c_device_i2c1
,
&
s3c_device_ts
,
&
s3c_device_wdt
,
&
samsung_asoc_dma
,
&
s5p6440_device_iis
,
&
s3c_device_fb
,
&
smdk6440_lcd_lte480wv
,
...
...
arch/arm/mach-s5p64x0/mach-smdk6450.c
浏览文件 @
ceb8ef5e
...
...
@@ -183,7 +183,6 @@ static struct platform_device *smdk6450_devices[] __initdata = {
&
s3c_device_i2c1
,
&
s3c_device_ts
,
&
s3c_device_wdt
,
&
samsung_asoc_dma
,
&
s5p6450_device_iis0
,
&
s3c_device_fb
,
&
smdk6450_lcd_lte480wv
,
...
...
arch/arm/mach-s5pc100/mach-smdkc100.c
浏览文件 @
ceb8ef5e
...
...
@@ -197,7 +197,6 @@ static struct platform_device *smdkc100_devices[] __initdata = {
&
s3c_device_ts
,
&
s3c_device_wdt
,
&
smdkc100_lcd_powerdev
,
&
samsung_asoc_dma
,
&
s5pc100_device_iis0
,
&
samsung_device_keypad
,
&
s5pc100_device_ac97
,
...
...
arch/arm/mach-s5pv210/mach-smdkc110.c
浏览文件 @
ceb8ef5e
...
...
@@ -85,7 +85,6 @@ static struct s3c_ide_platdata smdkc110_ide_pdata __initdata = {
};
static
struct
platform_device
*
smdkc110_devices
[]
__initdata
=
{
&
samsung_asoc_dma
,
&
s5pv210_device_iis0
,
&
s5pv210_device_ac97
,
&
s5pv210_device_spdif
,
...
...
arch/arm/mach-s5pv210/mach-smdkv210.c
浏览文件 @
ceb8ef5e
...
...
@@ -234,7 +234,6 @@ static struct platform_device *smdkv210_devices[] __initdata = {
&
s5pv210_device_ac97
,
&
s5pv210_device_iis0
,
&
s5pv210_device_spdif
,
&
samsung_asoc_dma
,
&
samsung_asoc_idma
,
&
samsung_device_keypad
,
&
smdkv210_dm9000
,
...
...
arch/arm/plat-samsung/devs.c
浏览文件 @
ceb8ef5e
...
...
@@ -146,15 +146,6 @@ struct platform_device s3c_device_camif = {
/* ASOC DMA */
struct
platform_device
samsung_asoc_dma
=
{
.
name
=
"samsung-audio"
,
.
id
=
-
1
,
.
dev
=
{
.
dma_mask
=
&
samsung_device_dma_mask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
}
};
struct
platform_device
samsung_asoc_idma
=
{
.
name
=
"samsung-idma"
,
.
id
=
-
1
,
...
...
arch/arm/plat-samsung/include/plat/devs.h
浏览文件 @
ceb8ef5e
...
...
@@ -135,7 +135,6 @@ extern struct platform_device exynos4_device_spdif;
extern
struct
platform_device
exynos_device_drm
;
extern
struct
platform_device
samsung_asoc_dma
;
extern
struct
platform_device
samsung_asoc_idma
;
extern
struct
platform_device
samsung_device_keypad
;
...
...
include/linux/platform_data/asoc-s3c.h
浏览文件 @
ceb8ef5e
...
...
@@ -38,12 +38,6 @@ struct samsung_i2s {
#define QUIRK_NEED_RSTCLR (1 << 3)
/* Quirks of the I2S controller */
u32
quirks
;
/*
* Array of clock names that can be used to generate I2S signals.
* Also corresponds to clocks of I2SMOD[10]
*/
const
char
**
src_clk
;
dma_addr_t
idma_addr
;
};
...
...
sound/soc/samsung/ac97.c
浏览文件 @
ceb8ef5e
...
...
@@ -442,7 +442,7 @@ static __devinit int s3c_ac97_probe(struct platform_device *pdev)
ret
=
-
ENODEV
;
goto
err2
;
}
clk_enable
(
s3c_ac97
.
ac97_clk
);
clk_
prepare_
enable
(
s3c_ac97
.
ac97_clk
);
if
(
ac97_pdata
->
cfg_gpio
(
pdev
))
{
dev_err
(
&
pdev
->
dev
,
"Unable to configure gpio
\n
"
);
...
...
@@ -462,13 +462,20 @@ static __devinit int s3c_ac97_probe(struct platform_device *pdev)
if
(
ret
)
goto
err5
;
return
0
;
ret
=
asoc_dma_platform_register
(
&
pdev
->
dev
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to get register DMA: %d
\n
"
,
ret
);
goto
err6
;
}
return
0
;
err6:
snd_soc_unregister_dais
(
&
pdev
->
dev
,
ARRAY_SIZE
(
s3c_ac97_dai
));
err5:
free_irq
(
irq_res
->
start
,
NULL
);
err4:
err3:
clk_disable
(
s3c_ac97
.
ac97_clk
);
clk_disable
_unprepare
(
s3c_ac97
.
ac97_clk
);
clk_put
(
s3c_ac97
.
ac97_clk
);
err2:
iounmap
(
s3c_ac97
.
regs
);
...
...
@@ -482,13 +489,14 @@ static __devexit int s3c_ac97_remove(struct platform_device *pdev)
{
struct
resource
*
mem_res
,
*
irq_res
;
asoc_dma_platform_unregister
(
&
pdev
->
dev
);
snd_soc_unregister_dais
(
&
pdev
->
dev
,
ARRAY_SIZE
(
s3c_ac97_dai
));
irq_res
=
platform_get_resource
(
pdev
,
IORESOURCE_IRQ
,
0
);
if
(
irq_res
)
free_irq
(
irq_res
->
start
,
NULL
);
clk_disable
(
s3c_ac97
.
ac97_clk
);
clk_disable
_unprepare
(
s3c_ac97
.
ac97_clk
);
clk_put
(
s3c_ac97
.
ac97_clk
);
iounmap
(
s3c_ac97
.
regs
);
...
...
sound/soc/samsung/bells.c
浏览文件 @
ceb8ef5e
...
...
@@ -18,15 +18,6 @@
#include "../codecs/wm5102.h"
#include "../codecs/wm9081.h"
/*
* 44.1kHz based clocks for the SYSCLK domain, use a very high clock
* to allow all the DSP functionality to be enabled if desired.
*/
#define SYSCLK_RATE (44100 * 1024)
/* 48kHz based clocks for the ASYNC domain */
#define ASYNCCLK_RATE (48000 * 512)
/* BCLK2 is fixed at this currently */
#define BCLK2_RATE (64 * 8000)
...
...
@@ -36,15 +27,40 @@
*/
#define MCLK_RATE 24576000
#define WM9081_AUDIO_RATE 44100
#define WM9081_MCLK_RATE (WM9081_AUDIO_RATE * 256)
#define SYS_AUDIO_RATE 44100
#define SYS_MCLK_RATE (SYS_AUDIO_RATE * 512)
#define DAI_AP_DSP 0
#define DAI_DSP_CODEC 1
#define DAI_CODEC_CP 2
#define DAI_CODEC_SUB 3
struct
bells_drvdata
{
int
sysclk_rate
;
int
asyncclk_rate
;
};
static
struct
bells_drvdata
wm2200_drvdata
=
{
.
sysclk_rate
=
22579200
,
};
static
struct
bells_drvdata
wm5102_drvdata
=
{
.
sysclk_rate
=
45158400
,
.
asyncclk_rate
=
49152000
,
};
static
struct
bells_drvdata
wm5110_drvdata
=
{
.
sysclk_rate
=
135475200
,
.
asyncclk_rate
=
147456000
,
};
static
int
bells_set_bias_level
(
struct
snd_soc_card
*
card
,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec_dai
;
struct
snd_soc_codec
*
codec
=
codec_dai
->
codec
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
int
ret
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
...
...
@@ -52,18 +68,21 @@ static int bells_set_bias_level(struct snd_soc_card *card,
switch
(
level
)
{
case
SND_SOC_BIAS_PREPARE
:
if
(
dapm
->
bias_level
==
SND_SOC_BIAS_STANDBY
)
{
ret
=
snd_soc_codec_set_pll
(
codec
,
WM5102_FLL1
,
ARIZONA_FLL_SRC_MCLK1
,
MCLK_RATE
,
SYSCLK_RATE
);
if
(
ret
<
0
)
pr_err
(
"Failed to start FLL: %d
\n
"
,
ret
);
if
(
dapm
->
bias_level
!=
SND_SOC_BIAS_STANDBY
)
break
;
ret
=
snd_soc_codec_set_pll
(
codec
,
WM5102_FLL1
,
ARIZONA_FLL_SRC_MCLK1
,
MCLK_RATE
,
bells
->
sysclk_rate
);
if
(
ret
<
0
)
pr_err
(
"Failed to start FLL: %d
\n
"
,
ret
);
if
(
bells
->
asyncclk_rate
)
{
ret
=
snd_soc_codec_set_pll
(
codec
,
WM5102_FLL2
,
ARIZONA_FLL_SRC_AIF2BCLK
,
BCLK2_RATE
,
ASYNCCLK_RATE
);
bells
->
asyncclk_rate
);
if
(
ret
<
0
)
pr_err
(
"Failed to start FLL: %d
\n
"
,
ret
);
}
...
...
@@ -80,8 +99,9 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
struct
snd_soc_dapm_context
*
dapm
,
enum
snd_soc_bias_level
level
)
{
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_dai
*
codec_dai
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec_dai
;
struct
snd_soc_codec
*
codec
=
codec_dai
->
codec
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
int
ret
;
if
(
dapm
->
dev
!=
codec_dai
->
dev
)
...
...
@@ -95,10 +115,13 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
return
ret
;
}
ret
=
snd_soc_codec_set_pll
(
codec
,
WM5102_FLL2
,
0
,
0
,
0
);
if
(
ret
<
0
)
{
pr_err
(
"Failed to stop FLL: %d
\n
"
,
ret
);
return
ret
;
if
(
bells
->
asyncclk_rate
)
{
ret
=
snd_soc_codec_set_pll
(
codec
,
WM5102_FLL2
,
0
,
0
,
0
);
if
(
ret
<
0
)
{
pr_err
(
"Failed to stop FLL: %d
\n
"
,
ret
);
return
ret
;
}
}
break
;
...
...
@@ -113,56 +136,73 @@ static int bells_set_bias_level_post(struct snd_soc_card *card,
static
int
bells_late_probe
(
struct
snd_soc_card
*
card
)
{
struct
snd_soc_codec
*
codec
=
card
->
rtd
[
0
].
codec
;
struct
snd_soc_dai
*
aif1_dai
=
card
->
rtd
[
0
].
codec_dai
;
struct
snd_soc_dai
*
aif2_dai
=
card
->
rtd
[
1
].
cpu_dai
;
struct
snd_soc_dai
*
aif3_dai
=
card
->
rtd
[
2
].
cpu_dai
;
struct
snd_soc_dai
*
wm9081_dai
=
card
->
rtd
[
2
].
codec_dai
;
struct
bells_drvdata
*
bells
=
card
->
drvdata
;
struct
snd_soc_codec
*
wm0010
=
card
->
rtd
[
DAI_AP_DSP
].
codec
;
struct
snd_soc_codec
*
codec
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec
;
struct
snd_soc_dai
*
aif1_dai
=
card
->
rtd
[
DAI_DSP_CODEC
].
codec_dai
;
struct
snd_soc_dai
*
aif2_dai
;
struct
snd_soc_dai
*
aif3_dai
;
struct
snd_soc_dai
*
wm9081_dai
;
int
ret
;
ret
=
snd_soc_dai_set_sysclk
(
aif1_dai
,
ARIZONA_CLK_SYSCLK
,
0
,
0
);
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_SYSCLK
,
ARIZONA_CLK_SRC_FLL1
,
bells
->
sysclk_rate
,
SND_SOC_CLOCK_IN
);
if
(
ret
!=
0
)
{
dev_err
(
aif1_dai
->
dev
,
"Failed to set AIF1 clock
: %d
\n
"
,
ret
);
dev_err
(
codec
->
dev
,
"Failed to set SYSCLK
: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
snd_soc_
dai_set_sysclk
(
aif2_dai
,
ARIZONA_CLK_ASYNCCLK
,
0
,
0
);
ret
=
snd_soc_
codec_set_sysclk
(
wm0010
,
0
,
0
,
SYS_MCLK_RATE
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
aif2_dai
->
dev
,
"Failed to set AIF2
clock: %d
\n
"
,
ret
);
dev_err
(
wm0010
->
dev
,
"Failed to set WM0010
clock: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
snd_soc_dai_set_sysclk
(
aif
3
_dai
,
ARIZONA_CLK_SYSCLK
,
0
,
0
);
if
(
ret
!=
0
)
{
ret
=
snd_soc_dai_set_sysclk
(
aif
1
_dai
,
ARIZONA_CLK_SYSCLK
,
0
,
0
);
if
(
ret
!=
0
)
dev_err
(
aif1_dai
->
dev
,
"Failed to set AIF1 clock: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_SYSCLK
,
ARIZONA_CLK_SRC_FLL1
,
SYSCLK_RATE
,
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_OPCLK
,
0
,
SYS_MCLK_RATE
,
SND_SOC_CLOCK_OUT
);
if
(
ret
!=
0
)
dev_err
(
codec
->
dev
,
"Failed to set OPCLK: %d
\n
"
,
ret
);
if
(
card
->
num_rtd
==
DAI_CODEC_CP
)
return
0
;
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_ASYNCCLK
,
ARIZONA_CLK_SRC_FLL2
,
bells
->
asyncclk_rate
,
SND_SOC_CLOCK_IN
);
if
(
ret
!=
0
)
{
dev_err
(
codec
->
dev
,
"Failed to set
SYS
CLK: %d
\n
"
,
ret
);
dev_err
(
codec
->
dev
,
"Failed to set
ASYNC
CLK: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_OPCLK
,
0
,
WM9081_MCLK_RATE
,
SND_SOC_CLOCK_OUT
);
aif2_dai
=
card
->
rtd
[
DAI_CODEC_CP
].
cpu_dai
;
ret
=
snd_soc_dai_set_sysclk
(
aif2_dai
,
ARIZONA_CLK_ASYNCCLK
,
0
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
codec
->
dev
,
"Failed to set OPCLK
: %d
\n
"
,
ret
);
dev_err
(
aif2_dai
->
dev
,
"Failed to set AIF2 clock
: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
snd_soc_codec_set_sysclk
(
codec
,
ARIZONA_CLK_ASYNCCLK
,
ARIZONA_CLK_SRC_FLL2
,
ASYNCCLK_RATE
,
SND_SOC_CLOCK_IN
);
if
(
card
->
num_rtd
==
DAI_CODEC_SUB
)
return
0
;
aif3_dai
=
card
->
rtd
[
DAI_CODEC_SUB
].
cpu_dai
;
wm9081_dai
=
card
->
rtd
[
DAI_CODEC_SUB
].
codec_dai
;
ret
=
snd_soc_dai_set_sysclk
(
aif3_dai
,
ARIZONA_CLK_SYSCLK
,
0
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
codec
->
dev
,
"Failed to set SYSCLK
: %d
\n
"
,
ret
);
dev_err
(
aif1_dai
->
dev
,
"Failed to set AIF1 clock
: %d
\n
"
,
ret
);
return
ret
;
}
ret
=
snd_soc_codec_set_sysclk
(
wm9081_dai
->
codec
,
WM9081_SYSCLK_MCLK
,
0
,
WM9081
_MCLK_RATE
,
0
);
0
,
SYS
_MCLK_RATE
,
0
);
if
(
ret
!=
0
)
{
dev_err
(
wm9081_dai
->
dev
,
"Failed to set MCLK: %d
\n
"
,
ret
);
return
ret
;
...
...
@@ -181,22 +221,57 @@ static const struct snd_soc_pcm_stream baseband_params = {
static
const
struct
snd_soc_pcm_stream
sub_params
=
{
.
formats
=
SNDRV_PCM_FMTBIT_S32_LE
,
.
rate_min
=
WM9081
_AUDIO_RATE
,
.
rate_max
=
WM9081
_AUDIO_RATE
,
.
rate_min
=
SYS
_AUDIO_RATE
,
.
rate_max
=
SYS
_AUDIO_RATE
,
.
channels_min
=
2
,
.
channels_max
=
2
,
};
static
struct
snd_soc_dai_link
bells_dai_wm2200
[]
=
{
{
.
name
=
"CPU-DSP"
,
.
stream_name
=
"CPU-DSP"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm0010-sdi1"
,
.
platform_name
=
"samsung-i2s.0"
,
.
codec_name
=
"spi0.0"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
},
{
.
name
=
"DSP-CODEC"
,
.
stream_name
=
"DSP-CODEC"
,
.
cpu_dai_name
=
"wm0010-sdi2"
,
.
codec_dai_name
=
"wm2200"
,
.
codec_name
=
"wm2200.1-003a"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
params
=
&
sub_params
,
.
ignore_suspend
=
1
,
},
};
static
struct
snd_soc_dai_link
bells_dai_wm5102
[]
=
{
{
.
name
=
"CPU"
,
.
stream_name
=
"CPU"
,
.
name
=
"CPU
-DSP
"
,
.
stream_name
=
"CPU
-DSP
"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm0010-sdi1"
,
.
platform_name
=
"samsung-i2s.0"
,
.
codec_name
=
"spi0.0"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
},
{
.
name
=
"DSP-CODEC"
,
.
stream_name
=
"DSP-CODEC"
,
.
cpu_dai_name
=
"wm0010-sdi2"
,
.
codec_dai_name
=
"wm5102-aif1"
,
.
platform_name
=
"samsung-audio"
,
.
codec_name
=
"wm5102-codec"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
params
=
&
sub_params
,
.
ignore_suspend
=
1
,
},
{
.
name
=
"Baseband"
,
...
...
@@ -224,14 +299,25 @@ static struct snd_soc_dai_link bells_dai_wm5102[] = {
static
struct
snd_soc_dai_link
bells_dai_wm5110
[]
=
{
{
.
name
=
"CPU"
,
.
stream_name
=
"CPU"
,
.
name
=
"CPU
-DSP
"
,
.
stream_name
=
"CPU
-DSP
"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm0010-sdi1"
,
.
platform_name
=
"samsung-i2s.0"
,
.
codec_name
=
"spi0.0"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
},
{
.
name
=
"DSP-CODEC"
,
.
stream_name
=
"DSP-CODEC"
,
.
cpu_dai_name
=
"wm0010-sdi2"
,
.
codec_dai_name
=
"wm5110-aif1"
,
.
platform_name
=
"samsung-audio"
,
.
codec_name
=
"wm5110-codec"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
params
=
&
sub_params
,
.
ignore_suspend
=
1
,
},
{
.
name
=
"Baseband"
,
...
...
@@ -269,6 +355,24 @@ static struct snd_soc_dapm_route bells_routes[] = {
};
static
struct
snd_soc_card
bells_cards
[]
=
{
{
.
name
=
"Bells WM2200"
,
.
owner
=
THIS_MODULE
,
.
dai_link
=
bells_dai_wm2200
,
.
num_links
=
ARRAY_SIZE
(
bells_dai_wm2200
),
.
codec_conf
=
bells_codec_conf
,
.
num_configs
=
ARRAY_SIZE
(
bells_codec_conf
),
.
late_probe
=
bells_late_probe
,
.
dapm_routes
=
bells_routes
,
.
num_dapm_routes
=
ARRAY_SIZE
(
bells_routes
),
.
set_bias_level
=
bells_set_bias_level
,
.
set_bias_level_post
=
bells_set_bias_level_post
,
.
drvdata
=
&
wm2200_drvdata
,
},
{
.
name
=
"Bells WM5102"
,
.
owner
=
THIS_MODULE
,
...
...
@@ -284,6 +388,8 @@ static struct snd_soc_card bells_cards[] = {
.
set_bias_level
=
bells_set_bias_level
,
.
set_bias_level_post
=
bells_set_bias_level_post
,
.
drvdata
=
&
wm5102_drvdata
,
},
{
.
name
=
"Bells WM5110"
,
...
...
@@ -300,6 +406,8 @@ static struct snd_soc_card bells_cards[] = {
.
set_bias_level
=
bells_set_bias_level
,
.
set_bias_level_post
=
bells_set_bias_level_post
,
.
drvdata
=
&
wm5110_drvdata
,
},
};
...
...
sound/soc/samsung/dma.c
浏览文件 @
ceb8ef5e
...
...
@@ -432,30 +432,18 @@ static struct snd_soc_platform_driver samsung_asoc_platform = {
.
pcm_free
=
dma_free_dma_buffers
,
};
static
int
__devinit
samsung_asoc_platform_probe
(
struct
platform_device
*
p
dev
)
int
__devinit
asoc_dma_platform_register
(
struct
device
*
dev
)
{
return
snd_soc_register_platform
(
&
pdev
->
dev
,
&
samsung_asoc_platform
);
return
snd_soc_register_platform
(
dev
,
&
samsung_asoc_platform
);
}
EXPORT_SYMBOL_GPL
(
asoc_dma_platform_register
);
static
int
__devexit
samsung_asoc_platform_remove
(
struct
platform_device
*
p
dev
)
void
__devexit
asoc_dma_platform_unregister
(
struct
device
*
dev
)
{
snd_soc_unregister_platform
(
&
pdev
->
dev
);
return
0
;
snd_soc_unregister_platform
(
dev
);
}
static
struct
platform_driver
asoc_dma_driver
=
{
.
driver
=
{
.
name
=
"samsung-audio"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
samsung_asoc_platform_probe
,
.
remove
=
__devexit_p
(
samsung_asoc_platform_remove
),
};
module_platform_driver
(
asoc_dma_driver
);
EXPORT_SYMBOL_GPL
(
asoc_dma_platform_unregister
);
MODULE_AUTHOR
(
"Ben Dooks, <ben@simtec.co.uk>"
);
MODULE_DESCRIPTION
(
"Samsung ASoC DMA Driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:samsung-audio"
);
sound/soc/samsung/dma.h
浏览文件 @
ceb8ef5e
...
...
@@ -21,4 +21,7 @@ struct s3c_dma_params {
struct
samsung_dma_ops
*
ops
;
};
int
asoc_dma_platform_register
(
struct
device
*
dev
);
void
asoc_dma_platform_unregister
(
struct
device
*
dev
);
#endif
sound/soc/samsung/goni_wm8994.c
浏览文件 @
ceb8ef5e
...
...
@@ -228,7 +228,7 @@ static struct snd_soc_dai_link goni_dai[] = {
.
stream_name
=
"WM8994 HiFi"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm8994-aif1"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm8994-codec.0-001a"
,
.
init
=
goni_wm8994_init
,
.
ops
=
&
goni_hifi_ops
,
...
...
sound/soc/samsung/h1940_uda1380.c
浏览文件 @
ceb8ef5e
...
...
@@ -207,7 +207,7 @@ static struct snd_soc_dai_link h1940_uda1380_dai[] = {
.
cpu_dai_name
=
"s3c24xx-iis"
,
.
codec_dai_name
=
"uda1380-hifi"
,
.
init
=
h1940_uda1380_init
,
.
platform_name
=
"s
amsung-audio
"
,
.
platform_name
=
"s
3c24xx-iis
"
,
.
codec_name
=
"uda1380-codec.0-001a"
,
.
ops
=
&
h1940_ops
,
},
...
...
sound/soc/samsung/i2s.c
浏览文件 @
ceb8ef5e
...
...
@@ -49,8 +49,6 @@ struct i2s_dai {
struct
clk
*
clk
;
/* Clock for generating I2S signals */
struct
clk
*
op_clk
;
/* Array of clock names for op_clk */
const
char
**
src_clk
;
/* Pointer to the Primary_Fifo if this is Sec_Fifo, NULL otherwise */
struct
i2s_dai
*
pri_dai
;
/* Pointer to the Secondary_Fifo if it has one, NULL otherwise */
...
...
@@ -423,7 +421,7 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai,
if
(
i2s
->
op_clk
)
{
if
((
clk_id
&&
!
(
mod
&
MOD_IMS_SYSMUX
))
||
(
!
clk_id
&&
(
mod
&
MOD_IMS_SYSMUX
)))
{
clk_disable
(
i2s
->
op_clk
);
clk_disable
_unprepare
(
i2s
->
op_clk
);
clk_put
(
i2s
->
op_clk
);
}
else
{
i2s
->
rclk_srcrate
=
...
...
@@ -432,9 +430,13 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai,
}
}
i2s
->
op_clk
=
clk_get
(
&
i2s
->
pdev
->
dev
,
i2s
->
src_clk
[
clk_id
]);
clk_enable
(
i2s
->
op_clk
);
if
(
clk_id
)
i2s
->
op_clk
=
clk_get
(
&
i2s
->
pdev
->
dev
,
"i2s_opclk1"
);
else
i2s
->
op_clk
=
clk_get
(
&
i2s
->
pdev
->
dev
,
"i2s_opclk0"
);
clk_prepare_enable
(
i2s
->
op_clk
);
i2s
->
rclk_srcrate
=
clk_get_rate
(
i2s
->
op_clk
);
/* Over-ride the other's */
...
...
@@ -880,7 +882,7 @@ static int samsung_i2s_dai_probe(struct snd_soc_dai *dai)
iounmap
(
i2s
->
addr
);
return
-
ENOENT
;
}
clk_enable
(
i2s
->
clk
);
clk_
prepare_
enable
(
i2s
->
clk
);
if
(
other
)
{
other
->
addr
=
i2s
->
addr
;
...
...
@@ -922,7 +924,7 @@ static int samsung_i2s_dai_remove(struct snd_soc_dai *dai)
if
(
i2s
->
quirks
&
QUIRK_NEED_RSTCLR
)
writel
(
0
,
i2s
->
addr
+
I2SCON
);
clk_disable
(
i2s
->
clk
);
clk_disable
_unprepare
(
i2s
->
clk
);
clk_put
(
i2s
->
clk
);
iounmap
(
i2s
->
addr
);
...
...
@@ -1007,6 +1009,7 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
sec_dai
=
dev_get_drvdata
(
&
pdev
->
dev
);
snd_soc_register_dai
(
&
sec_dai
->
pdev
->
dev
,
&
sec_dai
->
i2s_dai_drv
);
asoc_dma_platform_register
(
&
pdev
->
dev
);
return
0
;
}
...
...
@@ -1067,7 +1070,6 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
(
struct
s3c2410_dma_client
*
)
&
pri_dai
->
dma_capture
;
pri_dai
->
dma_playback
.
channel
=
dma_pl_chan
;
pri_dai
->
dma_capture
.
channel
=
dma_cp_chan
;
pri_dai
->
src_clk
=
i2s_cfg
->
src_clk
;
pri_dai
->
dma_playback
.
dma_size
=
4
;
pri_dai
->
dma_capture
.
dma_size
=
4
;
pri_dai
->
base
=
regs_base
;
...
...
@@ -1088,7 +1090,6 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
(
struct
s3c2410_dma_client
*
)
&
sec_dai
->
dma_playback
;
/* Use iDMA always if SysDMA not provided */
sec_dai
->
dma_playback
.
channel
=
dma_pl_sec_chan
?
:
-
1
;
sec_dai
->
src_clk
=
i2s_cfg
->
src_clk
;
sec_dai
->
dma_playback
.
dma_size
=
4
;
sec_dai
->
base
=
regs_base
;
sec_dai
->
quirks
=
quirks
;
...
...
@@ -1107,6 +1108,8 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
pm_runtime_enable
(
&
pdev
->
dev
);
asoc_dma_platform_register
(
&
pdev
->
dev
);
return
0
;
err:
release_mem_region
(
regs_base
,
resource_size
(
res
));
...
...
@@ -1135,6 +1138,7 @@ static __devexit int samsung_i2s_remove(struct platform_device *pdev)
i2s
->
pri_dai
=
NULL
;
i2s
->
sec_dai
=
NULL
;
asoc_dma_platform_unregister
(
&
pdev
->
dev
);
snd_soc_unregister_dai
(
&
pdev
->
dev
);
return
0
;
...
...
sound/soc/samsung/jive_wm8750.c
浏览文件 @
ceb8ef5e
...
...
@@ -118,7 +118,7 @@ static struct snd_soc_dai_link jive_dai = {
.
stream_name
=
"WM8750"
,
.
cpu_dai_name
=
"s3c2412-i2s"
,
.
codec_dai_name
=
"wm8750-hifi"
,
.
platform_name
=
"s
amsung-audio
"
,
.
platform_name
=
"s
3c2412-i2s
"
,
.
codec_name
=
"wm8750.0-001a"
,
.
init
=
jive_wm8750_init
,
.
ops
=
&
jive_ops
,
...
...
sound/soc/samsung/littlemill.c
浏览文件 @
ceb8ef5e
...
...
@@ -145,7 +145,7 @@ static struct snd_soc_dai_link littlemill_dai[] = {
.
stream_name
=
"CPU"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm8994-aif1"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm8994-codec"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
...
...
sound/soc/samsung/ln2440sbc_alc650.c
浏览文件 @
ceb8ef5e
...
...
@@ -28,7 +28,7 @@ static struct snd_soc_dai_link ln2440sbc_dai[] = {
.
cpu_dai_name
=
"samsung-ac97"
,
.
codec_dai_name
=
"ac97-hifi"
,
.
codec_name
=
"ac97-codec"
,
.
platform_name
=
"samsung-a
udio
"
,
.
platform_name
=
"samsung-a
c97
"
,
},
};
...
...
sound/soc/samsung/lowland.c
浏览文件 @
ceb8ef5e
...
...
@@ -99,7 +99,7 @@ static struct snd_soc_dai_link lowland_dai[] = {
.
stream_name
=
"CPU"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm5100-aif1"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm5100.1-001a"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
...
...
sound/soc/samsung/neo1973_wm8753.c
浏览文件 @
ceb8ef5e
...
...
@@ -364,7 +364,7 @@ static struct snd_soc_dai_link neo1973_dai[] = {
{
/* Hifi Playback - for similatious use with voice below */
.
name
=
"WM8753"
,
.
stream_name
=
"WM8753 HiFi"
,
.
platform_name
=
"s
amsung-audio
"
,
.
platform_name
=
"s
3c24xx-iis
"
,
.
cpu_dai_name
=
"s3c24xx-iis"
,
.
codec_dai_name
=
"wm8753-hifi"
,
.
codec_name
=
"wm8753.0-001a"
,
...
...
sound/soc/samsung/pcm.c
浏览文件 @
ceb8ef5e
...
...
@@ -543,7 +543,7 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
ret
=
PTR_ERR
(
pcm
->
cclk
);
goto
err1
;
}
clk_enable
(
pcm
->
cclk
);
clk_
prepare_
enable
(
pcm
->
cclk
);
/* record our pcm structure for later use in the callbacks */
dev_set_drvdata
(
&
pdev
->
dev
,
pcm
);
...
...
@@ -568,7 +568,7 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
ret
=
-
ENOENT
;
goto
err4
;
}
clk_enable
(
pcm
->
pclk
);
clk_
prepare_
enable
(
pcm
->
pclk
);
s3c_pcm_stereo_in
[
pdev
->
id
].
dma_addr
=
mem_res
->
start
+
S3C_PCM_RXFIFO
;
...
...
@@ -589,17 +589,25 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
goto
err5
;
}
ret
=
asoc_dma_platform_register
(
&
pdev
->
dev
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to get register DMA: %d
\n
"
,
ret
);
goto
err6
;
}
return
0
;
err6:
snd_soc_unregister_dai
(
&
pdev
->
dev
);
err5:
clk_disable
(
pcm
->
pclk
);
clk_disable
_unprepare
(
pcm
->
pclk
);
clk_put
(
pcm
->
pclk
);
err4:
iounmap
(
pcm
->
regs
);
err3:
release_mem_region
(
mem_res
->
start
,
resource_size
(
mem_res
));
err2:
clk_disable
(
pcm
->
cclk
);
clk_disable
_unprepare
(
pcm
->
cclk
);
clk_put
(
pcm
->
cclk
);
err1:
return
ret
;
...
...
@@ -610,6 +618,7 @@ static __devexit int s3c_pcm_dev_remove(struct platform_device *pdev)
struct
s3c_pcm_info
*
pcm
=
&
s3c_pcm
[
pdev
->
id
];
struct
resource
*
mem_res
;
asoc_dma_platform_unregister
(
&
pdev
->
dev
);
snd_soc_unregister_dai
(
&
pdev
->
dev
);
pm_runtime_disable
(
&
pdev
->
dev
);
...
...
@@ -619,8 +628,8 @@ static __devexit int s3c_pcm_dev_remove(struct platform_device *pdev)
mem_res
=
platform_get_resource
(
pdev
,
IORESOURCE_MEM
,
0
);
release_mem_region
(
mem_res
->
start
,
resource_size
(
mem_res
));
clk_disable
(
pcm
->
cclk
);
clk_disable
(
pcm
->
pclk
);
clk_disable
_unprepare
(
pcm
->
cclk
);
clk_disable
_unprepare
(
pcm
->
pclk
);
clk_put
(
pcm
->
pclk
);
clk_put
(
pcm
->
cclk
);
...
...
sound/soc/samsung/rx1950_uda1380.c
浏览文件 @
ceb8ef5e
...
...
@@ -85,7 +85,7 @@ static struct snd_soc_dai_link rx1950_uda1380_dai[] = {
.
cpu_dai_name
=
"s3c24xx-iis"
,
.
codec_dai_name
=
"uda1380-hifi"
,
.
init
=
rx1950_uda1380_init
,
.
platform_name
=
"s
amsung-audio
"
,
.
platform_name
=
"s
3c24xx-iis
"
,
.
codec_name
=
"uda1380-codec.0-001a"
,
.
ops
=
&
rx1950_ops
,
},
...
...
sound/soc/samsung/s3c2412-i2s.c
浏览文件 @
ceb8ef5e
...
...
@@ -162,11 +162,29 @@ static struct snd_soc_dai_driver s3c2412_i2s_dai = {
static
__devinit
int
s3c2412_iis_dev_probe
(
struct
platform_device
*
pdev
)
{
return
s3c_i2sv2_register_dai
(
&
pdev
->
dev
,
-
1
,
&
s3c2412_i2s_dai
);
int
ret
=
0
;
ret
=
s3c_i2sv2_register_dai
(
&
pdev
->
dev
,
-
1
,
&
s3c2412_i2s_dai
);
if
(
ret
)
{
pr_err
(
"failed to register the dai
\n
"
);
return
ret
;
}
ret
=
asoc_dma_platform_register
(
&
pdev
->
dev
);
if
(
ret
)
{
pr_err
(
"failed to register the DMA: %d
\n
"
,
ret
);
goto
err
;
}
return
0
;
err:
snd_soc_unregister_dai
(
&
pdev
->
dev
);
return
ret
;
}
static
__devexit
int
s3c2412_iis_dev_remove
(
struct
platform_device
*
pdev
)
{
asoc_dma_platform_unregister
(
&
pdev
->
dev
);
snd_soc_unregister_dai
(
&
pdev
->
dev
);
return
0
;
}
...
...
sound/soc/samsung/s3c24xx-i2s.c
浏览文件 @
ceb8ef5e
...
...
@@ -467,11 +467,29 @@ static struct snd_soc_dai_driver s3c24xx_i2s_dai = {
static
__devinit
int
s3c24xx_iis_dev_probe
(
struct
platform_device
*
pdev
)
{
return
snd_soc_register_dai
(
&
pdev
->
dev
,
&
s3c24xx_i2s_dai
);
int
ret
=
0
;
ret
=
s3c_i2sv2_register_dai
(
&
pdev
->
dev
,
-
1
,
&
s3c2412_i2s_dai
);
if
(
ret
)
{
pr_err
(
"failed to register the dai
\n
"
);
return
ret
;
}
ret
=
asoc_dma_platform_register
(
&
pdev
->
dev
);
if
(
ret
)
{
pr_err
(
"failed to register the dma: %d
\n
"
,
ret
);
goto
err
;
}
return
0
;
err:
snd_soc_unregister_dai
(
&
pdev
->
dev
);
return
ret
;
}
static
__devexit
int
s3c24xx_iis_dev_remove
(
struct
platform_device
*
pdev
)
{
asoc_dma_platform_unregister
(
&
pdev
->
dev
);
snd_soc_unregister_dai
(
&
pdev
->
dev
);
return
0
;
}
...
...
sound/soc/samsung/s3c24xx_simtec_hermes.c
浏览文件 @
ceb8ef5e
...
...
@@ -82,7 +82,7 @@ static struct snd_soc_dai_link simtec_dai_aic33 = {
.
codec_name
=
"tlv320aic3x-codec.0-001a"
,
.
cpu_dai_name
=
"s3c24xx-iis"
,
.
codec_dai_name
=
"tlv320aic3x-hifi"
,
.
platform_name
=
"s
amsung-audio
"
,
.
platform_name
=
"s
3c24xx-iis
"
,
.
init
=
simtec_hermes_init
,
};
...
...
sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c
浏览文件 @
ceb8ef5e
...
...
@@ -71,7 +71,7 @@ static struct snd_soc_dai_link simtec_dai_aic23 = {
.
codec_name
=
"tlv320aic3x-codec.0-001a"
,
.
cpu_dai_name
=
"s3c24xx-iis"
,
.
codec_dai_name
=
"tlv320aic3x-hifi"
,
.
platform_name
=
"s
amsung-audio
"
,
.
platform_name
=
"s
3c24xx-iis
"
,
.
init
=
simtec_tlv320aic23_init
,
};
...
...
sound/soc/samsung/s3c24xx_uda134x.c
浏览文件 @
ceb8ef5e
...
...
@@ -224,7 +224,7 @@ static struct snd_soc_dai_link s3c24xx_uda134x_dai_link = {
.
codec_dai_name
=
"uda134x-hifi"
,
.
cpu_dai_name
=
"s3c24xx-iis"
,
.
ops
=
&
s3c24xx_uda134x_ops
,
.
platform_name
=
"s
amsung-audio
"
,
.
platform_name
=
"s
3c24xx-iis
"
,
};
static
struct
snd_soc_card
snd_soc_s3c24xx_uda134x
=
{
...
...
sound/soc/samsung/smartq_wm8987.c
浏览文件 @
ceb8ef5e
...
...
@@ -189,7 +189,7 @@ static struct snd_soc_dai_link smartq_dai[] = {
.
stream_name
=
"SmartQ Hi-Fi"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm8750-hifi"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm8750.0-0x1a"
,
.
init
=
smartq_wm8987_init
,
.
ops
=
&
smartq_hifi_ops
,
...
...
sound/soc/samsung/smdk2443_wm9710.c
浏览文件 @
ceb8ef5e
...
...
@@ -24,7 +24,7 @@ static struct snd_soc_dai_link smdk2443_dai[] = {
.
cpu_dai_name
=
"samsung-ac97"
,
.
codec_dai_name
=
"ac97-hifi"
,
.
codec_name
=
"ac97-codec"
,
.
platform_name
=
"samsung-a
udio
"
,
.
platform_name
=
"samsung-a
c97
"
,
},
};
...
...
sound/soc/samsung/smdk_spdif.c
浏览文件 @
ceb8ef5e
...
...
@@ -151,7 +151,7 @@ static struct snd_soc_ops smdk_spdif_ops = {
static
struct
snd_soc_dai_link
smdk_dai
=
{
.
name
=
"S/PDIF"
,
.
stream_name
=
"S/PDIF PCM Playback"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
spdif
"
,
.
cpu_dai_name
=
"samsung-spdif"
,
.
codec_dai_name
=
"dit-hifi"
,
.
codec_name
=
"spdif-dit"
,
...
...
sound/soc/samsung/smdk_wm8580.c
浏览文件 @
ceb8ef5e
...
...
@@ -176,7 +176,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
.
stream_name
=
"Playback"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm8580-hifi-playback"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm8580.0-001b"
,
.
ops
=
&
smdk_ops
,
},
...
...
@@ -185,7 +185,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
.
stream_name
=
"Capture"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm8580-hifi-capture"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm8580.0-001b"
,
.
init
=
smdk_wm8580_init_paiftx
,
.
ops
=
&
smdk_ops
,
...
...
@@ -195,7 +195,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
.
stream_name
=
"Playback"
,
.
cpu_dai_name
=
"samsung-i2s.x"
,
.
codec_dai_name
=
"wm8580-hifi-playback"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.x
"
,
.
codec_name
=
"wm8580.0-001b"
,
.
ops
=
&
smdk_ops
,
},
...
...
sound/soc/samsung/smdk_wm8580pcm.c
浏览文件 @
ceb8ef5e
...
...
@@ -135,7 +135,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
.
stream_name
=
"Capture"
,
.
cpu_dai_name
=
"samsung-pcm.0"
,
.
codec_dai_name
=
"wm8580-hifi-capture"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
pcm.0
"
,
.
codec_name
=
"wm8580.0-001b"
,
.
ops
=
&
smdk_wm8580_pcm_ops
,
},
...
...
sound/soc/samsung/smdk_wm8994.c
浏览文件 @
ceb8ef5e
...
...
@@ -127,7 +127,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
.
stream_name
=
"Pri_Dai"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm8994-aif1"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm8994-codec"
,
.
init
=
smdk_wm8994_init_paiftx
,
.
ops
=
&
smdk_ops
,
...
...
@@ -136,7 +136,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
.
stream_name
=
"Sec_Dai"
,
.
cpu_dai_name
=
"samsung-i2s.4"
,
.
codec_dai_name
=
"wm8994-aif1"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.4
"
,
.
codec_name
=
"wm8994-codec"
,
.
ops
=
&
smdk_ops
,
},
...
...
sound/soc/samsung/smdk_wm8994pcm.c
浏览文件 @
ceb8ef5e
...
...
@@ -116,7 +116,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
.
stream_name
=
"Primary PCM"
,
.
cpu_dai_name
=
"samsung-pcm.0"
,
.
codec_dai_name
=
"wm8994-aif1"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
pcm.0
"
,
.
codec_name
=
"wm8994-codec"
,
.
ops
=
&
smdk_wm8994_pcm_ops
,
},
...
...
sound/soc/samsung/smdk_wm9713.c
浏览文件 @
ceb8ef5e
...
...
@@ -42,7 +42,7 @@ static struct snd_soc_card smdk;
static
struct
snd_soc_dai_link
smdk_dai
=
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 PCM"
,
.
platform_name
=
"samsung-a
udio
"
,
.
platform_name
=
"samsung-a
c97
"
,
.
cpu_dai_name
=
"samsung-ac97"
,
.
codec_dai_name
=
"wm9713-hifi"
,
.
codec_name
=
"wm9713-codec"
,
...
...
sound/soc/samsung/spdif.c
浏览文件 @
ceb8ef5e
...
...
@@ -397,7 +397,7 @@ static __devinit int spdif_probe(struct platform_device *pdev)
ret
=
-
ENOENT
;
goto
err0
;
}
clk_enable
(
spdif
->
pclk
);
clk_
prepare_
enable
(
spdif
->
pclk
);
spdif
->
sclk
=
clk_get
(
&
pdev
->
dev
,
"sclk_spdif"
);
if
(
IS_ERR
(
spdif
->
sclk
))
{
...
...
@@ -405,7 +405,7 @@ static __devinit int spdif_probe(struct platform_device *pdev)
ret
=
-
ENOENT
;
goto
err1
;
}
clk_enable
(
spdif
->
sclk
);
clk_
prepare_
enable
(
spdif
->
sclk
);
/* Request S/PDIF Register's memory region */
if
(
!
request_mem_region
(
mem_res
->
start
,
...
...
@@ -437,17 +437,24 @@ static __devinit int spdif_probe(struct platform_device *pdev)
spdif
->
dma_playback
=
&
spdif_stereo_out
;
return
0
;
ret
=
asoc_dma_platform_register
(
&
pdev
->
dev
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to register DMA: %d
\n
"
,
ret
);
goto
err5
;
}
return
0
;
err5:
snd_soc_unregister_dai
(
&
pdev
->
dev
);
err4:
iounmap
(
spdif
->
regs
);
err3:
release_mem_region
(
mem_res
->
start
,
resource_size
(
mem_res
));
err2:
clk_disable
(
spdif
->
sclk
);
clk_disable
_unprepare
(
spdif
->
sclk
);
clk_put
(
spdif
->
sclk
);
err1:
clk_disable
(
spdif
->
pclk
);
clk_disable
_unprepare
(
spdif
->
pclk
);
clk_put
(
spdif
->
pclk
);
err0:
return
ret
;
...
...
@@ -458,6 +465,7 @@ static __devexit int spdif_remove(struct platform_device *pdev)
struct
samsung_spdif_info
*
spdif
=
&
spdif_info
;
struct
resource
*
mem_res
;
asoc_dma_platform_unregister
(
&
pdev
->
dev
);
snd_soc_unregister_dai
(
&
pdev
->
dev
);
iounmap
(
spdif
->
regs
);
...
...
@@ -466,9 +474,9 @@ static __devexit int spdif_remove(struct platform_device *pdev)
if
(
mem_res
)
release_mem_region
(
mem_res
->
start
,
resource_size
(
mem_res
));
clk_disable
(
spdif
->
sclk
);
clk_disable
_unprepare
(
spdif
->
sclk
);
clk_put
(
spdif
->
sclk
);
clk_disable
(
spdif
->
pclk
);
clk_disable
_unprepare
(
spdif
->
pclk
);
clk_put
(
spdif
->
pclk
);
return
0
;
...
...
sound/soc/samsung/speyside.c
浏览文件 @
ceb8ef5e
...
...
@@ -198,7 +198,7 @@ static struct snd_soc_dai_link speyside_dai[] = {
.
stream_name
=
"CPU-DSP"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm0010-sdi1"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"spi0.0"
,
.
init
=
speyside_wm0010_init
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
...
...
sound/soc/samsung/tobermory.c
浏览文件 @
ceb8ef5e
...
...
@@ -110,7 +110,7 @@ static struct snd_soc_dai_link tobermory_dai[] = {
.
stream_name
=
"CPU"
,
.
cpu_dai_name
=
"samsung-i2s.0"
,
.
codec_dai_name
=
"wm8962"
,
.
platform_name
=
"samsung-
audio
"
,
.
platform_name
=
"samsung-
i2s.0
"
,
.
codec_name
=
"wm8962.1-001a"
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录