Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
6886530b
Commit
6886530b
authored
Oct 21, 2013
by
Shawn Guo
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'shesselba/clk-of-init-v2_for-3.13' into imx/soc
parents
4a10c2ac
64cc69ab
Changes
44
Show whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
224 additions
and
465 deletions
+224
-465
arch/arm/kernel/time.c
arch/arm/kernel/time.c
+17
-12
arch/arm/mach-bcm/board_bcm281xx.c
arch/arm/mach-bcm/board_bcm281xx.c
+0
-1
arch/arm/mach-bcm2835/bcm2835.c
arch/arm/mach-bcm2835/bcm2835.c
+0
-2
arch/arm/mach-dove/board-dt.c
arch/arm/mach-dove/board-dt.c
+0
-11
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/common.c
+0
-8
arch/arm/mach-exynos/common.h
arch/arm/mach-exynos/common.h
+0
-1
arch/arm/mach-exynos/mach-exynos4-dt.c
arch/arm/mach-exynos/mach-exynos4-dt.c
+0
-2
arch/arm/mach-exynos/mach-exynos5-dt.c
arch/arm/mach-exynos/mach-exynos5-dt.c
+0
-2
arch/arm/mach-highbank/highbank.c
arch/arm/mach-highbank/highbank.c
+7
-16
arch/arm/mach-imx/clk-imx51-imx53.c
arch/arm/mach-imx/clk-imx51-imx53.c
+10
-19
arch/arm/mach-imx/common.h
arch/arm/mach-imx/common.h
+0
-4
arch/arm/mach-imx/imx51-dt.c
arch/arm/mach-imx/imx51-dt.c
+0
-6
arch/arm/mach-imx/mach-imx53.c
arch/arm/mach-imx/mach-imx53.c
+0
-6
arch/arm/mach-imx/mach-imx6q.c
arch/arm/mach-imx/mach-imx6q.c
+3
-11
arch/arm/mach-imx/mach-imx6sl.c
arch/arm/mach-imx/mach-imx6sl.c
+0
-7
arch/arm/mach-imx/mach-vf610.c
arch/arm/mach-imx/mach-vf610.c
+0
-9
arch/arm/mach-kirkwood/board-dt.c
arch/arm/mach-kirkwood/board-dt.c
+0
-8
arch/arm/mach-mxs/mach-mxs.c
arch/arm/mach-mxs/mach-mxs.c
+0
-13
arch/arm/mach-nomadik/cpu-8815.c
arch/arm/mach-nomadik/cpu-8815.c
+0
-36
arch/arm/mach-nspire/nspire.c
arch/arm/mach-nspire/nspire.c
+0
-9
arch/arm/mach-prima2/common.c
arch/arm/mach-prima2/common.c
+0
-11
arch/arm/mach-prima2/common.h
arch/arm/mach-prima2/common.h
+0
-1
arch/arm/mach-rockchip/rockchip.c
arch/arm/mach-rockchip/rockchip.c
+0
-9
arch/arm/mach-socfpga/socfpga.c
arch/arm/mach-socfpga/socfpga.c
+0
-2
arch/arm/mach-sti/board-dt.c
arch/arm/mach-sti/board-dt.c
+4
-6
arch/arm/mach-sunxi/sunxi.c
arch/arm/mach-sunxi/sunxi.c
+0
-10
arch/arm/mach-tegra/common.c
arch/arm/mach-tegra/common.c
+1
-3
arch/arm/mach-tegra/pmc.c
arch/arm/mach-tegra/pmc.c
+22
-19
arch/arm/mach-tegra/pmc.h
arch/arm/mach-tegra/pmc.h
+1
-0
arch/arm/mach-tegra/tegra.c
arch/arm/mach-tegra/tegra.c
+3
-2
arch/arm/mach-vexpress/v2m.c
arch/arm/mach-vexpress/v2m.c
+1
-13
arch/arm/mach-vt8500/common.h
arch/arm/mach-vt8500/common.h
+0
-24
arch/arm/mach-vt8500/vt8500.c
arch/arm/mach-vt8500/vt8500.c
+0
-6
drivers/clk/clk-bcm2835.c
drivers/clk/clk-bcm2835.c
+0
-8
drivers/clk/clk-highbank.c
drivers/clk/clk-highbank.c
+7
-3
drivers/clk/clk-nomadik.c
drivers/clk/clk-nomadik.c
+96
-86
drivers/clk/clk-prima2.c
drivers/clk/clk-prima2.c
+6
-23
drivers/clk/clk-vt8500.c
drivers/clk/clk-vt8500.c
+24
-10
drivers/clk/mxs/clk-imx23.c
drivers/clk/mxs/clk-imx23.c
+8
-7
drivers/clk/mxs/clk-imx28.c
drivers/clk/mxs/clk-imx28.c
+8
-8
drivers/clk/sunxi/clk-sunxi.c
drivers/clk/sunxi/clk-sunxi.c
+6
-5
include/linux/clk/mxs.h
include/linux/clk/mxs.h
+0
-2
include/linux/clk/sunxi.h
include/linux/clk/sunxi.h
+0
-22
include/linux/platform_data/clk-nomadik.h
include/linux/platform_data/clk-nomadik.h
+0
-2
No files found.
arch/arm/kernel/time.c
View file @
6886530b
...
...
@@ -11,25 +11,26 @@
* This file contains the ARM-specific time handling details:
* reading the RTC at bootup, etc...
*/
#include <linux/clk-provider.h>
#include <linux/clocksource.h>
#include <linux/errno.h>
#include <linux/export.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/profile.h>
#include <linux/sched.h>
#include <linux/sched_clock.h>
#include <linux/smp.h>
#include <linux/time.h>
#include <linux/timex.h>
#include <linux/errno.h>
#include <linux/profile.h>
#include <linux/timer.h>
#include <linux/clocksource.h>
#include <linux/irq.h>
#include <linux/sched_clock.h>
#include <asm/thread_info.h>
#include <asm/stacktrace.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
#include <asm/stacktrace.h>
#include <asm/thread_info.h>
#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE) || \
defined(CONFIG_NVRAM) || defined(CONFIG_NVRAM_MODULE)
...
...
@@ -116,8 +117,12 @@ int __init register_persistent_clock(clock_access_fn read_boot,
void
__init
time_init
(
void
)
{
if
(
machine_desc
->
init_time
)
if
(
machine_desc
->
init_time
)
{
machine_desc
->
init_time
();
else
}
else
{
#ifdef CONFIG_COMMON_CLK
of_clk_init
(
NULL
);
#endif
clocksource_of_init
();
}
}
arch/arm/mach-bcm/board_bcm281xx.c
View file @
6886530b
...
...
@@ -68,7 +68,6 @@ static void __init board_init(void)
static
const
char
*
const
bcm11351_dt_compat
[]
=
{
"brcm,bcm11351"
,
NULL
,
};
DT_MACHINE_START
(
BCM11351_DT
,
"Broadcom Application Processor"
)
.
init_time
=
clocksource_of_init
,
.
init_machine
=
board_init
,
.
restart
=
bcm_kona_restart
,
.
dt_compat
=
bcm11351_dt_compat
,
...
...
arch/arm/mach-bcm2835/bcm2835.c
View file @
6886530b
...
...
@@ -18,7 +18,6 @@
#include <linux/of_address.h>
#include <linux/of_platform.h>
#include <linux/clk/bcm2835.h>
#include <linux/clocksource.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
...
...
@@ -134,7 +133,6 @@ DT_MACHINE_START(BCM2835, "BCM2835")
.
init_irq
=
bcm2835_init_irq
,
.
handle_irq
=
bcm2835_handle_irq
,
.
init_machine
=
bcm2835_init
,
.
init_time
=
clocksource_of_init
,
.
restart
=
bcm2835_restart
,
.
dt_compat
=
bcm2835_compat
MACHINE_END
arch/arm/mach-dove/board-dt.c
View file @
6886530b
...
...
@@ -10,17 +10,13 @@
#include <linux/init.h>
#include <linux/clk-provider.h>
#include <linux/clocksource.h>
#include <linux/irqchip.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/platform_data/usb-ehci-orion.h>
#include <asm/hardware/cache-tauros2.h>
#include <asm/mach/arch.h>
#include <mach/dove.h>
#include <mach/pm.h>
#include <plat/common.h>
#include <plat/irq.h>
#include "common.h"
/*
...
...
@@ -45,12 +41,6 @@ static void __init dove_legacy_clk_init(void)
of_clk_get_from_provider
(
&
clkspec
));
}
static
void
__init
dove_dt_time_init
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
}
static
void
__init
dove_dt_init_early
(
void
)
{
mvebu_mbus_init
(
"marvell,dove-mbus"
,
...
...
@@ -84,7 +74,6 @@ static const char * const dove_dt_board_compat[] = {
DT_MACHINE_START
(
DOVE_DT
,
"Marvell Dove (Flattened Device Tree)"
)
.
map_io
=
dove_map_io
,
.
init_early
=
dove_dt_init_early
,
.
init_time
=
dove_dt_time_init
,
.
init_machine
=
dove_dt_init
,
.
restart
=
dove_restart
,
.
dt_compat
=
dove_dt_board_compat
,
...
...
arch/arm/mach-exynos/common.c
View file @
6886530b
...
...
@@ -26,8 +26,6 @@
#include <linux/export.h>
#include <linux/irqdomain.h>
#include <linux/of_address.h>
#include <linux/clocksource.h>
#include <linux/clk-provider.h>
#include <linux/irqchip/arm-gic.h>
#include <linux/irqchip/chained_irq.h>
...
...
@@ -367,12 +365,6 @@ static void __init exynos5_map_io(void)
iotable_init
(
exynos5250_iodesc
,
ARRAY_SIZE
(
exynos5250_iodesc
));
}
void
__init
exynos_init_time
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
}
struct
bus_type
exynos_subsys
=
{
.
name
=
"exynos-core"
,
.
dev_name
=
"exynos-core"
,
...
...
arch/arm/mach-exynos/common.h
View file @
6886530b
...
...
@@ -16,7 +16,6 @@
#include <linux/of.h>
void
mct_init
(
void
__iomem
*
base
,
int
irq_g0
,
int
irq_l0
,
int
irq_l1
);
void
exynos_init_time
(
void
);
struct
map_desc
;
void
exynos_init_io
(
void
);
...
...
arch/arm/mach-exynos/mach-exynos4-dt.c
View file @
6886530b
...
...
@@ -16,7 +16,6 @@
#include <linux/of_fdt.h>
#include <linux/serial_core.h>
#include <linux/memblock.h>
#include <linux/clocksource.h>
#include <asm/mach/arch.h>
#include <plat/mfc.h>
...
...
@@ -54,7 +53,6 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
.
init_early
=
exynos_firmware_init
,
.
init_machine
=
exynos4_dt_machine_init
,
.
init_late
=
exynos_init_late
,
.
init_time
=
exynos_init_time
,
.
dt_compat
=
exynos4_dt_compat
,
.
restart
=
exynos4_restart
,
.
reserve
=
exynos4_reserve
,
...
...
arch/arm/mach-exynos/mach-exynos5-dt.c
View file @
6886530b
...
...
@@ -13,7 +13,6 @@
#include <linux/of_fdt.h>
#include <linux/memblock.h>
#include <linux/io.h>
#include <linux/clocksource.h>
#include <asm/mach/arch.h>
#include <mach/regs-pmu.h>
...
...
@@ -76,7 +75,6 @@ DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
.
map_io
=
exynos_init_io
,
.
init_machine
=
exynos5_dt_machine_init
,
.
init_late
=
exynos_init_late
,
.
init_time
=
exynos_init_time
,
.
dt_compat
=
exynos5_dt_compat
,
.
restart
=
exynos5_restart
,
.
reserve
=
exynos5_reserve
,
...
...
arch/arm/mach-highbank/highbank.c
View file @
6886530b
...
...
@@ -24,7 +24,6 @@
#include <linux/of_platform.h>
#include <linux/of_address.h>
#include <linux/amba/bus.h>
#include <linux/clk-provider.h>
#include <asm/cacheflush.h>
#include <asm/cputype.h>
...
...
@@ -83,20 +82,6 @@ static void __init highbank_init_irq(void)
}
}
static
void
__init
highbank_timer_init
(
void
)
{
struct
device_node
*
np
;
/* Map system registers */
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"calxeda,hb-sregs"
);
sregs_base
=
of_iomap
(
np
,
0
);
WARN_ON
(
!
sregs_base
);
of_clk_init
(
NULL
);
clocksource_of_init
();
}
static
void
highbank_power_off
(
void
)
{
highbank_set_pwr_shutdown
();
...
...
@@ -155,6 +140,13 @@ static struct notifier_block highbank_platform_nb = {
static
void
__init
highbank_init
(
void
)
{
struct
device_node
*
np
;
/* Map system registers */
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"calxeda,hb-sregs"
);
sregs_base
=
of_iomap
(
np
,
0
);
WARN_ON
(
!
sregs_base
);
pm_power_off
=
highbank_power_off
;
highbank_pm_init
();
...
...
@@ -176,7 +168,6 @@ DT_MACHINE_START(HIGHBANK, "Highbank")
#endif
.
smp
=
smp_ops
(
highbank_smp_ops
),
.
init_irq
=
highbank_init_irq
,
.
init_time
=
highbank_timer_init
,
.
init_machine
=
highbank_init
,
.
dt_compat
=
highbank_match
,
.
restart
=
highbank_restart
,
...
...
arch/arm/mach-imx/clk-imx51-imx53.c
View file @
6886530b
...
...
@@ -11,6 +11,7 @@
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/clkdev.h>
#include <linux/clk-provider.h>
#include <linux/of.h>
#include <linux/err.h>
...
...
@@ -131,8 +132,6 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil,
{
int
i
;
of_clk_init
(
NULL
);
clk
[
dummy
]
=
imx_clk_fixed
(
"dummy"
,
0
);
clk
[
ckil
]
=
imx_obtain_fixed_clock
(
"ckil"
,
rate_ckil
);
clk
[
osc
]
=
imx_obtain_fixed_clock
(
"osc"
,
rate_osc
);
...
...
@@ -465,12 +464,16 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc,
return
0
;
}
int
__init
mx53_clocks_init
(
unsigned
long
rate_ckil
,
unsigned
long
rate_osc
,
unsigned
long
rate_ckih1
,
unsigned
long
rate_ckih2
)
static
void
__init
mx51_clocks_init_dt
(
struct
device_node
*
np
)
{
mx51_clocks_init
(
0
,
0
,
0
,
0
);
}
CLK_OF_DECLARE
(
imx51_ccm
,
"fsl,imx51-ccm"
,
mx51_clocks_init_dt
);
static
void
__init
mx53_clocks_init
(
struct
device_node
*
np
)
{
int
i
;
unsigned
long
r
;
struct
device_node
*
np
;
clk
[
pll1_sw
]
=
imx_clk_pllv2
(
"pll1_sw"
,
"osc"
,
MX53_DPLL1_BASE
);
clk
[
pll2_sw
]
=
imx_clk_pllv2
(
"pll2_sw"
,
"osc"
,
MX53_DPLL2_BASE
);
...
...
@@ -529,12 +532,11 @@ int __init mx53_clocks_init(unsigned long rate_ckil, unsigned long rate_osc,
pr_err
(
"i.MX53 clk %d: register failed with %ld
\n
"
,
i
,
PTR_ERR
(
clk
[
i
]));
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,imx53-ccm"
);
clk_data
.
clks
=
clk
;
clk_data
.
clk_num
=
ARRAY_SIZE
(
clk
);
of_clk_add_provider
(
np
,
of_clk_src_onecell_get
,
&
clk_data
);
mx5_clocks_common_init
(
rate_ckil
,
rate_osc
,
rate_ckih1
,
rate_ckih2
);
mx5_clocks_common_init
(
0
,
0
,
0
,
0
);
clk_register_clkdev
(
clk
[
vpu_gate
],
NULL
,
"imx53-vpu.0"
);
clk_register_clkdev
(
clk
[
i2c3_gate
],
NULL
,
"imx21-i2c.2"
);
...
...
@@ -566,16 +568,5 @@ int __init mx53_clocks_init(unsigned long rate_ckil, unsigned long rate_osc,
r
=
clk_round_rate
(
clk
[
usboh3_per_gate
],
54000000
);
clk_set_rate
(
clk
[
usboh3_per_gate
],
r
);
return
0
;
}
int
__init
mx51_clocks_init_dt
(
void
)
{
return
mx51_clocks_init
(
0
,
0
,
0
,
0
);
}
int
__init
mx53_clocks_init_dt
(
void
)
{
return
mx53_clocks_init
(
0
,
0
,
0
,
0
);
}
CLK_OF_DECLARE
(
imx53_ccm
,
"fsl,imx53-ccm"
,
mx53_clocks_init
);
arch/arm/mach-imx/common.h
View file @
6886530b
...
...
@@ -63,13 +63,9 @@ extern int mx31_clocks_init(unsigned long fref);
extern
int
mx35_clocks_init
(
void
);
extern
int
mx51_clocks_init
(
unsigned
long
ckil
,
unsigned
long
osc
,
unsigned
long
ckih1
,
unsigned
long
ckih2
);
extern
int
mx53_clocks_init
(
unsigned
long
ckil
,
unsigned
long
osc
,
unsigned
long
ckih1
,
unsigned
long
ckih2
);
extern
int
mx25_clocks_init_dt
(
void
);
extern
int
mx27_clocks_init_dt
(
void
);
extern
int
mx31_clocks_init_dt
(
void
);
extern
int
mx51_clocks_init_dt
(
void
);
extern
int
mx53_clocks_init_dt
(
void
);
extern
struct
platform_device
*
mxc_register_gpio
(
char
*
name
,
int
id
,
resource_size_t
iobase
,
resource_size_t
iosize
,
int
irq
,
int
irq_high
);
extern
void
mxc_set_cpu_type
(
unsigned
int
type
);
...
...
arch/arm/mach-imx/imx51-dt.c
View file @
6886530b
...
...
@@ -34,17 +34,11 @@ static const char *imx51_dt_board_compat[] __initdata = {
NULL
};
static
void
__init
imx51_timer_init
(
void
)
{
mx51_clocks_init_dt
();
}
DT_MACHINE_START
(
IMX51_DT
,
"Freescale i.MX51 (Device Tree Support)"
)
.
map_io
=
mx51_map_io
,
.
init_early
=
imx51_init_early
,
.
init_irq
=
mx51_init_irq
,
.
handle_irq
=
imx51_handle_irq
,
.
init_time
=
imx51_timer_init
,
.
init_machine
=
imx51_dt_init
,
.
init_late
=
imx51_init_late
,
.
dt_compat
=
imx51_dt_board_compat
,
...
...
arch/arm/mach-imx/mach-imx53.c
View file @
6886530b
...
...
@@ -36,17 +36,11 @@ static const char *imx53_dt_board_compat[] __initdata = {
NULL
};
static
void
__init
imx53_timer_init
(
void
)
{
mx53_clocks_init_dt
();
}
DT_MACHINE_START
(
IMX53_DT
,
"Freescale i.MX53 (Device Tree Support)"
)
.
map_io
=
mx53_map_io
,
.
init_early
=
imx53_init_early
,
.
init_irq
=
mx53_init_irq
,
.
handle_irq
=
imx53_handle_irq
,
.
init_time
=
imx53_timer_init
,
.
init_machine
=
imx53_dt_init
,
.
init_late
=
imx53_init_late
,
.
dt_compat
=
imx53_dt_board_compat
,
...
...
arch/arm/mach-imx/mach-imx6q.c
View file @
6886530b
...
...
@@ -11,9 +11,7 @@
*/
#include <linux/clk.h>
#include <linux/clk-provider.h>
#include <linux/clkdev.h>
#include <linux/clocksource.h>
#include <linux/cpu.h>
#include <linux/delay.h>
#include <linux/export.h>
...
...
@@ -192,6 +190,9 @@ static void __init imx6q_1588_init(void)
static
void
__init
imx6q_init_machine
(
void
)
{
imx_print_silicon_rev
(
cpu_is_imx6dl
()
?
"i.MX6DL"
:
"i.MX6Q"
,
imx6q_revision
());
imx6q_enet_phy_init
();
of_platform_populate
(
NULL
,
of_default_bus_match_table
,
NULL
,
NULL
);
...
...
@@ -293,14 +294,6 @@ static void __init imx6q_init_irq(void)
irqchip_init
();
}
static
void
__init
imx6q_timer_init
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
imx_print_silicon_rev
(
cpu_is_imx6dl
()
?
"i.MX6DL"
:
"i.MX6Q"
,
imx6q_revision
());
}
static
const
char
*
imx6q_dt_compat
[]
__initdata
=
{
"fsl,imx6dl"
,
"fsl,imx6q"
,
...
...
@@ -311,7 +304,6 @@ DT_MACHINE_START(IMX6Q, "Freescale i.MX6 Quad/DualLite (Device Tree)")
.
smp
=
smp_ops
(
imx_smp_ops
),
.
map_io
=
imx6q_map_io
,
.
init_irq
=
imx6q_init_irq
,
.
init_time
=
imx6q_timer_init
,
.
init_machine
=
imx6q_init_machine
,
.
init_late
=
imx6q_init_late
,
.
dt_compat
=
imx6q_dt_compat
,
...
...
arch/arm/mach-imx/mach-imx6sl.c
View file @
6886530b
...
...
@@ -7,7 +7,6 @@
*
*/
#include <linux/clk-provider.h>
#include <linux/irqchip.h>
#include <linux/of.h>
#include <linux/of_platform.h>
...
...
@@ -31,11 +30,6 @@ static void __init imx6sl_init_irq(void)
irqchip_init
();
}
static
void
__init
imx6sl_timer_init
(
void
)
{
of_clk_init
(
NULL
);
}
static
const
char
*
imx6sl_dt_compat
[]
__initdata
=
{
"fsl,imx6sl"
,
NULL
,
...
...
@@ -44,7 +38,6 @@ static const char *imx6sl_dt_compat[] __initdata = {
DT_MACHINE_START
(
IMX6SL
,
"Freescale i.MX6 SoloLite (Device Tree)"
)
.
map_io
=
debug_ll_io_init
,
.
init_irq
=
imx6sl_init_irq
,
.
init_time
=
imx6sl_timer_init
,
.
init_machine
=
imx6sl_init_machine
,
.
dt_compat
=
imx6sl_dt_compat
,
.
restart
=
mxc_restart
,
...
...
arch/arm/mach-imx/mach-vf610.c
View file @
6886530b
...
...
@@ -8,9 +8,7 @@
*/
#include <linux/of_platform.h>
#include <linux/clocksource.h>
#include <linux/irqchip.h>
#include <linux/clk-provider.h>
#include <asm/mach/arch.h>
#include <asm/hardware/cache-l2x0.h>
...
...
@@ -28,12 +26,6 @@ static void __init vf610_init_irq(void)
irqchip_init
();
}
static
void
__init
vf610_init_time
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
}
static
const
char
*
vf610_dt_compat
[]
__initdata
=
{
"fsl,vf610"
,
NULL
,
...
...
@@ -41,7 +33,6 @@ static const char *vf610_dt_compat[] __initdata = {
DT_MACHINE_START
(
VYBRID_VF610
,
"Freescale Vybrid VF610 (Device Tree)"
)
.
init_irq
=
vf610_init_irq
,
.
init_time
=
vf610_init_time
,
.
init_machine
=
vf610_init_machine
,
.
dt_compat
=
vf610_dt_compat
,
.
restart
=
mxc_restart
,
...
...
arch/arm/mach-kirkwood/board-dt.c
View file @
6886530b
...
...
@@ -15,7 +15,6 @@
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/clk-provider.h>
#include <linux/clocksource.h>
#include <linux/dma-mapping.h>
#include <linux/irqchip.h>
#include <linux/kexec.h>
...
...
@@ -66,12 +65,6 @@ static void __init kirkwood_legacy_clk_init(void)
clk_prepare_enable
(
clk
);
}
static
void
__init
kirkwood_dt_time_init
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
}
static
void
__init
kirkwood_dt_init_early
(
void
)
{
mvebu_mbus_init
(
"marvell,kirkwood-mbus"
,
...
...
@@ -122,7 +115,6 @@ DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)")
/* Maintainer: Jason Cooper <jason@lakedaemon.net> */
.
map_io
=
kirkwood_map_io
,
.
init_early
=
kirkwood_dt_init_early
,
.
init_time
=
kirkwood_dt_time_init
,
.
init_machine
=
kirkwood_dt_init
,
.
restart
=
kirkwood_restart
,
.
dt_compat
=
kirkwood_dt_board_compat
,
...
...
arch/arm/mach-mxs/mach-mxs.c
View file @
6886530b
...
...
@@ -13,8 +13,6 @@
#include <linux/clk.h>
#include <linux/clk/mxs.h>
#include <linux/clkdev.h>
#include <linux/clocksource.h>
#include <linux/clk-provider.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/gpio.h>
...
...
@@ -490,16 +488,6 @@ static void mxs_restart(enum reboot_mode mode, const char *cmd)
soft_restart
(
0
);
}
static
void
__init
mxs_timer_init
(
void
)
{
if
(
of_machine_is_compatible
(
"fsl,imx23"
))
mx23_clocks_init
();
else
mx28_clocks_init
();
of_clk_init
(
NULL
);
clocksource_of_init
();
}
static
const
char
*
mxs_dt_compat
[]
__initdata
=
{
"fsl,imx28"
,
"fsl,imx23"
,
...
...
@@ -508,7 +496,6 @@ static const char *mxs_dt_compat[] __initdata = {
DT_MACHINE_START
(
MXS
,
"Freescale MXS (Device Tree)"
)
.
handle_irq
=
icoll_handle_irq
,
.
init_time
=
mxs_timer_init
,
.
init_machine
=
mxs_machine_init
,
.
init_late
=
mxs_pm_init
,
.
dt_compat
=
mxs_dt_compat
,
...
...
arch/arm/mach-nomadik/cpu-8815.c
View file @
6886530b
...
...
@@ -25,8 +25,6 @@
#include <linux/slab.h>
#include <linux/irq.h>
#include <linux/dma-mapping.h>
#include <linux/platform_data/clk-nomadik.h>
#include <linux/clocksource.h>
#include <linux/of_irq.h>
#include <linux/of_gpio.h>
#include <linux/of_address.h>
...
...
@@ -113,39 +111,6 @@ static void cpu8815_restart(enum reboot_mode mode, const char *cmd)
writel
(
1
,
srcbase
+
0x18
);
}
/* Initial value for SRC control register: all timers use MXTAL/8 source */
#define SRC_CR_INIT_MASK 0x00007fff
#define SRC_CR_INIT_VAL 0x2aaa8000
static
void
__init
cpu8815_timer_init_of
(
void
)
{
struct
device_node
*
mtu
;
void
__iomem
*
base
;
int
irq
;
u32
src_cr
;
/* We need this to be up now */
nomadik_clk_init
();
mtu
=
of_find_node_by_path
(
"/mtu@101e2000"
);
if
(
!
mtu
)
return
;
base
=
of_iomap
(
mtu
,
0
);
if
(
WARN_ON
(
!
base
))
return
;
irq
=
irq_of_parse_and_map
(
mtu
,
0
);
pr_info
(
"Remapped MTU @ %p, irq: %d
\n
"
,
base
,
irq
);
/* Configure timer sources in "system reset controller" ctrl reg */
src_cr
=
readl
(
base
);
src_cr
&=
SRC_CR_INIT_MASK
;
src_cr
|=
SRC_CR_INIT_VAL
;
writel
(
src_cr
,
base
);
clocksource_of_init
();
}
static
struct
fsmc_nand_timings
cpu8815_nand_timings
=
{
.
thiz
=
0
,
.
thold
=
0x10
,
...
...
@@ -259,7 +224,6 @@ static const char * cpu8815_board_compat[] = {
DT_MACHINE_START
(
NOMADIK_DT
,
"Nomadik STn8815"
)
.
map_io
=
cpu8815_map_io
,
.
init_time
=
cpu8815_timer_init_of
,
.
init_machine
=
cpu8815_init_of
,
.
restart
=
cpu8815_restart
,
.
dt_compat
=
cpu8815_board_compat
,
...
...
arch/arm/mach-nspire/nspire.c
View file @
6886530b
...
...
@@ -14,11 +14,9 @@
#include <linux/of_platform.h>
#include <linux/irqchip.h>
#include <linux/irqchip/arm-vic.h>
#include <linux/clk-provider.h>
#include <linux/clkdev.h>
#include <linux/amba/bus.h>
#include <linux/amba/clcd.h>
#include <linux/clocksource.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
...
...
@@ -65,12 +63,6 @@ static void __init nspire_init(void)
nspire_auxdata
,
NULL
);
}
static
void
__init
nspire_init_time
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
}
static
void
nspire_restart
(
char
mode
,
const
char
*
cmd
)
{
void
__iomem
*
base
=
ioremap
(
NSPIRE_MISC_PHYS_BASE
,
SZ_4K
);
...
...
@@ -83,7 +75,6 @@ static void nspire_restart(char mode, const char *cmd)
DT_MACHINE_START
(
NSPIRE
,
"TI-NSPIRE"
)
.
dt_compat
=
nspire_dt_match
,
.
map_io
=
nspire_map_io
,
.
init_time
=
nspire_init_time
,
.
init_machine
=
nspire_init
,
.
restart
=
nspire_restart
,
MACHINE_END
arch/arm/mach-prima2/common.c
View file @
6886530b
...
...
@@ -6,7 +6,6 @@
* Licensed under GPLv2 or later.
*/
#include <linux/clocksource.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <asm/sizes.h>
...
...
@@ -21,13 +20,6 @@ void __init sirfsoc_init_late(void)
sirfsoc_pm_init
();
}
static
__init
void
sirfsoc_init_time
(
void
)
{
/* initialize clocking early, we want to set the OS timer */
sirfsoc_of_clk_init
();
clocksource_of_init
();
}
static
__init
void
sirfsoc_map_io
(
void
)
{
sirfsoc_map_lluart
();
...
...
@@ -43,7 +35,6 @@ static const char *atlas6_dt_match[] __initdata = {
DT_MACHINE_START
(
ATLAS6_DT
,
"Generic ATLAS6 (Flattened Device Tree)"
)
/* Maintainer: Barry Song <baohua.song@csr.com> */
.
map_io
=
sirfsoc_map_io
,
.
init_time
=
sirfsoc_init_time
,
.
init_late
=
sirfsoc_init_late
,
.
dt_compat
=
atlas6_dt_match
,
.
restart
=
sirfsoc_restart
,
...
...
@@ -59,7 +50,6 @@ static const char *prima2_dt_match[] __initdata = {
DT_MACHINE_START
(
PRIMA2_DT
,
"Generic PRIMA2 (Flattened Device Tree)"
)
/* Maintainer: Barry Song <baohua.song@csr.com> */
.
map_io
=
sirfsoc_map_io
,
.
init_time
=
sirfsoc_init_time
,
.
dma_zone_size
=
SZ_256M
,
.
init_late
=
sirfsoc_init_late
,
.
dt_compat
=
prima2_dt_match
,
...
...
@@ -77,7 +67,6 @@ DT_MACHINE_START(MARCO_DT, "Generic MARCO (Flattened Device Tree)")
/* Maintainer: Barry Song <baohua.song@csr.com> */
.
smp
=
smp_ops
(
sirfsoc_smp_ops
),
.
map_io
=
sirfsoc_map_io
,
.
init_time
=
sirfsoc_init_time
,
.
init_late
=
sirfsoc_init_late
,
.
dt_compat
=
marco_dt_match
,
.
restart
=
sirfsoc_restart
,
...
...
arch/arm/mach-prima2/common.h
View file @
6886530b
...
...
@@ -23,7 +23,6 @@ extern void sirfsoc_secondary_startup(void);
extern
void
sirfsoc_cpu_die
(
unsigned
int
cpu
);
extern
void
__init
sirfsoc_of_irq_init
(
void
);
extern
void
__init
sirfsoc_of_clk_init
(
void
);
extern
void
sirfsoc_restart
(
enum
reboot_mode
,
const
char
*
);
extern
asmlinkage
void
__exception_irq_entry
sirfsoc_handle_irq
(
struct
pt_regs
*
regs
);
...
...
arch/arm/mach-rockchip/rockchip.c
View file @
6886530b
...
...
@@ -19,18 +19,10 @@
#include <linux/init.h>
#include <linux/of_platform.h>
#include <linux/irqchip.h>
#include <linux/dw_apb_timer.h>
#include <linux/clk-provider.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/hardware/cache-l2x0.h>
static
void
__init
rockchip_timer_init
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
}
static
void
__init
rockchip_dt_init
(
void
)
{
l2x0_of_init
(
0
,
~
0UL
);
...
...
@@ -47,6 +39,5 @@ static const char * const rockchip_board_dt_compat[] = {
DT_MACHINE_START
(
ROCKCHIP_DT
,
"Rockchip Cortex-A9 (Device Tree)"
)
.
init_machine
=
rockchip_dt_init
,
.
init_time
=
rockchip_timer_init
,
.
dt_compat
=
rockchip_board_dt_compat
,
MACHINE_END
arch/arm/mach-socfpga/socfpga.c
View file @
6886530b
...
...
@@ -14,7 +14,6 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <linux/clk-provider.h>
#include <linux/irqchip.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
...
...
@@ -107,7 +106,6 @@ static void __init socfpga_cyclone5_init(void)
{
l2x0_of_init
(
0
,
~
0UL
);
of_platform_populate
(
NULL
,
of_default_bus_match_table
,
NULL
,
NULL
);
of_clk_init
(
NULL
);
socfpga_init_clocks
();
}
...
...
arch/arm/mach-sti/board-dt.c
View file @
6886530b
...
...
@@ -7,9 +7,8 @@
* published by the Free Software Foundation.
*/
#include <linux/clk-provider.h>
#include <linux/clocksource.h>
#include <linux/irq.h>
#include <linux/of_platform.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/mach/arch.h>
...
...
@@ -28,11 +27,10 @@ void __init stih41x_l2x0_init(void)
l2x0_of_init
(
aux_ctrl
,
L2X0_AUX_CTRL_MASK
);
}
static
void
__init
stih41x_
timer
_init
(
void
)
static
void
__init
stih41x_
machine
_init
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
stih41x_l2x0_init
();
of_platform_populate
(
NULL
,
of_default_bus_match_table
,
NULL
,
NULL
);
}
static
const
char
*
stih41x_dt_match
[]
__initdata
=
{
...
...
@@ -42,7 +40,7 @@ static const char *stih41x_dt_match[] __initdata = {
};
DT_MACHINE_START
(
STM
,
"STiH415/416 SoC with Flattened Device Tree"
)
.
init_
time
=
stih41x_timer
_init
,
.
init_
machine
=
stih41x_machine
_init
,
.
smp
=
smp_ops
(
sti_smp_ops
),
.
dt_compat
=
stih41x_dt_match
,
MACHINE_END
arch/arm/mach-sunxi/sunxi.c
View file @
6886530b
...
...
@@ -10,7 +10,6 @@
* warranty of any kind, whether express or implied.
*/
#include <linux/clocksource.h>
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/init.h>
...
...
@@ -20,8 +19,6 @@
#include <linux/io.h>
#include <linux/reboot.h>
#include <linux/clk/sunxi.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/system_misc.h>
...
...
@@ -116,12 +113,6 @@ static void sunxi_setup_restart(void)
arm_pm_restart
=
of_id
->
data
;
}
static
void
__init
sunxi_timer_init
(
void
)
{
sunxi_init_clocks
();
clocksource_of_init
();
}
static
void
__init
sunxi_dt_init
(
void
)
{
sunxi_setup_restart
();
...
...
@@ -140,6 +131,5 @@ static const char * const sunxi_board_dt_compat[] = {
DT_MACHINE_START
(
SUNXI_DT
,
"Allwinner A1X (Device Tree)"
)
.
init_machine
=
sunxi_dt_init
,
.
init_time
=
sunxi_timer_init
,
.
dt_compat
=
sunxi_board_dt_compat
,
MACHINE_END
arch/arm/mach-tegra/common.c
View file @
6886530b
...
...
@@ -24,7 +24,6 @@
#include <linux/delay.h>
#include <linux/reboot.h>
#include <linux/irqchip.h>
#include <linux/clk-provider.h>
#include <asm/hardware/cache-l2x0.h>
...
...
@@ -61,8 +60,7 @@ u32 tegra_uart_config[4] = {
#ifdef CONFIG_OF
void
__init
tegra_dt_init_irq
(
void
)
{
of_clk_init
(
NULL
);
tegra_pmc_init
();
tegra_pmc_init_irq
();
tegra_init_irq
();
irqchip_init
();
tegra_legacy_irq_syscore_init
();
...
...
arch/arm/mach-tegra/pmc.c
View file @
6886530b
...
...
@@ -285,13 +285,10 @@ static const struct of_device_id matches[] __initconst = {
{
}
};
static
void
__init
tegra_pmc_parse_dt
(
void
)
void
__init
tegra_pmc_init_irq
(
void
)
{
struct
device_node
*
np
;
u32
prop
;
enum
tegra_suspend_mode
suspend_mode
;
u32
core_good_time
[
2
]
=
{
0
,
0
};
u32
lp0_vec
[
2
]
=
{
0
,
0
};
u32
val
;
np
=
of_find_matching_node
(
NULL
,
matches
);
BUG_ON
(
!
np
);
...
...
@@ -300,6 +297,26 @@ static void __init tegra_pmc_parse_dt(void)
tegra_pmc_invert_interrupt
=
of_property_read_bool
(
np
,
"nvidia,invert-interrupt"
);
val
=
tegra_pmc_readl
(
PMC_CTRL
);
if
(
tegra_pmc_invert_interrupt
)
val
|=
PMC_CTRL_INTR_LOW
;
else
val
&=
~
PMC_CTRL_INTR_LOW
;
tegra_pmc_writel
(
val
,
PMC_CTRL
);
}
void
__init
tegra_pmc_init
(
void
)
{
struct
device_node
*
np
;
u32
prop
;
enum
tegra_suspend_mode
suspend_mode
;
u32
core_good_time
[
2
]
=
{
0
,
0
};
u32
lp0_vec
[
2
]
=
{
0
,
0
};
np
=
of_find_matching_node
(
NULL
,
matches
);
BUG_ON
(
!
np
);
tegra_pclk
=
of_clk_get_by_name
(
np
,
"pclk"
);
WARN_ON
(
IS_ERR
(
tegra_pclk
));
...
...
@@ -365,17 +382,3 @@ static void __init tegra_pmc_parse_dt(void)
pmc_pm_data
.
suspend_mode
=
suspend_mode
;
}
void
__init
tegra_pmc_init
(
void
)
{
u32
val
;
tegra_pmc_parse_dt
();
val
=
tegra_pmc_readl
(
PMC_CTRL
);
if
(
tegra_pmc_invert_interrupt
)
val
|=
PMC_CTRL_INTR_LOW
;
else
val
&=
~
PMC_CTRL_INTR_LOW
;
tegra_pmc_writel
(
val
,
PMC_CTRL
);
}
arch/arm/mach-tegra/pmc.h
View file @
6886530b
...
...
@@ -39,6 +39,7 @@ bool tegra_pmc_cpu_is_powered(int cpuid);
int
tegra_pmc_cpu_power_on
(
int
cpuid
);
int
tegra_pmc_cpu_remove_clamping
(
int
cpuid
);
void
tegra_pmc_init_irq
(
void
);
void
tegra_pmc_init
(
void
);
#endif
arch/arm/mach-tegra/tegra.c
View file @
6886530b
...
...
@@ -16,7 +16,6 @@
*
*/
#include <linux/clocksource.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
...
...
@@ -44,6 +43,7 @@
#include "common.h"
#include "fuse.h"
#include "iomap.h"
#include "pmc.h"
static
void
__init
tegra_dt_init
(
void
)
{
...
...
@@ -51,6 +51,8 @@ static void __init tegra_dt_init(void)
struct
soc_device
*
soc_dev
;
struct
device
*
parent
=
NULL
;
tegra_pmc_init
();
tegra_clocks_apply_init_table
();
soc_dev_attr
=
kzalloc
(
sizeof
(
*
soc_dev_attr
),
GFP_KERNEL
);
...
...
@@ -119,7 +121,6 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)")
.
smp
=
smp_ops
(
tegra_smp_ops
),
.
init_early
=
tegra_init_early
,
.
init_irq
=
tegra_dt_init_irq
,
.
init_time
=
clocksource_of_init
,
.
init_machine
=
tegra_dt_init
,
.
init_late
=
tegra_dt_init_late
,
.
restart
=
tegra_assert_system_reset
,
...
...
arch/arm/mach-vexpress/v2m.c
View file @
6886530b
/*
* Versatile Express V2M Motherboard Support
*/
#include <linux/clocksource.h>
#include <linux/device.h>
#include <linux/amba/bus.h>
#include <linux/amba/mmci.h>
#include <linux/io.h>
#include <linux/clocksource.h>
#include <linux/smp.h>
#include <linux/init.h>
#include <linux/of_address.h>
...
...
@@ -22,7 +20,6 @@
#include <linux/regulator/fixed.h>
#include <linux/regulator/machine.h>
#include <linux/vexpress.h>
#include <linux/clk-provider.h>
#include <linux/clkdev.h>
#include <asm/mach-types.h>
...
...
@@ -422,16 +419,8 @@ void __init v2m_dt_init_early(void)
pr_warning
(
"vexpress: DT HBI (%x) is not matching "
"hardware (%x)!
\n
"
,
dt_hbi
,
hbi
);
}
}
static
void
__init
v2m_dt_timer_init
(
void
)
{
of_clk_init
(
NULL
);
clocksource_of_init
();
versatile_sched_clock_init
(
vexpress_get_24mhz_clock_base
(),
24000000
);
versatile_sched_clock_init
(
vexpress_get_24mhz_clock_base
(),
24000000
);
}
static
const
struct
of_device_id
v2m_dt_bus_match
[]
__initconst
=
{
...
...
@@ -458,6 +447,5 @@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express")
.
smp_init
=
smp_init_ops
(
vexpress_smp_init_ops
),
.
map_io
=
v2m_dt_map_io
,
.
init_early
=
v2m_dt_init_early
,
.
init_time
=
v2m_dt_timer_init
,
.
init_machine
=
v2m_dt_init
,
MACHINE_END
arch/arm/mach-vt8500/common.h
deleted
100644 → 0
View file @
4a10c2ac
/* linux/arch/arm/mach-vt8500/dt_common.h
*
* Copyright (C) 2012 Tony Prisk <linux@prisktech.co.nz>
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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.
*
*/
#ifndef __ARCH_ARM_MACH_VT8500_DT_COMMON_H
#define __ARCH_ARM_MACH_VT8500_DT_COMMON_H
#include <linux/of.h>
/* defined in drivers/clk/clk-vt8500.c */
void
__init
vtwm_clk_init
(
void
__iomem
*
pmc_base
);
#endif
arch/arm/mach-vt8500/vt8500.c
View file @
6886530b
...
...
@@ -18,7 +18,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/clocksource.h>
#include <linux/io.h>
#include <linux/pm.h>
#include <linux/reboot.h>
...
...
@@ -33,8 +32,6 @@
#include <linux/of_irq.h>
#include <linux/of_platform.h>
#include "common.h"
#define LEGACY_GPIO_BASE 0xD8110000
#define LEGACY_PMC_BASE 0xD8130000
...
...
@@ -162,8 +159,6 @@ void __init vt8500_init(void)
else
pr_err
(
"%s: PMC Hibernation register could not be remapped, not enabling power off!
\n
"
,
__func__
);
vtwm_clk_init
(
pmc_base
);
of_platform_populate
(
NULL
,
of_default_bus_match_table
,
NULL
,
NULL
);
}
...
...
@@ -180,7 +175,6 @@ DT_MACHINE_START(WMT_DT, "VIA/Wondermedia SoC (Device Tree Support)")
.
dt_compat
=
vt8500_dt_compat
,
.
map_io
=
vt8500_map_io
,
.
init_machine
=
vt8500_init
,
.
init_time
=
clocksource_of_init
,
.
restart
=
vt8500_restart
,
MACHINE_END
drivers/clk/clk-bcm2835.c
View file @
6886530b
...
...
@@ -20,14 +20,8 @@
#include <linux/clk-provider.h>
#include <linux/clkdev.h>
#include <linux/clk/bcm2835.h>
#include <linux/clk-provider.h>
#include <linux/of.h>
static
const
struct
of_device_id
clk_match
[]
__initconst
=
{
{
.
compatible
=
"fixed-clock"
,
.
data
=
of_fixed_clk_setup
,
},
{
}
};
/*
* These are fixed clocks. They're probably not all root clocks and it may
* be possible to turn them on and off but until this is mapped out better
...
...
@@ -63,6 +57,4 @@ void __init bcm2835_init_clocks(void)
ret
=
clk_register_clkdev
(
clk
,
NULL
,
"20215000.uart"
);
if
(
ret
)
pr_err
(
"uart1_pclk alias not registered
\n
"
);
of_clk_init
(
clk_match
);
}
drivers/clk/clk-highbank.c
View file @
6886530b
...
...
@@ -20,8 +20,7 @@
#include <linux/clk-provider.h>
#include <linux/io.h>
#include <linux/of.h>
extern
void
__iomem
*
sregs_base
;
#include <linux/of_address.h>
#define HB_PLL_LOCK_500 0x20000000
#define HB_PLL_LOCK 0x10000000
...
...
@@ -280,6 +279,7 @@ static __init struct clk *hb_clk_init(struct device_node *node, const struct clk
const
char
*
clk_name
=
node
->
name
;
const
char
*
parent_name
;
struct
clk_init_data
init
;
struct
device_node
*
srnp
;
int
rc
;
rc
=
of_property_read_u32
(
node
,
"reg"
,
&
reg
);
...
...
@@ -290,7 +290,11 @@ static __init struct clk *hb_clk_init(struct device_node *node, const struct clk
if
(
WARN_ON
(
!
hb_clk
))
return
NULL
;
hb_clk
->
reg
=
sregs_base
+
reg
;
/* Map system registers */
srnp
=
of_find_compatible_node
(
NULL
,
NULL
,
"calxeda,hb-sregs"
);
hb_clk
->
reg
=
of_iomap
(
srnp
,
0
);
BUG_ON
(
!
hb_clk
->
reg
);
hb_clk
->
reg
+=
reg
;
of_property_read_string
(
node
,
"clock-output-names"
,
&
clk_name
);
...
...
drivers/clk/clk-nomadik.c
View file @
6886530b
...
...
@@ -27,6 +27,14 @@
*/
#define SRC_CR 0x00U
#define SRC_CR_T0_ENSEL BIT(15)
#define SRC_CR_T1_ENSEL BIT(17)
#define SRC_CR_T2_ENSEL BIT(19)
#define SRC_CR_T3_ENSEL BIT(21)
#define SRC_CR_T4_ENSEL BIT(23)
#define SRC_CR_T5_ENSEL BIT(25)
#define SRC_CR_T6_ENSEL BIT(27)
#define SRC_CR_T7_ENSEL BIT(29)
#define SRC_XTALCR 0x0CU
#define SRC_XTALCR_XTALTIMEN BIT(20)
#define SRC_XTALCR_SXTALDIS BIT(19)
...
...
@@ -54,6 +62,79 @@ static DEFINE_SPINLOCK(src_lock);
/* Base address of the SRC */
static
void
__iomem
*
src_base
;
static
int
nomadik_clk_reboot_handler
(
struct
notifier_block
*
this
,
unsigned
long
code
,
void
*
unused
)
{
u32
val
;
/* The main chrystal need to be enabled for reboot to work */
val
=
readl
(
src_base
+
SRC_XTALCR
);
val
&=
~
SRC_XTALCR_MXTALOVER
;
val
|=
SRC_XTALCR_MXTALEN
;
pr_crit
(
"force-enabling MXTALO
\n
"
);
writel
(
val
,
src_base
+
SRC_XTALCR
);
return
NOTIFY_OK
;
}
static
struct
notifier_block
nomadik_clk_reboot_notifier
=
{
.
notifier_call
=
nomadik_clk_reboot_handler
,
};
static
const
struct
of_device_id
nomadik_src_match
[]
__initconst
=
{
{
.
compatible
=
"stericsson,nomadik-src"
},
{
/* sentinel */
}
};
static
void
nomadik_src_init
(
void
)
{
struct
device_node
*
np
;
u32
val
;
np
=
of_find_matching_node
(
NULL
,
nomadik_src_match
);
if
(
!
np
)
{
pr_crit
(
"no matching node for SRC, aborting clock init
\n
"
);
return
;
}
src_base
=
of_iomap
(
np
,
0
);
if
(
!
src_base
)
{
pr_err
(
"%s: must have src parent node with REGS (%s)
\n
"
,
__func__
,
np
->
name
);
return
;
}
/* Set all timers to use the 2.4 MHz TIMCLK */
val
=
readl
(
src_base
+
SRC_CR
);
val
|=
SRC_CR_T0_ENSEL
;
val
|=
SRC_CR_T1_ENSEL
;
val
|=
SRC_CR_T2_ENSEL
;
val
|=
SRC_CR_T3_ENSEL
;
val
|=
SRC_CR_T4_ENSEL
;
val
|=
SRC_CR_T5_ENSEL
;
val
|=
SRC_CR_T6_ENSEL
;
val
|=
SRC_CR_T7_ENSEL
;
writel
(
val
,
src_base
+
SRC_CR
);
val
=
readl
(
src_base
+
SRC_XTALCR
);
pr_info
(
"SXTALO is %s
\n
"
,
(
val
&
SRC_XTALCR_SXTALDIS
)
?
"disabled"
:
"enabled"
);
pr_info
(
"MXTAL is %s
\n
"
,
(
val
&
SRC_XTALCR_MXTALSTAT
)
?
"enabled"
:
"disabled"
);
if
(
of_property_read_bool
(
np
,
"disable-sxtalo"
))
{
/* The machine uses an external oscillator circuit */
val
|=
SRC_XTALCR_SXTALDIS
;
pr_info
(
"disabling SXTALO
\n
"
);
}
if
(
of_property_read_bool
(
np
,
"disable-mxtalo"
))
{
/* Disable this too: also run by external oscillator */
val
|=
SRC_XTALCR_MXTALOVER
;
val
&=
~
SRC_XTALCR_MXTALEN
;
pr_info
(
"disabling MXTALO
\n
"
);
}
writel
(
val
,
src_base
+
SRC_XTALCR
);
register_reboot_notifier
(
&
nomadik_clk_reboot_notifier
);
}
/**
* struct clk_pll1 - Nomadik PLL1 clock
* @hw: corresponding clock hardware entry
...
...
@@ -431,6 +512,9 @@ static void __init of_nomadik_pll_setup(struct device_node *np)
const
char
*
parent_name
;
u32
pll_id
;
if
(
!
src_base
)
nomadik_src_init
();
if
(
of_property_read_u32
(
np
,
"pll-id"
,
&
pll_id
))
{
pr_err
(
"%s: PLL
\"
%s
\"
missing pll-id property
\n
"
,
__func__
,
clk_name
);
...
...
@@ -441,6 +525,8 @@ static void __init of_nomadik_pll_setup(struct device_node *np)
if
(
!
IS_ERR
(
clk
))
of_clk_add_provider
(
np
,
of_clk_src_simple_get
,
clk
);
}
CLK_OF_DECLARE
(
nomadik_pll_clk
,
"st,nomadik-pll-clock"
,
of_nomadik_pll_setup
);
static
void
__init
of_nomadik_hclk_setup
(
struct
device_node
*
np
)
{
...
...
@@ -448,6 +534,9 @@ static void __init of_nomadik_hclk_setup(struct device_node *np)
const
char
*
clk_name
=
np
->
name
;
const
char
*
parent_name
;
if
(
!
src_base
)
nomadik_src_init
();
parent_name
=
of_clk_get_parent_name
(
np
,
0
);
/*
* The HCLK divides PLL1 with 1 (passthru), 2, 3 or 4.
...
...
@@ -460,6 +549,8 @@ static void __init of_nomadik_hclk_setup(struct device_node *np)
if
(
!
IS_ERR
(
clk
))
of_clk_add_provider
(
np
,
of_clk_src_simple_get
,
clk
);
}
CLK_OF_DECLARE
(
nomadik_hclk_clk
,
"st,nomadik-hclk-clock"
,
of_nomadik_hclk_setup
);
static
void
__init
of_nomadik_src_clk_setup
(
struct
device_node
*
np
)
{
...
...
@@ -468,6 +559,9 @@ static void __init of_nomadik_src_clk_setup(struct device_node *np)
const
char
*
parent_name
;
u32
clk_id
;
if
(
!
src_base
)
nomadik_src_init
();
if
(
of_property_read_u32
(
np
,
"clock-id"
,
&
clk_id
))
{
pr_err
(
"%s: SRC clock
\"
%s
\"
missing clock-id property
\n
"
,
__func__
,
clk_name
);
...
...
@@ -478,89 +572,5 @@ static void __init of_nomadik_src_clk_setup(struct device_node *np)
if
(
!
IS_ERR
(
clk
))
of_clk_add_provider
(
np
,
of_clk_src_simple_get
,
clk
);
}
static
const
struct
of_device_id
nomadik_src_match
[]
__initconst
=
{
{
.
compatible
=
"stericsson,nomadik-src"
},
{
/* sentinel */
}
};
static
const
struct
of_device_id
nomadik_src_clk_match
[]
__initconst
=
{
{
.
compatible
=
"fixed-clock"
,
.
data
=
of_fixed_clk_setup
,
},
{
.
compatible
=
"fixed-factor-clock"
,
.
data
=
of_fixed_factor_clk_setup
,
},
{
.
compatible
=
"st,nomadik-pll-clock"
,
.
data
=
of_nomadik_pll_setup
,
},
{
.
compatible
=
"st,nomadik-hclk-clock"
,
.
data
=
of_nomadik_hclk_setup
,
},
{
.
compatible
=
"st,nomadik-src-clock"
,
.
data
=
of_nomadik_src_clk_setup
,
},
{
/* sentinel */
}
};
static
int
nomadik_clk_reboot_handler
(
struct
notifier_block
*
this
,
unsigned
long
code
,
void
*
unused
)
{
u32
val
;
/* The main chrystal need to be enabled for reboot to work */
val
=
readl
(
src_base
+
SRC_XTALCR
);
val
&=
~
SRC_XTALCR_MXTALOVER
;
val
|=
SRC_XTALCR_MXTALEN
;
pr_crit
(
"force-enabling MXTALO
\n
"
);
writel
(
val
,
src_base
+
SRC_XTALCR
);
return
NOTIFY_OK
;
}
static
struct
notifier_block
nomadik_clk_reboot_notifier
=
{
.
notifier_call
=
nomadik_clk_reboot_handler
,
};
void
__init
nomadik_clk_init
(
void
)
{
struct
device_node
*
np
;
u32
val
;
np
=
of_find_matching_node
(
NULL
,
nomadik_src_match
);
if
(
!
np
)
{
pr_crit
(
"no matching node for SRC, aborting clock init
\n
"
);
return
;
}
src_base
=
of_iomap
(
np
,
0
);
if
(
!
src_base
)
{
pr_err
(
"%s: must have src parent node with REGS (%s)
\n
"
,
__func__
,
np
->
name
);
return
;
}
val
=
readl
(
src_base
+
SRC_XTALCR
);
pr_info
(
"SXTALO is %s
\n
"
,
(
val
&
SRC_XTALCR_SXTALDIS
)
?
"disabled"
:
"enabled"
);
pr_info
(
"MXTAL is %s
\n
"
,
(
val
&
SRC_XTALCR_MXTALSTAT
)
?
"enabled"
:
"disabled"
);
if
(
of_property_read_bool
(
np
,
"disable-sxtalo"
))
{
/* The machine uses an external oscillator circuit */
val
|=
SRC_XTALCR_SXTALDIS
;
pr_info
(
"disabling SXTALO
\n
"
);
}
if
(
of_property_read_bool
(
np
,
"disable-mxtalo"
))
{
/* Disable this too: also run by external oscillator */
val
|=
SRC_XTALCR_MXTALOVER
;
val
&=
~
SRC_XTALCR_MXTALEN
;
pr_info
(
"disabling MXTALO
\n
"
);
}
writel
(
val
,
src_base
+
SRC_XTALCR
);
register_reboot_notifier
(
&
nomadik_clk_reboot_notifier
);
of_clk_init
(
nomadik_src_clk_match
);
}
CLK_OF_DECLARE
(
nomadik_src_clk
,
"st,nomadik-src-clock"
,
of_nomadik_src_clk_setup
);
drivers/clk/clk-prima2.c
View file @
6886530b
...
...
@@ -1015,16 +1015,6 @@ static struct clk_std clk_usb1 = {
},
};
static
struct
of_device_id
clkc_ids
[]
=
{
{
.
compatible
=
"sirf,prima2-clkc"
},
{},
};
static
struct
of_device_id
rsc_ids
[]
=
{
{
.
compatible
=
"sirf,prima2-rsc"
},
{},
};
enum
prima2_clk_index
{
/* 0 1 2 3 4 5 6 7 8 9 */
rtc
,
osc
,
pll1
,
pll2
,
pll3
,
mem
,
sys
,
security
,
dsp
,
gps
,
...
...
@@ -1082,24 +1072,16 @@ static struct clk_hw *prima2_clk_hw_array[maxclk] __initdata = {
static
struct
clk
*
prima2_clks
[
maxclk
];
static
struct
clk_onecell_data
clk_data
;
void
__init
sirfsoc_of_clk_init
(
void
)
static
void
__init
sirfsoc_clk_init
(
struct
device_node
*
np
)
{
struct
device_node
*
np
;
struct
device_node
*
rsc
np
;
int
i
;
np
=
of_find_matching_node
(
NULL
,
rsc_ids
);
if
(
!
np
)
panic
(
"unable to find compatible rsc node in dtb
\n
"
);
sirfsoc_rsc_vbase
=
of_iomap
(
np
,
0
);
rscnp
=
of_find_compatible_node
(
NULL
,
NULL
,
"sirf,prima2-rsc"
);
sirfsoc_rsc_vbase
=
of_iomap
(
rscnp
,
0
);
if
(
!
sirfsoc_rsc_vbase
)
panic
(
"unable to map rsc registers
\n
"
);
of_node_put
(
np
);
np
=
of_find_matching_node
(
NULL
,
clkc_ids
);
if
(
!
np
)
return
;
of_node_put
(
rscnp
);
sirfsoc_clk_vbase
=
of_iomap
(
np
,
0
);
if
(
!
sirfsoc_clk_vbase
)
...
...
@@ -1124,3 +1106,4 @@ void __init sirfsoc_of_clk_init(void)
of_clk_add_provider
(
np
,
of_clk_src_onecell_get
,
&
clk_data
);
}
CLK_OF_DECLARE
(
sirfsoc_clk
,
"sirf,prima2-clkc"
,
sirfsoc_clk_init
);
drivers/clk/clk-vt8500.c
View file @
6886530b
...
...
@@ -15,11 +15,14 @@
#include <linux/io.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/slab.h>
#include <linux/bitops.h>
#include <linux/clkdev.h>
#include <linux/clk-provider.h>
#define LEGACY_PMC_BASE 0xD8130000
/* All clocks share the same lock as none can be changed concurrently */
static
DEFINE_SPINLOCK
(
_lock
);
...
...
@@ -53,6 +56,21 @@ struct clk_pll {
static
void
__iomem
*
pmc_base
;
static
__init
void
vtwm_set_pmc_base
(
void
)
{
struct
device_node
*
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"via,vt8500-pmc"
);
if
(
np
)
pmc_base
=
of_iomap
(
np
,
0
);
else
pmc_base
=
ioremap
(
LEGACY_PMC_BASE
,
0x1000
);
of_node_put
(
np
);
if
(
!
pmc_base
)
pr_err
(
"%s:of_iomap(pmc) failed
\n
"
,
__func__
);
}
#define to_clk_device(_hw) container_of(_hw, struct clk_device, hw)
#define VT8500_PMC_BUSY_MASK 0x18
...
...
@@ -222,6 +240,9 @@ static __init void vtwm_device_clk_init(struct device_node *node)
int
rc
;
int
clk_init_flags
=
0
;
if
(
!
pmc_base
)
vtwm_set_pmc_base
();
dev_clk
=
kzalloc
(
sizeof
(
*
dev_clk
),
GFP_KERNEL
);
if
(
WARN_ON
(
!
dev_clk
))
return
;
...
...
@@ -636,6 +657,9 @@ static __init void vtwm_pll_clk_init(struct device_node *node, int pll_type)
struct
clk_init_data
init
;
int
rc
;
if
(
!
pmc_base
)
vtwm_set_pmc_base
();
rc
=
of_property_read_u32
(
node
,
"reg"
,
&
reg
);
if
(
WARN_ON
(
rc
))
return
;
...
...
@@ -694,13 +718,3 @@ static void __init wm8850_pll_init(struct device_node *node)
vtwm_pll_clk_init
(
node
,
PLL_TYPE_WM8850
);
}
CLK_OF_DECLARE
(
wm8850_pll
,
"wm,wm8850-pll-clock"
,
wm8850_pll_init
);
void
__init
vtwm_clk_init
(
void
__iomem
*
base
)
{
if
(
!
base
)
return
;
pmc_base
=
base
;
of_clk_init
(
NULL
);
}
drivers/clk/mxs/clk-imx23.c
View file @
6886530b
...
...
@@ -12,6 +12,7 @@
#include <linux/clk.h>
#include <linux/clk/mxs.h>
#include <linux/clkdev.h>
#include <linux/clk-provider.h>
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
...
...
@@ -100,16 +101,16 @@ static enum imx23_clk clks_init_on[] __initdata = {
cpu
,
hbus
,
xbus
,
emi
,
uart
,
};
int
__init
mx23_clocks_init
(
void
)
static
void
__init
mx23_clocks_init
(
struct
device_node
*
np
)
{
struct
device_node
*
np
;
struct
device_node
*
dc
np
;
u32
i
;
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,imx23-digctl"
);
digctrl
=
of_iomap
(
np
,
0
);
dc
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,imx23-digctl"
);
digctrl
=
of_iomap
(
dc
np
,
0
);
WARN_ON
(
!
digctrl
);
of_node_put
(
dcnp
);
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,imx23-clkctrl"
);
clkctrl
=
of_iomap
(
np
,
0
);
WARN_ON
(
!
clkctrl
);
...
...
@@ -162,7 +163,7 @@ int __init mx23_clocks_init(void)
if
(
IS_ERR
(
clks
[
i
]))
{
pr_err
(
"i.MX23 clk %d: register failed with %ld
\n
"
,
i
,
PTR_ERR
(
clks
[
i
]));
return
PTR_ERR
(
clks
[
i
])
;
return
;
}
clk_data
.
clks
=
clks
;
...
...
@@ -172,5 +173,5 @@ int __init mx23_clocks_init(void)
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
clks_init_on
);
i
++
)
clk_prepare_enable
(
clks
[
clks_init_on
[
i
]]);
return
0
;
}
CLK_OF_DECLARE
(
imx23_clkctrl
,
"fsl,imx23-clkctrl"
,
mx23_clocks_init
);
drivers/clk/mxs/clk-imx28.c
View file @
6886530b
...
...
@@ -12,6 +12,7 @@
#include <linux/clk.h>
#include <linux/clk/mxs.h>
#include <linux/clkdev.h>
#include <linux/clk-provider.h>
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
...
...
@@ -154,16 +155,16 @@ static enum imx28_clk clks_init_on[] __initdata = {
cpu
,
hbus
,
xbus
,
emi
,
uart
,
};
int
__init
mx28_clocks_init
(
void
)
static
void
__init
mx28_clocks_init
(
struct
device_node
*
np
)
{
struct
device_node
*
np
;
struct
device_node
*
dc
np
;
u32
i
;
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,imx28-digctl"
);
digctrl
=
of_iomap
(
np
,
0
);
dc
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,imx28-digctl"
);
digctrl
=
of_iomap
(
dc
np
,
0
);
WARN_ON
(
!
digctrl
);
of_node_put
(
dcnp
);
np
=
of_find_compatible_node
(
NULL
,
NULL
,
"fsl,imx28-clkctrl"
);
clkctrl
=
of_iomap
(
np
,
0
);
WARN_ON
(
!
clkctrl
);
...
...
@@ -239,7 +240,7 @@ int __init mx28_clocks_init(void)
if
(
IS_ERR
(
clks
[
i
]))
{
pr_err
(
"i.MX28 clk %d: register failed with %ld
\n
"
,
i
,
PTR_ERR
(
clks
[
i
]));
return
PTR_ERR
(
clks
[
i
])
;
return
;
}
clk_data
.
clks
=
clks
;
...
...
@@ -250,6 +251,5 @@ int __init mx28_clocks_init(void)
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
clks_init_on
);
i
++
)
clk_prepare_enable
(
clks
[
clks_init_on
[
i
]]);
return
0
;
}
CLK_OF_DECLARE
(
imx28_clkctrl
,
"fsl,imx28-clkctrl"
,
mx28_clocks_init
);
drivers/clk/sunxi/clk-sunxi.c
View file @
6886530b
...
...
@@ -16,7 +16,6 @@
#include <linux/clk-provider.h>
#include <linux/clkdev.h>
#include <linux/clk/sunxi.h>
#include <linux/of.h>
#include <linux/of_address.h>
...
...
@@ -617,11 +616,8 @@ static void __init of_sunxi_table_clock_setup(const struct of_device_id *clk_mat
}
}
void
__init
sunxi_init_clocks
(
void
)
static
void
__init
sunxi_init_clocks
(
struct
device_node
*
np
)
{
/* Register all the simple and basic clocks on DT */
of_clk_init
(
NULL
);
/* Register factor clocks */
of_sunxi_table_clock_setup
(
clk_factors_match
,
sunxi_factors_clk_setup
);
...
...
@@ -634,3 +630,8 @@ void __init sunxi_init_clocks(void)
/* Register gate clocks */
of_sunxi_table_clock_setup
(
clk_gates_match
,
sunxi_gates_clk_setup
);
}
CLK_OF_DECLARE
(
sun4i_a10_clk_init
,
"allwinner,sun4i-a10"
,
sunxi_init_clocks
);
CLK_OF_DECLARE
(
sun5i_a10s_clk_init
,
"allwinner,sun5i-a10s"
,
sunxi_init_clocks
);
CLK_OF_DECLARE
(
sun5i_a13_clk_init
,
"allwinner,sun5i-a13"
,
sunxi_init_clocks
);
CLK_OF_DECLARE
(
sun6i_a31_clk_init
,
"allwinner,sun6i-a31"
,
sunxi_init_clocks
);
CLK_OF_DECLARE
(
sun7i_a20_clk_init
,
"allwinner,sun7i-a20"
,
sunxi_init_clocks
);
include/linux/clk/mxs.h
View file @
6886530b
...
...
@@ -9,8 +9,6 @@
#ifndef __LINUX_CLK_MXS_H
#define __LINUX_CLK_MXS_H
int
mx23_clocks_init
(
void
);
int
mx28_clocks_init
(
void
);
int
mxs_saif_clkmux_select
(
unsigned
int
clkmux
);
#endif
include/linux/clk/sunxi.h
deleted
100644 → 0
View file @
4a10c2ac
/*
* Copyright 2012 Maxime Ripard
*
* Maxime Ripard <maxime.ripard@free-electrons.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.
*/
#ifndef __LINUX_CLK_SUNXI_H_
#define __LINUX_CLK_SUNXI_H_
void
__init
sunxi_init_clocks
(
void
);
#endif
include/linux/platform_data/clk-nomadik.h
deleted
100644 → 0
View file @
4a10c2ac
/* Minimal platform data header */
void
nomadik_clk_init
(
void
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment