2006-01-09 20:05:41 +03:00
#
# Makefile for the linux kernel.
#
ARM: at91: fix hanged boot due to early rtc-interrupt
Make sure the RTC-interrupts are masked at boot by adding a new helper
function to be used at SOC-init.
This fixes hanged boot on all AT91 SOCs with an RTC (but RM9200), for
example, after a reset during an RTC-update or if an RTC-alarm goes off
after shutdown (e.g. when using RTC wakeup).
The RTC and RTT-peripherals are powered by backup power (VDDBU) (on all
AT91 SOCs but RM9200) and are not reset on wake-up, user, watchdog or
software reset. This means that their interrupts may be enabled during
early boot if, for example, they where not disabled during a previous
shutdown (e.g. due to a buggy driver or a non-clean shutdown such as a
user reset). Furthermore, an RTC or RTT-alarm may also be active.
The RTC and RTT-interrupts use the shared system-interrupt line, which
is also used by the PIT, and if an interrupt occurs before a handler
(e.g. RTC-driver) has been installed this leads to the system interrupt
being disabled and prevents the system from booting.
Note that when boot hangs due to an early RTC or RTT-interrupt, the only
way to get the system to start again is to remove the backup power (e.g.
battery) or to disable the interrupt manually from the bootloader. In
particular, a user reset is not sufficient.
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: stable@vger.kernel.org # 3.11.x
2013-10-16 13:56:14 +04:00
obj-y := irq.o gpio.o setup.o sysirq_mask.o
2006-01-09 20:05:41 +03:00
obj-m :=
obj-n :=
obj- :=
2013-10-11 11:37:46 +04:00
obj-$(CONFIG_OLD_CLK_AT91) += clock.o
2011-11-29 18:01:08 +04:00
obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
2011-11-17 21:41:28 +04:00
obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
2013-03-22 17:24:10 +04:00
obj-$(CONFIG_AT91_SAM9_TIME) += at91sam926x_time.o
obj-$(CONFIG_SOC_AT91SAM9) += sam9_smc.o
2006-06-20 22:30:20 +04:00
2006-06-29 19:06:33 +04:00
# CPU-specific support
2012-04-06 07:51:50 +04:00
obj-$(CONFIG_SOC_AT91RM9200) += at91rm9200.o at91rm9200_time.o
obj-$(CONFIG_SOC_AT91SAM9260) += at91sam9260.o
obj-$(CONFIG_SOC_AT91SAM9261) += at91sam9261.o
obj-$(CONFIG_SOC_AT91SAM9263) += at91sam9263.o
obj-$(CONFIG_SOC_AT91SAM9G45) += at91sam9g45.o
2012-04-17 10:26:31 +04:00
obj-$(CONFIG_SOC_AT91SAM9N12) += at91sam9n12.o
2012-04-06 07:51:50 +04:00
obj-$(CONFIG_SOC_AT91SAM9X5) += at91sam9x5.o
obj-$(CONFIG_SOC_AT91SAM9RL) += at91sam9rl.o
2013-03-22 17:24:12 +04:00
obj-$(CONFIG_SOC_SAMA5D3) += sama5d3.o
2012-04-06 07:51:50 +04:00
obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200_devices.o
obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260_devices.o
obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261_devices.o
obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263_devices.o
obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl_devices.o
obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45_devices.o
2007-07-30 05:39:15 +04:00
obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
2006-06-29 19:06:33 +04:00
2006-11-30 14:27:38 +03:00
# AT91RM9200 board-specific support
2006-06-26 20:48:29 +04:00
obj-$(CONFIG_MACH_ONEARM) += board-1arm.o
2010-11-19 17:34:38 +03:00
obj-$(CONFIG_MACH_AT91RM9200EK) += board-rm9200ek.o
2006-01-10 19:59:29 +03:00
obj-$(CONFIG_MACH_CSB337) += board-csb337.o
obj-$(CONFIG_MACH_CSB637) += board-csb637.o
2006-06-20 22:30:18 +04:00
obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o
obj-$(CONFIG_MACH_KB9200) += board-kb9202.o
obj-$(CONFIG_MACH_ATEB9200) += board-eb9200.o
obj-$(CONFIG_MACH_KAFA) += board-kafa.o
2007-04-02 17:06:29 +04:00
obj-$(CONFIG_MACH_PICOTUX2XX) += board-picotux200.o
2008-04-16 00:10:11 +04:00
obj-$(CONFIG_MACH_ECBAT91) += board-ecbat91.o
2008-05-24 20:06:45 +04:00
obj-$(CONFIG_MACH_YL9200) += board-yl-9200.o
2009-07-30 10:23:42 +04:00
obj-$(CONFIG_MACH_CPUAT91) += board-cpuat91.o
2009-11-03 22:39:02 +03:00
obj-$(CONFIG_MACH_ECO920) += board-eco920.o
2011-08-02 15:28:42 +04:00
obj-$(CONFIG_MACH_RSI_EWS) += board-rsi-ews.o
2006-01-09 20:05:41 +03:00
2006-06-29 19:06:33 +04:00
# AT91SAM9260 board-specific support
2006-12-01 16:37:56 +03:00
obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o
2008-04-16 00:05:03 +04:00
obj-$(CONFIG_MACH_CAM60) += board-cam60.o
2008-04-16 00:07:08 +04:00
obj-$(CONFIG_MACH_SAM9_L9260) += board-sam9-l9260.o
2008-08-03 05:29:48 +04:00
obj-$(CONFIG_MACH_AFEB9260) += board-afeb-9260v1.o
2009-07-30 10:20:03 +04:00
obj-$(CONFIG_MACH_CPU9260) += board-cpu9krea.o
2010-09-15 14:54:49 +04:00
obj-$(CONFIG_MACH_FLEXIBITY) += board-flexibity.o
2006-06-29 19:06:33 +04:00
# AT91SAM9261 board-specific support
2006-12-01 16:38:59 +03:00
obj-$(CONFIG_MACH_AT91SAM9261EK) += board-sam9261ek.o
2009-06-26 18:37:01 +04:00
obj-$(CONFIG_MACH_AT91SAM9G10EK) += board-sam9261ek.o
2006-06-29 19:06:33 +04:00
2007-02-08 12:22:16 +03:00
# AT91SAM9263 board-specific support
obj-$(CONFIG_MACH_AT91SAM9263EK) += board-sam9263ek.o
2007-05-11 22:24:18 +04:00
# AT91SAM9RL board-specific support
obj-$(CONFIG_MACH_AT91SAM9RLEK) += board-sam9rlek.o
2008-07-10 13:15:35 +04:00
# AT91SAM9G20 board-specific support
obj-$(CONFIG_MACH_AT91SAM9G20EK) += board-sam9g20ek.o
2009-07-30 10:20:03 +04:00
obj-$(CONFIG_MACH_CPU9G20) += board-cpu9krea.o
2010-10-14 04:06:26 +04:00
obj-$(CONFIG_MACH_ACMENETUSFOXG20) += board-foxg20.o
2010-04-13 17:55:10 +04:00
obj-$(CONFIG_MACH_STAMP9G20) += board-stamp9g20.o
obj-$(CONFIG_MACH_PORTUXG20) += board-stamp9g20.o
2010-12-09 13:15:59 +03:00
obj-$(CONFIG_MACH_PCONTROL_G20) += board-pcontrol-g20.o board-stamp9g20.o
2011-01-14 21:01:13 +03:00
obj-$(CONFIG_MACH_GSIA18S) += board-gsia18s.o board-stamp9g20.o
2008-07-10 13:15:35 +04:00
2010-07-07 00:48:53 +04:00
# AT91SAM9260/AT91SAM9G20 board-specific support
obj-$(CONFIG_MACH_SNAPPER_9260) += board-snapper9260.o
2009-06-26 18:36:58 +04:00
# AT91SAM9G45 board-specific support
2010-09-22 09:55:59 +04:00
obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o
2009-06-26 18:36:58 +04:00
2011-10-10 20:29:24 +04:00
# AT91SAM board with device-tree
2013-02-19 14:32:09 +04:00
obj-$(CONFIG_MACH_AT91RM9200_DT) += board-dt-rm9200.o
2013-02-19 14:30:29 +04:00
obj-$(CONFIG_MACH_AT91SAM9_DT) += board-dt-sam9.o
2011-10-10 20:29:24 +04:00
2013-03-22 17:24:12 +04:00
# SAMA5 board with device-tree
obj-$(CONFIG_MACH_SAMA5_DT) += board-dt-sama5.o
2008-01-23 11:23:09 +03:00
# AT91X40 board-specific support
obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o
2006-01-09 20:05:41 +03:00
2008-01-23 11:23:09 +03:00
# Drivers
2008-01-23 11:27:06 +03:00
obj-y += leds.o
2006-06-20 22:30:20 +04:00
2008-01-23 11:23:09 +03:00
# Power Management
obj-$(CONFIG_PM) += pm.o
2008-09-22 00:35:18 +04:00
obj-$(CONFIG_AT91_SLOW_CLOCK) += pm_slowclock.o
2006-06-20 22:30:20 +04:00
i f e q ( $( CONFIG_PM_DEBUG ) , y )
CFLAGS_pm.o += -DDEBUG
e n d i f