linux/arch/arm/mach-at91/include/mach
Johan Hovold 6de714c21a 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-11-15 12:13:33 +01:00
..
at91_adc.h iio: at91: Use different prescal, startup mask in MR for different IP 2013-08-29 21:49:28 +01:00
at91_dbgu.h ARM: at91: remove unused dbgu_readl() macro 2013-04-03 11:23:05 +02:00
at91_matrix.h ARM: at91: remove trailing semicolon from macros 2013-04-08 17:47:44 +02:00
at91_pio.h ARM: at91/pio: add new PIO3 features 2012-03-01 13:38:50 +01:00
at91_pmc.h ARM: at91/PMC: fix at91sam9n12 USB FS init 2013-06-26 15:23:18 +02:00
at91_ramc.h ARM: at91/pm_slowclock: add runtime detection of memory contoller 2012-02-23 14:57:56 +01:00
at91_rtt.h
at91_st.h ARM: at91: remove trailing semicolon from macros 2013-04-08 17:47:44 +02:00
at91rm9200_mc.h ARM: at91: make sdram/ddr register base soc independent 2012-02-23 14:57:56 +01:00
at91rm9200_sdramc.h ARM: at91: make sdram/ddr register base soc independent 2012-02-23 14:57:56 +01:00
at91rm9200.h ARM: at91: uncompress: autodetect the uart to use 2012-04-17 11:00:19 +02:00
at91sam9_ddrsdr.h ARM: at91: make sdram/ddr register base soc independent 2012-02-23 14:57:56 +01:00
at91sam9_sdramc.h ARM: at91: make sdram/ddr register base soc independent 2012-02-23 14:57:56 +01:00
at91sam9_smc.h ARM: at91: add accessor to manage SMC 2012-02-13 18:31:36 +01:00
at91sam9g45_matrix.h ARM: at91: make matrix register base soc independent 2012-02-23 09:24:46 +01:00
at91sam9g45.h ARM: AT91SAM9G45: add crypto peripherals 2012-07-11 11:06:16 +08:00
at91sam9n12_matrix.h ARM: at91: Add machine header file for AT91SAM9N12 SoC 2012-04-28 01:39:43 +08:00
at91sam9n12.h ARM: at91: fix hanged boot due to early rtc-interrupt 2013-11-15 12:13:33 +01:00
at91sam9rl_matrix.h ARM: at91: make matrix register base soc independent 2012-02-23 09:24:46 +01:00
at91sam9rl.h ARM: at91: uncompress: autodetect the uart to use 2012-04-17 11:00:19 +02:00
at91sam9x5_matrix.h ARM: at91/at91sam9x5: overall definition 2012-02-03 15:36:38 +01:00
at91sam9x5.h ARM: at91: fix hanged boot due to early rtc-interrupt 2013-11-15 12:13:33 +01:00
at91sam9260_matrix.h ARM: at91: make matrix register base soc independent 2012-02-23 09:24:46 +01:00
at91sam9260.h ARM: at91: uncompress: autodetect the uart to use 2012-04-17 11:00:19 +02:00
at91sam9261_matrix.h ARM: at91: make matrix register base soc independent 2012-02-23 09:24:46 +01:00
at91sam9261.h ARM: at91: uncompress: autodetect the uart to use 2012-04-17 11:00:19 +02:00
at91sam9263_matrix.h ARM: at91: make matrix register base soc independent 2012-02-23 09:24:46 +01:00
at91sam9263.h ARM: at91: uncompress: autodetect the uart to use 2012-04-17 11:00:19 +02:00
at91x40.h ARM: at91/at91x40: remove use of at91_sys_read/write 2012-02-17 17:54:05 +01:00
atmel-mci.h ARM: at91/atmel-mci: remove unused setup_dma_addr() macro 2012-11-16 11:52:36 +01:00
cpu.h ARM: at91: change "Unknown" qualifier SoC subtype handling 2013-04-09 14:26:56 +02:00
debug-macro.S ARM: at91: make DBGU soc independent 2011-11-28 22:50:39 +08:00
gpio.h ARM: at91: add gpio suspend/resume support when using pinctrl 2013-03-14 09:37:42 +01:00
hardware.h ARM: at91: include sama5d3.h into hardware.h 2013-08-22 12:29:39 +02:00
io.h ARM: fix __io macro for PCMCIA 2012-04-05 11:29:55 -07:00
memory.h at91: drop boot_params and PLAT_PHYS_OFFSET 2011-05-25 23:04:35 +08:00
sama5d3.h ARM: at91: fix hanged boot due to early rtc-interrupt 2013-11-15 12:13:33 +01:00
system_rev.h Disintegrate asm/system.h for ARM 2012-03-28 18:30:01 +01:00
timex.h ARM: at91: define CLOCK_TICK_RATE to bogus value except A91X40 2011-11-28 22:50:37 +08:00
uncompress.h ARM: at91: sam9n12: enable kernel uncompress info output 2013-08-22 12:42:03 +02:00