Commit 4693c723 authored by Olof Johansson's avatar Olof Johansson

Merge tag 'at91-drivers2' of git://github.com/at91linux/linux-at91 into next/drivers

Merge " Second drivers series for AT91/3.18" from Nicolas Ferre:

- move of the PIT (basic timer) from mach-at91 to its proper location:
  drivers/clocksource
- big cleanup of this driver along the way

* tag 'at91-drivers2' of git://github.com/at91linux/linux-at91:
  ARM: at91: PIT: Move the driver to drivers/clocksource
  ARM: at91: Give the PIT irq as an argument of at91sam926x_pit_init
  ARM: at91: Convert the boards to the init_time callback
  ARM: at91: soc: Add init_time callback
  ARM: at91: PIT: (Almost) remove the global variables
  ARM: at91: PIT: use request_irq instead of setup_irq
  ARM: at91: PIT: Use pr_fmt
  ARM: at91: PIT: Use consistent exit path in probe
  ARM: at91: dt: Remove init_time definitions
  ARM: at91: PIT: Rework probe functions
  ARM: at91: PIT: Use of_have_populated_dt instead of CONFIG_OF
  ARM: at91: PIT: Use DIV_ROUND_CLOSEST to compute the cycles
  ARM: at91: generic.h: Add include safe guards
  ARM: at91: PIT: Follow the general coding rules
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 2f83c3da b052ff30
...@@ -33,15 +33,11 @@ config OLD_IRQ_AT91 ...@@ -33,15 +33,11 @@ config OLD_IRQ_AT91
select MULTI_IRQ_HANDLER select MULTI_IRQ_HANDLER
select SPARSE_IRQ select SPARSE_IRQ
config AT91_SAM9_TIME
bool
config HAVE_AT91_SMD config HAVE_AT91_SMD
bool bool
config SOC_AT91SAM9 config SOC_AT91SAM9
bool bool
select AT91_SAM9_TIME
select ATMEL_AIC_IRQ if !OLD_IRQ_AT91 select ATMEL_AIC_IRQ if !OLD_IRQ_AT91
select CPU_ARM926T select CPU_ARM926T
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
...@@ -50,7 +46,6 @@ config SOC_AT91SAM9 ...@@ -50,7 +46,6 @@ config SOC_AT91SAM9
config SOC_SAMA5 config SOC_SAMA5
bool bool
select AT91_SAM9_TIME
select ATMEL_AIC5_IRQ select ATMEL_AIC5_IRQ
select CPU_V7 select CPU_V7
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
......
...@@ -9,7 +9,6 @@ obj- := ...@@ -9,7 +9,6 @@ obj- :=
obj-$(CONFIG_OLD_IRQ_AT91) += irq.o obj-$(CONFIG_OLD_IRQ_AT91) += irq.o
obj-$(CONFIG_OLD_CLK_AT91) += clock.o obj-$(CONFIG_OLD_CLK_AT91) += clock.o
obj-$(CONFIG_AT91_SAM9_TIME) += at91sam926x_time.o
obj-$(CONFIG_SOC_AT91SAM9) += sam9_smc.o obj-$(CONFIG_SOC_AT91SAM9) += sam9_smc.o
# CPU-specific support # CPU-specific support
......
...@@ -440,6 +440,11 @@ static unsigned int at91sam9260_default_irq_priority[NR_AIC_IRQS] __initdata = { ...@@ -440,6 +440,11 @@ static unsigned int at91sam9260_default_irq_priority[NR_AIC_IRQS] __initdata = {
0, /* Advanced Interrupt Controller */ 0, /* Advanced Interrupt Controller */
}; };
static void __init at91sam9260_init_time(void)
{
at91sam926x_pit_init(NR_IRQS_LEGACY + AT91_ID_SYS);
}
AT91_SOC_START(at91sam9260) AT91_SOC_START(at91sam9260)
.map_io = at91sam9260_map_io, .map_io = at91sam9260_map_io,
.default_irq_priority = at91sam9260_default_irq_priority, .default_irq_priority = at91sam9260_default_irq_priority,
...@@ -449,4 +454,5 @@ AT91_SOC_START(at91sam9260) ...@@ -449,4 +454,5 @@ AT91_SOC_START(at91sam9260)
.register_clocks = at91sam9260_register_clocks, .register_clocks = at91sam9260_register_clocks,
.register_devices = at91sam9260_register_devices, .register_devices = at91sam9260_register_devices,
.init = at91sam9260_initialize, .init = at91sam9260_initialize,
.init_time = at91sam9260_init_time,
AT91_SOC_END AT91_SOC_END
...@@ -399,6 +399,11 @@ static unsigned int at91sam9261_default_irq_priority[NR_AIC_IRQS] __initdata = { ...@@ -399,6 +399,11 @@ static unsigned int at91sam9261_default_irq_priority[NR_AIC_IRQS] __initdata = {
0, /* Advanced Interrupt Controller */ 0, /* Advanced Interrupt Controller */
}; };
static void __init at91sam9261_init_time(void)
{
at91sam926x_pit_init(NR_IRQS_LEGACY + AT91_ID_SYS);
}
AT91_SOC_START(at91sam9261) AT91_SOC_START(at91sam9261)
.map_io = at91sam9261_map_io, .map_io = at91sam9261_map_io,
.default_irq_priority = at91sam9261_default_irq_priority, .default_irq_priority = at91sam9261_default_irq_priority,
...@@ -408,4 +413,5 @@ AT91_SOC_START(at91sam9261) ...@@ -408,4 +413,5 @@ AT91_SOC_START(at91sam9261)
.register_clocks = at91sam9261_register_clocks, .register_clocks = at91sam9261_register_clocks,
.register_devices = at91sam9261_register_devices, .register_devices = at91sam9261_register_devices,
.init = at91sam9261_initialize, .init = at91sam9261_initialize,
.init_time = at91sam9261_init_time,
AT91_SOC_END AT91_SOC_END
...@@ -422,6 +422,11 @@ static unsigned int at91sam9263_default_irq_priority[NR_AIC_IRQS] __initdata = { ...@@ -422,6 +422,11 @@ static unsigned int at91sam9263_default_irq_priority[NR_AIC_IRQS] __initdata = {
0, /* Advanced Interrupt Controller (IRQ1) */ 0, /* Advanced Interrupt Controller (IRQ1) */
}; };
static void __init at91sam9263_init_time(void)
{
at91sam926x_pit_init(NR_IRQS_LEGACY + AT91_ID_SYS);
}
AT91_SOC_START(at91sam9263) AT91_SOC_START(at91sam9263)
.map_io = at91sam9263_map_io, .map_io = at91sam9263_map_io,
.default_irq_priority = at91sam9263_default_irq_priority, .default_irq_priority = at91sam9263_default_irq_priority,
...@@ -430,4 +435,5 @@ AT91_SOC_START(at91sam9263) ...@@ -430,4 +435,5 @@ AT91_SOC_START(at91sam9263)
.register_clocks = at91sam9263_register_clocks, .register_clocks = at91sam9263_register_clocks,
.register_devices = at91sam9263_register_devices, .register_devices = at91sam9263_register_devices,
.init = at91sam9263_initialize, .init = at91sam9263_initialize,
.init_time = at91sam9263_init_time,
AT91_SOC_END AT91_SOC_END
...@@ -477,6 +477,11 @@ static unsigned int at91sam9g45_default_irq_priority[NR_AIC_IRQS] __initdata = { ...@@ -477,6 +477,11 @@ static unsigned int at91sam9g45_default_irq_priority[NR_AIC_IRQS] __initdata = {
0, /* Advanced Interrupt Controller (IRQ0) */ 0, /* Advanced Interrupt Controller (IRQ0) */
}; };
static void __init at91sam9g45_init_time(void)
{
at91sam926x_pit_init(NR_IRQS_LEGACY + AT91_ID_SYS);
}
AT91_SOC_START(at91sam9g45) AT91_SOC_START(at91sam9g45)
.map_io = at91sam9g45_map_io, .map_io = at91sam9g45_map_io,
.default_irq_priority = at91sam9g45_default_irq_priority, .default_irq_priority = at91sam9g45_default_irq_priority,
...@@ -485,4 +490,5 @@ AT91_SOC_START(at91sam9g45) ...@@ -485,4 +490,5 @@ AT91_SOC_START(at91sam9g45)
.register_clocks = at91sam9g45_register_clocks, .register_clocks = at91sam9g45_register_clocks,
.register_devices = at91sam9g45_register_devices, .register_devices = at91sam9g45_register_devices,
.init = at91sam9g45_initialize, .init = at91sam9g45_initialize,
.init_time = at91sam9g45_init_time,
AT91_SOC_END AT91_SOC_END
...@@ -410,6 +410,11 @@ static unsigned int at91sam9rl_default_irq_priority[NR_AIC_IRQS] __initdata = { ...@@ -410,6 +410,11 @@ static unsigned int at91sam9rl_default_irq_priority[NR_AIC_IRQS] __initdata = {
0, /* Advanced Interrupt Controller */ 0, /* Advanced Interrupt Controller */
}; };
static void __init at91sam9rl_init_time(void)
{
at91sam926x_pit_init(NR_IRQS_LEGACY + AT91_ID_SYS);
}
AT91_SOC_START(at91sam9rl) AT91_SOC_START(at91sam9rl)
.map_io = at91sam9rl_map_io, .map_io = at91sam9rl_map_io,
.default_irq_priority = at91sam9rl_default_irq_priority, .default_irq_priority = at91sam9rl_default_irq_priority,
...@@ -420,4 +425,5 @@ AT91_SOC_START(at91sam9rl) ...@@ -420,4 +425,5 @@ AT91_SOC_START(at91sam9rl)
#endif #endif
.register_devices = at91sam9rl_register_devices, .register_devices = at91sam9rl_register_devices,
.init = at91sam9rl_initialize, .init = at91sam9rl_initialize,
.init_time = at91sam9rl_init_time,
AT91_SOC_END AT91_SOC_END
...@@ -213,7 +213,7 @@ static void __init afeb9260_board_init(void) ...@@ -213,7 +213,7 @@ static void __init afeb9260_board_init(void)
MACHINE_START(AFEB9260, "Custom afeb9260 board") MACHINE_START(AFEB9260, "Custom afeb9260 board")
/* Maintainer: Sergey Lapin <slapin@ossfans.org> */ /* Maintainer: Sergey Lapin <slapin@ossfans.org> */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = afeb9260_init_early, .init_early = afeb9260_init_early,
......
...@@ -190,7 +190,7 @@ static void __init cam60_board_init(void) ...@@ -190,7 +190,7 @@ static void __init cam60_board_init(void)
MACHINE_START(CAM60, "KwikByte CAM60") MACHINE_START(CAM60, "KwikByte CAM60")
/* Maintainer: KwikByte */ /* Maintainer: KwikByte */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cam60_init_early, .init_early = cam60_init_early,
......
...@@ -377,7 +377,7 @@ MACHINE_START(CPUAT9260, "Eukrea CPU9260") ...@@ -377,7 +377,7 @@ MACHINE_START(CPUAT9260, "Eukrea CPU9260")
MACHINE_START(CPUAT9G20, "Eukrea CPU9G20") MACHINE_START(CPUAT9G20, "Eukrea CPU9G20")
#endif #endif
/* Maintainer: Eric Benard - EUKREA Electromatique */ /* Maintainer: Eric Benard - EUKREA Electromatique */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = cpu9krea_init_early, .init_early = cpu9krea_init_early,
......
...@@ -25,15 +25,6 @@ ...@@ -25,15 +25,6 @@
#include "board.h" #include "board.h"
#include "generic.h" #include "generic.h"
static void __init sam9_dt_timer_init(void)
{
#if defined(CONFIG_COMMON_CLK)
of_clk_init(NULL);
#endif
at91sam926x_pit_init();
}
static const char *at91_dt_board_compat[] __initdata = { static const char *at91_dt_board_compat[] __initdata = {
"atmel,at91sam9", "atmel,at91sam9",
NULL NULL
...@@ -41,7 +32,6 @@ static const char *at91_dt_board_compat[] __initdata = { ...@@ -41,7 +32,6 @@ static const char *at91_dt_board_compat[] __initdata = {
DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)") DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = sam9_dt_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.init_early = at91_dt_initialize, .init_early = at91_dt_initialize,
.dt_compat = at91_dt_board_compat, .dt_compat = at91_dt_board_compat,
......
...@@ -27,14 +27,6 @@ ...@@ -27,14 +27,6 @@
#include "at91_aic.h" #include "at91_aic.h"
#include "generic.h" #include "generic.h"
static void __init sama5_dt_timer_init(void)
{
#if defined(CONFIG_COMMON_CLK)
of_clk_init(NULL);
#endif
at91sam926x_pit_init();
}
static int ksz9021rn_phy_fixup(struct phy_device *phy) static int ksz9021rn_phy_fixup(struct phy_device *phy)
{ {
int value; int value;
...@@ -69,7 +61,6 @@ static const char *sama5_dt_board_compat[] __initdata = { ...@@ -69,7 +61,6 @@ static const char *sama5_dt_board_compat[] __initdata = {
DT_MACHINE_START(sama5_dt, "Atmel SAMA5 (Device Tree)") DT_MACHINE_START(sama5_dt, "Atmel SAMA5 (Device Tree)")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = sama5_dt_timer_init,
.map_io = at91_map_io, .map_io = at91_map_io,
.init_early = at91_dt_initialize, .init_early = at91_dt_initialize,
.init_machine = sama5_dt_device_init, .init_machine = sama5_dt_device_init,
......
...@@ -162,7 +162,7 @@ static void __init flexibity_board_init(void) ...@@ -162,7 +162,7 @@ static void __init flexibity_board_init(void)
MACHINE_START(FLEXIBITY, "Flexibity Connect") MACHINE_START(FLEXIBITY, "Flexibity Connect")
/* Maintainer: Maxim Osipov */ /* Maintainer: Maxim Osipov */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = flexibity_init_early, .init_early = flexibity_init_early,
......
...@@ -263,7 +263,7 @@ static void __init foxg20_board_init(void) ...@@ -263,7 +263,7 @@ static void __init foxg20_board_init(void)
MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20") MACHINE_START(ACMENETUSFOXG20, "Acme Systems srl FOX Board G20")
/* Maintainer: Sergio Tanzilli */ /* Maintainer: Sergio Tanzilli */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = foxg20_init_early, .init_early = foxg20_init_early,
......
...@@ -576,7 +576,7 @@ static void __init gsia18s_board_init(void) ...@@ -576,7 +576,7 @@ static void __init gsia18s_board_init(void)
} }
MACHINE_START(GSIA18S, "GS_IA18_S") MACHINE_START(GSIA18S, "GS_IA18_S")
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = gsia18s_init_early, .init_early = gsia18s_init_early,
......
...@@ -219,7 +219,7 @@ static void __init pcontrol_g20_board_init(void) ...@@ -219,7 +219,7 @@ static void __init pcontrol_g20_board_init(void)
MACHINE_START(PCONTROL_G20, "PControl G20") MACHINE_START(PCONTROL_G20, "PControl G20")
/* Maintainer: pgsellmann@portner-elektronik.at */ /* Maintainer: pgsellmann@portner-elektronik.at */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = pcontrol_g20_init_early, .init_early = pcontrol_g20_init_early,
......
...@@ -221,7 +221,7 @@ static void __init ek_board_init(void) ...@@ -221,7 +221,7 @@ static void __init ek_board_init(void)
MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260") MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260")
/* Maintainer: Olimex */ /* Maintainer: Olimex */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -345,7 +345,7 @@ static void __init ek_board_init(void) ...@@ -345,7 +345,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -604,7 +604,7 @@ static void __init ek_board_init(void) ...@@ -604,7 +604,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK") MACHINE_START(AT91SAM9261EK, "Atmel AT91SAM9261-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
...@@ -614,7 +614,7 @@ MACHINE_END ...@@ -614,7 +614,7 @@ MACHINE_END
MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK") MACHINE_START(AT91SAM9G10EK, "Atmel AT91SAM9G10-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -484,7 +484,7 @@ static void __init ek_board_init(void) ...@@ -484,7 +484,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK") MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -410,7 +410,7 @@ static void __init ek_board_init(void) ...@@ -410,7 +410,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK") MACHINE_START(AT91SAM9G20EK, "Atmel AT91SAM9G20-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
...@@ -420,7 +420,7 @@ MACHINE_END ...@@ -420,7 +420,7 @@ MACHINE_END
MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod") MACHINE_START(AT91SAM9G20EK_2MMC, "Atmel AT91SAM9G20-EK 2 MMC Slot Mod")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -518,7 +518,7 @@ static void __init ek_board_init(void) ...@@ -518,7 +518,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK") MACHINE_START(AT91SAM9M10G45EK, "Atmel AT91SAM9M10G45-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -324,7 +324,7 @@ static void __init ek_board_init(void) ...@@ -324,7 +324,7 @@ static void __init ek_board_init(void)
MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK") MACHINE_START(AT91SAM9RLEK, "Atmel AT91SAM9RL-EK")
/* Maintainer: Atmel */ /* Maintainer: Atmel */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = ek_init_early, .init_early = ek_init_early,
......
...@@ -180,7 +180,7 @@ static void __init snapper9260_board_init(void) ...@@ -180,7 +180,7 @@ static void __init snapper9260_board_init(void)
} }
MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module") MACHINE_START(SNAPPER_9260, "Bluewater Systems Snapper 9260/9G20 module")
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = snapper9260_init_early, .init_early = snapper9260_init_early,
......
...@@ -275,7 +275,7 @@ static void __init stamp9g20evb_board_init(void) ...@@ -275,7 +275,7 @@ static void __init stamp9g20evb_board_init(void)
MACHINE_START(PORTUXG20, "taskit PortuxG20") MACHINE_START(PORTUXG20, "taskit PortuxG20")
/* Maintainer: taskit GmbH */ /* Maintainer: taskit GmbH */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = stamp9g20_init_early, .init_early = stamp9g20_init_early,
...@@ -285,7 +285,7 @@ MACHINE_END ...@@ -285,7 +285,7 @@ MACHINE_END
MACHINE_START(STAMP9G20, "taskit Stamp9G20") MACHINE_START(STAMP9G20, "taskit Stamp9G20")
/* Maintainer: taskit GmbH */ /* Maintainer: taskit GmbH */
.init_time = at91sam926x_pit_init, .init_time = at91_init_time,
.map_io = at91_map_io, .map_io = at91_map_io,
.handle_irq = at91_aic_handle_irq, .handle_irq = at91_aic_handle_irq,
.init_early = stamp9g20_init_early, .init_early = stamp9g20_init_early,
......
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#ifndef _AT91_GENERIC_H
#define _AT91_GENERIC_H
#include <linux/clkdev.h> #include <linux/clkdev.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/reboot.h> #include <linux/reboot.h>
...@@ -41,10 +44,11 @@ extern void __init at91_sysirq_mask_rtt(u32 rtt_base); ...@@ -41,10 +44,11 @@ extern void __init at91_sysirq_mask_rtt(u32 rtt_base);
extern void __init at91_register_devices(void); extern void __init at91_register_devices(void);
/* Timer */ /* Timer */
extern void __init at91_init_time(void);
extern void at91rm9200_ioremap_st(u32 addr); extern void at91rm9200_ioremap_st(u32 addr);
extern void at91rm9200_timer_init(void); extern void at91rm9200_timer_init(void);
extern void at91sam926x_ioremap_pit(u32 addr); extern void at91sam926x_ioremap_pit(u32 addr);
extern void at91sam926x_pit_init(void); extern void at91sam926x_pit_init(int irq);
extern void at91x40_timer_init(void); extern void at91x40_timer_init(void);
/* Clocks */ /* Clocks */
...@@ -84,3 +88,5 @@ extern int __init at91_gpio_of_irq_setup(struct device_node *node, ...@@ -84,3 +88,5 @@ extern int __init at91_gpio_of_irq_setup(struct device_node *node,
struct device_node *parent); struct device_node *parent);
extern u32 at91_get_extern_irq(void); extern u32 at91_get_extern_irq(void);
#endif /* _AT91_GENERIC_H */
...@@ -416,3 +416,8 @@ void __init at91_register_devices(void) ...@@ -416,3 +416,8 @@ void __init at91_register_devices(void)
{ {
at91_boot_soc.register_devices(); at91_boot_soc.register_devices();
} }
void __init at91_init_time(void)
{
at91_boot_soc.init_time();
}
...@@ -13,6 +13,7 @@ struct at91_init_soc { ...@@ -13,6 +13,7 @@ struct at91_init_soc {
void (*register_clocks)(void); void (*register_clocks)(void);
void (*register_devices)(void); void (*register_devices)(void);
void (*init)(void); void (*init)(void);
void (*init_time)(void);
}; };
extern struct at91_init_soc at91_boot_soc; extern struct at91_init_soc at91_boot_soc;
......
...@@ -120,6 +120,10 @@ config CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK ...@@ -120,6 +120,10 @@ config CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
help help
Use ARM global timer clock source as sched_clock Use ARM global timer clock source as sched_clock
config ATMEL_PIT
select CLKSRC_OF if OF
def_bool SOC_AT91SAM9 || SOC_SAMA5
config CLKSRC_METAG_GENERIC config CLKSRC_METAG_GENERIC
def_bool y if METAG def_bool y if METAG
help help
......
obj-$(CONFIG_CLKSRC_OF) += clksrc-of.o obj-$(CONFIG_CLKSRC_OF) += clksrc-of.o
obj-$(CONFIG_ATMEL_PIT) += timer-atmel-pit.o
obj-$(CONFIG_ATMEL_TCB_CLKSRC) += tcb_clksrc.o obj-$(CONFIG_ATMEL_TCB_CLKSRC) += tcb_clksrc.o
obj-$(CONFIG_X86_PM_TIMER) += acpi_pm.o obj-$(CONFIG_X86_PM_TIMER) += acpi_pm.o
obj-$(CONFIG_SCx200HR_TIMER) += scx200_hrt.o obj-$(CONFIG_SCx200HR_TIMER) += scx200_hrt.o
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment