forked from luck/tmp_suning_uos_patched
0ef1594c01
On some revisions of AT91 SoCs, the RTC IMR register is not working. Instead of elaborating a workaround for that specific SoC or IP version, we simply use a software variable to store the Interrupt Mask Register and modify it for each enabling/disabling of an interrupt. The overhead of this is negligible anyway. The interrupt mask register (IMR) for the RTC is broken on the AT91SAM9x5 sub-family of SoCs (good overview of the members here: http://www.eewiki.net/display/linuxonarm/AT91SAM9x5 ). The "user visible effect" is the RTC doesn't work. That sub-family is less than two years old and only has devicetree (DT) support and came online circa lk 3.7 . The dust is yet to settle on the DT stuff at least for AT91 SoCs (translation: lots of stuff is still broken, so much that it is hard to know where to start). The fix in the patch is pretty simple: just shadow the silicon IMR register with a variable in the driver. Some older SoCs (pre-DT) use the the rtc-at91rm9200 driver (e.g. obviously the AT91RM9200) and they should not be impacted by the change. There shouldn't be a large volume of interrupts associated with a RTC. Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> Reported-by: Douglas Gilbert <dgilbert@interlog.com> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Cc: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
class.c | ||
hctosys.c | ||
interface.c | ||
Kconfig | ||
Makefile | ||
rtc-88pm80x.c | ||
rtc-88pm860x.c | ||
rtc-ab3100.c | ||
rtc-ab8500.c | ||
rtc-at32ap700x.c | ||
rtc-at91rm9200.c | ||
rtc-at91rm9200.h | ||
rtc-at91sam9.c | ||
rtc-au1xxx.c | ||
rtc-bfin.c | ||
rtc-bq32k.c | ||
rtc-bq4802.c | ||
rtc-cmos.c | ||
rtc-coh901331.c | ||
rtc-core.h | ||
rtc-da9052.c | ||
rtc-da9055.c | ||
rtc-davinci.c | ||
rtc-dev.c | ||
rtc-dm355evm.c | ||
rtc-ds1216.c | ||
rtc-ds1286.c | ||
rtc-ds1302.c | ||
rtc-ds1305.c | ||
rtc-ds1307.c | ||
rtc-ds1374.c | ||
rtc-ds1390.c | ||
rtc-ds1511.c | ||
rtc-ds1553.c | ||
rtc-ds1672.c | ||
rtc-ds1742.c | ||
rtc-ds2404.c | ||
rtc-ds3232.c | ||
rtc-ds3234.c | ||
rtc-efi.c | ||
rtc-em3027.c | ||
rtc-ep93xx.c | ||
rtc-fm3130.c | ||
rtc-generic.c | ||
rtc-hid-sensor-time.c | ||
rtc-imxdi.c | ||
rtc-isl1208.c | ||
rtc-isl12022.c | ||
rtc-jz4740.c | ||
rtc-lib.c | ||
rtc-lp8788.c | ||
rtc-lpc32xx.c | ||
rtc-ls1x.c | ||
rtc-m41t80.c | ||
rtc-m41t93.c | ||
rtc-m41t94.c | ||
rtc-m48t35.c | ||
rtc-m48t59.c | ||
rtc-m48t86.c | ||
rtc-max6900.c | ||
rtc-max6902.c | ||
rtc-max8907.c | ||
rtc-max8925.c | ||
rtc-max8997.c | ||
rtc-max8998.c | ||
rtc-max77686.c | ||
rtc-mc13xxx.c | ||
rtc-mpc5121.c | ||
rtc-mrst.c | ||
rtc-msm6242.c | ||
rtc-mv.c | ||
rtc-mxc.c | ||
rtc-nuc900.c | ||
rtc-omap.c | ||
rtc-palmas.c | ||
rtc-pcap.c | ||
rtc-pcf2123.c | ||
rtc-pcf8523.c | ||
rtc-pcf8563.c | ||
rtc-pcf8583.c | ||
rtc-pcf50633.c | ||
rtc-pl030.c | ||
rtc-pl031.c | ||
rtc-pm8xxx.c | ||
rtc-proc.c | ||
rtc-ps3.c | ||
rtc-puv3.c | ||
rtc-pxa.c | ||
rtc-r9701.c | ||
rtc-rc5t583.c | ||
rtc-rp5c01.c | ||
rtc-rs5c313.c | ||
rtc-rs5c348.c | ||
rtc-rs5c372.c | ||
rtc-rv3029c2.c | ||
rtc-rx4581.c | ||
rtc-rx8025.c | ||
rtc-rx8581.c | ||
rtc-s3c.c | ||
rtc-s35390a.c | ||
rtc-sa1100.c | ||
rtc-sh.c | ||
rtc-snvs.c | ||
rtc-spear.c | ||
rtc-starfire.c | ||
rtc-stk17ta8.c | ||
rtc-stmp3xxx.c | ||
rtc-sun4v.c | ||
rtc-sysfs.c | ||
rtc-tegra.c | ||
rtc-test.c | ||
rtc-tile.c | ||
rtc-tps6586x.c | ||
rtc-tps65910.c | ||
rtc-tps80031.c | ||
rtc-twl.c | ||
rtc-tx4939.c | ||
rtc-v3020.c | ||
rtc-vr41xx.c | ||
rtc-vt8500.c | ||
rtc-wm831x.c | ||
rtc-wm8350.c | ||
rtc-x1205.c | ||
systohc.c |