Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
ce8aceae
cloud-kernel
项目概览
openanolis
/
cloud-kernel
接近 2 年 前同步成功
通知
170
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ce8aceae
编写于
12月 22, 2010
作者:
K
Kukjin Kim
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'next-samsung-asoc' into next-samsung-asoc2
上级
90a8a73c
460ed699
变更
18
隐藏空白更改
内联
并排
Showing
18 changed file
with
801 addition
and
103 deletion
+801
-103
arch/arm/mach-s3c64xx/clock.c
arch/arm/mach-s3c64xx/clock.c
+1
-1
arch/arm/mach-s3c64xx/dev-audio.c
arch/arm/mach-s3c64xx/dev-audio.c
+34
-26
arch/arm/mach-s5p6442/dev-audio.c
arch/arm/mach-s5p6442/dev-audio.c
+37
-7
arch/arm/mach-s5p64x0/clock-s5p6440.c
arch/arm/mach-s5p64x0/clock-s5p6440.c
+1
-1
arch/arm/mach-s5p64x0/clock-s5p6450.c
arch/arm/mach-s5p64x0/clock-s5p6450.c
+1
-1
arch/arm/mach-s5p64x0/dev-audio.c
arch/arm/mach-s5p64x0/dev-audio.c
+21
-34
arch/arm/mach-s5pc100/dev-audio.c
arch/arm/mach-s5pc100/dev-audio.c
+41
-13
arch/arm/mach-s5pv210/clock.c
arch/arm/mach-s5pv210/clock.c
+5
-5
arch/arm/mach-s5pv210/dev-audio.c
arch/arm/mach-s5pv210/dev-audio.c
+42
-14
arch/arm/mach-s5pv310/Kconfig
arch/arm/mach-s5pv310/Kconfig
+1
-0
arch/arm/mach-s5pv310/Makefile
arch/arm/mach-s5pv310/Makefile
+2
-1
arch/arm/mach-s5pv310/dev-audio.c
arch/arm/mach-s5pv310/dev-audio.c
+364
-0
arch/arm/mach-s5pv310/dma.c
arch/arm/mach-s5pv310/dma.c
+168
-0
arch/arm/mach-s5pv310/include/mach/dma.h
arch/arm/mach-s5pv310/include/mach/dma.h
+26
-0
arch/arm/mach-s5pv310/include/mach/irqs.h
arch/arm/mach-s5pv310/include/mach/irqs.h
+3
-0
arch/arm/mach-s5pv310/include/mach/map.h
arch/arm/mach-s5pv310/include/mach/map.h
+21
-0
arch/arm/plat-samsung/include/plat/audio.h
arch/arm/plat-samsung/include/plat/audio.h
+24
-0
arch/arm/plat-samsung/include/plat/devs.h
arch/arm/plat-samsung/include/plat/devs.h
+9
-0
未找到文件。
arch/arm/mach-s3c64xx/clock.c
浏览文件 @
ce8aceae
...
...
@@ -695,7 +695,7 @@ static struct clksrc_clk clksrcs[] = {
},
{
.
clk
=
{
.
name
=
"audio-bus"
,
.
id
=
-
1
,
/* There's only one IISv4 port */
.
id
=
2
,
.
ctrlbit
=
S3C6410_CLKCON_SCLK_AUDIO2
,
.
enable
=
s3c64xx_sclk_ctrl
,
},
...
...
arch/arm/mach-s3c64xx/dev-audio.c
浏览文件 @
ce8aceae
...
...
@@ -22,7 +22,12 @@
#include <plat/audio.h>
#include <plat/gpio-cfg.h>
static
int
s3c64xx_i2sv3_cfg_gpio
(
struct
platform_device
*
pdev
)
static
const
char
*
rclksrc
[]
=
{
[
0
]
=
"iis"
,
[
1
]
=
"audio-bus"
,
};
static
int
s3c64xx_i2s_cfg_gpio
(
struct
platform_device
*
pdev
)
{
unsigned
int
base
;
...
...
@@ -33,6 +38,12 @@ static int s3c64xx_i2sv3_cfg_gpio(struct platform_device *pdev)
case
1
:
base
=
S3C64XX_GPE
(
0
);
break
;
case
2
:
s3c_gpio_cfgpin
(
S3C64XX_GPC
(
4
),
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin
(
S3C64XX_GPC
(
5
),
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin
(
S3C64XX_GPC
(
7
),
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin_range
(
S3C64XX_GPH
(
6
),
4
,
S3C_GPIO_SFN
(
5
));
return
0
;
default:
printk
(
KERN_DEBUG
"Invalid I2S Controller number: %d
\n
"
,
pdev
->
id
);
...
...
@@ -44,16 +55,6 @@ static int s3c64xx_i2sv3_cfg_gpio(struct platform_device *pdev)
return
0
;
}
static
int
s3c64xx_i2sv4_cfg_gpio
(
struct
platform_device
*
pdev
)
{
s3c_gpio_cfgpin
(
S3C64XX_GPC
(
4
),
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin
(
S3C64XX_GPC
(
5
),
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin
(
S3C64XX_GPC
(
7
),
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin_range
(
S3C64XX_GPH
(
6
),
4
,
S3C_GPIO_SFN
(
5
));
return
0
;
}
static
struct
resource
s3c64xx_iis0_resource
[]
=
{
[
0
]
=
{
.
start
=
S3C64XX_PA_IIS0
,
...
...
@@ -72,17 +73,22 @@ static struct resource s3c64xx_iis0_resource[] = {
},
};
static
struct
s3c_audio_pdata
s3c_i2s0_pdata
=
{
.
cfg_gpio
=
s3c64xx_i2sv3_cfg_gpio
,
static
struct
s3c_audio_pdata
i2sv3_pdata
=
{
.
cfg_gpio
=
s3c64xx_i2s_cfg_gpio
,
.
type
=
{
.
i2s
=
{
.
src_clk
=
rclksrc
,
},
},
};
struct
platform_device
s3c64xx_device_iis0
=
{
.
name
=
"s
3c64xx-ii
s"
,
.
name
=
"s
amsung-i2
s"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s3c64xx_iis0_resource
),
.
resource
=
s3c64xx_iis0_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s0
_pdata
,
.
platform_data
=
&
i2sv3
_pdata
,
},
};
EXPORT_SYMBOL
(
s3c64xx_device_iis0
);
...
...
@@ -105,17 +111,13 @@ static struct resource s3c64xx_iis1_resource[] = {
},
};
static
struct
s3c_audio_pdata
s3c_i2s1_pdata
=
{
.
cfg_gpio
=
s3c64xx_i2sv3_cfg_gpio
,
};
struct
platform_device
s3c64xx_device_iis1
=
{
.
name
=
"s
3c64xx-ii
s"
,
.
name
=
"s
amsung-i2
s"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s3c64xx_iis1_resource
),
.
resource
=
s3c64xx_iis1_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s1
_pdata
,
.
platform_data
=
&
i2sv3
_pdata
,
},
};
EXPORT_SYMBOL
(
s3c64xx_device_iis1
);
...
...
@@ -138,17 +140,23 @@ static struct resource s3c64xx_iisv4_resource[] = {
},
};
static
struct
s3c_audio_pdata
s3c_i2sv4_pdata
=
{
.
cfg_gpio
=
s3c64xx_i2sv4_cfg_gpio
,
static
struct
s3c_audio_pdata
i2sv4_pdata
=
{
.
cfg_gpio
=
s3c64xx_i2s_cfg_gpio
,
.
type
=
{
.
i2s
=
{
.
quirks
=
QUIRK_PRI_6CHAN
,
.
src_clk
=
rclksrc
,
},
},
};
struct
platform_device
s3c64xx_device_iisv4
=
{
.
name
=
"s3c64xx-iis-v4
"
,
.
id
=
-
1
,
.
name
=
"samsung-i2s
"
,
.
id
=
2
,
.
num_resources
=
ARRAY_SIZE
(
s3c64xx_iisv4_resource
),
.
resource
=
s3c64xx_iisv4_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_
i2sv4_pdata
,
.
platform_data
=
&
i2sv4_pdata
,
},
};
EXPORT_SYMBOL
(
s3c64xx_device_iisv4
);
...
...
arch/arm/mach-s5p6442/dev-audio.c
浏览文件 @
ce8aceae
...
...
@@ -29,7 +29,7 @@ static int s5p6442_cfg_i2s(struct platform_device *pdev)
base
=
S5P6442_GPC1
(
0
);
break
;
case
-
1
:
case
0
:
base
=
S5P6442_GPC0
(
0
);
break
;
...
...
@@ -42,8 +42,19 @@ static int s5p6442_cfg_i2s(struct platform_device *pdev)
return
0
;
}
static
struct
s3c_audio_pdata
s3c_i2s_pdata
=
{
static
const
char
*
rclksrc_v35
[]
=
{
[
0
]
=
"busclk"
,
[
1
]
=
"i2sclk"
,
};
static
struct
s3c_audio_pdata
i2sv35_pdata
=
{
.
cfg_gpio
=
s5p6442_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
quirks
=
QUIRK_SEC_DAI
|
QUIRK_NEED_RSTCLR
,
.
src_clk
=
rclksrc_v35
,
},
},
};
static
struct
resource
s5p6442_iis0_resource
[]
=
{
...
...
@@ -62,15 +73,34 @@ static struct resource s5p6442_iis0_resource[] = {
.
end
=
DMACH_I2S0_RX
,
.
flags
=
IORESOURCE_DMA
,
},
[
3
]
=
{
.
start
=
DMACH_I2S0S_TX
,
.
end
=
DMACH_I2S0S_TX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5p6442_device_iis0
=
{
.
name
=
"s3c64xx-iis-v4
"
,
.
id
=
-
1
,
.
name
=
"samsung-i2s
"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5p6442_iis0_resource
),
.
resource
=
s5p6442_iis0_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s_pdata
,
.
platform_data
=
&
i2sv35_pdata
,
},
};
static
const
char
*
rclksrc_v3
[]
=
{
[
0
]
=
"iis"
,
[
1
]
=
"sclk_audio"
,
};
static
struct
s3c_audio_pdata
i2sv3_pdata
=
{
.
cfg_gpio
=
s5p6442_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
src_clk
=
rclksrc_v3
,
},
},
};
...
...
@@ -93,12 +123,12 @@ static struct resource s5p6442_iis1_resource[] = {
};
struct
platform_device
s5p6442_device_iis1
=
{
.
name
=
"s
3c64xx-ii
s"
,
.
name
=
"s
amsung-i2
s"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s5p6442_iis1_resource
),
.
resource
=
s5p6442_iis1_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s
_pdata
,
.
platform_data
=
&
i2sv3
_pdata
,
},
};
...
...
arch/arm/mach-s5p64x0/clock-s5p6440.c
浏览文件 @
ce8aceae
...
...
@@ -261,7 +261,7 @@ static struct clk init_clocks_disable[] = {
.
enable
=
s5p64x0_pclk_ctrl
,
.
ctrlbit
=
(
1
<<
25
),
},
{
.
name
=
"i
2s_v40
"
,
.
name
=
"i
is
"
,
.
id
=
0
,
.
parent
=
&
clk_pclk_low
.
clk
,
.
enable
=
s5p64x0_pclk_ctrl
,
...
...
arch/arm/mach-s5p64x0/clock-s5p6450.c
浏览文件 @
ce8aceae
...
...
@@ -256,7 +256,7 @@ static struct clk init_clocks_disable[] = {
.
ctrlbit
=
(
1
<<
22
),
},
{
.
name
=
"iis"
,
.
id
=
-
1
,
.
id
=
0
,
.
parent
=
&
clk_pclk_low
.
clk
,
.
enable
=
s5p64x0_pclk_ctrl
,
.
ctrlbit
=
(
1
<<
26
),
...
...
arch/arm/mach-s5p64x0/dev-audio.c
浏览文件 @
ce8aceae
...
...
@@ -19,15 +19,19 @@
#include <mach/dma.h>
#include <mach/irqs.h>
static
int
s5p6440_cfg_i2s
(
struct
platform_device
*
pdev
)
static
const
char
*
rclksrc
[]
=
{
[
0
]
=
"iis"
,
[
1
]
=
"sclk_audio2"
,
};
static
int
s5p64x0_cfg_i2s
(
struct
platform_device
*
pdev
)
{
/* configure GPIO for i2s port */
switch
(
pdev
->
id
)
{
case
-
1
:
case
0
:
s3c_gpio_cfgpin_range
(
S5P6440_GPR
(
4
),
5
,
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin_range
(
S5P6440_GPR
(
13
),
2
,
S3C_GPIO_SFN
(
5
));
break
;
default:
printk
(
KERN_ERR
"Invalid Device %d
\n
"
,
pdev
->
id
);
return
-
EINVAL
;
...
...
@@ -36,31 +40,14 @@ static int s5p6440_cfg_i2s(struct platform_device *pdev)
return
0
;
}
static
int
s5p6450_cfg_i2s
(
struct
platform_device
*
pdev
)
{
/* configure GPIO for i2s port */
switch
(
pdev
->
id
)
{
case
-
1
:
s3c_gpio_cfgpin
(
S5P6450_GPB
(
4
),
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin_range
(
S5P6450_GPR
(
4
),
5
,
S3C_GPIO_SFN
(
5
));
s3c_gpio_cfgpin_range
(
S5P6450_GPR
(
13
),
2
,
S3C_GPIO_SFN
(
5
));
break
;
default:
printk
(
KERN_ERR
"Invalid Device %d
\n
"
,
pdev
->
id
);
return
-
EINVAL
;
}
return
0
;
}
static
struct
s3c_audio_pdata
s5p6440_i2s_pdata
=
{
.
cfg_gpio
=
s5p6440_cfg_i2s
,
};
static
struct
s3c_audio_pdata
s5p6450_i2s_pdata
=
{
.
cfg_gpio
=
s5p6450_cfg_i2s
,
static
struct
s3c_audio_pdata
s5p64x0_i2s_pdata
=
{
.
cfg_gpio
=
s5p64x0_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
quirks
=
QUIRK_PRI_6CHAN
,
.
src_clk
=
rclksrc
,
},
},
};
static
struct
resource
s5p64x0_iis0_resource
[]
=
{
...
...
@@ -82,22 +69,22 @@ static struct resource s5p64x0_iis0_resource[] = {
};
struct
platform_device
s5p6440_device_iis
=
{
.
name
=
"s
3c64xx-iis-v4
"
,
.
id
=
-
1
,
.
name
=
"s
amsung-i2s
"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5p64x0_iis0_resource
),
.
resource
=
s5p64x0_iis0_resource
,
.
dev
=
{
.
platform_data
=
&
s5p64
4
0_i2s_pdata
,
.
platform_data
=
&
s5p64
x
0_i2s_pdata
,
},
};
struct
platform_device
s5p6450_device_iis0
=
{
.
name
=
"s
3c64xx-iis-v4
"
,
.
id
=
-
1
,
.
name
=
"s
amsung-i2s
"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5p64x0_iis0_resource
),
.
resource
=
s5p64x0_iis0_resource
,
.
dev
=
{
.
platform_data
=
&
s5p64
5
0_i2s_pdata
,
.
platform_data
=
&
s5p64
x
0_i2s_pdata
,
},
};
...
...
arch/arm/mach-s5pc100/dev-audio.c
浏览文件 @
ce8aceae
...
...
@@ -23,17 +23,14 @@ static int s5pc100_cfg_i2s(struct platform_device *pdev)
{
/* configure GPIO for i2s port */
switch
(
pdev
->
id
)
{
case
0
:
/* Dedicated pins */
break
;
case
1
:
s3c_gpio_cfgpin_range
(
S5PC100_GPC
(
0
),
5
,
S3C_GPIO_SFN
(
2
));
break
;
case
2
:
s3c_gpio_cfgpin_range
(
S5PC100_GPG3
(
0
),
5
,
S3C_GPIO_SFN
(
4
));
break
;
case
-
1
:
/* Dedicated pins */
break
;
default:
printk
(
KERN_ERR
"Invalid Device %d
\n
"
,
pdev
->
id
);
return
-
EINVAL
;
...
...
@@ -42,8 +39,20 @@ static int s5pc100_cfg_i2s(struct platform_device *pdev)
return
0
;
}
static
struct
s3c_audio_pdata
s3c_i2s_pdata
=
{
static
const
char
*
rclksrc_v5
[]
=
{
[
0
]
=
"iis"
,
[
1
]
=
"i2sclkd2"
,
};
static
struct
s3c_audio_pdata
i2sv5_pdata
=
{
.
cfg_gpio
=
s5pc100_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
quirks
=
QUIRK_PRI_6CHAN
|
QUIRK_SEC_DAI
|
QUIRK_NEED_RSTCLR
,
.
src_clk
=
rclksrc_v5
,
},
},
};
static
struct
resource
s5pc100_iis0_resource
[]
=
{
...
...
@@ -62,15 +71,34 @@ static struct resource s5pc100_iis0_resource[] = {
.
end
=
DMACH_I2S0_RX
,
.
flags
=
IORESOURCE_DMA
,
},
[
3
]
=
{
.
start
=
DMACH_I2S0S_TX
,
.
end
=
DMACH_I2S0S_TX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pc100_device_iis0
=
{
.
name
=
"s3c64xx-iis-v4
"
,
.
id
=
-
1
,
.
name
=
"samsung-i2s
"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5pc100_iis0_resource
),
.
resource
=
s5pc100_iis0_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s_pdata
,
.
platform_data
=
&
i2sv5_pdata
,
},
};
static
const
char
*
rclksrc_v3
[]
=
{
[
0
]
=
"iis"
,
[
1
]
=
"sclk_audio"
,
};
static
struct
s3c_audio_pdata
i2sv3_pdata
=
{
.
cfg_gpio
=
s5pc100_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
src_clk
=
rclksrc_v3
,
},
},
};
...
...
@@ -93,12 +121,12 @@ static struct resource s5pc100_iis1_resource[] = {
};
struct
platform_device
s5pc100_device_iis1
=
{
.
name
=
"s
3c64xx-ii
s"
,
.
name
=
"s
amsung-i2
s"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s5pc100_iis1_resource
),
.
resource
=
s5pc100_iis1_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s
_pdata
,
.
platform_data
=
&
i2sv3
_pdata
,
},
};
...
...
@@ -121,12 +149,12 @@ static struct resource s5pc100_iis2_resource[] = {
};
struct
platform_device
s5pc100_device_iis2
=
{
.
name
=
"s
3c64xx-ii
s"
,
.
name
=
"s
amsung-i2
s"
,
.
id
=
2
,
.
num_resources
=
ARRAY_SIZE
(
s5pc100_iis2_resource
),
.
resource
=
s5pc100_iis2_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s
_pdata
,
.
platform_data
=
&
i2sv3
_pdata
,
},
};
...
...
arch/arm/mach-s5pv210/clock.c
浏览文件 @
ce8aceae
...
...
@@ -467,20 +467,20 @@ static struct clk init_clocks_disable[] = {
.
enable
=
s5pv210_clk_ip3_ctrl
,
.
ctrlbit
=
(
1
<<
21
),
},
{
.
name
=
"i
2s_v50
"
,
.
name
=
"i
is
"
,
.
id
=
0
,
.
parent
=
&
clk_p
,
.
enable
=
s5pv210_clk_ip3_ctrl
,
.
ctrlbit
=
(
1
<<
4
),
},
{
.
name
=
"i
2s_v32
"
,
.
id
=
0
,
.
name
=
"i
is
"
,
.
id
=
1
,
.
parent
=
&
clk_p
,
.
enable
=
s5pv210_clk_ip3_ctrl
,
.
ctrlbit
=
(
1
<<
5
),
},
{
.
name
=
"i
2s_v32
"
,
.
id
=
1
,
.
name
=
"i
is
"
,
.
id
=
2
,
.
parent
=
&
clk_p
,
.
enable
=
s5pv210_clk_ip3_ctrl
,
.
ctrlbit
=
(
1
<<
6
),
...
...
arch/arm/mach-s5pv210/dev-audio.c
浏览文件 @
ce8aceae
...
...
@@ -19,22 +19,24 @@
#include <mach/dma.h>
#include <mach/irqs.h>
static
const
char
*
rclksrc
[]
=
{
[
0
]
=
"busclk"
,
[
1
]
=
"i2sclk"
,
};
static
int
s5pv210_cfg_i2s
(
struct
platform_device
*
pdev
)
{
/* configure GPIO for i2s port */
switch
(
pdev
->
id
)
{
case
0
:
s3c_gpio_cfgpin_range
(
S5PV210_GPI
(
0
),
7
,
S3C_GPIO_SFN
(
2
));
break
;
case
1
:
s3c_gpio_cfgpin_range
(
S5PV210_GPC0
(
0
),
5
,
S3C_GPIO_SFN
(
2
));
break
;
case
2
:
s3c_gpio_cfgpin_range
(
S5PV210_GPC1
(
0
),
5
,
S3C_GPIO_SFN
(
4
));
break
;
case
-
1
:
s3c_gpio_cfgpin_range
(
S5PV210_GPI
(
0
),
7
,
S3C_GPIO_SFN
(
2
));
break
;
default:
printk
(
KERN_ERR
"Invalid Device %d
\n
"
,
pdev
->
id
);
return
-
EINVAL
;
...
...
@@ -43,8 +45,15 @@ static int s5pv210_cfg_i2s(struct platform_device *pdev)
return
0
;
}
static
struct
s3c_audio_pdata
s3c_i2s
_pdata
=
{
static
struct
s3c_audio_pdata
i2sv5
_pdata
=
{
.
cfg_gpio
=
s5pv210_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
quirks
=
QUIRK_PRI_6CHAN
|
QUIRK_SEC_DAI
|
QUIRK_NEED_RSTCLR
,
.
src_clk
=
rclksrc
,
},
},
};
static
struct
resource
s5pv210_iis0_resource
[]
=
{
...
...
@@ -63,15 +72,34 @@ static struct resource s5pv210_iis0_resource[] = {
.
end
=
DMACH_I2S0_RX
,
.
flags
=
IORESOURCE_DMA
,
},
[
3
]
=
{
.
start
=
DMACH_I2S0S_TX
,
.
end
=
DMACH_I2S0S_TX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pv210_device_iis0
=
{
.
name
=
"s3c64xx-iis-v4
"
,
.
id
=
-
1
,
.
name
=
"samsung-i2s
"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5pv210_iis0_resource
),
.
resource
=
s5pv210_iis0_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s_pdata
,
.
platform_data
=
&
i2sv5_pdata
,
},
};
static
const
char
*
rclksrc_v3
[]
=
{
[
0
]
=
"iis"
,
[
1
]
=
"audio-bus"
,
};
static
struct
s3c_audio_pdata
i2sv3_pdata
=
{
.
cfg_gpio
=
s5pv210_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
src_clk
=
rclksrc_v3
,
},
},
};
...
...
@@ -94,12 +122,12 @@ static struct resource s5pv210_iis1_resource[] = {
};
struct
platform_device
s5pv210_device_iis1
=
{
.
name
=
"s
3c64xx-ii
s"
,
.
name
=
"s
amsung-i2
s"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s5pv210_iis1_resource
),
.
resource
=
s5pv210_iis1_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s
_pdata
,
.
platform_data
=
&
i2sv3
_pdata
,
},
};
...
...
@@ -122,12 +150,12 @@ static struct resource s5pv210_iis2_resource[] = {
};
struct
platform_device
s5pv210_device_iis2
=
{
.
name
=
"s
3c64xx-ii
s"
,
.
name
=
"s
amsung-i2
s"
,
.
id
=
2
,
.
num_resources
=
ARRAY_SIZE
(
s5pv210_iis2_resource
),
.
resource
=
s5pv210_iis2_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_i2s
_pdata
,
.
platform_data
=
&
i2sv3
_pdata
,
},
};
...
...
arch/arm/mach-s5pv310/Kconfig
浏览文件 @
ce8aceae
...
...
@@ -11,6 +11,7 @@ if ARCH_S5PV310
config CPU_S5PV310
bool
select S3C_PL330_DMA
help
Enable S5PV310 CPU support
...
...
arch/arm/mach-s5pv310/Makefile
浏览文件 @
ce8aceae
...
...
@@ -13,7 +13,7 @@ obj- :=
# Core support for S5PV310 system
obj-$(CONFIG_CPU_S5PV310)
+=
cpu.o init.o clock.o irq-combiner.o
obj-$(CONFIG_CPU_S5PV310)
+=
setup-i2c0.o time.o gpiolib.o irq-eint.o
obj-$(CONFIG_CPU_S5PV310)
+=
setup-i2c0.o time.o gpiolib.o irq-eint.o
dma.o
obj-$(CONFIG_SMP)
+=
platsmp.o headsmp.o
obj-$(CONFIG_LOCAL_TIMERS)
+=
localtimer.o
...
...
@@ -27,6 +27,7 @@ obj-$(CONFIG_MACH_UNIVERSAL_C210) += mach-universal_c210.o
# device support
obj-y
+=
dev-audio.o
obj-$(CONFIG_S5PV310_SETUP_I2C1)
+=
setup-i2c1.o
obj-$(CONFIG_S5PV310_SETUP_I2C2)
+=
setup-i2c2.o
obj-$(CONFIG_S5PV310_SETUP_I2C3)
+=
setup-i2c3.o
...
...
arch/arm/mach-s5pv310/dev-audio.c
0 → 100644
浏览文件 @
ce8aceae
/* linux/arch/arm/mach-s5pv310/dev-audio.c
*
* Copyright (c) 2010 Samsung Electronics Co. Ltd
* Jaswinder Singh <jassi.brar@samsung.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <linux/gpio.h>
#include <plat/gpio-cfg.h>
#include <plat/audio.h>
#include <mach/map.h>
#include <mach/dma.h>
#include <mach/irqs.h>
static
const
char
*
rclksrc
[]
=
{
[
0
]
=
"busclk"
,
[
1
]
=
"i2sclk"
,
};
static
int
s5pv310_cfg_i2s
(
struct
platform_device
*
pdev
)
{
/* configure GPIO for i2s port */
switch
(
pdev
->
id
)
{
case
0
:
s3c_gpio_cfgpin_range
(
S5PV310_GPZ
(
0
),
7
,
S3C_GPIO_SFN
(
2
));
break
;
case
1
:
s3c_gpio_cfgpin_range
(
S5PV310_GPC0
(
0
),
5
,
S3C_GPIO_SFN
(
2
));
break
;
case
2
:
s3c_gpio_cfgpin_range
(
S5PV310_GPC1
(
0
),
5
,
S3C_GPIO_SFN
(
4
));
break
;
default:
printk
(
KERN_ERR
"Invalid Device %d
\n
"
,
pdev
->
id
);
return
-
EINVAL
;
}
return
0
;
}
static
struct
s3c_audio_pdata
i2sv5_pdata
=
{
.
cfg_gpio
=
s5pv310_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
quirks
=
QUIRK_PRI_6CHAN
|
QUIRK_SEC_DAI
|
QUIRK_NEED_RSTCLR
,
.
src_clk
=
rclksrc
,
},
},
};
static
struct
resource
s5pv310_i2s0_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_I2S0
,
.
end
=
S5PV310_PA_I2S0
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_I2S0_TX
,
.
end
=
DMACH_I2S0_TX
,
.
flags
=
IORESOURCE_DMA
,
},
[
2
]
=
{
.
start
=
DMACH_I2S0_RX
,
.
end
=
DMACH_I2S0_RX
,
.
flags
=
IORESOURCE_DMA
,
},
[
3
]
=
{
.
start
=
DMACH_I2S0S_TX
,
.
end
=
DMACH_I2S0S_TX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pv310_device_i2s0
=
{
.
name
=
"samsung-i2s"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_i2s0_resource
),
.
resource
=
s5pv310_i2s0_resource
,
.
dev
=
{
.
platform_data
=
&
i2sv5_pdata
,
},
};
static
const
char
*
rclksrc_v3
[]
=
{
[
0
]
=
"sclk_i2s"
,
[
1
]
=
"no_such_clock"
,
};
static
struct
s3c_audio_pdata
i2sv3_pdata
=
{
.
cfg_gpio
=
s5pv310_cfg_i2s
,
.
type
=
{
.
i2s
=
{
.
quirks
=
QUIRK_NO_MUXPSR
,
.
src_clk
=
rclksrc_v3
,
},
},
};
static
struct
resource
s5pv310_i2s1_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_I2S1
,
.
end
=
S5PV310_PA_I2S1
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_I2S1_TX
,
.
end
=
DMACH_I2S1_TX
,
.
flags
=
IORESOURCE_DMA
,
},
[
2
]
=
{
.
start
=
DMACH_I2S1_RX
,
.
end
=
DMACH_I2S1_RX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pv310_device_i2s1
=
{
.
name
=
"samsung-i2s"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_i2s1_resource
),
.
resource
=
s5pv310_i2s1_resource
,
.
dev
=
{
.
platform_data
=
&
i2sv3_pdata
,
},
};
static
struct
resource
s5pv310_i2s2_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_I2S2
,
.
end
=
S5PV310_PA_I2S2
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_I2S2_TX
,
.
end
=
DMACH_I2S2_TX
,
.
flags
=
IORESOURCE_DMA
,
},
[
2
]
=
{
.
start
=
DMACH_I2S2_RX
,
.
end
=
DMACH_I2S2_RX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pv310_device_i2s2
=
{
.
name
=
"samsung-i2s"
,
.
id
=
2
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_i2s2_resource
),
.
resource
=
s5pv310_i2s2_resource
,
.
dev
=
{
.
platform_data
=
&
i2sv3_pdata
,
},
};
/* PCM Controller platform_devices */
static
int
s5pv310_pcm_cfg_gpio
(
struct
platform_device
*
pdev
)
{
switch
(
pdev
->
id
)
{
case
0
:
s3c_gpio_cfgpin_range
(
S5PV310_GPZ
(
0
),
5
,
S3C_GPIO_SFN
(
3
));
break
;
case
1
:
s3c_gpio_cfgpin_range
(
S5PV310_GPC0
(
0
),
5
,
S3C_GPIO_SFN
(
3
));
break
;
case
2
:
s3c_gpio_cfgpin_range
(
S5PV310_GPC1
(
0
),
5
,
S3C_GPIO_SFN
(
3
));
break
;
default:
printk
(
KERN_DEBUG
"Invalid PCM Controller number!"
);
return
-
EINVAL
;
}
return
0
;
}
static
struct
s3c_audio_pdata
s3c_pcm_pdata
=
{
.
cfg_gpio
=
s5pv310_pcm_cfg_gpio
,
};
static
struct
resource
s5pv310_pcm0_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_PCM0
,
.
end
=
S5PV310_PA_PCM0
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_PCM0_TX
,
.
end
=
DMACH_PCM0_TX
,
.
flags
=
IORESOURCE_DMA
,
},
[
2
]
=
{
.
start
=
DMACH_PCM0_RX
,
.
end
=
DMACH_PCM0_RX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pv310_device_pcm0
=
{
.
name
=
"samsung-pcm"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_pcm0_resource
),
.
resource
=
s5pv310_pcm0_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_pcm_pdata
,
},
};
static
struct
resource
s5pv310_pcm1_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_PCM1
,
.
end
=
S5PV310_PA_PCM1
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_PCM1_TX
,
.
end
=
DMACH_PCM1_TX
,
.
flags
=
IORESOURCE_DMA
,
},
[
2
]
=
{
.
start
=
DMACH_PCM1_RX
,
.
end
=
DMACH_PCM1_RX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pv310_device_pcm1
=
{
.
name
=
"samsung-pcm"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_pcm1_resource
),
.
resource
=
s5pv310_pcm1_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_pcm_pdata
,
},
};
static
struct
resource
s5pv310_pcm2_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_PCM2
,
.
end
=
S5PV310_PA_PCM2
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_PCM2_TX
,
.
end
=
DMACH_PCM2_TX
,
.
flags
=
IORESOURCE_DMA
,
},
[
2
]
=
{
.
start
=
DMACH_PCM2_RX
,
.
end
=
DMACH_PCM2_RX
,
.
flags
=
IORESOURCE_DMA
,
},
};
struct
platform_device
s5pv310_device_pcm2
=
{
.
name
=
"samsung-pcm"
,
.
id
=
2
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_pcm2_resource
),
.
resource
=
s5pv310_pcm2_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_pcm_pdata
,
},
};
/* AC97 Controller platform devices */
static
int
s5pv310_ac97_cfg_gpio
(
struct
platform_device
*
pdev
)
{
return
s3c_gpio_cfgpin_range
(
S5PV310_GPC0
(
0
),
5
,
S3C_GPIO_SFN
(
4
));
}
static
struct
resource
s5pv310_ac97_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_AC97
,
.
end
=
S5PV310_PA_AC97
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_AC97_PCMOUT
,
.
end
=
DMACH_AC97_PCMOUT
,
.
flags
=
IORESOURCE_DMA
,
},
[
2
]
=
{
.
start
=
DMACH_AC97_PCMIN
,
.
end
=
DMACH_AC97_PCMIN
,
.
flags
=
IORESOURCE_DMA
,
},
[
3
]
=
{
.
start
=
DMACH_AC97_MICIN
,
.
end
=
DMACH_AC97_MICIN
,
.
flags
=
IORESOURCE_DMA
,
},
[
4
]
=
{
.
start
=
IRQ_AC97
,
.
end
=
IRQ_AC97
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
s3c_audio_pdata
s3c_ac97_pdata
=
{
.
cfg_gpio
=
s5pv310_ac97_cfg_gpio
,
};
static
u64
s5pv310_ac97_dmamask
=
DMA_BIT_MASK
(
32
);
struct
platform_device
s5pv310_device_ac97
=
{
.
name
=
"samsung-ac97"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_ac97_resource
),
.
resource
=
s5pv310_ac97_resource
,
.
dev
=
{
.
platform_data
=
&
s3c_ac97_pdata
,
.
dma_mask
=
&
s5pv310_ac97_dmamask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
},
};
/* S/PDIF Controller platform_device */
static
int
s5pv310_spdif_cfg_gpio
(
struct
platform_device
*
pdev
)
{
s3c_gpio_cfgpin_range
(
S5PV310_GPC1
(
0
),
2
,
S3C_GPIO_SFN
(
3
));
return
0
;
}
static
struct
resource
s5pv310_spdif_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_SPDIF
,
.
end
=
S5PV310_PA_SPDIF
+
0x100
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
DMACH_SPDIF
,
.
end
=
DMACH_SPDIF
,
.
flags
=
IORESOURCE_DMA
,
},
};
static
struct
s3c_audio_pdata
samsung_spdif_pdata
=
{
.
cfg_gpio
=
s5pv310_spdif_cfg_gpio
,
};
static
u64
s5pv310_spdif_dmamask
=
DMA_BIT_MASK
(
32
);
struct
platform_device
s5pv310_device_spdif
=
{
.
name
=
"samsung-spdif"
,
.
id
=
-
1
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_spdif_resource
),
.
resource
=
s5pv310_spdif_resource
,
.
dev
=
{
.
platform_data
=
&
samsung_spdif_pdata
,
.
dma_mask
=
&
s5pv310_spdif_dmamask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
},
};
arch/arm/mach-s5pv310/dma.c
0 → 100644
浏览文件 @
ce8aceae
/*
* Copyright (C) 2010 Samsung Electronics Co. Ltd.
* Jaswinder Singh <jassi.brar@samsung.com>
*
* 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 Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <plat/devs.h>
#include <plat/irqs.h>
#include <mach/map.h>
#include <mach/irqs.h>
#include <plat/s3c-pl330-pdata.h>
static
u64
dma_dmamask
=
DMA_BIT_MASK
(
32
);
static
struct
resource
s5pv310_pdma0_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_PDMA0
,
.
end
=
S5PV310_PA_PDMA0
+
SZ_4K
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_PDMA0
,
.
end
=
IRQ_PDMA0
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
s3c_pl330_platdata
s5pv310_pdma0_pdata
=
{
.
peri
=
{
[
0
]
=
DMACH_PCM0_RX
,
[
1
]
=
DMACH_PCM0_TX
,
[
2
]
=
DMACH_PCM2_RX
,
[
3
]
=
DMACH_PCM2_TX
,
[
4
]
=
DMACH_MSM_REQ0
,
[
5
]
=
DMACH_MSM_REQ2
,
[
6
]
=
DMACH_SPI0_RX
,
[
7
]
=
DMACH_SPI0_TX
,
[
8
]
=
DMACH_SPI2_RX
,
[
9
]
=
DMACH_SPI2_TX
,
[
10
]
=
DMACH_I2S0S_TX
,
[
11
]
=
DMACH_I2S0_RX
,
[
12
]
=
DMACH_I2S0_TX
,
[
13
]
=
DMACH_I2S2_RX
,
[
14
]
=
DMACH_I2S2_TX
,
[
15
]
=
DMACH_UART0_RX
,
[
16
]
=
DMACH_UART0_TX
,
[
17
]
=
DMACH_UART2_RX
,
[
18
]
=
DMACH_UART2_TX
,
[
19
]
=
DMACH_UART4_RX
,
[
20
]
=
DMACH_UART4_TX
,
[
21
]
=
DMACH_SLIMBUS0_RX
,
[
22
]
=
DMACH_SLIMBUS0_TX
,
[
23
]
=
DMACH_SLIMBUS2_RX
,
[
24
]
=
DMACH_SLIMBUS2_TX
,
[
25
]
=
DMACH_SLIMBUS4_RX
,
[
26
]
=
DMACH_SLIMBUS4_TX
,
[
27
]
=
DMACH_AC97_MICIN
,
[
28
]
=
DMACH_AC97_PCMIN
,
[
29
]
=
DMACH_AC97_PCMOUT
,
[
30
]
=
DMACH_MAX
,
[
31
]
=
DMACH_MAX
,
},
};
static
struct
platform_device
s5pv310_device_pdma0
=
{
.
name
=
"s3c-pl330"
,
.
id
=
0
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_pdma0_resource
),
.
resource
=
s5pv310_pdma0_resource
,
.
dev
=
{
.
dma_mask
=
&
dma_dmamask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
.
platform_data
=
&
s5pv310_pdma0_pdata
,
},
};
static
struct
resource
s5pv310_pdma1_resource
[]
=
{
[
0
]
=
{
.
start
=
S5PV310_PA_PDMA1
,
.
end
=
S5PV310_PA_PDMA1
+
SZ_4K
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_PDMA1
,
.
end
=
IRQ_PDMA1
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
s3c_pl330_platdata
s5pv310_pdma1_pdata
=
{
.
peri
=
{
[
0
]
=
DMACH_PCM0_RX
,
[
1
]
=
DMACH_PCM0_TX
,
[
2
]
=
DMACH_PCM1_RX
,
[
3
]
=
DMACH_PCM1_TX
,
[
4
]
=
DMACH_MSM_REQ1
,
[
5
]
=
DMACH_MSM_REQ3
,
[
6
]
=
DMACH_SPI1_RX
,
[
7
]
=
DMACH_SPI1_TX
,
[
8
]
=
DMACH_I2S0S_TX
,
[
9
]
=
DMACH_I2S0_RX
,
[
10
]
=
DMACH_I2S0_TX
,
[
11
]
=
DMACH_I2S1_RX
,
[
12
]
=
DMACH_I2S1_TX
,
[
13
]
=
DMACH_UART0_RX
,
[
14
]
=
DMACH_UART0_TX
,
[
15
]
=
DMACH_UART1_RX
,
[
16
]
=
DMACH_UART1_TX
,
[
17
]
=
DMACH_UART3_RX
,
[
18
]
=
DMACH_UART3_TX
,
[
19
]
=
DMACH_SLIMBUS1_RX
,
[
20
]
=
DMACH_SLIMBUS1_TX
,
[
21
]
=
DMACH_SLIMBUS3_RX
,
[
22
]
=
DMACH_SLIMBUS3_TX
,
[
23
]
=
DMACH_SLIMBUS5_RX
,
[
24
]
=
DMACH_SLIMBUS5_TX
,
[
25
]
=
DMACH_SLIMBUS0AUX_RX
,
[
26
]
=
DMACH_SLIMBUS0AUX_TX
,
[
27
]
=
DMACH_SPDIF
,
[
28
]
=
DMACH_MAX
,
[
29
]
=
DMACH_MAX
,
[
30
]
=
DMACH_MAX
,
[
31
]
=
DMACH_MAX
,
},
};
static
struct
platform_device
s5pv310_device_pdma1
=
{
.
name
=
"s3c-pl330"
,
.
id
=
1
,
.
num_resources
=
ARRAY_SIZE
(
s5pv310_pdma1_resource
),
.
resource
=
s5pv310_pdma1_resource
,
.
dev
=
{
.
dma_mask
=
&
dma_dmamask
,
.
coherent_dma_mask
=
DMA_BIT_MASK
(
32
),
.
platform_data
=
&
s5pv310_pdma1_pdata
,
},
};
static
struct
platform_device
*
s5pv310_dmacs
[]
__initdata
=
{
&
s5pv310_device_pdma0
,
&
s5pv310_device_pdma1
,
};
static
int
__init
s5pv310_dma_init
(
void
)
{
platform_add_devices
(
s5pv310_dmacs
,
ARRAY_SIZE
(
s5pv310_dmacs
));
return
0
;
}
arch_initcall
(
s5pv310_dma_init
);
arch/arm/mach-s5pv310/include/mach/dma.h
0 → 100644
浏览文件 @
ce8aceae
/*
* Copyright (C) 2010 Samsung Electronics Co. Ltd.
* Jaswinder Singh <jassi.brar@samsung.com>
*
* 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 Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __MACH_DMA_H
#define __MACH_DMA_H
/* This platform uses the common S3C DMA API driver for PL330 */
#include <plat/s3c-dma-pl330.h>
#endif
/* __MACH_DMA_H */
arch/arm/mach-s5pv310/include/mach/irqs.h
浏览文件 @
ce8aceae
...
...
@@ -54,6 +54,9 @@
#define COMBINER_GROUP(x) ((x) * MAX_IRQ_IN_COMBINER + IRQ_SPI(64))
#define COMBINER_IRQ(x, y) (COMBINER_GROUP(x) + y)
#define IRQ_PDMA0 COMBINER_IRQ(21, 0)
#define IRQ_PDMA1 COMBINER_IRQ(21, 1)
#define IRQ_TIMER0_VIC COMBINER_IRQ(22, 0)
#define IRQ_TIMER1_VIC COMBINER_IRQ(22, 1)
#define IRQ_TIMER2_VIC COMBINER_IRQ(22, 2)
...
...
arch/arm/mach-s5pv310/include/mach/map.h
浏览文件 @
ce8aceae
...
...
@@ -52,6 +52,11 @@
#define S5PV310_PA_GIC_DIST (0x10501000)
#define S5PV310_PA_L2CC (0x10502000)
/* DMA */
#define S5PV310_PA_MDMA 0x10810000
#define S5PV310_PA_PDMA0 0x12680000
#define S5PV310_PA_PDMA1 0x12690000
#define S5PV310_PA_GPIO1 (0x11400000)
#define S5PV310_PA_GPIO2 (0x11000000)
#define S5PV310_PA_GPIO3 (0x03860000)
...
...
@@ -60,6 +65,22 @@
#define S5PV310_PA_SROMC (0x12570000)
/* S/PDIF */
#define S5PV310_PA_SPDIF 0xE1100000
/* I2S */
#define S5PV310_PA_I2S0 0x03830000
#define S5PV310_PA_I2S1 0xE3100000
#define S5PV310_PA_I2S2 0xE2A00000
/* PCM */
#define S5PV310_PA_PCM0 0x03840000
#define S5PV310_PA_PCM1 0x13980000
#define S5PV310_PA_PCM2 0x13990000
/* AC97 */
#define S5PV310_PA_AC97 0x139A0000
#define S5PV310_PA_UART (0x13800000)
#define S5P_PA_UART(x) (S5PV310_PA_UART + ((x) * S3C_UART_OFFSET))
...
...
arch/arm/plat-samsung/include/plat/audio.h
浏览文件 @
ce8aceae
...
...
@@ -25,10 +25,34 @@ extern void s3c64xx_ac97_setup_gpio(int);
#define S5PC100_SPDIF_GPG3 1
extern
void
s5pc100_spdif_setup_gpio
(
int
);
struct
samsung_i2s
{
/* If the Primary DAI has 5.1 Channels */
#define QUIRK_PRI_6CHAN (1 << 0)
/* If the I2S block has a Stereo Overlay Channel */
#define QUIRK_SEC_DAI (1 << 1)
/*
* If the I2S block has no internal prescalar or MUX (I2SMOD[10] bit)
* The Machine driver must provide suitably set clock to the I2S block.
*/
#define QUIRK_NO_MUXPSR (1 << 2)
#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
;
};
/**
* struct s3c_audio_pdata - common platform data for audio device drivers
* @cfg_gpio: Callback function to setup mux'ed pins in I2S/PCM/AC97 mode
*/
struct
s3c_audio_pdata
{
int
(
*
cfg_gpio
)(
struct
platform_device
*
);
union
{
struct
samsung_i2s
i2s
;
}
type
;
};
arch/arm/plat-samsung/include/plat/devs.h
浏览文件 @
ce8aceae
...
...
@@ -96,6 +96,15 @@ extern struct platform_device s5pv210_device_iis1;
extern
struct
platform_device
s5pv210_device_iis2
;
extern
struct
platform_device
s5pv210_device_spdif
;
extern
struct
platform_device
s5pv310_device_ac97
;
extern
struct
platform_device
s5pv310_device_pcm0
;
extern
struct
platform_device
s5pv310_device_pcm1
;
extern
struct
platform_device
s5pv310_device_pcm2
;
extern
struct
platform_device
s5pv310_device_i2s0
;
extern
struct
platform_device
s5pv310_device_i2s1
;
extern
struct
platform_device
s5pv310_device_i2s2
;
extern
struct
platform_device
s5pv310_device_spdif
;
extern
struct
platform_device
s5p6442_device_pcm0
;
extern
struct
platform_device
s5p6442_device_pcm1
;
extern
struct
platform_device
s5p6442_device_iis0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录