Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
ceb8ef5e
Commit
ceb8ef5e
authored
Dec 10, 2012
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/samsung' into asoc-next
parents
a5034515
a08485d8
Changes
46
Show whitespace changes
Inline
Side-by-side
Showing
46 changed files
with
292 additions
and
157 deletions
+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
No files found.
arch/arm/mach-exynos/mach-armlex4210.c
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
)
{
if
(
dapm
->
bias_level
!=
SND_SOC_BIAS_STANDBY
)
break
;
ret
=
snd_soc_codec_set_pll
(
codec
,
WM5102_FLL1
,
ARIZONA_FLL_SRC_MCLK1
,
MCLK_RATE
,
SYSCLK_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,11 +115,14 @@ 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
(
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
;
default:
...
...
@@ -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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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,
}
}
if
(
clk_id
)
i2s
->
op_clk
=
clk_get
(
&
i2s
->
pdev
->
dev
,
i2s
->
src_clk
[
clk_id
]);
clk_enable
(
i2s
->
op_clk
);
"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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment