Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
611ad378
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看板
提交
611ad378
编写于
9月 20, 2010
作者:
L
Liam Girdwood
浏览文件
操作
浏览文件
下载
差异文件
Merge remote branch 'broonie-asoc/for-2.6.37' into for-2.6.37
上级
2c4ee9b5
b9fde18c
变更
55
展开全部
隐藏空白更改
内联
并排
Showing
55 changed file
with
2584 addition
and
207 deletion
+2584
-207
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+1
-1
drivers/staging/xgifb/TODO
drivers/staging/xgifb/TODO
+1
-1
drivers/video/Kconfig
drivers/video/Kconfig
+1
-0
drivers/video/sh_mobile_hdmi.c
drivers/video/sh_mobile_hdmi.c
+25
-27
include/video/sh_mobile_hdmi.h
include/video/sh_mobile_hdmi.h
+5
-5
sound/soc/codecs/Kconfig
sound/soc/codecs/Kconfig
+4
-0
sound/soc/codecs/Makefile
sound/soc/codecs/Makefile
+2
-0
sound/soc/codecs/ad1980.c
sound/soc/codecs/ad1980.c
+1
-0
sound/soc/codecs/ak4642.c
sound/soc/codecs/ak4642.c
+11
-11
sound/soc/codecs/ak4671.c
sound/soc/codecs/ak4671.c
+0
-1
sound/soc/codecs/cs42l51.c
sound/soc/codecs/cs42l51.c
+1
-1
sound/soc/codecs/da7210.c
sound/soc/codecs/da7210.c
+9
-9
sound/soc/codecs/ssm2602.c
sound/soc/codecs/ssm2602.c
+0
-1
sound/soc/codecs/tlv320dac33.c
sound/soc/codecs/tlv320dac33.c
+0
-1
sound/soc/codecs/twl4030.c
sound/soc/codecs/twl4030.c
+0
-1
sound/soc/codecs/wm8510.c
sound/soc/codecs/wm8510.c
+0
-1
sound/soc/codecs/wm8580.c
sound/soc/codecs/wm8580.c
+1
-1
sound/soc/codecs/wm8711.c
sound/soc/codecs/wm8711.c
+1
-1
sound/soc/codecs/wm8728.c
sound/soc/codecs/wm8728.c
+1
-1
sound/soc/codecs/wm8731.c
sound/soc/codecs/wm8731.c
+1
-3
sound/soc/codecs/wm8741.c
sound/soc/codecs/wm8741.c
+1
-1
sound/soc/codecs/wm8750.c
sound/soc/codecs/wm8750.c
+1
-1
sound/soc/codecs/wm8753.c
sound/soc/codecs/wm8753.c
+1
-2
sound/soc/codecs/wm8776.c
sound/soc/codecs/wm8776.c
+1
-1
sound/soc/codecs/wm8900.c
sound/soc/codecs/wm8900.c
+1
-1
sound/soc/codecs/wm8940.c
sound/soc/codecs/wm8940.c
+1
-1
sound/soc/codecs/wm8961.c
sound/soc/codecs/wm8961.c
+1
-1
sound/soc/codecs/wm8962.c
sound/soc/codecs/wm8962.c
+1
-1
sound/soc/codecs/wm8985.c
sound/soc/codecs/wm8985.c
+1195
-0
sound/soc/codecs/wm8985.h
sound/soc/codecs/wm8985.h
+1045
-0
sound/soc/codecs/wm8988.c
sound/soc/codecs/wm8988.c
+1
-1
sound/soc/codecs/wm8990.c
sound/soc/codecs/wm8990.c
+0
-1
sound/soc/codecs/wm8993.c
sound/soc/codecs/wm8993.c
+1
-1
sound/soc/codecs/wm9081.c
sound/soc/codecs/wm9081.c
+1
-1
sound/soc/codecs/wm9705.c
sound/soc/codecs/wm9705.c
+1
-1
sound/soc/codecs/wm9712.c
sound/soc/codecs/wm9712.c
+1
-1
sound/soc/codecs/wm9713.c
sound/soc/codecs/wm9713.c
+1
-1
sound/soc/kirkwood/kirkwood-dma.c
sound/soc/kirkwood/kirkwood-dma.c
+2
-1
sound/soc/kirkwood/kirkwood-i2s.c
sound/soc/kirkwood/kirkwood-i2s.c
+2
-1
sound/soc/kirkwood/kirkwood-openrd.c
sound/soc/kirkwood/kirkwood-openrd.c
+2
-1
sound/soc/s3c24xx/s3c-pcm.c
sound/soc/s3c24xx/s3c-pcm.c
+16
-10
sound/soc/s3c24xx/s3c-pcm.h
sound/soc/s3c24xx/s3c-pcm.h
+2
-1
sound/soc/s3c24xx/smdk2443_wm9710.c
sound/soc/s3c24xx/smdk2443_wm9710.c
+1
-1
sound/soc/s3c24xx/smdk64xx_wm8580.c
sound/soc/s3c24xx/smdk64xx_wm8580.c
+1
-1
sound/soc/s3c24xx/smdk_wm9713.c
sound/soc/s3c24xx/smdk_wm9713.c
+1
-1
sound/soc/sh/Kconfig
sound/soc/sh/Kconfig
+3
-3
sound/soc/sh/fsi-ak4642.c
sound/soc/sh/fsi-ak4642.c
+2
-2
sound/soc/sh/fsi-da7210.c
sound/soc/sh/fsi-da7210.c
+1
-1
sound/soc/sh/fsi-hdmi.c
sound/soc/sh/fsi-hdmi.c
+1
-2
sound/soc/sh/fsi.c
sound/soc/sh/fsi.c
+93
-84
sound/soc/sh/migor.c
sound/soc/sh/migor.c
+13
-2
sound/soc/sh/siu.h
sound/soc/sh/siu.h
+2
-1
sound/soc/sh/siu_dai.c
sound/soc/sh/siu_dai.c
+29
-12
sound/soc/sh/siu_pcm.c
sound/soc/sh/siu_pcm.c
+1
-1
sound/soc/soc-core.c
sound/soc/soc-core.c
+93
-0
未找到文件。
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
浏览文件 @
611ad378
...
...
@@ -551,7 +551,7 @@ static struct resource siu_resources[] = {
};
static
struct
platform_device
siu_device
=
{
.
name
=
"s
h_siu
"
,
.
name
=
"s
iu-pcm-audio
"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
siu_platform_data
,
...
...
drivers/staging/xgifb/TODO
浏览文件 @
611ad378
...
...
@@ -12,4 +12,4 @@ TODO:
- get rid of non-linux related stuff
Please send patches to:
Arnaud Patard <a
patard@mandriva.com
>
Arnaud Patard <a
rnaud.patard@rtp-net.org
>
drivers/video/Kconfig
浏览文件 @
611ad378
...
...
@@ -1919,6 +1919,7 @@ config FB_SH_MOBILE_HDMI
tristate "SuperH Mobile HDMI controller support"
depends on FB_SH_MOBILE_LCDC
select FB_MODE_HELPERS
select SND_SOC
---help---
Driver for the on-chip SH-Mobile HDMI controller.
...
...
drivers/video/sh_mobile_hdmi.c
浏览文件 @
611ad378
...
...
@@ -224,13 +224,9 @@ static u8 hdmi_read(struct sh_hdmi *hdmi, u8 reg)
return
ioread8
(
hdmi
->
base
+
reg
);
}
/************************************************************************
HDMI sound
************************************************************************/
/*
* HDMI sound
*/
static
unsigned
int
sh_hdmi_snd_read
(
struct
snd_soc_codec
*
codec
,
unsigned
int
reg
)
{
...
...
@@ -253,9 +249,12 @@ static struct snd_soc_dai_driver sh_hdmi_dai = {
.
name
=
"sh_mobile_hdmi-hifi"
,
.
playback
=
{
.
stream_name
=
"Playback"
,
.
channels_min
=
1
,
.
channels_max
=
2
,
.
rates
=
SNDRV_PCM_RATE_8000_48000
,
.
channels_min
=
2
,
.
channels_max
=
8
,
.
rates
=
SNDRV_PCM_RATE_32000
|
SNDRV_PCM_RATE_44100
|
SNDRV_PCM_RATE_48000
|
SNDRV_PCM_RATE_88200
|
SNDRV_PCM_RATE_96000
|
SNDRV_PCM_RATE_176400
|
SNDRV_PCM_RATE_192000
,
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S24_LE
,
},
};
...
...
@@ -273,13 +272,10 @@ static struct snd_soc_codec_driver soc_codec_dev_sh_hdmi = {
.
write
=
sh_hdmi_snd_write
,
};
/************************************************************************
HDMI video
/*
* HDMI video
*/
************************************************************************/
/* External video parameter settings */
static
void
hdmi_external_video_param
(
struct
sh_hdmi
*
hdmi
)
{
...
...
@@ -396,20 +392,20 @@ static void sh_hdmi_audio_config(struct sh_hdmi *hdmi)
* [6:5] set required down sampling rate if required
* [4:3] set required audio source
*/
switch
(
pdata
->
flags
&
HDMI_SRC_MASK
)
{
switch
(
pdata
->
flags
&
HDMI_S
ND_S
RC_MASK
)
{
default:
/*
FALL THROUGH
*/
case
HDMI_SRC_I2S
:
data
=
(
0x0
<<
3
)
;
/*
fall through
*/
case
HDMI_S
ND_S
RC_I2S
:
data
=
0x0
<<
3
;
break
;
case
HDMI_SRC_SPDIF
:
data
=
(
0x1
<<
3
)
;
case
HDMI_S
ND_S
RC_SPDIF
:
data
=
0x1
<<
3
;
break
;
case
HDMI_SRC_DSD
:
data
=
(
0x2
<<
3
)
;
case
HDMI_S
ND_S
RC_DSD
:
data
=
0x2
<<
3
;
break
;
case
HDMI_SRC_HBR
:
data
=
(
0x3
<<
3
)
;
case
HDMI_S
ND_S
RC_HBR
:
data
=
0x3
<<
3
;
break
;
}
hdmi_write
(
hdmi
,
data
,
HDMI_AUDIO_SETTING_1
);
...
...
@@ -971,7 +967,7 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
ret
=
snd_soc_register_codec
(
&
pdev
->
dev
,
&
soc_codec_dev_sh_hdmi
,
&
sh_hdmi_dai
,
1
);
if
(
ret
<
0
)
goto
e
getclk
;
goto
e
sndreg
;
hdmi
->
dev
=
&
pdev
->
dev
;
...
...
@@ -1058,6 +1054,8 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
erate:
clk_put
(
hdmi
->
hdmi_clk
);
egetclk:
snd_soc_unregister_codec
(
&
pdev
->
dev
);
esndreg:
kfree
(
hdmi
);
return
ret
;
...
...
include/video/sh_mobile_hdmi.h
浏览文件 @
611ad378
...
...
@@ -23,11 +23,11 @@ struct device;
*/
/* Audio source select */
#define HDMI_S
RC_MASK
(0xF << 0)
#define HDMI_S
RC_I2S
(0 << 0)
/* default */
#define HDMI_S
RC_SPDIF
(1 << 0)
#define HDMI_S
RC_DSD
(2 << 0)
#define HDMI_S
RC_HBR
(3 << 0)
#define HDMI_S
ND_SRC_MASK
(0xF << 0)
#define HDMI_S
ND_SRC_I2S
(0 << 0)
/* default */
#define HDMI_S
ND_SRC_SPDIF
(1 << 0)
#define HDMI_S
ND_SRC_DSD
(2 << 0)
#define HDMI_S
ND_SRC_HBR
(3 << 0)
struct
sh_mobile_hdmi_info
{
struct
sh_mobile_lcdc_chan_cfg
*
lcd_chan
;
...
...
sound/soc/codecs/Kconfig
浏览文件 @
611ad378
...
...
@@ -67,6 +67,7 @@ config SND_SOC_ALL_CODECS
select SND_SOC_WM8971 if I2C
select SND_SOC_WM8974 if I2C
select SND_SOC_WM8978 if I2C
select SND_SOC_WM8985 if SND_SOC_I2C_AND_SPI
select SND_SOC_WM8988 if SND_SOC_I2C_AND_SPI
select SND_SOC_WM8990 if I2C
select SND_SOC_WM8993 if I2C
...
...
@@ -269,6 +270,9 @@ config SND_SOC_WM8974
config SND_SOC_WM8978
tristate
config SND_SOC_WM8985
tristate
config SND_SOC_WM8988
tristate
...
...
sound/soc/codecs/Makefile
浏览文件 @
611ad378
...
...
@@ -52,6 +52,7 @@ snd-soc-wm8962-objs := wm8962.o wm8962-tables.o
snd-soc-wm8971-objs
:=
wm8971.o
snd-soc-wm8974-objs
:=
wm8974.o
snd-soc-wm8978-objs
:=
wm8978.o
snd-soc-wm8985-objs
:=
wm8985.o
snd-soc-wm8988-objs
:=
wm8988.o
snd-soc-wm8990-objs
:=
wm8990.o
snd-soc-wm8993-objs
:=
wm8993.o
...
...
@@ -124,6 +125,7 @@ obj-$(CONFIG_SND_SOC_WM8962) += snd-soc-wm8962.o
obj-$(CONFIG_SND_SOC_WM8971)
+=
snd-soc-wm8971.o
obj-$(CONFIG_SND_SOC_WM8974)
+=
snd-soc-wm8974.o
obj-$(CONFIG_SND_SOC_WM8978)
+=
snd-soc-wm8978.o
obj-$(CONFIG_SND_SOC_WM8985)
+=
snd-soc-wm8985.o
obj-$(CONFIG_SND_SOC_WM8988)
+=
snd-soc-wm8988.o
obj-$(CONFIG_SND_SOC_WM8990)
+=
snd-soc-wm8990.o
obj-$(CONFIG_SND_SOC_WM8993)
+=
snd-soc-wm8993.o
...
...
sound/soc/codecs/ad1980.c
浏览文件 @
611ad378
...
...
@@ -247,6 +247,7 @@ static struct snd_soc_codec_driver soc_codec_dev_ad1980 = {
.
remove
=
ad1980_soc_remove
,
.
reg_cache_size
=
ARRAY_SIZE
(
ad1980_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
ad1980_reg
,
.
reg_cache_step
=
2
,
.
write
=
ac97_write
,
.
read
=
ac97_read
,
...
...
sound/soc/codecs/ak4642.c
浏览文件 @
611ad378
...
...
@@ -422,7 +422,7 @@ static int ak4642_probe(struct snd_soc_codec *codec)
dev_info
(
codec
->
dev
,
"AK4642 Audio Codec %s"
,
AK4642_VERSION
);
codec
->
hw_write
=
(
hw_write_t
)
i2c_master_send
;
codec
->
control_data
=
ak4642
->
control_data
;
codec
->
control_data
=
ak4642
->
control_data
;
snd_soc_add_controls
(
codec
,
ak4642_snd_controls
,
ARRAY_SIZE
(
ak4642_snd_controls
));
...
...
@@ -431,12 +431,12 @@ static int ak4642_probe(struct snd_soc_codec *codec)
}
static
struct
snd_soc_codec_driver
soc_codec_dev_ak4642
=
{
.
probe
=
ak4642_probe
,
.
resume
=
ak4642_resume
,
.
read
=
ak4642_read_reg_cache
,
.
write
=
ak4642_write
,
.
reg_cache_size
=
ARRAY_SIZE
(
ak4642_reg
),
.
reg_word_size
=
sizeof
(
u8
),
.
probe
=
ak4642_probe
,
.
resume
=
ak4642_resume
,
.
read
=
ak4642_read_reg_cache
,
.
write
=
ak4642_write
,
.
reg_cache_size
=
ARRAY_SIZE
(
ak4642_reg
),
.
reg_word_size
=
sizeof
(
u8
),
.
reg_cache_default
=
ak4642_reg
,
};
...
...
@@ -448,7 +448,7 @@ static __devinit int ak4642_i2c_probe(struct i2c_client *i2c,
int
ret
;
ak4642
=
kzalloc
(
sizeof
(
struct
ak4642_priv
),
GFP_KERNEL
);
if
(
ak4642
==
NULL
)
if
(
!
ak4642
)
return
-
ENOMEM
;
i2c_set_clientdata
(
i2c
,
ak4642
);
...
...
@@ -481,9 +481,9 @@ static struct i2c_driver ak4642_i2c_driver = {
.
name
=
"ak4642-codec"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
ak4642_i2c_probe
,
.
remove
=
__devexit_p
(
ak4642_i2c_remove
),
.
id_table
=
ak4642_i2c_id
,
.
probe
=
ak4642_i2c_probe
,
.
remove
=
__devexit_p
(
ak4642_i2c_remove
),
.
id_table
=
ak4642_i2c_id
,
};
#endif
...
...
sound/soc/codecs/ak4671.c
浏览文件 @
611ad378
...
...
@@ -642,7 +642,6 @@ static int ak4671_probe(struct snd_soc_codec *codec)
int
ret
;
codec
->
hw_write
=
(
hw_write_t
)
i2c_master_send
;
codec
->
bias_level
=
SND_SOC_BIAS_OFF
;
ret
=
snd_soc_codec_set_cache_io
(
codec
,
8
,
8
,
ak4671
->
control_type
);
if
(
ret
<
0
)
{
...
...
sound/soc/codecs/cs42l51.c
浏览文件 @
611ad378
...
...
@@ -649,6 +649,6 @@ static void __exit cs42l51_exit(void)
}
module_exit
(
cs42l51_exit
);
MODULE_AUTHOR
(
"Arnaud Patard <a
patard@mandriva.com
>"
);
MODULE_AUTHOR
(
"Arnaud Patard <a
rnaud.patard@rtp-net.org
>"
);
MODULE_DESCRIPTION
(
"Cirrus Logic CS42L51 ALSA SoC Codec Driver"
);
MODULE_LICENSE
(
"GPL"
);
sound/soc/codecs/da7210.c
浏览文件 @
611ad378
...
...
@@ -454,7 +454,7 @@ static int da7210_probe(struct snd_soc_codec *codec)
dev_info
(
codec
->
dev
,
"DA7210 Audio Codec %s
\n
"
,
DA7210_VERSION
);
codec
->
control_data
=
da7210
->
control_data
;
codec
->
control_data
=
da7210
->
control_data
;
codec
->
hw_write
=
(
hw_write_t
)
i2c_master_send
;
/* FIXME
...
...
@@ -547,11 +547,11 @@ static int da7210_probe(struct snd_soc_codec *codec)
}
static
struct
snd_soc_codec_driver
soc_codec_dev_da7210
=
{
.
probe
=
da7210_probe
,
.
read
=
da7210_read
,
.
write
=
da7210_write
,
.
reg_cache_size
=
ARRAY_SIZE
(
da7210_reg
),
.
reg_word_size
=
sizeof
(
u8
),
.
probe
=
da7210_probe
,
.
read
=
da7210_read
,
.
write
=
da7210_write
,
.
reg_cache_size
=
ARRAY_SIZE
(
da7210_reg
),
.
reg_word_size
=
sizeof
(
u8
),
.
reg_cache_default
=
da7210_reg
,
};
...
...
@@ -597,9 +597,9 @@ static struct i2c_driver da7210_i2c_driver = {
.
name
=
"da7210-codec"
,
.
owner
=
THIS_MODULE
,
},
.
probe
=
da7210_i2c_probe
,
.
remove
=
__devexit_p
(
da7210_i2c_remove
),
.
id_table
=
da7210_i2c_id
,
.
probe
=
da7210_i2c_probe
,
.
remove
=
__devexit_p
(
da7210_i2c_remove
),
.
id_table
=
da7210_i2c_id
,
};
#endif
...
...
sound/soc/codecs/ssm2602.c
浏览文件 @
611ad378
...
...
@@ -560,7 +560,6 @@ static int ssm2602_probe(struct snd_soc_codec *codec)
pr_info
(
"ssm2602 Audio Codec %s"
,
SSM2602_VERSION
);
codec
->
bias_level
=
SND_SOC_BIAS_OFF
,
codec
->
control_data
=
ssm2602
->
control_data
;
ssm2602_reset
(
codec
);
...
...
sound/soc/codecs/tlv320dac33.c
浏览文件 @
611ad378
...
...
@@ -1385,7 +1385,6 @@ static int dac33_soc_probe(struct snd_soc_codec *codec)
codec
->
control_data
=
dac33
->
control_data
;
codec
->
hw_write
=
(
hw_write_t
)
i2c_master_send
;
codec
->
bias_level
=
SND_SOC_BIAS_OFF
;
codec
->
idle_bias_off
=
1
;
dac33
->
codec
=
codec
;
...
...
sound/soc/codecs/twl4030.c
浏览文件 @
611ad378
...
...
@@ -2245,7 +2245,6 @@ static int twl4030_soc_probe(struct snd_soc_codec *codec)
snd_soc_codec_set_drvdata
(
codec
,
twl4030
);
/* Set the defaults, and power up the codec */
twl4030
->
sysclk
=
twl4030_codec_get_mclk
()
/
1000
;
codec
->
bias_level
=
SND_SOC_BIAS_OFF
;
codec
->
idle_bias_off
=
1
;
twl4030_init_chip
(
codec
);
...
...
sound/soc/codecs/wm8510.c
浏览文件 @
611ad378
...
...
@@ -569,7 +569,6 @@ static int wm8510_probe(struct snd_soc_codec *codec)
wm8510_reset
(
codec
);
/* power on device */
codec
->
bias_level
=
SND_SOC_BIAS_OFF
;
wm8510_set_bias_level
(
codec
,
SND_SOC_BIAS_STANDBY
);
snd_soc_add_controls
(
codec
,
wm8510_snd_controls
,
ARRAY_SIZE
(
wm8510_snd_controls
));
...
...
sound/soc/codecs/wm8580.c
浏览文件 @
611ad378
...
...
@@ -907,7 +907,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8580 = {
.
probe
=
wm8580_probe
,
.
remove
=
wm8580_remove
,
.
set_bias_level
=
wm8580_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8580_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8580_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
&
wm8580_reg
,
};
...
...
sound/soc/codecs/wm8711.c
浏览文件 @
611ad378
...
...
@@ -418,7 +418,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8711 = {
.
suspend
=
wm8711_suspend
,
.
resume
=
wm8711_resume
,
.
set_bias_level
=
wm8711_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8711_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8711_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8711_reg
,
};
...
...
sound/soc/codecs/wm8728.c
浏览文件 @
611ad378
...
...
@@ -272,7 +272,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8728 = {
.
suspend
=
wm8728_suspend
,
.
resume
=
wm8728_resume
,
.
set_bias_level
=
wm8728_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8728_reg_defaults
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8728_reg_defaults
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8728_reg_defaults
,
};
...
...
sound/soc/codecs/wm8731.c
浏览文件 @
611ad378
...
...
@@ -488,8 +488,6 @@ static int wm8731_probe(struct snd_soc_codec *codec)
struct
wm8731_priv
*
wm8731
=
snd_soc_codec_get_drvdata
(
codec
);
int
ret
=
0
,
i
;
codec
->
bias_level
=
SND_SOC_BIAS_OFF
,
ret
=
snd_soc_codec_set_cache_io
(
codec
,
7
,
9
,
wm8731
->
control_type
);
if
(
ret
<
0
)
{
dev_err
(
codec
->
dev
,
"Failed to set cache I/O: %d
\n
"
,
ret
);
...
...
@@ -567,7 +565,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8731 = {
.
suspend
=
wm8731_suspend
,
.
resume
=
wm8731_resume
,
.
set_bias_level
=
wm8731_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8731_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8731_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8731_reg
,
};
...
...
sound/soc/codecs/wm8741.c
浏览文件 @
611ad378
...
...
@@ -453,7 +453,7 @@ static int wm8741_probe(struct snd_soc_codec *codec)
static
struct
snd_soc_codec_driver
soc_codec_dev_wm8741
=
{
.
probe
=
wm8741_probe
,
.
resume
=
wm8741_resume
,
.
reg_cache_size
=
sizeof
(
wm8741_reg_defaults
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8741_reg_defaults
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
&
wm8741_reg_defaults
,
};
...
...
sound/soc/codecs/wm8750.c
浏览文件 @
611ad378
...
...
@@ -747,7 +747,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8750 = {
.
suspend
=
wm8750_suspend
,
.
resume
=
wm8750_resume
,
.
set_bias_level
=
wm8750_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8750_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8750_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8750_reg
,
};
...
...
sound/soc/codecs/wm8753.c
浏览文件 @
611ad378
...
...
@@ -1550,7 +1550,6 @@ static int wm8753_probe(struct snd_soc_codec *codec)
struct
wm8753_priv
*
wm8753
=
snd_soc_codec_get_drvdata
(
codec
);
int
ret
=
0
,
reg
;
codec
->
bias_level
=
SND_SOC_BIAS_OFF
;
INIT_DELAYED_WORK
(
&
codec
->
delayed_work
,
wm8753_work
);
ret
=
snd_soc_codec_set_cache_io
(
codec
,
7
,
9
,
wm8753
->
control_type
);
...
...
@@ -1617,7 +1616,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8753 = {
.
suspend
=
wm8753_suspend
,
.
resume
=
wm8753_resume
,
.
set_bias_level
=
wm8753_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8753_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8753_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8753_reg
,
};
...
...
sound/soc/codecs/wm8776.c
浏览文件 @
611ad378
...
...
@@ -448,7 +448,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8776 = {
.
suspend
=
wm8776_suspend
,
.
resume
=
wm8776_resume
,
.
set_bias_level
=
wm8776_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8776_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8776_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8776_reg
,
};
...
...
sound/soc/codecs/wm8900.c
浏览文件 @
611ad378
...
...
@@ -1256,7 +1256,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8900 = {
.
resume
=
wm8900_resume
,
.
set_bias_level
=
wm8900_set_bias_level
,
.
volatile_register
=
wm8900_volatile_register
,
.
reg_cache_size
=
sizeof
(
wm8900_reg_defaults
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8900_reg_defaults
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8900_reg_defaults
,
};
...
...
sound/soc/codecs/wm8940.c
浏览文件 @
611ad378
...
...
@@ -750,7 +750,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8940 = {
.
suspend
=
wm8940_suspend
,
.
resume
=
wm8940_resume
,
.
set_bias_level
=
wm8940_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8940_reg_defaults
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8940_reg_defaults
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8940_reg_defaults
,
};
...
...
sound/soc/codecs/wm8961.c
浏览文件 @
611ad378
...
...
@@ -1075,7 +1075,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8961 = {
.
suspend
=
wm8961_suspend
,
.
resume
=
wm8961_resume
,
.
set_bias_level
=
wm8961_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8961_reg_defaults
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8961_reg_defaults
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8961_reg_defaults
,
.
volatile_register
=
wm8961_volatile_register
,
...
...
sound/soc/codecs/wm8962.c
浏览文件 @
611ad378
...
...
@@ -1780,7 +1780,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8962 = {
.
remove
=
wm8962_remove
,
.
resume
=
wm8962_resume
,
.
set_bias_level
=
wm8962_set_bias_level
,
.
reg_cache_size
=
WM8962_MAX_REGISTER
,
.
reg_cache_size
=
WM8962_MAX_REGISTER
+
1
,
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8962_reg
,
.
volatile_register
=
wm8962_volatile_register
,
...
...
sound/soc/codecs/wm8985.c
0 → 100644
浏览文件 @
611ad378
此差异已折叠。
点击以展开。
sound/soc/codecs/wm8985.h
0 → 100644
浏览文件 @
611ad378
此差异已折叠。
点击以展开。
sound/soc/codecs/wm8988.c
浏览文件 @
611ad378
...
...
@@ -809,7 +809,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8988 = {
.
suspend
=
wm8988_suspend
,
.
resume
=
wm8988_resume
,
.
set_bias_level
=
wm8988_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8988_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8988_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8988_reg
,
};
...
...
sound/soc/codecs/wm8990.c
浏览文件 @
611ad378
...
...
@@ -1354,7 +1354,6 @@ static int wm8990_probe(struct snd_soc_codec *codec)
wm8990_reset
(
codec
);
/* charge output caps */
codec
->
bias_level
=
SND_SOC_BIAS_OFF
;
wm8990_set_bias_level
(
codec
,
SND_SOC_BIAS_STANDBY
);
reg
=
snd_soc_read
(
codec
,
WM8990_AUDIO_INTERFACE_4
);
...
...
sound/soc/codecs/wm8993.c
浏览文件 @
611ad378
...
...
@@ -1586,7 +1586,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8993 = {
.
suspend
=
wm8993_suspend
,
.
resume
=
wm8993_resume
,
.
set_bias_level
=
wm8993_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm8993_reg_defaults
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm8993_reg_defaults
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm8993_reg_defaults
,
.
volatile_register
=
wm8993_volatile
,
...
...
sound/soc/codecs/wm9081.c
浏览文件 @
611ad378
...
...
@@ -1317,7 +1317,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm9081 = {
.
suspend
=
wm9081_suspend
,
.
resume
=
wm9081_resume
,
.
set_bias_level
=
wm9081_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm9081_reg_defaults
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm9081_reg_defaults
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_default
=
wm9081_reg_defaults
,
.
volatile_register
=
wm9081_volatile_register
,
...
...
sound/soc/codecs/wm9705.c
浏览文件 @
611ad378
...
...
@@ -385,7 +385,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm9705 = {
.
resume
=
wm9705_soc_resume
,
.
read
=
ac97_read
,
.
write
=
ac97_write
,
.
reg_cache_size
=
sizeof
(
wm9705_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm9705_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_step
=
2
,
.
reg_cache_default
=
wm9705_reg
,
...
...
sound/soc/codecs/wm9712.c
浏览文件 @
611ad378
...
...
@@ -674,7 +674,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm9712 = {
.
read
=
ac97_read
,
.
write
=
ac97_write
,
.
set_bias_level
=
wm9712_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm9712_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm9712_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_step
=
2
,
.
reg_cache_default
=
wm9712_reg
,
...
...
sound/soc/codecs/wm9713.c
浏览文件 @
611ad378
...
...
@@ -1257,7 +1257,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm9713 = {
.
read
=
ac97_read
,
.
write
=
ac97_write
,
.
set_bias_level
=
wm9713_set_bias_level
,
.
reg_cache_size
=
sizeof
(
wm9713_reg
),
.
reg_cache_size
=
ARRAY_SIZE
(
wm9713_reg
),
.
reg_word_size
=
sizeof
(
u16
),
.
reg_cache_step
=
2
,
.
reg_cache_default
=
wm9713_reg
,
...
...
sound/soc/kirkwood/kirkwood-dma.c
浏览文件 @
611ad378
...
...
@@ -2,6 +2,7 @@
* kirkwood-dma.c
*
* (c) 2010 Arnaud Patard <apatard@mandriva.com>
* (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
...
...
@@ -397,7 +398,7 @@ static void __exit kirkwood_pcm_exit(void)
}
module_exit
(
kirkwood_pcm_exit
);
MODULE_AUTHOR
(
"Arnaud Patard <a
patard@mandriva.com
>"
);
MODULE_AUTHOR
(
"Arnaud Patard <a
rnaud.patard@rtp-net.org
>"
);
MODULE_DESCRIPTION
(
"Marvell Kirkwood Audio DMA module"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:kirkwood-pcm-audio"
);
sound/soc/kirkwood/kirkwood-i2s.c
浏览文件 @
611ad378
...
...
@@ -2,6 +2,7 @@
* kirkwood-i2s.c
*
* (c) 2010 Arnaud Patard <apatard@mandriva.com>
* (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
...
...
@@ -495,7 +496,7 @@ static void __exit kirkwood_i2s_exit(void)
module_exit
(
kirkwood_i2s_exit
);
/* Module information */
MODULE_AUTHOR
(
"Arnaud Patard, <a
patard@mandriva.com
>"
);
MODULE_AUTHOR
(
"Arnaud Patard, <a
rnaud.patard@rtp-net.org
>"
);
MODULE_DESCRIPTION
(
"Kirkwood I2S SoC Interface"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:kirkwood-i2s"
);
sound/soc/kirkwood/kirkwood-openrd.c
浏览文件 @
611ad378
...
...
@@ -2,6 +2,7 @@
* kirkwood-openrd.c
*
* (c) 2010 Arnaud Patard <apatard@mandriva.com>
* (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
...
...
@@ -113,7 +114,7 @@ module_init(openrd_client_init);
module_exit
(
openrd_client_exit
);
/* Module information */
MODULE_AUTHOR
(
"Arnaud Patard <a
patard@mandriva.com
>"
);
MODULE_AUTHOR
(
"Arnaud Patard <a
rnaud.patard@rtp-net.org
>"
);
MODULE_DESCRIPTION
(
"ALSA SoC OpenRD Client"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:soc-audio"
);
sound/soc/s3c24xx/s3c-pcm.c
浏览文件 @
611ad378
...
...
@@ -78,7 +78,7 @@ static void s3c_pcm_snd_txctrl(struct s3c_pcm_info *pcm, int on)
ctl
|=
S3C_PCM_CTL_TXDMA_EN
;
ctl
|=
S3C_PCM_CTL_TXFIFO_EN
;
ctl
|=
S3C_PCM_CTL_ENABLE
;
ctl
|=
(
0x
20
<<
S3C_PCM_CTL_TXDIPSTICK_SHIFT
);
ctl
|=
(
0x
4
<<
S3C_PCM_CTL_TXDIPSTICK_SHIFT
);
clkctl
|=
S3C_PCM_CLKCTL_SERCLK_EN
;
}
else
{
ctl
&=
~
S3C_PCM_CTL_TXDMA_EN
;
...
...
@@ -102,11 +102,14 @@ static void s3c_pcm_snd_rxctrl(struct s3c_pcm_info *pcm, int on)
ctl
=
readl
(
regs
+
S3C_PCM_CTL
);
clkctl
=
readl
(
regs
+
S3C_PCM_CLKCTL
);
ctl
&=
~
(
S3C_PCM_CTL_RXDIPSTICK_MASK
<<
S3C_PCM_CTL_RXDIPSTICK_SHIFT
);
if
(
on
)
{
ctl
|=
S3C_PCM_CTL_RXDMA_EN
;
ctl
|=
S3C_PCM_CTL_RXFIFO_EN
;
ctl
|=
S3C_PCM_CTL_ENABLE
;
ctl
|=
(
0x20
<<
S3C_PCM_CTL_RXDIPSTICK_SHIFT
);
clkctl
|=
S3C_PCM_CLKCTL_SERCLK_EN
;
}
else
{
ctl
&=
~
S3C_PCM_CTL_RXDMA_EN
;
...
...
@@ -361,8 +364,6 @@ static struct snd_soc_dai_ops s3c_pcm_dai_ops = {
#define S3C_PCM_RATES SNDRV_PCM_RATE_8000_96000
#define S3C_PCM_DAI_DECLARE \
{ \
.name = "samsung-dai", \
.symmetric_rates = 1, \
.ops = &s3c_pcm_dai_ops, \
.playback = { \
...
...
@@ -376,12 +377,17 @@ static struct snd_soc_dai_ops s3c_pcm_dai_ops = {
.channels_max = 2, \
.rates = S3C_PCM_RATES, \
.formats = SNDRV_PCM_FMTBIT_S16_LE, \
}, \
}
}
struct
snd_soc_dai_driver
s3c_pcm_dai
[]
=
{
S3C_PCM_DAI_DECLARE
,
S3C_PCM_DAI_DECLARE
,
[
0
]
=
{
.
name
=
"samsung-pcm.0"
,
S3C_PCM_DAI_DECLARE
,
},
[
1
]
=
{
.
name
=
"samsung-pcm.1"
,
S3C_PCM_DAI_DECLARE
,
},
};
EXPORT_SYMBOL_GPL
(
s3c_pcm_dai
);
...
...
@@ -465,7 +471,7 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
}
clk_enable
(
pcm
->
pclk
);
ret
=
snd_soc_register_dai
(
&
pdev
->
dev
,
s3c_pcm_dai
);
ret
=
snd_soc_register_dai
(
&
pdev
->
dev
,
&
s3c_pcm_dai
[
pdev
->
id
]
);
if
(
ret
!=
0
)
{
dev_err
(
&
pdev
->
dev
,
"failed to get pcm_clock
\n
"
);
goto
err5
;
...
...
@@ -522,7 +528,7 @@ static struct platform_driver s3c_pcm_driver = {
.
probe
=
s3c_pcm_dev_probe
,
.
remove
=
s3c_pcm_dev_remove
,
.
driver
=
{
.
name
=
"samsung-pcm
-audio
"
,
.
name
=
"samsung-pcm"
,
.
owner
=
THIS_MODULE
,
},
};
...
...
@@ -543,4 +549,4 @@ module_exit(s3c_pcm_exit);
MODULE_AUTHOR
(
"Jaswinder Singh, <jassi.brar@samsung.com>"
);
MODULE_DESCRIPTION
(
"S3C PCM Controller Driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:samsung-pcm
-audio
"
);
MODULE_ALIAS
(
"platform:samsung-pcm"
);
sound/soc/s3c24xx/s3c-pcm.h
浏览文件 @
611ad378
...
...
@@ -22,7 +22,8 @@
/* PCM_CTL Bit-Fields */
#define S3C_PCM_CTL_TXDIPSTICK_MASK (0x3f)
#define S3C_PCM_CTL_TXDIPSTICK_SHIFT (13)
#define S3C_PCM_CTL_RXDIPSTICK_MSK (0x3f<<7)
#define S3C_PCM_CTL_RXDIPSTICK_MASK (0x3f)
#define S3C_PCM_CTL_RXDIPSTICK_SHIFT (7)
#define S3C_PCM_CTL_TXDMA_EN (0x1<<6)
#define S3C_PCM_CTL_RXDMA_EN (0x1<<5)
#define S3C_PCM_CTL_TXMSB_AFTER_FSYNC (0x1<<4)
...
...
sound/soc/s3c24xx/smdk2443_wm9710.c
浏览文件 @
611ad378
...
...
@@ -28,7 +28,7 @@ static struct snd_soc_dai_link smdk2443_dai[] = {
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"s3c-ac97
-dai
"
,
.
cpu_dai_name
=
"s3c-ac97"
,
.
codec_dai_name
=
"ac97-hifi"
,
.
codec_name
=
"ac97-codec"
,
.
platform_name
=
"s3c24xx-pcm-audio"
,
...
...
sound/soc/s3c24xx/smdk64xx_wm8580.c
浏览文件 @
611ad378
...
...
@@ -242,7 +242,7 @@ static struct snd_soc_dai_link smdk64xx_dai[] = {
};
static
struct
snd_soc_card
smdk64xx
=
{
.
name
=
"
smdk64xx
"
,
.
name
=
"
SMDK64xx 5.1
"
,
.
dai_link
=
smdk64xx_dai
,
.
num_links
=
ARRAY_SIZE
(
smdk64xx_dai
),
};
...
...
sound/soc/s3c24xx/smdk_wm9713.c
浏览文件 @
611ad378
...
...
@@ -47,7 +47,7 @@ static struct snd_soc_dai_link smdk_dai = {
.
name
=
"AC97"
,
.
stream_name
=
"AC97 PCM"
,
.
platform_name
=
"s3c24xx-pcm-audio"
,
.
cpu_dai_name
=
"s3c-ac97
-dai
"
,
.
cpu_dai_name
=
"s3c-ac97"
,
.
codec_dai_name
=
"wm9713-hifi"
,
.
codec_name
=
"wm9713-codec"
,
};
...
...
sound/soc/sh/Kconfig
浏览文件 @
611ad378
...
...
@@ -47,7 +47,7 @@ config SND_SH7760_AC97
AC97 unit of the SH7760.
config SND_FSI_AK4642
bool
"FSI-AK4642 sound support"
tristate
"FSI-AK4642 sound support"
depends on SND_SOC_SH4_FSI && I2C_SH_MOBILE
select SND_SOC_AK4642
help
...
...
@@ -55,7 +55,7 @@ config SND_FSI_AK4642
FSI - AK4642 unit
config SND_FSI_DA7210
bool
"FSI-DA7210 sound support"
tristate
"FSI-DA7210 sound support"
depends on SND_SOC_SH4_FSI && I2C_SH_MOBILE
select SND_SOC_DA7210
help
...
...
@@ -63,7 +63,7 @@ config SND_FSI_DA7210
FSI - DA7210 unit
config SND_FSI_HDMI
bool
"FSI-HDMI sound support"
tristate
"FSI-HDMI sound support"
depends on SND_SOC_SH4_FSI && FB_SH_MOBILE_HDMI
help
This option enables generic sound support for the
...
...
sound/soc/sh/fsi-ak4642.c
浏览文件 @
611ad378
...
...
@@ -32,7 +32,7 @@ static struct snd_soc_dai_link fsi_dai_link = {
.
cpu_dai_name
=
"fsia-dai"
,
/* fsi A */
.
codec_dai_name
=
"ak4642-hifi"
,
#ifdef CONFIG_MACH_AP4EVB
.
platform_name
=
"sh_fsi2
.0
"
,
.
platform_name
=
"sh_fsi2"
,
.
codec_name
=
"ak4642-codec.0-0013"
,
#else
.
platform_name
=
"sh_fsi.0"
,
...
...
@@ -43,7 +43,7 @@ static struct snd_soc_dai_link fsi_dai_link = {
};
static
struct
snd_soc_card
fsi_soc_card
=
{
.
name
=
"FSI"
,
.
name
=
"FSI
(AK4642)
"
,
.
dai_link
=
&
fsi_dai_link
,
.
num_links
=
1
,
};
...
...
sound/soc/sh/fsi-da7210.c
浏览文件 @
611ad378
...
...
@@ -33,7 +33,7 @@ static struct snd_soc_dai_link fsi_da7210_dai = {
};
static
struct
snd_soc_card
fsi_soc_card
=
{
.
name
=
"FSI"
,
.
name
=
"FSI
(DA7210)
"
,
.
dai_link
=
&
fsi_da7210_dai
,
.
num_links
=
1
,
};
...
...
sound/soc/sh/fsi-hdmi.c
浏览文件 @
611ad378
...
...
@@ -11,7 +11,6 @@
#include <linux/platform_device.h>
#include <sound/sh_fsi.h>
#include <video/sh_mobile_hdmi.h>
static
struct
snd_soc_dai_link
fsi_dai_link
=
{
.
name
=
"HDMI"
,
...
...
@@ -23,7 +22,7 @@ static struct snd_soc_dai_link fsi_dai_link = {
};
static
struct
snd_soc_card
fsi_soc_card
=
{
.
name
=
"FSI"
,
.
name
=
"FSI
(SH MOBILE HDMI)
"
,
.
dai_link
=
&
fsi_dai_link
,
.
num_links
=
1
,
};
...
...
sound/soc/sh/fsi.c
浏览文件 @
611ad378
...
...
@@ -101,13 +101,10 @@
#define FSI_FMTS (SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S16_LE)
/************************************************************************
struct
/*
* struct
*/
************************************************************************/
struct
fsi_priv
{
void
__iomem
*
base
;
struct
snd_pcm_substream
*
substream
;
...
...
@@ -142,13 +139,10 @@ struct fsi_master {
spinlock_t
lock
;
};
/************************************************************************
basic read write function
/*
* basic read write function
*/
************************************************************************/
static
void
__fsi_reg_write
(
u32
reg
,
u32
data
)
{
/* valid data area is 24bit */
...
...
@@ -251,13 +245,10 @@ static void fsi_master_mask_set(struct fsi_master *master,
spin_unlock_irqrestore
(
&
master
->
lock
,
flags
);
}
/************************************************************************
basic function
/*
* basic function
*/
************************************************************************/
static
struct
fsi_master
*
fsi_get_master
(
struct
fsi_priv
*
fsi
)
{
return
fsi
->
master
;
...
...
@@ -357,13 +348,63 @@ static int fsi_get_fifo_residue(struct fsi_priv *fsi, int is_play)
return
residue
;
}
/************************************************************************
/*
* dma function
*/
static
u8
*
fsi_dma_get_area
(
struct
fsi_priv
*
fsi
)
{
return
fsi
->
substream
->
runtime
->
dma_area
+
fsi
->
byte_offset
;
}
static
void
fsi_dma_soft_push16
(
struct
fsi_priv
*
fsi
,
int
size
)
{
u16
*
start
;
int
i
;
start
=
(
u16
*
)
fsi_dma_get_area
(
fsi
);
for
(
i
=
0
;
i
<
size
;
i
++
)
fsi_reg_write
(
fsi
,
DODT
,
((
u32
)
*
(
start
+
i
)
<<
8
));
}
static
void
fsi_dma_soft_pop16
(
struct
fsi_priv
*
fsi
,
int
size
)
{
u16
*
start
;
int
i
;
start
=
(
u16
*
)
fsi_dma_get_area
(
fsi
);
for
(
i
=
0
;
i
<
size
;
i
++
)
*
(
start
+
i
)
=
(
u16
)(
fsi_reg_read
(
fsi
,
DIDT
)
>>
8
);
}
static
void
fsi_dma_soft_push32
(
struct
fsi_priv
*
fsi
,
int
size
)
{
u32
*
start
;
int
i
;
start
=
(
u32
*
)
fsi_dma_get_area
(
fsi
);
for
(
i
=
0
;
i
<
size
;
i
++
)
fsi_reg_write
(
fsi
,
DODT
,
*
(
start
+
i
));
}
static
void
fsi_dma_soft_pop32
(
struct
fsi_priv
*
fsi
,
int
size
)
{
u32
*
start
;
int
i
;
start
=
(
u32
*
)
fsi_dma_get_area
(
fsi
);
irq function
for
(
i
=
0
;
i
<
size
;
i
++
)
*
(
start
+
i
)
=
fsi_reg_read
(
fsi
,
DIDT
);
}
/*
* irq function
*/
************************************************************************/
static
void
fsi_irq_enable
(
struct
fsi_priv
*
fsi
,
int
is_play
)
{
u32
data
=
fsi_port_ab_io_bit
(
fsi
,
is_play
);
...
...
@@ -404,13 +445,11 @@ static void fsi_irq_clear_status(struct fsi_priv *fsi)
fsi_master_mask_set
(
master
,
master
->
core
->
int_st
,
data
,
0
);
}
/************************************************************************
SPDIF master clock function
These functions are used later FSI2
************************************************************************/
/*
* SPDIF master clock function
*
* These functions are used later FSI2
*/
static
void
fsi_spdif_clk_ctrl
(
struct
fsi_priv
*
fsi
,
int
enable
)
{
struct
fsi_master
*
master
=
fsi_get_master
(
fsi
);
...
...
@@ -427,13 +466,10 @@ static void fsi_spdif_clk_ctrl(struct fsi_priv *fsi, int enable)
fsi_master_mask_set
(
master
,
fsi
->
mst_ctrl
,
val
,
0
);
}
/************************************************************************
ctrl function
/*
* ctrl function
*/
************************************************************************/
static
void
fsi_clk_ctrl
(
struct
fsi_priv
*
fsi
,
int
enable
)
{
u32
val
=
fsi_is_port_a
(
fsi
)
?
(
1
<<
0
)
:
(
1
<<
4
);
...
...
@@ -512,8 +548,7 @@ static int fsi_data_push(struct fsi_priv *fsi, int startup)
int
send
;
int
fifo_free
;
int
width
;
u8
*
start
;
int
i
,
over_period
;
int
over_period
;
if
(
!
fsi
||
!
fsi
->
substream
||
...
...
@@ -550,18 +585,12 @@ static int fsi_data_push(struct fsi_priv *fsi, int startup)
if
(
fifo_free
<
send
)
send
=
fifo_free
;
start
=
runtime
->
dma_area
;
start
+=
fsi
->
byte_offset
;
switch
(
width
)
{
case
2
:
for
(
i
=
0
;
i
<
send
;
i
++
)
fsi_reg_write
(
fsi
,
DODT
,
((
u32
)
*
((
u16
*
)
start
+
i
)
<<
8
));
fsi_dma_soft_push16
(
fsi
,
send
);
break
;
case
4
:
for
(
i
=
0
;
i
<
send
;
i
++
)
fsi_reg_write
(
fsi
,
DODT
,
*
((
u32
*
)
start
+
i
));
fsi_dma_soft_push32
(
fsi
,
send
);
break
;
default:
return
-
EINVAL
;
...
...
@@ -596,8 +625,7 @@ static int fsi_data_pop(struct fsi_priv *fsi, int startup)
int
free
;
int
fifo_fill
;
int
width
;
u8
*
start
;
int
i
,
over_period
;
int
over_period
;
if
(
!
fsi
||
!
fsi
->
substream
||
...
...
@@ -633,18 +661,12 @@ static int fsi_data_pop(struct fsi_priv *fsi, int startup)
if
(
free
<
fifo_fill
)
fifo_fill
=
free
;
start
=
runtime
->
dma_area
;
start
+=
fsi
->
byte_offset
;
switch
(
width
)
{
case
2
:
for
(
i
=
0
;
i
<
fifo_fill
;
i
++
)
*
((
u16
*
)
start
+
i
)
=
(
u16
)(
fsi_reg_read
(
fsi
,
DIDT
)
>>
8
);
fsi_dma_soft_pop16
(
fsi
,
fifo_fill
);
break
;
case
4
:
for
(
i
=
0
;
i
<
fifo_fill
;
i
++
)
*
((
u32
*
)
start
+
i
)
=
fsi_reg_read
(
fsi
,
DIDT
);
fsi_dma_soft_pop32
(
fsi
,
fifo_fill
);
break
;
default:
return
-
EINVAL
;
...
...
@@ -694,13 +716,10 @@ static irqreturn_t fsi_interrupt(int irq, void *data)
return
IRQ_HANDLED
;
}
/************************************************************************
dai ops
/*
* dai ops
*/
************************************************************************/
static
int
fsi_dai_startup
(
struct
snd_pcm_substream
*
substream
,
struct
snd_soc_dai
*
dai
)
{
...
...
@@ -919,13 +938,10 @@ static struct snd_soc_dai_ops fsi_dai_ops = {
.
hw_params
=
fsi_dai_hw_params
,
};
/************************************************************************
pcm ops
/*
* pcm ops
*/
************************************************************************/
static
struct
snd_pcm_hardware
fsi_pcm_hardware
=
{
.
info
=
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_MMAP
|
...
...
@@ -991,13 +1007,10 @@ static struct snd_pcm_ops fsi_pcm_ops = {
.
pointer
=
fsi_pointer
,
};
/************************************************************************
snd_soc_platform
/*
* snd_soc_platform
*/
************************************************************************/
#define PREALLOC_BUFFER (32 * 1024)
#define PREALLOC_BUFFER_MAX (32 * 1024)
...
...
@@ -1021,13 +1034,10 @@ static int fsi_pcm_new(struct snd_card *card,
PREALLOC_BUFFER
,
PREALLOC_BUFFER_MAX
);
}
/************************************************************************
alsa struct
/*
* alsa struct
*/
************************************************************************/
static
struct
snd_soc_dai_driver
fsi_soc_dai
[]
=
{
{
.
name
=
"fsia-dai"
,
...
...
@@ -1069,13 +1079,10 @@ static struct snd_soc_platform_driver fsi_soc_platform = {
.
pcm_free
=
fsi_pcm_free
,
};
/************************************************************************
platform function
/*
* platform function
*/
************************************************************************/
static
int
fsi_probe
(
struct
platform_device
*
pdev
)
{
struct
fsi_master
*
master
;
...
...
@@ -1219,6 +1226,7 @@ static struct platform_device_id fsi_id_table[] = {
{
"sh_fsi"
,
(
kernel_ulong_t
)
&
fsi1_core
},
{
"sh_fsi2"
,
(
kernel_ulong_t
)
&
fsi2_core
},
};
MODULE_DEVICE_TABLE
(
platform
,
fsi_id_table
);
static
struct
platform_driver
fsi_driver
=
{
.
driver
=
{
...
...
@@ -1239,6 +1247,7 @@ static void __exit fsi_mobile_exit(void)
{
platform_driver_unregister
(
&
fsi_driver
);
}
module_init
(
fsi_mobile_init
);
module_exit
(
fsi_mobile_exit
);
...
...
sound/soc/sh/migor.c
浏览文件 @
611ad378
...
...
@@ -12,6 +12,7 @@
#include <linux/firmware.h>
#include <linux/module.h>
#include <asm/clkdev.h>
#include <asm/clock.h>
#include <cpu/sh7722.h>
...
...
@@ -40,12 +41,12 @@ static struct clk_ops siumckb_clk_ops = {
};
static
struct
clk
siumckb_clk
=
{
.
name
=
"siumckb_clk"
,
.
id
=
-
1
,
.
ops
=
&
siumckb_clk_ops
,
.
rate
=
0
,
/* initialised at run-time */
};
static
struct
clk_lookup
*
siumckb_lookup
;
static
int
migor_hw_params
(
struct
snd_pcm_substream
*
substream
,
struct
snd_pcm_hw_params
*
params
)
{
...
...
@@ -177,6 +178,13 @@ static int __init migor_init(void)
if
(
ret
<
0
)
return
ret
;
siumckb_lookup
=
clkdev_alloc
(
&
siumckb_clk
,
"siumckb_clk"
,
NULL
);
if
(
!
siumckb_lookup
)
{
ret
=
-
ENOMEM
;
goto
eclkdevalloc
;
}
clkdev_add
(
siumckb_lookup
);
/* Port number used on this machine: port B */
migor_snd_device
=
platform_device_alloc
(
"soc-audio"
,
1
);
if
(
!
migor_snd_device
)
{
...
...
@@ -195,12 +203,15 @@ static int __init migor_init(void)
epdevadd:
platform_device_put
(
migor_snd_device
);
epdevalloc:
clkdev_drop
(
siumckb_lookup
);
eclkdevalloc:
clk_unregister
(
&
siumckb_clk
);
return
ret
;
}
static
void
__exit
migor_exit
(
void
)
{
clkdev_drop
(
siumckb_lookup
);
clk_unregister
(
&
siumckb_clk
);
platform_device_unregister
(
migor_snd_device
);
}
...
...
sound/soc/sh/siu.h
浏览文件 @
611ad378
...
...
@@ -98,7 +98,9 @@ enum {
SIU_CLKB_EXT
};
struct
device
;
struct
siu_info
{
struct
device
*
dev
;
int
port_id
;
u32
__iomem
*
pram
;
u32
__iomem
*
xram
;
...
...
@@ -182,7 +184,6 @@ static inline u32 siu_read32(u32 __iomem *addr)
#define SIU_BRRB (0x10c / sizeof(u32))
extern
struct
snd_soc_platform_driver
siu_platform
;
extern
struct
snd_soc_dai_driver
siu_i2s_dai
;
extern
struct
siu_info
*
siu_i2s_data
;
int
siu_init_port
(
int
port
,
struct
siu_port
**
port_info
,
struct
snd_card
*
card
);
...
...
sound/soc/sh/siu_dai.c
浏览文件 @
611ad378
...
...
@@ -71,8 +71,7 @@ struct port_flag {
struct
format_flag
capture
;
};
struct
siu_info
*
siu_i2s_data
=
NULL
;
EXPORT_SYMBOL_GPL
(
siu_i2s_data
);
struct
siu_info
*
siu_i2s_data
;
static
struct
port_flag
siu_flags
[
SIU_PORT_NUM
]
=
{
[
SIU_PORT_A
]
=
{
...
...
@@ -113,7 +112,7 @@ static void siu_dai_start(struct siu_port *port_info)
dev_dbg
(
port_info
->
pcm
->
card
->
dev
,
"%s
\n
"
,
__func__
);
/* Turn on SIU clock */
pm_runtime_get_sync
(
port_info
->
pcm
->
card
->
dev
);
pm_runtime_get_sync
(
info
->
dev
);
/* Issue software reset to siu */
siu_write32
(
base
+
SIU_SRCTL
,
0
);
...
...
@@ -160,7 +159,7 @@ static void siu_dai_stop(struct siu_port *port_info)
siu_write32
(
base
+
SIU_SRCTL
,
0
);
/* Turn off SIU clock */
pm_runtime_put_sync
(
port_info
->
pcm
->
card
->
dev
);
pm_runtime_put_sync
(
info
->
dev
);
}
static
void
siu_dai_spbAselect
(
struct
siu_port
*
port_info
)
...
...
@@ -675,20 +674,36 @@ static int siu_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
}
siu_clk
=
clk_get
(
dai
->
dev
,
siu_name
);
if
(
IS_ERR
(
siu_clk
))
if
(
IS_ERR
(
siu_clk
))
{
dev_err
(
dai
->
dev
,
"%s: cannot get a SIU clock: %ld
\n
"
,
__func__
,
PTR_ERR
(
siu_clk
));
return
PTR_ERR
(
siu_clk
);
}
parent_clk
=
clk_get
(
dai
->
dev
,
parent_name
);
if
(
!
IS_ERR
(
parent_clk
))
{
ret
=
clk_set_parent
(
siu_clk
,
parent_clk
);
if
(
!
ret
)
clk_set_rate
(
siu_clk
,
freq
);
clk_put
(
parent_clk
);
if
(
IS_ERR
(
parent_clk
))
{
ret
=
PTR_ERR
(
parent_clk
);
dev_err
(
dai
->
dev
,
"cannot get a SIU clock parent: %d
\n
"
,
ret
);
goto
epclkget
;
}
ret
=
clk_set_parent
(
siu_clk
,
parent_clk
);
if
(
ret
<
0
)
{
dev_err
(
dai
->
dev
,
"cannot reparent the SIU clock: %d
\n
"
,
ret
);
goto
eclksetp
;
}
ret
=
clk_set_rate
(
siu_clk
,
freq
);
if
(
ret
<
0
)
dev_err
(
dai
->
dev
,
"cannot set SIU clock rate: %d
\n
"
,
ret
);
/* TODO: when clkdev gets reference counting we'll move these to siu_dai_shutdown() */
eclksetp:
clk_put
(
parent_clk
);
epclkget:
clk_put
(
siu_clk
);
return
0
;
return
ret
;
}
static
struct
snd_soc_dai_ops
siu_dai_ops
=
{
...
...
@@ -700,7 +715,7 @@ static struct snd_soc_dai_ops siu_dai_ops = {
};
static
struct
snd_soc_dai_driver
siu_i2s_dai
=
{
.
name
=
"s
ui
-i2s-dai"
,
.
name
=
"s
iu
-i2s-dai"
,
.
playback
=
{
.
channels_min
=
2
,
.
channels_max
=
2
,
...
...
@@ -727,6 +742,7 @@ static int __devinit siu_probe(struct platform_device *pdev)
if
(
!
info
)
return
-
ENOMEM
;
siu_i2s_data
=
info
;
info
->
dev
=
&
pdev
->
dev
;
ret
=
request_firmware
(
&
fw_entry
,
"siu_spb.bin"
,
&
pdev
->
dev
);
if
(
ret
)
...
...
@@ -828,6 +844,7 @@ static int __devexit siu_remove(struct platform_device *pdev)
static
struct
platform_driver
siu_driver
=
{
.
driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"siu-pcm-audio"
,
},
.
probe
=
siu_probe
,
...
...
sound/soc/sh/siu_pcm.c
浏览文件 @
611ad378
...
...
@@ -341,7 +341,7 @@ static int siu_pcm_open(struct snd_pcm_substream *ss)
{
/* Playback / Capture */
struct
snd_soc_pcm_runtime
*
rtd
=
ss
->
private_data
;
struct
siu_platform
*
pdata
=
snd_soc_platform_get_drvdata
(
rtd
->
platform
)
;
struct
siu_platform
*
pdata
=
rtd
->
platform
->
dev
->
platform_data
;
struct
siu_info
*
info
=
siu_i2s_data
;
struct
siu_port
*
port_info
=
siu_port_info
(
ss
);
struct
siu_stream
*
siu_stream
;
...
...
sound/soc/soc-core.c
浏览文件 @
611ad378
...
...
@@ -270,6 +270,87 @@ static void soc_cleanup_codec_debugfs(struct snd_soc_codec *codec)
debugfs_remove_recursive
(
codec
->
debugfs_codec_root
);
}
static
ssize_t
codec_list_read_file
(
struct
file
*
file
,
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
char
*
buf
=
kmalloc
(
PAGE_SIZE
,
GFP_KERNEL
);
ssize_t
ret
=
0
;
struct
snd_soc_codec
*
codec
;
if
(
!
buf
)
return
-
ENOMEM
;
list_for_each_entry
(
codec
,
&
codec_list
,
list
)
ret
+=
snprintf
(
buf
+
ret
,
PAGE_SIZE
-
ret
,
"%s
\n
"
,
codec
->
name
);
if
(
ret
>=
0
)
ret
=
simple_read_from_buffer
(
user_buf
,
count
,
ppos
,
buf
,
ret
);
kfree
(
buf
);
return
ret
;
}
static
const
struct
file_operations
codec_list_fops
=
{
.
read
=
codec_list_read_file
,
.
llseek
=
default_llseek
,
/* read accesses f_pos */
};
static
ssize_t
dai_list_read_file
(
struct
file
*
file
,
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
char
*
buf
=
kmalloc
(
PAGE_SIZE
,
GFP_KERNEL
);
ssize_t
ret
=
0
;
struct
snd_soc_dai
*
dai
;
if
(
!
buf
)
return
-
ENOMEM
;
list_for_each_entry
(
dai
,
&
dai_list
,
list
)
ret
+=
snprintf
(
buf
+
ret
,
PAGE_SIZE
-
ret
,
"%s
\n
"
,
dai
->
name
);
if
(
ret
>=
0
)
ret
=
simple_read_from_buffer
(
user_buf
,
count
,
ppos
,
buf
,
ret
);
kfree
(
buf
);
return
ret
;
}
static
const
struct
file_operations
dai_list_fops
=
{
.
read
=
dai_list_read_file
,
.
llseek
=
default_llseek
,
/* read accesses f_pos */
};
static
ssize_t
platform_list_read_file
(
struct
file
*
file
,
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
char
*
buf
=
kmalloc
(
PAGE_SIZE
,
GFP_KERNEL
);
ssize_t
ret
=
0
;
struct
snd_soc_platform
*
platform
;
if
(
!
buf
)
return
-
ENOMEM
;
list_for_each_entry
(
platform
,
&
platform_list
,
list
)
ret
+=
snprintf
(
buf
+
ret
,
PAGE_SIZE
-
ret
,
"%s
\n
"
,
platform
->
name
);
if
(
ret
>=
0
)
ret
=
simple_read_from_buffer
(
user_buf
,
count
,
ppos
,
buf
,
ret
);
kfree
(
buf
);
return
ret
;
}
static
const
struct
file_operations
platform_list_fops
=
{
.
read
=
platform_list_read_file
,
.
llseek
=
default_llseek
,
/* read accesses f_pos */
};
#else
static
inline
void
soc_init_codec_debugfs
(
struct
snd_soc_codec
*
codec
)
...
...
@@ -3191,6 +3272,18 @@ static int __init snd_soc_init(void)
"ASoC: Failed to create debugfs directory
\n
"
);
debugfs_root
=
NULL
;
}
if
(
!
debugfs_create_file
(
"codecs"
,
0444
,
debugfs_root
,
NULL
,
&
codec_list_fops
))
pr_warn
(
"ASoC: Failed to create CODEC list debugfs file
\n
"
);
if
(
!
debugfs_create_file
(
"dais"
,
0444
,
debugfs_root
,
NULL
,
&
dai_list_fops
))
pr_warn
(
"ASoC: Failed to create DAI list debugfs file
\n
"
);
if
(
!
debugfs_create_file
(
"platforms"
,
0444
,
debugfs_root
,
NULL
,
&
platform_list_fops
))
pr_warn
(
"ASoC: Failed to create platform list debugfs file
\n
"
);
#endif
return
platform_driver_register
(
&
soc_driver
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录