linux/arch/mips/mti-malta
James Hogan 106eccb4d2 MIPS: Malta: Don't reinitialise RTC
On Malta, since commit a87ea88d8f ("MIPS: Malta: initialise the RTC at
boot"), the RTC is reinitialised and forced into binary coded decimal
(BCD) mode during init, even if the bootloader has already initialised
it, and may even have already put it into binary mode (as YAMON does).
This corrupts the current time, can result in the RTC seconds being an
invalid BCD (e.g. 0x1a..0x1f) for up to 6 seconds, as well as confusing
YAMON for a while after reset, enough for it to report timeouts when
attempting to load from TFTP (it actually uses the RTC in that code).

Therefore only initialise the RTC to the extent that is necessary so
that Linux avoids interfering with the bootloader setup, while also
allowing it to estimate the CPU frequency without hanging, without a
bootloader necessarily having done anything with the RTC (for example
when the kernel is loaded via EJTAG).

The divider control is configured for a 32KHZ reference clock if
necessary, and the SET bit of the RTC_CONTROL register is cleared if
necessary without changing any other bits (this bit will be set when
coming out of reset if the battery has been disconnected).

Fixes: a87ea88d8f ("MIPS: Malta: initialise the RTC at boot")
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Reviewed-by: Paul Burton <paul.burton@imgtec.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Maciej W. Rozycki <macro@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: <stable@vger.kernel.org> # 3.14+
Patchwork: https://patchwork.linux-mips.org/patch/10739/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2015-08-03 09:25:07 +02:00
..
Makefile MIPS: Malta: Basic DT plumbing 2015-06-21 21:54:29 +02:00
malta-amon.c MIPS: APRP: Choose the correct VPE loader by fixing the linking 2014-03-06 21:20:23 +01:00
malta-display.c MIPS: FW: malta: Code formatting clean-ups. 2013-05-08 12:30:10 +02:00
malta-dt.c MIPS: Malta: Basic DT plumbing 2015-06-21 21:54:29 +02:00
malta-init.c serial: 8250_early: Remove setup_early_serial8250_console() 2015-03-26 17:25:27 +01:00
malta-int.c MIPS: Move gic.h to include/linux/irqchip/mips-gic.h 2014-11-24 07:44:59 +01:00
malta-memory.c Merge branch '4.0-fixes' into mips-for-linux-next 2015-04-13 16:03:32 +02:00
malta-platform.c MIPS: Malta: Remove ttyS2 serial for CMP platforms 2014-01-22 20:18:57 +01:00
malta-pm.c MIPS: Malta: add suspend state entry code 2014-05-30 21:01:09 +02:00
malta-reset.c MIPS: Malta: support powering down 2014-05-30 21:01:09 +02:00
malta-setup.c MIPS: Malta: Basic DT plumbing 2015-06-21 21:54:29 +02:00
malta-time.c MIPS: Malta: Don't reinitialise RTC 2015-08-03 09:25:07 +02:00
Platform KVM/MIPS32: Infrastructure/build files. 2013-05-08 03:55:34 +02:00