Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
2de05a57
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看板
提交
2de05a57
编写于
5月 20, 2012
作者:
K
Kukjin Kim
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'next/devel-exynos5250-1' into next/devel-samsung-2
上级
ab5a4e63
380c3a54
变更
32
隐藏空白更改
内联
并排
Showing
32 changed file
with
567 addition
and
368 deletion
+567
-368
Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt
...on/devicetree/bindings/arm/samsung/interrupt-combiner.txt
+52
-0
arch/arm/Kconfig
arch/arm/Kconfig
+0
-1
arch/arm/Makefile
arch/arm/Makefile
+1
-1
arch/arm/boot/dts/exynos5250-smdk5250.dts
arch/arm/boot/dts/exynos5250-smdk5250.dts
+48
-0
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5250.dtsi
+29
-31
arch/arm/mach-exynos/clock-exynos5.c
arch/arm/mach-exynos/clock-exynos5.c
+49
-2
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/common.c
+116
-62
arch/arm/mach-exynos/include/mach/gpio.h
arch/arm/mach-exynos/include/mach/gpio.h
+6
-3
arch/arm/mach-exynos/include/mach/irqs.h
arch/arm/mach-exynos/include/mach/irqs.h
+24
-16
arch/arm/mach-exynos/include/mach/map.h
arch/arm/mach-exynos/include/mach/map.h
+2
-2
arch/arm/mach-exynos/include/mach/regs-clock.h
arch/arm/mach-exynos/include/mach/regs-clock.h
+2
-0
arch/arm/mach-exynos/mach-exynos5-dt.c
arch/arm/mach-exynos/mach-exynos5-dt.c
+4
-0
arch/arm/mach-exynos/mct.c
arch/arm/mach-exynos/mct.c
+11
-6
arch/arm/mach-exynos/pm.c
arch/arm/mach-exynos/pm.c
+1
-1
arch/arm/plat-s5p/Kconfig
arch/arm/plat-s5p/Kconfig
+0
-132
arch/arm/plat-s5p/Makefile
arch/arm/plat-s5p/Makefile
+0
-27
arch/arm/plat-samsung/Kconfig
arch/arm/plat-samsung/Kconfig
+140
-0
arch/arm/plat-samsung/Makefile
arch/arm/plat-samsung/Makefile
+13
-0
arch/arm/plat-samsung/include/plat/cpu.h
arch/arm/plat-samsung/include/plat/cpu.h
+1
-1
arch/arm/plat-samsung/include/plat/s5p-clock.h
arch/arm/plat-samsung/include/plat/s5p-clock.h
+4
-0
arch/arm/plat-samsung/s5p-clock.c
arch/arm/plat-samsung/s5p-clock.c
+31
-2
arch/arm/plat-samsung/s5p-dev-mfc.c
arch/arm/plat-samsung/s5p-dev-mfc.c
+1
-3
arch/arm/plat-samsung/s5p-dev-uart.c
arch/arm/plat-samsung/s5p-dev-uart.c
+15
-63
arch/arm/plat-samsung/s5p-irq-eint.c
arch/arm/plat-samsung/s5p-irq-eint.c
+1
-2
arch/arm/plat-samsung/s5p-irq-gpioint.c
arch/arm/plat-samsung/s5p-irq-gpioint.c
+1
-2
arch/arm/plat-samsung/s5p-irq-pm.c
arch/arm/plat-samsung/s5p-irq-pm.c
+1
-2
arch/arm/plat-samsung/s5p-irq.c
arch/arm/plat-samsung/s5p-irq.c
+1
-2
arch/arm/plat-samsung/s5p-pm.c
arch/arm/plat-samsung/s5p-pm.c
+1
-2
arch/arm/plat-samsung/s5p-sleep.S
arch/arm/plat-samsung/s5p-sleep.S
+1
-2
arch/arm/plat-samsung/s5p-time.c
arch/arm/plat-samsung/s5p-time.c
+1
-2
arch/arm/plat-samsung/setup-mipiphy.c
arch/arm/plat-samsung/setup-mipiphy.c
+0
-0
drivers/gpio/gpio-samsung.c
drivers/gpio/gpio-samsung.c
+10
-1
未找到文件。
Documentation/devicetree/bindings/arm/samsung/interrupt-combiner.txt
0 → 100644
浏览文件 @
2de05a57
* Samsung Exynos Interrupt Combiner Controller
Samsung's Exynos4 architecture includes a interrupt combiner controller which
can combine interrupt sources as a group and provide a single interrupt request
for the group. The interrupt request from each group are connected to a parent
interrupt controller, such as GIC in case of Exynos4210.
The interrupt combiner controller consists of multiple combiners. Upto eight
interrupt sources can be connected to a combiner. The combiner outputs one
combined interrupt for its eight interrupt sources. The combined interrupt
is usually connected to a parent interrupt controller.
A single node in the device tree is used to describe the interrupt combiner
controller module (which includes multiple combiners). A combiner in the
interrupt controller module shares config/control registers with other
combiners. For example, a 32-bit interrupt enable/disable config register
can accommodate upto 4 interrupt combiners (with each combiner supporting
upto 8 interrupt sources).
Required properties:
- compatible: should be "samsung,exynos4210-combiner".
- interrupt-controller: Identifies the node as an interrupt controller.
- #interrupt-cells: should be <2>. The meaning of the cells are
* First Cell: Combiner Group Number.
* Second Cell: Interrupt number within the group.
- reg: Base address and size of interrupt combiner registers.
- interrupts: The list of interrupts generated by the combiners which are then
connected to a parent interrupt controller. The format of the interrupt
specifier depends in the interrupt parent controller.
Optional properties:
- samsung,combiner-nr: The number of interrupt combiners supported. If this
property is not specified, the default number of combiners is assumed
to be 16.
- interrupt-parent: pHandle of the parent interrupt controller, if not
inherited from the parent node.
Example:
The following is a an example from the Exynos4210 SoC dtsi file.
combiner:interrupt-controller@10440000 {
compatible = "samsung,exynos4210-combiner";
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x10440000 0x1000>;
interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>,
<0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>,
<0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>,
<0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>;
};
arch/arm/Kconfig
浏览文件 @
2de05a57
...
...
@@ -1088,7 +1088,6 @@ source "arch/arm/mach-sa1100/Kconfig"
source "arch/arm/plat-samsung/Kconfig"
source "arch/arm/plat-s3c24xx/Kconfig"
source "arch/arm/plat-s5p/Kconfig"
source "arch/arm/plat-spear/Kconfig"
...
...
arch/arm/Makefile
浏览文件 @
2de05a57
...
...
@@ -209,7 +209,7 @@ plat-$(CONFIG_PLAT_NOMADIK) := nomadik
plat-$(CONFIG_PLAT_ORION)
:=
orion
plat-$(CONFIG_PLAT_PXA)
:=
pxa
plat-$(CONFIG_PLAT_S3C24XX)
:=
s3c24xx samsung
plat-$(CONFIG_PLAT_S5P)
:=
s
5p s
amsung
plat-$(CONFIG_PLAT_S5P)
:=
samsung
plat-$(CONFIG_PLAT_SPEAR)
:=
spear
plat-$(CONFIG_PLAT_VERSATILE)
:=
versatile
...
...
arch/arm/boot/dts/exynos5250-smdk5250.dts
浏览文件 @
2de05a57
...
...
@@ -23,4 +23,52 @@
chosen
{
bootargs
=
"root=/dev/ram0 rw ramdisk=8192 console=ttySAC1,115200"
;
};
i2c
@
12
C60000
{
samsung
,
i2c
-
sda
-
delay
=
<
100
>;
samsung
,
i2c
-
max
-
bus
-
freq
=
<
20000
>;
gpios
=
<&
gpb3
0
2
3
0
>,
<&
gpb3
1
2
3
0
>;
eeprom
@
50
{
compatible
=
"samsung,s524ad0xd1"
;
reg
=
<
0x50
>;
};
};
i2c
@
12
C70000
{
samsung
,
i2c
-
sda
-
delay
=
<
100
>;
samsung
,
i2c
-
max
-
bus
-
freq
=
<
20000
>;
gpios
=
<&
gpb3
2
2
3
0
>,
<&
gpb3
3
2
3
0
>;
eeprom
@
51
{
compatible
=
"samsung,s524ad0xd1"
;
reg
=
<
0x51
>;
};
};
i2c
@
12
C80000
{
status
=
"disabled"
;
};
i2c
@
12
C90000
{
status
=
"disabled"
;
};
i2c
@
12
CA0000
{
status
=
"disabled"
;
};
i2c
@
12
CB0000
{
status
=
"disabled"
;
};
i2c
@
12
CC0000
{
status
=
"disabled"
;
};
i2c
@
12
CD0000
{
status
=
"disabled"
;
};
};
arch/arm/boot/dts/exynos5250.dtsi
浏览文件 @
2de05a57
...
...
@@ -23,11 +23,11 @@
compatible = "samsung,exynos5250";
interrupt-parent = <&gic>;
gic:interrupt-controller@104
90
000 {
gic:interrupt-controller@104
81
000 {
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
interrupt-controller;
reg = <0x104
90000 0x1000>, <0x10480000 0x1
00>;
reg = <0x104
81000 0x1000>, <0x10482000 0x20
00>;
};
watchdog {
...
...
@@ -42,30 +42,6 @@
interrupts = <0 43 0>, <0 44 0>;
};
sdhci@12200000 {
compatible = "samsung,exynos4210-sdhci";
reg = <0x12200000 0x100>;
interrupts = <0 75 0>;
};
sdhci@12210000 {
compatible = "samsung,exynos4210-sdhci";
reg = <0x12210000 0x100>;
interrupts = <0 76 0>;
};
sdhci@12220000 {
compatible = "samsung,exynos4210-sdhci";
reg = <0x12220000 0x100>;
interrupts = <0 77 0>;
};
sdhci@12230000 {
compatible = "samsung,exynos4210-sdhci";
reg = <0x12230000 0x100>;
interrupts = <0 78 0>;
};
serial@12C00000 {
compatible = "samsung,exynos4210-uart";
reg = <0x12C00000 0x100>;
...
...
@@ -94,48 +70,64 @@
compatible = "samsung,s3c2440-i2c";
reg = <0x12C60000 0x100>;
interrupts = <0 56 0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@12C70000 {
compatible = "samsung,s3c2440-i2c";
reg = <0x12C70000 0x100>;
interrupts = <0 57 0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@12C80000 {
compatible = "samsung,s3c2440-i2c";
reg = <0x12C80000 0x100>;
interrupts = <0 58 0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@12C90000 {
compatible = "samsung,s3c2440-i2c";
reg = <0x12C90000 0x100>;
interrupts = <0 59 0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@12CA0000 {
compatible = "samsung,s3c2440-i2c";
reg = <0x12CA0000 0x100>;
interrupts = <0 60 0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@12CB0000 {
compatible = "samsung,s3c2440-i2c";
reg = <0x12CB0000 0x100>;
interrupts = <0 61 0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@12CC0000 {
compatible = "samsung,s3c2440-i2c";
reg = <0x12CC0000 0x100>;
interrupts = <0 62 0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c@12CD0000 {
compatible = "samsung,s3c2440-i2c";
reg = <0x12CD0000 0x100>;
interrupts = <0 63 0>;
#address-cells = <1>;
#size-cells = <0>;
};
amba {
...
...
@@ -157,13 +149,13 @@
interrupts = <0 35 0>;
};
mdma0:
p
dma@10800000 {
mdma0:
m
dma@10800000 {
compatible = "arm,pl330", "arm,primecell";
reg = <0x10800000 0x1000>;
interrupts = <0 33 0>;
};
mdma1:
p
dma@11C10000 {
mdma1:
m
dma@11C10000 {
compatible = "arm,pl330", "arm,primecell";
reg = <0x11C10000 0x1000>;
interrupts = <0 124 0>;
...
...
@@ -242,6 +234,12 @@
#gpio-cells = <4>;
};
gpc4: gpio-controller@114002E0 {
compatible = "samsung,exynos4-gpio";
reg = <0x114002E0 0x20>;
#gpio-cells = <4>;
};
gpd0: gpio-controller@11400160 {
compatible = "samsung,exynos4-gpio";
reg = <0x11400160 0x20>;
...
...
@@ -388,19 +386,19 @@
gpv2: gpio-controller@10D10040 {
compatible = "samsung,exynos4-gpio";
reg = <0x10D100
4
0 0x20>;
reg = <0x10D100
6
0 0x20>;
#gpio-cells = <4>;
};
gpv3: gpio-controller@10D10060 {
compatible = "samsung,exynos4-gpio";
reg = <0x10D100
6
0 0x20>;
reg = <0x10D100
8
0 0x20>;
#gpio-cells = <4>;
};
gpv4: gpio-controller@10D10080 {
compatible = "samsung,exynos4-gpio";
reg = <0x10D100
8
0 0x20>;
reg = <0x10D100
C
0 0x20>;
#gpio-cells = <4>;
};
...
...
arch/arm/mach-exynos/clock-exynos5.c
浏览文件 @
2de05a57
...
...
@@ -165,11 +165,29 @@ static struct clksrc_clk exynos5_clk_sclk_apll = {
.
reg_div
=
{
.
reg
=
EXYNOS5_CLKDIV_CPU0
,
.
shift
=
24
,
.
size
=
3
},
};
static
struct
clksrc_clk
exynos5_clk_mout_bpll_fout
=
{
.
clk
=
{
.
name
=
"mout_bpll_fout"
,
},
.
sources
=
&
clk_src_bpll_fout
,
.
reg_src
=
{
.
reg
=
EXYNOS5_PLL_DIV2_SEL
,
.
shift
=
0
,
.
size
=
1
},
};
static
struct
clk
*
exynos5_clk_src_bpll_list
[]
=
{
[
0
]
=
&
clk_fin_bpll
,
[
1
]
=
&
exynos5_clk_mout_bpll_fout
.
clk
,
};
static
struct
clksrc_sources
exynos5_clk_src_bpll
=
{
.
sources
=
exynos5_clk_src_bpll_list
,
.
nr_sources
=
ARRAY_SIZE
(
exynos5_clk_src_bpll_list
),
};
static
struct
clksrc_clk
exynos5_clk_mout_bpll
=
{
.
clk
=
{
.
name
=
"mout_bpll"
,
},
.
sources
=
&
clk_src_bpll
,
.
sources
=
&
exynos5_
clk_src_bpll
,
.
reg_src
=
{
.
reg
=
EXYNOS5_CLKSRC_CDREX
,
.
shift
=
0
,
.
size
=
1
},
};
...
...
@@ -207,11 +225,29 @@ static struct clksrc_clk exynos5_clk_mout_epll = {
.
reg_src
=
{
.
reg
=
EXYNOS5_CLKSRC_TOP2
,
.
shift
=
12
,
.
size
=
1
},
};
static
struct
clksrc_clk
exynos5_clk_mout_mpll_fout
=
{
.
clk
=
{
.
name
=
"mout_mpll_fout"
,
},
.
sources
=
&
clk_src_mpll_fout
,
.
reg_src
=
{
.
reg
=
EXYNOS5_PLL_DIV2_SEL
,
.
shift
=
4
,
.
size
=
1
},
};
static
struct
clk
*
exynos5_clk_src_mpll_list
[]
=
{
[
0
]
=
&
clk_fin_mpll
,
[
1
]
=
&
exynos5_clk_mout_mpll_fout
.
clk
,
};
static
struct
clksrc_sources
exynos5_clk_src_mpll
=
{
.
sources
=
exynos5_clk_src_mpll_list
,
.
nr_sources
=
ARRAY_SIZE
(
exynos5_clk_src_mpll_list
),
};
struct
clksrc_clk
exynos5_clk_mout_mpll
=
{
.
clk
=
{
.
name
=
"mout_mpll"
,
},
.
sources
=
&
clk_src_mpll
,
.
sources
=
&
exynos5_
clk_src_mpll
,
.
reg_src
=
{
.
reg
=
EXYNOS5_CLKSRC_CORE1
,
.
shift
=
8
,
.
size
=
1
},
};
...
...
@@ -473,6 +509,11 @@ static struct clk exynos5_init_clocks_off[] = {
.
parent
=
&
exynos5_clk_aclk_66
.
clk
,
.
enable
=
exynos5_clk_ip_peris_ctrl
,
.
ctrlbit
=
(
1
<<
20
),
},
{
.
name
=
"watchdog"
,
.
parent
=
&
exynos5_clk_aclk_66
.
clk
,
.
enable
=
exynos5_clk_ip_peris_ctrl
,
.
ctrlbit
=
(
1
<<
19
),
},
{
.
name
=
"hsmmc"
,
.
devname
=
"exynos4-sdhci.0"
,
...
...
@@ -1031,10 +1072,12 @@ static struct clksrc_clk *exynos5_sysclks[] = {
&
exynos5_clk_mout_apll
,
&
exynos5_clk_sclk_apll
,
&
exynos5_clk_mout_bpll
,
&
exynos5_clk_mout_bpll_fout
,
&
exynos5_clk_mout_bpll_user
,
&
exynos5_clk_mout_cpll
,
&
exynos5_clk_mout_epll
,
&
exynos5_clk_mout_mpll
,
&
exynos5_clk_mout_mpll_fout
,
&
exynos5_clk_mout_mpll_user
,
&
exynos5_clk_vpllsrc
,
&
exynos5_clk_sclk_vpll
,
...
...
@@ -1098,7 +1141,9 @@ static struct clk *exynos5_clks[] __initdata = {
&
exynos5_clk_sclk_hdmi27m
,
&
exynos5_clk_sclk_hdmiphy
,
&
clk_fout_bpll
,
&
clk_fout_bpll_div2
,
&
clk_fout_cpll
,
&
clk_fout_mpll_div2
,
&
exynos5_clk_armclk
,
};
...
...
@@ -1263,8 +1308,10 @@ void __init_or_cpufreq exynos5_setup_clocks(void)
clk_fout_apll
.
ops
=
&
exynos5_fout_apll_ops
;
clk_fout_bpll
.
rate
=
bpll
;
clk_fout_bpll_div2
.
rate
=
bpll
>>
1
;
clk_fout_cpll
.
rate
=
cpll
;
clk_fout_mpll
.
rate
=
mpll
;
clk_fout_mpll_div2
.
rate
=
mpll
>>
1
;
clk_fout_epll
.
rate
=
epll
;
clk_fout_vpll
.
rate
=
vpll
;
...
...
arch/arm/mach-exynos/common.c
浏览文件 @
2de05a57
...
...
@@ -19,6 +19,9 @@
#include <linux/serial_core.h>
#include <linux/of.h>
#include <linux/of_irq.h>
#include <linux/export.h>
#include <linux/irqdomain.h>
#include <linux/of_address.h>
#include <asm/proc-fns.h>
#include <asm/exception.h>
...
...
@@ -265,12 +268,12 @@ static struct map_desc exynos5_iodesc[] __initdata = {
},
{
.
virtual
=
(
unsigned
long
)
S5P_VA_GIC_CPU
,
.
pfn
=
__phys_to_pfn
(
EXYNOS5_PA_GIC_CPU
),
.
length
=
SZ_
64
K
,
.
length
=
SZ_
8
K
,
.
type
=
MT_DEVICE
,
},
{
.
virtual
=
(
unsigned
long
)
S5P_VA_GIC_DIST
,
.
pfn
=
__phys_to_pfn
(
EXYNOS5_PA_GIC_DIST
),
.
length
=
SZ_
6
4K
,
.
length
=
SZ_4K
,
.
type
=
MT_DEVICE
,
},
};
...
...
@@ -399,6 +402,7 @@ struct combiner_chip_data {
void
__iomem
*
base
;
};
static
struct
irq_domain
*
combiner_irq_domain
;
static
struct
combiner_chip_data
combiner_data
[
MAX_COMBINER_NR
];
static
inline
void
__iomem
*
combiner_base
(
struct
irq_data
*
data
)
...
...
@@ -411,14 +415,14 @@ static inline void __iomem *combiner_base(struct irq_data *data)
static
void
combiner_mask_irq
(
struct
irq_data
*
data
)
{
u32
mask
=
1
<<
(
data
->
irq
%
32
);
u32
mask
=
1
<<
(
data
->
hw
irq
%
32
);
__raw_writel
(
mask
,
combiner_base
(
data
)
+
COMBINER_ENABLE_CLEAR
);
}
static
void
combiner_unmask_irq
(
struct
irq_data
*
data
)
{
u32
mask
=
1
<<
(
data
->
irq
%
32
);
u32
mask
=
1
<<
(
data
->
hw
irq
%
32
);
__raw_writel
(
mask
,
combiner_base
(
data
)
+
COMBINER_ENABLE_SET
);
}
...
...
@@ -474,49 +478,127 @@ static void __init combiner_cascade_irq(unsigned int combiner_nr, unsigned int i
irq_set_chained_handler
(
irq
,
combiner_handle_cascade_irq
);
}
static
void
__init
combiner_init
(
unsigned
int
combiner_nr
,
void
__iomem
*
base
,
unsigned
int
irq_start
)
static
void
__init
combiner_init
_one
(
unsigned
int
combiner_nr
,
void
__iomem
*
base
)
{
unsigned
int
i
;
unsigned
int
max_nr
;
if
(
soc_is_exynos5250
())
max_nr
=
EXYNOS5_MAX_COMBINER_NR
;
else
max_nr
=
EXYNOS4_MAX_COMBINER_NR
;
if
(
combiner_nr
>=
max_nr
)
BUG
();
combiner_data
[
combiner_nr
].
base
=
base
;
combiner_data
[
combiner_nr
].
irq_offset
=
irq_start
;
combiner_data
[
combiner_nr
].
irq_offset
=
irq_find_mapping
(
combiner_irq_domain
,
combiner_nr
*
MAX_IRQ_IN_COMBINER
);
combiner_data
[
combiner_nr
].
irq_mask
=
0xff
<<
((
combiner_nr
%
4
)
<<
3
);
/* Disable all interrupts */
__raw_writel
(
combiner_data
[
combiner_nr
].
irq_mask
,
base
+
COMBINER_ENABLE_CLEAR
);
}
/* Setup the Linux IRQ subsystem */
#ifdef CONFIG_OF
static
int
combiner_irq_domain_xlate
(
struct
irq_domain
*
d
,
struct
device_node
*
controller
,
const
u32
*
intspec
,
unsigned
int
intsize
,
unsigned
long
*
out_hwirq
,
unsigned
int
*
out_type
)
{
if
(
d
->
of_node
!=
controller
)
return
-
EINVAL
;
if
(
intsize
<
2
)
return
-
EINVAL
;
for
(
i
=
irq_start
;
i
<
combiner_data
[
combiner_nr
].
irq_offset
+
MAX_IRQ_IN_COMBINER
;
i
++
)
{
irq_set_chip_and_handler
(
i
,
&
combiner_chip
,
handle_level_irq
);
irq_set_chip_data
(
i
,
&
combiner_data
[
combiner_nr
]);
set_irq_flags
(
i
,
IRQF_VALID
|
IRQF_PROBE
);
*
out_hwirq
=
intspec
[
0
]
*
MAX_IRQ_IN_COMBINER
+
intspec
[
1
];
*
out_type
=
0
;
return
0
;
}
#else
static
int
combiner_irq_domain_xlate
(
struct
irq_domain
*
d
,
struct
device_node
*
controller
,
const
u32
*
intspec
,
unsigned
int
intsize
,
unsigned
long
*
out_hwirq
,
unsigned
int
*
out_type
)
{
return
-
EINVAL
;
}
#endif
static
int
combiner_irq_domain_map
(
struct
irq_domain
*
d
,
unsigned
int
irq
,
irq_hw_number_t
hw
)
{
irq_set_chip_and_handler
(
irq
,
&
combiner_chip
,
handle_level_irq
);
irq_set_chip_data
(
irq
,
&
combiner_data
[
hw
>>
3
]);
set_irq_flags
(
irq
,
IRQF_VALID
|
IRQF_PROBE
);
return
0
;
}
static
struct
irq_domain_ops
combiner_irq_domain_ops
=
{
.
xlate
=
combiner_irq_domain_xlate
,
.
map
=
combiner_irq_domain_map
,
};
void
__init
combiner_init
(
void
__iomem
*
combiner_base
,
struct
device_node
*
np
)
{
int
i
,
irq
,
irq_base
;
unsigned
int
max_nr
,
nr_irq
;
if
(
np
)
{
if
(
of_property_read_u32
(
np
,
"samsung,combiner-nr"
,
&
max_nr
))
{
pr_warning
(
"%s: number of combiners not specified, "
"setting default as %d.
\n
"
,
__func__
,
EXYNOS4_MAX_COMBINER_NR
);
max_nr
=
EXYNOS4_MAX_COMBINER_NR
;
}
}
else
{
max_nr
=
soc_is_exynos5250
()
?
EXYNOS5_MAX_COMBINER_NR
:
EXYNOS4_MAX_COMBINER_NR
;
}
nr_irq
=
max_nr
*
MAX_IRQ_IN_COMBINER
;
irq_base
=
irq_alloc_descs
(
COMBINER_IRQ
(
0
,
0
),
1
,
nr_irq
,
0
);
if
(
IS_ERR_VALUE
(
irq_base
))
{
irq_base
=
COMBINER_IRQ
(
0
,
0
);
pr_warning
(
"%s: irq desc alloc failed. Continuing with %d as linux irq base
\n
"
,
__func__
,
irq_base
);
}
combiner_irq_domain
=
irq_domain_add_legacy
(
np
,
nr_irq
,
irq_base
,
0
,
&
combiner_irq_domain_ops
,
&
combiner_data
);
if
(
WARN_ON
(
!
combiner_irq_domain
))
{
pr_warning
(
"%s: irq domain init failed
\n
"
,
__func__
);
return
;
}
for
(
i
=
0
;
i
<
max_nr
;
i
++
)
{
combiner_init_one
(
i
,
combiner_base
+
(
i
>>
2
)
*
0x10
);
irq
=
np
?
irq_of_parse_and_map
(
np
,
i
)
:
IRQ_SPI
(
i
);
combiner_cascade_irq
(
i
,
irq
);
}
}
#ifdef CONFIG_OF
int
__init
combiner_of_init
(
struct
device_node
*
np
,
struct
device_node
*
parent
)
{
void
__iomem
*
combiner_base
;
combiner_base
=
of_iomap
(
np
,
0
);
if
(
!
combiner_base
)
{
pr_err
(
"%s: failed to map combiner registers
\n
"
,
__func__
);
return
-
ENXIO
;
}
combiner_init
(
combiner_base
,
np
);
return
0
;
}
static
const
struct
of_device_id
exynos4_dt_irq_match
[]
=
{
{
.
compatible
=
"arm,cortex-a9-gic"
,
.
data
=
gic_of_init
,
},
{
.
compatible
=
"samsung,exynos4210-combiner"
,
.
data
=
combiner_of_init
,
},
{},
};
#endif
void
__init
exynos4_init_irq
(
void
)
{
int
irq
;
unsigned
int
gic_bank_offset
;
gic_bank_offset
=
soc_is_exynos4412
()
?
0x4000
:
0x8000
;
...
...
@@ -528,12 +610,8 @@ void __init exynos4_init_irq(void)
of_irq_init
(
exynos4_dt_irq_match
);
#endif
for
(
irq
=
0
;
irq
<
EXYNOS4_MAX_COMBINER_NR
;
irq
++
)
{
combiner_init
(
irq
,
(
void
__iomem
*
)
S5P_VA_COMBINER
(
irq
),
COMBINER_IRQ
(
irq
,
0
));
combiner_cascade_irq
(
irq
,
IRQ_SPI
(
irq
));
}
if
(
!
of_have_populated_dt
())
combiner_init
(
S5P_VA_COMBINER_BASE
,
NULL
);
/*
* The parameters of s5p_init_irq() are for VIC init.
...
...
@@ -545,18 +623,9 @@ void __init exynos4_init_irq(void)
void
__init
exynos5_init_irq
(
void
)
{
int
irq
;
#ifdef CONFIG_OF
of_irq_init
(
exynos4_dt_irq_match
);
#endif
for
(
irq
=
0
;
irq
<
EXYNOS5_MAX_COMBINER_NR
;
irq
++
)
{
combiner_init
(
irq
,
(
void
__iomem
*
)
S5P_VA_COMBINER
(
irq
),
COMBINER_IRQ
(
irq
,
0
));
combiner_cascade_irq
(
irq
,
IRQ_SPI
(
irq
));
}
/*
* The parameters of s5p_init_irq() are for VIC init.
* Theses parameters should be NULL and 0 because EXYNOS4
...
...
@@ -565,30 +634,18 @@ void __init exynos5_init_irq(void)
s5p_init_irq
(
NULL
,
0
);
}
struct
bus_type
exynos4_subsys
=
{
.
name
=
"exynos4-core"
,
.
dev_name
=
"exynos4-core"
,
};
struct
bus_type
exynos5_subsys
=
{
.
name
=
"exynos5-core"
,
.
dev_name
=
"exynos5-core"
,
struct
bus_type
exynos_subsys
=
{
.
name
=
"exynos-core"
,
.
dev_name
=
"exynos-core"
,
};
static
struct
device
exynos4_dev
=
{
.
bus
=
&
exynos4_subsys
,
};
static
struct
device
exynos5_dev
=
{
.
bus
=
&
exynos5_subsys
,
.
bus
=
&
exynos_subsys
,
};
static
int
__init
exynos_core_init
(
void
)
{
if
(
soc_is_exynos5250
())
return
subsys_system_register
(
&
exynos5_subsys
,
NULL
);
else
return
subsys_system_register
(
&
exynos4_subsys
,
NULL
);
return
subsys_system_register
(
&
exynos_subsys
,
NULL
);
}
core_initcall
(
exynos_core_init
);
...
...
@@ -675,10 +732,7 @@ static int __init exynos_init(void)
{
printk
(
KERN_INFO
"EXYNOS: Initializing architecture
\n
"
);
if
(
soc_is_exynos5250
())
return
device_register
(
&
exynos5_dev
);
else
return
device_register
(
&
exynos4_dev
);
return
device_register
(
&
exynos4_dev
);
}
/* uart registration process */
...
...
arch/arm/mach-exynos/include/mach/gpio.h
浏览文件 @
2de05a57
...
...
@@ -153,10 +153,11 @@ enum exynos4_gpio_number {
#define EXYNOS5_GPIO_B2_NR (4)
#define EXYNOS5_GPIO_B3_NR (4)
#define EXYNOS5_GPIO_C0_NR (7)
#define EXYNOS5_GPIO_C1_NR (
7
)
#define EXYNOS5_GPIO_C1_NR (
4
)
#define EXYNOS5_GPIO_C2_NR (7)
#define EXYNOS5_GPIO_C3_NR (7)
#define EXYNOS5_GPIO_D0_NR (8)
#define EXYNOS5_GPIO_C4_NR (7)
#define EXYNOS5_GPIO_D0_NR (4)
#define EXYNOS5_GPIO_D1_NR (8)
#define EXYNOS5_GPIO_Y0_NR (6)
#define EXYNOS5_GPIO_Y1_NR (4)
...
...
@@ -199,7 +200,8 @@ enum exynos5_gpio_number {
EXYNOS5_GPIO_C1_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_C0
),
EXYNOS5_GPIO_C2_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_C1
),
EXYNOS5_GPIO_C3_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_C2
),
EXYNOS5_GPIO_D0_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_C3
),
EXYNOS5_GPIO_C4_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_C3
),
EXYNOS5_GPIO_D0_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_C4
),
EXYNOS5_GPIO_D1_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_D0
),
EXYNOS5_GPIO_Y0_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_D1
),
EXYNOS5_GPIO_Y1_START
=
EXYNOS_GPIO_NEXT
(
EXYNOS5_GPIO_Y0
),
...
...
@@ -242,6 +244,7 @@ enum exynos5_gpio_number {
#define EXYNOS5_GPC1(_nr) (EXYNOS5_GPIO_C1_START + (_nr))
#define EXYNOS5_GPC2(_nr) (EXYNOS5_GPIO_C2_START + (_nr))
#define EXYNOS5_GPC3(_nr) (EXYNOS5_GPIO_C3_START + (_nr))
#define EXYNOS5_GPC4(_nr) (EXYNOS5_GPIO_C4_START + (_nr))
#define EXYNOS5_GPD0(_nr) (EXYNOS5_GPIO_D0_START + (_nr))
#define EXYNOS5_GPD1(_nr) (EXYNOS5_GPIO_D1_START + (_nr))
#define EXYNOS5_GPY0(_nr) (EXYNOS5_GPIO_Y0_START + (_nr))
...
...
arch/arm/mach-exynos/include/mach/irqs.h
浏览文件 @
2de05a57
...
...
@@ -286,6 +286,7 @@
#define EXYNOS5_IRQ_MIPICSI1 IRQ_SPI(80)
#define EXYNOS5_IRQ_EFNFCON_DMA_ABORT IRQ_SPI(81)
#define EXYNOS5_IRQ_MIPIDSI0 IRQ_SPI(82)
#define EXYNOS5_IRQ_WDT_IOP IRQ_SPI(83)
#define EXYNOS5_IRQ_ROTATOR IRQ_SPI(84)
#define EXYNOS5_IRQ_GSC0 IRQ_SPI(85)
#define EXYNOS5_IRQ_GSC1 IRQ_SPI(86)
...
...
@@ -294,8 +295,8 @@
#define EXYNOS5_IRQ_JPEG IRQ_SPI(89)
#define EXYNOS5_IRQ_EFNFCON_DMA IRQ_SPI(90)
#define EXYNOS5_IRQ_2D IRQ_SPI(91)
#define EXYNOS5_IRQ_
SFMC
0 IRQ_SPI(92)
#define EXYNOS5_IRQ_
SFMC
1 IRQ_SPI(93)
#define EXYNOS5_IRQ_
EFNFCON_
0 IRQ_SPI(92)
#define EXYNOS5_IRQ_
EFNFCON_
1 IRQ_SPI(93)
#define EXYNOS5_IRQ_MIXER IRQ_SPI(94)
#define EXYNOS5_IRQ_HDMI IRQ_SPI(95)
#define EXYNOS5_IRQ_MFC IRQ_SPI(96)
...
...
@@ -309,7 +310,7 @@
#define EXYNOS5_IRQ_PCM2 IRQ_SPI(104)
#define EXYNOS5_IRQ_SPDIF IRQ_SPI(105)
#define EXYNOS5_IRQ_ADC0 IRQ_SPI(106)
#define EXYNOS5_IRQ_ADC1 IRQ_SPI(107)
#define EXYNOS5_IRQ_SATA_PHY IRQ_SPI(108)
#define EXYNOS5_IRQ_SATA_PMEMREQ IRQ_SPI(109)
#define EXYNOS5_IRQ_CAM_C IRQ_SPI(110)
...
...
@@ -318,8 +319,9 @@
#define EXYNOS5_IRQ_DP1_INTP1 IRQ_SPI(113)
#define EXYNOS5_IRQ_CEC IRQ_SPI(114)
#define EXYNOS5_IRQ_SATA IRQ_SPI(115)
#define EXYNOS5_IRQ_NFCON IRQ_SPI(116)
#define EXYNOS5_IRQ_MCT_L0 IRQ_SPI(120)
#define EXYNOS5_IRQ_MCT_L1 IRQ_SPI(121)
#define EXYNOS5_IRQ_MMC44 IRQ_SPI(123)
#define EXYNOS5_IRQ_MDMA1 IRQ_SPI(124)
#define EXYNOS5_IRQ_FIMC_LITE0 IRQ_SPI(125)
...
...
@@ -327,7 +329,6 @@
#define EXYNOS5_IRQ_RP_TIMER IRQ_SPI(127)
#define EXYNOS5_IRQ_PMU COMBINER_IRQ(1, 2)
#define EXYNOS5_IRQ_PMU_CPU1 COMBINER_IRQ(1, 6)
#define EXYNOS5_IRQ_SYSMMU_GSC0_0 COMBINER_IRQ(2, 0)
#define EXYNOS5_IRQ_SYSMMU_GSC0_1 COMBINER_IRQ(2, 1)
...
...
@@ -338,6 +339,8 @@
#define EXYNOS5_IRQ_SYSMMU_GSC3_0 COMBINER_IRQ(2, 6)
#define EXYNOS5_IRQ_SYSMMU_GSC3_1 COMBINER_IRQ(2, 7)
#define EXYNOS5_IRQ_SYSMMU_LITE2_0 COMBINER_IRQ(3, 0)
#define EXYNOS5_IRQ_SYSMMU_LITE2_1 COMBINER_IRQ(3, 1)
#define EXYNOS5_IRQ_SYSMMU_FIMD1_0 COMBINER_IRQ(3, 2)
#define EXYNOS5_IRQ_SYSMMU_FIMD1_1 COMBINER_IRQ(3, 3)
#define EXYNOS5_IRQ_SYSMMU_LITE0_0 COMBINER_IRQ(3, 4)
...
...
@@ -361,8 +364,8 @@
#define EXYNOS5_IRQ_SYSMMU_ARM_0 COMBINER_IRQ(6, 0)
#define EXYNOS5_IRQ_SYSMMU_ARM_1 COMBINER_IRQ(6, 1)
#define EXYNOS5_IRQ_SYSMMU_MFC_
L
_0 COMBINER_IRQ(6, 2)
#define EXYNOS5_IRQ_SYSMMU_MFC_
L
_1 COMBINER_IRQ(6, 3)
#define EXYNOS5_IRQ_SYSMMU_MFC_
R
_0 COMBINER_IRQ(6, 2)
#define EXYNOS5_IRQ_SYSMMU_MFC_
R
_1 COMBINER_IRQ(6, 3)
#define EXYNOS5_IRQ_SYSMMU_RTIC_0 COMBINER_IRQ(6, 4)
#define EXYNOS5_IRQ_SYSMMU_RTIC_1 COMBINER_IRQ(6, 5)
#define EXYNOS5_IRQ_SYSMMU_SSS_0 COMBINER_IRQ(6, 6)
...
...
@@ -374,11 +377,9 @@
#define EXYNOS5_IRQ_SYSMMU_MDMA1_1 COMBINER_IRQ(7, 3)
#define EXYNOS5_IRQ_SYSMMU_TV_0 COMBINER_IRQ(7, 4)
#define EXYNOS5_IRQ_SYSMMU_TV_1 COMBINER_IRQ(7, 5)
#define EXYNOS5_IRQ_SYSMMU_GPSX_0 COMBINER_IRQ(7, 6)
#define EXYNOS5_IRQ_SYSMMU_GPSX_1 COMBINER_IRQ(7, 7)
#define EXYNOS5_IRQ_SYSMMU_MFC_
R
_0 COMBINER_IRQ(8, 5)
#define EXYNOS5_IRQ_SYSMMU_MFC_
R
_1 COMBINER_IRQ(8, 6)
#define EXYNOS5_IRQ_SYSMMU_MFC_
L
_0 COMBINER_IRQ(8, 5)
#define EXYNOS5_IRQ_SYSMMU_MFC_
L
_1 COMBINER_IRQ(8, 6)
#define EXYNOS5_IRQ_SYSMMU_DIS1_0 COMBINER_IRQ(9, 4)
#define EXYNOS5_IRQ_SYSMMU_DIS1_1 COMBINER_IRQ(9, 5)
...
...
@@ -394,17 +395,24 @@
#define EXYNOS5_IRQ_SYSMMU_DRC_0 COMBINER_IRQ(11, 6)
#define EXYNOS5_IRQ_SYSMMU_DRC_1 COMBINER_IRQ(11, 7)
#define EXYNOS5_IRQ_MDMA1_ABORT COMBINER_IRQ(13, 1)
#define EXYNOS5_IRQ_MDMA0_ABORT COMBINER_IRQ(15, 3)
#define EXYNOS5_IRQ_FIMD1_FIFO COMBINER_IRQ(18, 4)
#define EXYNOS5_IRQ_FIMD1_VSYNC COMBINER_IRQ(18, 5)
#define EXYNOS5_IRQ_FIMD1_SYSTEM COMBINER_IRQ(18, 6)
#define EXYNOS5_IRQ_ARMIOP_GIC COMBINER_IRQ(19, 0)
#define EXYNOS5_IRQ_ARMISP_GIC COMBINER_IRQ(19, 1)
#define EXYNOS5_IRQ_IOP_GIC COMBINER_IRQ(19, 3)
#define EXYNOS5_IRQ_ISP_GIC COMBINER_IRQ(19, 4)
#define EXYNOS5_IRQ_PMU_CPU1 COMBINER_IRQ(22, 4)
#define EXYNOS5_IRQ_EINT0 COMBINER_IRQ(23, 0)
#define EXYNOS5_IRQ_MCT_L0 COMBINER_IRQ(23, 1)
#define EXYNOS5_IRQ_MCT_L1 COMBINER_IRQ(23, 2)
#define EXYNOS5_IRQ_MCT_G0 COMBINER_IRQ(23, 3)
#define EXYNOS5_IRQ_MCT_G1 COMBINER_IRQ(23, 4)
#define EXYNOS5_IRQ_MCT_G2 COMBINER_IRQ(23, 5)
#define EXYNOS5_IRQ_MCT_G3 COMBINER_IRQ(23, 6)
#define EXYNOS5_IRQ_EINT1 COMBINER_IRQ(24, 0)
#define EXYNOS5_IRQ_SYSMMU_LITE1_0 COMBINER_IRQ(24, 1)
...
...
@@ -435,7 +443,7 @@
#define EXYNOS5_MAX_COMBINER_NR 32
#define EXYNOS5_IRQ_GPIO1_NR_GROUPS 1
3
#define EXYNOS5_IRQ_GPIO1_NR_GROUPS 1
4
#define EXYNOS5_IRQ_GPIO2_NR_GROUPS 9
#define EXYNOS5_IRQ_GPIO3_NR_GROUPS 5
#define EXYNOS5_IRQ_GPIO4_NR_GROUPS 1
...
...
arch/arm/mach-exynos/include/mach/map.h
浏览文件 @
2de05a57
...
...
@@ -81,8 +81,8 @@
#define EXYNOS4_PA_GIC_CPU 0x10480000
#define EXYNOS4_PA_GIC_DIST 0x10490000
#define EXYNOS5_PA_GIC_CPU 0x1048
0
000
#define EXYNOS5_PA_GIC_DIST 0x104
90
000
#define EXYNOS5_PA_GIC_CPU 0x1048
2
000
#define EXYNOS5_PA_GIC_DIST 0x104
81
000
#define EXYNOS4_PA_COREPERI 0x10500000
#define EXYNOS4_PA_TWD 0x10500600
...
...
arch/arm/mach-exynos/include/mach/regs-clock.h
浏览文件 @
2de05a57
...
...
@@ -322,6 +322,8 @@
#define EXYNOS5_CLKSRC_CDREX EXYNOS_CLKREG(0x20200)
#define EXYNOS5_CLKDIV_CDREX EXYNOS_CLKREG(0x20500)
#define EXYNOS5_PLL_DIV2_SEL EXYNOS_CLKREG(0x20A24)
#define EXYNOS5_EPLL_LOCK EXYNOS_CLKREG(0x10030)
#define EXYNOS5_EPLLCON0_LOCKED_SHIFT (29)
...
...
arch/arm/mach-exynos/mach-exynos5-dt.c
浏览文件 @
2de05a57
...
...
@@ -43,6 +43,10 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = {
"exynos4210-uart.2"
,
NULL
),
OF_DEV_AUXDATA
(
"samsung,exynos4210-uart"
,
EXYNOS5_PA_UART3
,
"exynos4210-uart.3"
,
NULL
),
OF_DEV_AUXDATA
(
"samsung,s3c2440-i2c"
,
EXYNOS5_PA_IIC
(
0
),
"s3c2440-i2c.0"
,
NULL
),
OF_DEV_AUXDATA
(
"samsung,s3c2440-i2c"
,
EXYNOS5_PA_IIC
(
1
),
"s3c2440-i2c.1"
,
NULL
),
OF_DEV_AUXDATA
(
"arm,pl330"
,
EXYNOS5_PA_PDMA0
,
"dma-pl330.0"
,
NULL
),
OF_DEV_AUXDATA
(
"arm,pl330"
,
EXYNOS5_PA_PDMA1
,
"dma-pl330.1"
,
NULL
),
OF_DEV_AUXDATA
(
"arm,pl330"
,
EXYNOS5_PA_MDMA1
,
"dma-pl330.2"
,
NULL
),
...
...
arch/arm/mach-exynos/mct.c
浏览文件 @
2de05a57
...
...
@@ -388,6 +388,7 @@ static int __cpuinit exynos4_local_timer_setup(struct clock_event_device *evt)
{
struct
mct_clock_event_device
*
mevt
;
unsigned
int
cpu
=
smp_processor_id
();
int
mct_lx_irq
;
mevt
=
this_cpu_ptr
(
&
percpu_mct_tick
);
mevt
->
evt
=
evt
;
...
...
@@ -414,14 +415,18 @@ static int __cpuinit exynos4_local_timer_setup(struct clock_event_device *evt)
if
(
mct_int_type
==
MCT_INT_SPI
)
{
if
(
cpu
==
0
)
{
mct_lx_irq
=
soc_is_exynos4210
()
?
EXYNOS4_IRQ_MCT_L0
:
EXYNOS5_IRQ_MCT_L0
;
mct_tick0_event_irq
.
dev_id
=
mevt
;
evt
->
irq
=
EXYNOS4_IRQ_MCT_L0
;
setup_irq
(
EXYNOS4_IRQ_MCT_L0
,
&
mct_tick0_event_irq
);
evt
->
irq
=
mct_lx_irq
;
setup_irq
(
mct_lx_irq
,
&
mct_tick0_event_irq
);
}
else
{
mct_lx_irq
=
soc_is_exynos4210
()
?
EXYNOS4_IRQ_MCT_L1
:
EXYNOS5_IRQ_MCT_L1
;
mct_tick1_event_irq
.
dev_id
=
mevt
;
evt
->
irq
=
EXYNOS4_IRQ_MCT_L1
;
setup_irq
(
EXYNOS4_IRQ_MCT_L1
,
&
mct_tick1_event_irq
);
irq_set_affinity
(
EXYNOS4_IRQ_MCT_L1
,
cpumask_of
(
1
));
evt
->
irq
=
mct_lx_irq
;
setup_irq
(
mct_lx_irq
,
&
mct_tick1_event_irq
);
irq_set_affinity
(
mct_lx_irq
,
cpumask_of
(
1
));
}
}
else
{
enable_percpu_irq
(
EXYNOS_IRQ_MCT_LOCALTIMER
,
0
);
...
...
@@ -473,7 +478,7 @@ static void __init exynos4_timer_resources(void)
static
void
__init
exynos4_timer_init
(
void
)
{
if
(
soc_is_exynos4210
(
))
if
(
(
soc_is_exynos4210
())
||
(
soc_is_exynos5250
()
))
mct_int_type
=
MCT_INT_SPI
;
else
mct_int_type
=
MCT_INT_PPI
;
...
...
arch/arm/mach-exynos/pm.c
浏览文件 @
2de05a57
...
...
@@ -275,7 +275,7 @@ static void exynos4_restore_pll(void)
static
struct
subsys_interface
exynos4_pm_interface
=
{
.
name
=
"exynos4_pm"
,
.
subsys
=
&
exynos
4
_subsys
,
.
subsys
=
&
exynos_subsys
,
.
add_dev
=
exynos4_pm_add
,
};
...
...
arch/arm/plat-s5p/Kconfig
已删除
100644 → 0
浏览文件 @
ab5a4e63
# arch/arm/plat-s5p/Kconfig
#
# Copyright (c) 2009 Samsung Electronics Co., Ltd.
# http://www.samsung.com/
#
# Licensed under GPLv2
config PLAT_S5P
bool
depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
default y
select ARM_VIC if !ARCH_EXYNOS
select ARM_GIC if ARCH_EXYNOS
select GIC_NON_BANKED if ARCH_EXYNOS4
select NO_IOPORT
select ARCH_REQUIRE_GPIOLIB
select S3C_GPIO_TRACK
select S5P_GPIO_DRVSTR
select SAMSUNG_GPIOLIB_4BIT
select PLAT_SAMSUNG
select SAMSUNG_CLKSRC
select SAMSUNG_IRQ_VIC_TIMER
help
Base platform code for Samsung's S5P series SoC.
config S5P_EXT_INT
bool
help
Use the external interrupts (other than GPIO interrupts.)
Note: Do not choose this for S5P6440 and S5P6450.
config S5P_GPIO_INT
bool
help
Common code for the GPIO interrupts (other than external interrupts.)
config S5P_HRT
bool
select SAMSUNG_DEV_PWM
help
Use the High Resolution timer support
config S5P_DEV_UART
def_bool y
depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210)
config S5P_PM
bool
help
Common code for power management support on S5P and newer SoCs
Note: Do not select this for S5P6440 and S5P6450.
config S5P_SLEEP
bool
help
Internal config node to apply common S5P sleep management code.
Can be selected by S5P and newer SoCs with similar sleep procedure.
config S5P_DEV_FIMC0
bool
help
Compile in platform device definitions for FIMC controller 0
config S5P_DEV_FIMC1
bool
help
Compile in platform device definitions for FIMC controller 1
config S5P_DEV_FIMC2
bool
help
Compile in platform device definitions for FIMC controller 2
config S5P_DEV_FIMC3
bool
help
Compile in platform device definitions for FIMC controller 3
config S5P_DEV_JPEG
bool
help
Compile in platform device definitions for JPEG codec
config S5P_DEV_G2D
bool
help
Compile in platform device definitions for G2D device
config S5P_DEV_FIMD0
bool
help
Compile in platform device definitions for FIMD controller 0
config S5P_DEV_I2C_HDMIPHY
bool
help
Compile in platform device definitions for I2C HDMIPHY controller
config S5P_DEV_MFC
bool
help
Compile in platform device definitions for MFC
config S5P_DEV_ONENAND
bool
help
Compile in platform device definition for OneNAND controller
config S5P_DEV_CSIS0
bool
help
Compile in platform device definitions for MIPI-CSIS channel 0
config S5P_DEV_CSIS1
bool
help
Compile in platform device definitions for MIPI-CSIS channel 1
config S5P_DEV_TV
bool
help
Compile in platform device definition for TV interface
config S5P_DEV_USB_EHCI
bool
help
Compile in platform device definition for USB EHCI
config S5P_SETUP_MIPIPHY
bool
help
Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices
arch/arm/plat-s5p/Makefile
已删除
100644 → 0
浏览文件 @
ab5a4e63
# arch/arm/plat-s5p/Makefile
#
# Copyright (c) 2009 Samsung Electronics Co., Ltd.
# http://www.samsung.com/
#
# Licensed under GPLv2
obj-y
:=
obj-m
:=
obj-n
:=
dummy.o
obj-
:=
# Core files
obj-y
+=
clock.o
obj-y
+=
irq.o
obj-$(CONFIG_S5P_EXT_INT)
+=
irq-eint.o
obj-$(CONFIG_S5P_GPIO_INT)
+=
irq-gpioint.o
obj-$(CONFIG_S5P_PM)
+=
pm.o irq-pm.o
obj-$(CONFIG_S5P_SLEEP)
+=
sleep.o
obj-$(CONFIG_S5P_HRT)
+=
s5p-time.o
# devices
obj-$(CONFIG_S5P_DEV_UART)
+=
dev-uart.o
obj-$(CONFIG_S5P_DEV_MFC)
+=
dev-mfc.o
obj-$(CONFIG_S5P_SETUP_MIPIPHY)
+=
setup-mipiphy.o
arch/arm/plat-samsung/Kconfig
浏览文件 @
2de05a57
...
...
@@ -13,6 +13,24 @@ config PLAT_SAMSUNG
help
Base platform code for all Samsung SoC based systems
config PLAT_S5P
bool
depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
default y
select ARM_VIC if !ARCH_EXYNOS
select ARM_GIC if ARCH_EXYNOS
select GIC_NON_BANKED if ARCH_EXYNOS4
select NO_IOPORT
select ARCH_REQUIRE_GPIOLIB
select S3C_GPIO_TRACK
select S5P_GPIO_DRVSTR
select SAMSUNG_GPIOLIB_4BIT
select PLAT_SAMSUNG
select SAMSUNG_CLKSRC
select SAMSUNG_IRQ_VIC_TIMER
help
Base platform code for Samsung's S5P series SoC.
if PLAT_SAMSUNG
# boot configurations
...
...
@@ -50,6 +68,14 @@ config S3C_LOWLEVEL_UART_PORT
this configuration should be between zero and two. The port
must have been initialised by the boot-loader before use.
# timer options
config S5P_HRT
bool
select SAMSUNG_DEV_PWM
help
Use the High Resolution timer support
# clock options
config SAMSUNG_CLKSRC
...
...
@@ -58,6 +84,11 @@ config SAMSUNG_CLKSRC
Select the clock code for the clksrc implementation
used by newer systems such as the S3C64XX.
config S5P_CLOCK
def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
help
Support common clock part for ARCH_S5P and ARCH_EXYNOS SoCs
# options for IRQ support
config SAMSUNG_IRQ_VIC_TIMER
...
...
@@ -65,6 +96,22 @@ config SAMSUNG_IRQ_VIC_TIMER
help
Internal configuration to build the VIC timer interrupt code.
config S5P_IRQ
def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
help
Support common interrup part for ARCH_S5P and ARCH_EXYNOS SoCs
config S5P_EXT_INT
bool
help
Use the external interrupts (other than GPIO interrupts.)
Note: Do not choose this for S5P6440 and S5P6450.
config S5P_GPIO_INT
bool
help
Common code for the GPIO interrupts (other than external interrupts.)
# options for gpio configuration support
config SAMSUNG_GPIOLIB_4BIT
...
...
@@ -117,6 +164,12 @@ config S3C_GPIO_TRACK
Internal configuration option to enable the s3c specific gpio
chip tracking if the platform requires it.
# uart options
config S5P_DEV_UART
def_bool y
depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210)
# ADC driver
config S3C_ADC
...
...
@@ -274,6 +327,76 @@ config SAMSUNG_DEV_BACKLIGHT
help
Compile in platform device definition LCD backlight with PWM Timer
config S5P_DEV_CSIS0
bool
help
Compile in platform device definitions for MIPI-CSIS channel 0
config S5P_DEV_CSIS1
bool
help
Compile in platform device definitions for MIPI-CSIS channel 1
config S5P_DEV_FIMC0
bool
help
Compile in platform device definitions for FIMC controller 0
config S5P_DEV_FIMC1
bool
help
Compile in platform device definitions for FIMC controller 1
config S5P_DEV_FIMC2
bool
help
Compile in platform device definitions for FIMC controller 2
config S5P_DEV_FIMC3
bool
help
Compile in platform device definitions for FIMC controller 3
config S5P_DEV_FIMD0
bool
help
Compile in platform device definitions for FIMD controller 0
config S5P_DEV_G2D
bool
help
Compile in platform device definitions for G2D device
config S5P_DEV_I2C_HDMIPHY
bool
help
Compile in platform device definitions for I2C HDMIPHY controller
config S5P_DEV_JPEG
bool
help
Compile in platform device definitions for JPEG codec
config S5P_DEV_MFC
bool
help
Compile in setup memory (init) code for MFC
config S5P_DEV_ONENAND
bool
help
Compile in platform device definition for OneNAND controller
config S5P_DEV_TV
bool
help
Compile in platform device definition for TV interface
config S5P_DEV_USB_EHCI
bool
help
Compile in platform device definition for USB EHCI
config S3C24XX_PWM
bool "PWM device support"
select HAVE_PWM
...
...
@@ -281,6 +404,11 @@ config S3C24XX_PWM
Support for exporting the PWM timer blocks via the pwm device
system
config S5P_SETUP_MIPIPHY
bool
help
Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices
# DMA
config S3C_DMA
...
...
@@ -351,6 +479,18 @@ config SAMSUNG_WAKEMASK
and above. This code allows a set of interrupt to wakeup-mask
mappings. See <plat/wakeup-mask.h>
config S5P_PM
bool
help
Common code for power management support on S5P and newer SoCs
Note: Do not select this for S5P6440 and S5P6450.
config S5P_SLEEP
bool
help
Internal config node to apply common S5P sleep management code.
Can be selected by S5P and newer SoCs with similar sleep procedure.
comment "Power Domain"
config SAMSUNG_PD
...
...
arch/arm/plat-samsung/Makefile
浏览文件 @
2de05a57
...
...
@@ -13,12 +13,18 @@ obj- :=
obj-y
+=
init.o cpu.o
obj-$(CONFIG_ARCH_USES_GETTIMEOFFSET)
+=
time.o
obj-$(CONFIG_S5P_HRT)
+=
s5p-time.o
obj-y
+=
clock.o
obj-y
+=
pwm-clock.o
obj-$(CONFIG_SAMSUNG_CLKSRC)
+=
clock-clksrc.o
obj-$(CONFIG_S5P_CLOCK)
+=
s5p-clock.o
obj-$(CONFIG_SAMSUNG_IRQ_VIC_TIMER)
+=
irq-vic-timer.o
obj-$(CONFIG_S5P_IRQ)
+=
s5p-irq.o
obj-$(CONFIG_S5P_EXT_INT)
+=
s5p-irq-eint.o
obj-$(CONFIG_S5P_GPIO_INT)
+=
s5p-irq-gpioint.o
# ADC
...
...
@@ -30,9 +36,13 @@ obj-y += platformdata.o
obj-y
+=
devs.o
obj-y
+=
dev-uart.o
obj-$(CONFIG_S5P_DEV_MFC)
+=
s5p-dev-mfc.o
obj-$(CONFIG_S5P_DEV_UART)
+=
s5p-dev-uart.o
obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT)
+=
dev-backlight.o
obj-$(CONFIG_S5P_SETUP_MIPIPHY)
+=
setup-mipiphy.o
# DMA support
obj-$(CONFIG_S3C_DMA)
+=
dma.o s3c-dma-ops.o
...
...
@@ -47,6 +57,9 @@ obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o
obj-$(CONFIG_SAMSUNG_WAKEMASK)
+=
wakeup-mask.o
obj-$(CONFIG_S5P_PM)
+=
s5p-pm.o s5p-irq-pm.o
obj-$(CONFIG_S5P_SLEEP)
+=
s5p-sleep.o
# PD support
obj-$(CONFIG_SAMSUNG_PD)
+=
pd.o
...
...
arch/arm/plat-samsung/include/plat/cpu.h
浏览文件 @
2de05a57
...
...
@@ -202,7 +202,7 @@ extern struct bus_type s3c2443_subsys;
extern
struct
bus_type
s3c6410_subsys
;
extern
struct
bus_type
s5p64x0_subsys
;
extern
struct
bus_type
s5pv210_subsys
;
extern
struct
bus_type
exynos
4
_subsys
;
extern
struct
bus_type
exynos_subsys
;
extern
void
(
*
s5pc1xx_idle
)(
void
);
...
...
arch/arm/plat-samsung/include/plat/s5p-clock.h
浏览文件 @
2de05a57
...
...
@@ -32,8 +32,10 @@ extern struct clk clk_48m;
extern
struct
clk
s5p_clk_27m
;
extern
struct
clk
clk_fout_apll
;
extern
struct
clk
clk_fout_bpll
;
extern
struct
clk
clk_fout_bpll_div2
;
extern
struct
clk
clk_fout_cpll
;
extern
struct
clk
clk_fout_mpll
;
extern
struct
clk
clk_fout_mpll_div2
;
extern
struct
clk
clk_fout_epll
;
extern
struct
clk
clk_fout_dpll
;
extern
struct
clk
clk_fout_vpll
;
...
...
@@ -42,8 +44,10 @@ extern struct clk clk_vpll;
extern
struct
clksrc_sources
clk_src_apll
;
extern
struct
clksrc_sources
clk_src_bpll
;
extern
struct
clksrc_sources
clk_src_bpll_fout
;
extern
struct
clksrc_sources
clk_src_cpll
;
extern
struct
clksrc_sources
clk_src_mpll
;
extern
struct
clksrc_sources
clk_src_mpll_fout
;
extern
struct
clksrc_sources
clk_src_epll
;
extern
struct
clksrc_sources
clk_src_dpll
;
...
...
arch/arm/plat-s
5p/
clock.c
→
arch/arm/plat-s
amsung/s5p-
clock.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/clock.c
*
/*
* Copyright 2009 Samsung Electronics Co., Ltd.
* http://www.samsung.com/
*
...
...
@@ -68,6 +67,11 @@ struct clk clk_fout_bpll = {
.
id
=
-
1
,
};
struct
clk
clk_fout_bpll_div2
=
{
.
name
=
"fout_bpll_div2"
,
.
id
=
-
1
,
};
/* CPLL clock output */
struct
clk
clk_fout_cpll
=
{
...
...
@@ -83,6 +87,11 @@ struct clk clk_fout_mpll = {
.
id
=
-
1
,
};
struct
clk
clk_fout_mpll_div2
=
{
.
name
=
"fout_mpll_div2"
,
.
id
=
-
1
,
};
/* EPLL clock output */
struct
clk
clk_fout_epll
=
{
.
name
=
"fout_epll"
,
...
...
@@ -126,6 +135,16 @@ struct clksrc_sources clk_src_bpll = {
.
nr_sources
=
ARRAY_SIZE
(
clk_src_bpll_list
),
};
static
struct
clk
*
clk_src_bpll_fout_list
[]
=
{
[
0
]
=
&
clk_fout_bpll_div2
,
[
1
]
=
&
clk_fout_bpll
,
};
struct
clksrc_sources
clk_src_bpll_fout
=
{
.
sources
=
clk_src_bpll_fout_list
,
.
nr_sources
=
ARRAY_SIZE
(
clk_src_bpll_fout_list
),
};
/* Possible clock sources for CPLL Mux */
static
struct
clk
*
clk_src_cpll_list
[]
=
{
[
0
]
=
&
clk_fin_cpll
,
...
...
@@ -148,6 +167,16 @@ struct clksrc_sources clk_src_mpll = {
.
nr_sources
=
ARRAY_SIZE
(
clk_src_mpll_list
),
};
static
struct
clk
*
clk_src_mpll_fout_list
[]
=
{
[
0
]
=
&
clk_fout_mpll_div2
,
[
1
]
=
&
clk_fout_mpll
,
};
struct
clksrc_sources
clk_src_mpll_fout
=
{
.
sources
=
clk_src_mpll_fout_list
,
.
nr_sources
=
ARRAY_SIZE
(
clk_src_mpll_fout_list
),
};
/* Possible clock sources for EPLL Mux */
static
struct
clk
*
clk_src_epll_list
[]
=
{
[
0
]
=
&
clk_fin_epll
,
...
...
arch/arm/plat-s
5p/
dev-mfc.c
→
arch/arm/plat-s
amsung/s5p-
dev-mfc.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/dev-mfc.c
*
/*
* Copyright (C) 2010-2011 Samsung Electronics Co.Ltd
*
* Base S5P MFC resource and device definitions
...
...
@@ -9,7 +8,6 @@
* published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
...
...
arch/arm/plat-s
5p/
dev-uart.c
→
arch/arm/plat-s
amsung/s5p-
dev-uart.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/dev-uart.c
*
* Copyright (c) 2009 Samsung Electronics Co., Ltd.
/*
* Copyright (c) 2009,2012 Samsung Electronics Co., Ltd.
* http://www.samsung.com/
*
* Base S5P UART resource and device definitions
...
...
@@ -14,6 +13,7 @@
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/ioport.h>
#include <linux/platform_device.h>
#include <asm/mach/arch.h>
...
...
@@ -26,86 +26,38 @@
/* Serial port registrations */
static
struct
resource
s5p_uart0_resource
[]
=
{
[
0
]
=
{
.
start
=
S5P_PA_UART0
,
.
end
=
S5P_PA_UART0
+
S5P_SZ_UART
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_UART0
,
.
end
=
IRQ_UART0
,
.
flags
=
IORESOURCE_IRQ
,
},
[
0
]
=
DEFINE_RES_MEM
(
S5P_PA_UART0
,
S5P_SZ_UART
),
[
1
]
=
DEFINE_RES_IRQ
(
IRQ_UART0
),
};
static
struct
resource
s5p_uart1_resource
[]
=
{
[
0
]
=
{
.
start
=
S5P_PA_UART1
,
.
end
=
S5P_PA_UART1
+
S5P_SZ_UART
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_UART1
,
.
end
=
IRQ_UART1
,
.
flags
=
IORESOURCE_IRQ
,
},
[
0
]
=
DEFINE_RES_MEM
(
S5P_PA_UART1
,
S5P_SZ_UART
),
[
1
]
=
DEFINE_RES_IRQ
(
IRQ_UART1
),
};
static
struct
resource
s5p_uart2_resource
[]
=
{
[
0
]
=
{
.
start
=
S5P_PA_UART2
,
.
end
=
S5P_PA_UART2
+
S5P_SZ_UART
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_UART2
,
.
end
=
IRQ_UART2
,
.
flags
=
IORESOURCE_IRQ
,
},
[
0
]
=
DEFINE_RES_MEM
(
S5P_PA_UART2
,
S5P_SZ_UART
),
[
1
]
=
DEFINE_RES_IRQ
(
IRQ_UART2
),
};
static
struct
resource
s5p_uart3_resource
[]
=
{
#if CONFIG_SERIAL_SAMSUNG_UARTS > 3
[
0
]
=
{
.
start
=
S5P_PA_UART3
,
.
end
=
S5P_PA_UART3
+
S5P_SZ_UART
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_UART3
,
.
end
=
IRQ_UART3
,
.
flags
=
IORESOURCE_IRQ
,
},
[
0
]
=
DEFINE_RES_MEM
(
S5P_PA_UART3
,
S5P_SZ_UART
),
[
1
]
=
DEFINE_RES_IRQ
(
IRQ_UART3
),
#endif
};
static
struct
resource
s5p_uart4_resource
[]
=
{
#if CONFIG_SERIAL_SAMSUNG_UARTS > 4
[
0
]
=
{
.
start
=
S5P_PA_UART4
,
.
end
=
S5P_PA_UART4
+
S5P_SZ_UART
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_UART4
,
.
end
=
IRQ_UART4
,
.
flags
=
IORESOURCE_IRQ
,
},
[
0
]
=
DEFINE_RES_MEM
(
S5P_PA_UART4
,
S5P_SZ_UART
),
[
1
]
=
DEFINE_RES_IRQ
(
IRQ_UART4
),
#endif
};
static
struct
resource
s5p_uart5_resource
[]
=
{
#if CONFIG_SERIAL_SAMSUNG_UARTS > 5
[
0
]
=
{
.
start
=
S5P_PA_UART5
,
.
end
=
S5P_PA_UART5
+
S5P_SZ_UART
-
1
,
.
flags
=
IORESOURCE_MEM
,
},
[
1
]
=
{
.
start
=
IRQ_UART5
,
.
end
=
IRQ_UART5
,
.
flags
=
IORESOURCE_IRQ
,
},
[
0
]
=
DEFINE_RES_MEM
(
S5P_PA_UART5
,
S5P_SZ_UART
),
[
1
]
=
DEFINE_RES_IRQ
(
IRQ_UART5
),
#endif
};
...
...
arch/arm/plat-s
5p/
irq-eint.c
→
arch/arm/plat-s
amsung/s5p-
irq-eint.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/irq-eint.c
*
/*
* Copyright (c) 2010 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
...
...
arch/arm/plat-s
5p/
irq-gpioint.c
→
arch/arm/plat-s
amsung/s5p-
irq-gpioint.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/irq-gpioint.c
*
/*
* Copyright (c) 2010 Samsung Electronics Co., Ltd.
* Author: Kyungmin Park <kyungmin.park@samsung.com>
* Author: Joonyoung Shim <jy0922.shim@samsung.com>
...
...
arch/arm/plat-s
5p/
irq-pm.c
→
arch/arm/plat-s
amsung/s5p-
irq-pm.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/irq-pm.c
*
/*
* Copyright (c) 2010 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
...
...
arch/arm/plat-s
5p/
irq.c
→
arch/arm/plat-s
amsung/s5p-
irq.c
浏览文件 @
2de05a57
/* arch/arm/plat-s5p/irq.c
*
/*
* Copyright (c) 2009 Samsung Electronics Co., Ltd.
* http://www.samsung.com/
*
...
...
arch/arm/plat-s
5p/
pm.c
→
arch/arm/plat-s
amsung/s5p-
pm.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/pm.c
*
/*
* Copyright (c) 2010 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
...
...
arch/arm/plat-s
5p/
sleep.S
→
arch/arm/plat-s
amsung/s5p-
sleep.S
浏览文件 @
2de05a57
/*
linux
/
arch
/
arm
/
plat
-
s5p
/
sleep.S
*
/*
*
Copyright
(
c
)
2011
Samsung
Electronics
Co
.
,
Ltd
.
*
http
:
//
www
.
samsung
.
com
*
...
...
arch/arm/plat-s
5p
/s5p-time.c
→
arch/arm/plat-s
amsung
/s5p-time.c
浏览文件 @
2de05a57
/* linux/arch/arm/plat-s5p/s5p-time.c
*
/*
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com/
*
...
...
arch/arm/plat-s
5p
/setup-mipiphy.c
→
arch/arm/plat-s
amsung
/setup-mipiphy.c
浏览文件 @
2de05a57
文件已移动
drivers/gpio/gpio-samsung.c
浏览文件 @
2de05a57
...
...
@@ -2452,6 +2452,12 @@ static struct samsung_gpio_chip exynos5_gpios_1[] = {
.
ngpio
=
EXYNOS5_GPIO_C3_NR
,
.
label
=
"GPC3"
,
},
},
{
.
chip
=
{
.
base
=
EXYNOS5_GPC4
(
0
),
.
ngpio
=
EXYNOS5_GPIO_C4_NR
,
.
label
=
"GPC4"
,
},
},
{
.
chip
=
{
.
base
=
EXYNOS5_GPD0
(
0
),
...
...
@@ -2878,8 +2884,11 @@ static __init int samsung_gpiolib_init(void)
goto
err_ioremap1
;
}
/* need to set base address for gpc4 */
exynos5_gpios_1
[
11
].
base
=
gpio_base1
+
0x2E0
;
/* need to set base address for gpx */
chip
=
&
exynos5_gpios_1
[
2
0
];
chip
=
&
exynos5_gpios_1
[
2
1
];
gpx_base
=
gpio_base1
+
0xC00
;
for
(
i
=
0
;
i
<
4
;
i
++
,
chip
++
,
gpx_base
+=
0x20
)
chip
->
base
=
gpx_base
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录