linux-uconsole/drivers/rtc
Stephen Warren 0ac9f15fbe rtc: max8907: weekday encoding fixes
commit 75ea799df4 upstream.

The current MAX8907 driver has two issues related to weekday value
handling:

1)

The HW WEEKDAY register has range 0..6 rather than 1..7 as documented.
Note that I validated the actual HW range by observing the HW register
roll from 6->0 rather than 6->7->1 as would otherwise be expected.

This matches Linux's tm_wday range of 0..6.

When the CMOS RAM content is lost, the date returned from the device is
2007-01-01 00:00:00, which is a Monday.  The WEEKDAY register reads 1 in
this case.  This matches the numbering in Linux's tm_wday field.

Hence we should write Linux's tm_wday value to the register without
modifying it.  Hence, remove the +1/-1 calculations for WEEKDAY/tm_wday.

2)

There's no need to make alarms match on the WEEKDAY register, since the
other fields together uniquely define the alarm date/time.  Ignoring the
WEEKDAY value in the match isolates the driver from any incorrect value in
the current time copy of the WEEKDAY register.

Each change individually, or both together, solves an issue that I
observed; "hwclock -r" would time out waiting for its alarm to fire if the
CMOS RAM content had been lost, and hence the WEEKDAY register value
mismatched what the driver expected it to be.  "hwclock -w" would solve
this by over-writing the HW default WEEKDAY register value with what the
driver expected.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-02-06 11:08:15 -08:00
..
class.c drivers/rtc/class.c: use struct device as the first argument for devm_rtc_device_register() 2013-04-29 18:28:22 -07:00
hctosys.c rtc_sysfs_show_hctosys(): display 0 if resume failed 2012-10-06 03:05:04 +09:00
interface.c driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
Kconfig time: Revert ALWAYS_USE_PERSISTENT_CLOCK compile time optimizaitons 2013-05-14 20:54:06 +02:00
Makefile This is the MFD pull request for the 3.9 merge window. 2013-02-24 20:00:58 -08:00
rtc-88pm80x.c drivers/rtc/rtc-88pm80x.c: add CONFIG_PM_SLEEP to suspend/resume functions 2013-04-29 18:28:33 -07:00
rtc-88pm860x.c drivers/rtc/rtc-88pm860x.c: use devm_* APIs 2013-04-29 18:28:35 -07:00
rtc-ab3100.c rtc: rtc-ab3100: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-ab8500.c rtc: rtc-ab8500: use devm_*() functions 2013-04-29 18:28:36 -07:00
rtc-at32ap700x.c drivers/rtc/rtc-at32ap700x.c: use devm_* APIs 2013-04-29 18:28:35 -07:00
rtc-at91rm9200.c drivers/rtc/rtc-at91rm9200.c: correct alarm over day/month wrap 2013-12-20 07:45:09 -08:00
rtc-at91rm9200.h Revert "drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR" 2013-04-05 09:36:53 -07:00
rtc-at91sam9.c rtc: rtc-at91sam9: convert at91_rtc_driver to dev_pm_ops 2013-04-29 18:28:39 -07:00
rtc-au1xxx.c rtc: rtc-au1xxx: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-bfin.c rtc: rtc-bfin: convert bfin_rtc_driver to dev_pm_ops 2013-04-29 18:28:39 -07:00
rtc-bq32k.c rtc: rtc-bq32k: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-bq4802.c rtc: rtc-bq4802: use devm_*() functions 2013-04-29 18:28:36 -07:00
rtc-cmos.c drivers/rtc/rtc-cmos.c: fix accidentally enabling rtc channel 2013-06-12 16:29:45 -07:00
rtc-coh901331.c rtc: rtc-coh901331: convert coh901331_driver to dev_pm_ops 2013-04-29 18:28:39 -07:00
rtc-core.h
rtc-da9052.c rtc: rtc-da9052: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-da9055.c rtc: rtc-da9055: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-davinci.c rtc: rtc-davinci: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-dev.c rtc: use dev_warn()/dev_dbg()/pr_err() instead of printk() 2013-02-21 17:22:29 -08:00
rtc-dm355evm.c rtc: rtc-dm355evm: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-ds1216.c rtc: rtc-ds1216: use devm_*() functions 2013-04-29 18:28:36 -07:00
rtc-ds1286.c rtc: rtc-ds1286: use devm_*() functions 2013-04-29 18:28:36 -07:00
rtc-ds1302.c rtc: rtc-ds1302: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-ds1305.c drivers/rtc/rtc-ds1305.c: use devm_* APIs 2013-04-29 18:28:35 -07:00
rtc-ds1307.c drivers/rtc/rtc-ds1307.c: change sysfs function pointer assignment 2013-04-29 18:28:34 -07:00
rtc-ds1374.c drivers/rtc/rtc-ds1374.c: use devm_* APIs 2013-04-29 18:28:35 -07:00
rtc-ds1390.c rtc: rtc-ds1390: use devm_*() functions 2013-04-29 18:28:37 -07:00
rtc-ds1511.c rtc: rtc-ds1511: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-ds1553.c rtc: rtc-ds1553: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-ds1672.c rtc: rtc-ds1672: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-ds1742.c rtc: rtc-ds1742: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-ds2404.c rtc: rtc-ds2404: use devm_*() functions 2013-04-29 18:28:37 -07:00
rtc-ds3232.c drivers/rtc/rtc-ds3232.c: use devm_* APIs 2013-04-29 18:28:36 -07:00
rtc-ds3234.c rtc: rtc-ds3234: use spi_set_drvdata() 2013-04-29 18:28:34 -07:00
rtc-efi.c rtc: rtc-efi: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-em3027.c rtc: rtc-em3027: use devm_rtc_device_register() 2013-04-29 18:28:29 -07:00
rtc-ep93xx.c rtc: rtc-ep93xx: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-fm3130.c rtc: rtc-fm3130: use devm_*() functions 2013-04-29 18:28:37 -07:00
rtc-generic.c rtc: rtc-generic: use devm_rtc_device_register() 2013-04-29 18:28:30 -07:00
rtc-hid-sensor-time.c rtc: hid-sensor-time: use devm_rtc_device_register() 2013-04-29 18:28:30 -07:00
rtc-imxdi.c rtc: rtc-imxdi: use devm_rtc_device_register() 2013-04-29 18:28:25 -07:00
rtc-isl1208.c drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq handler 2013-02-05 20:38:49 +11:00
rtc-isl12022.c drivers/rtc/rtc-isl12022.c: Remove rtc8564 from isl12022_id 2013-04-29 18:28:40 -07:00
rtc-jz4740.c Drivers: rtc: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
rtc-lib.c rtc: Initialized rtc_time->tm_isdst 2011-08-26 17:26:35 -07:00
rtc-lp8788.c rtc: rtc-lp8788: use devm_rtc_device_register() 2013-04-29 18:28:26 -07:00
rtc-lpc32xx.c rtc: rtc-lpc32xx: use devm_rtc_device_register() 2013-04-29 18:28:26 -07:00
rtc-ls1x.c rtc: rtc-ls1x: use devm_rtc_device_register() 2013-04-29 18:28:30 -07:00
rtc-m41t80.c rtc: rtc-m41t80: use devm_*() functions 2013-04-29 18:28:37 -07:00
rtc-m41t93.c rtc: rtc-m41t93: use spi_set_drvdata() 2013-04-29 18:28:35 -07:00
rtc-m41t94.c rtc: rtc-m41t94: use spi_set_drvdata() 2013-04-29 18:28:34 -07:00
rtc-m48t35.c drivers/rtc/rtc-m48t35.c: use devm_* APIs 2013-04-29 18:28:36 -07:00
rtc-m48t59.c Drivers: rtc: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
rtc-m48t86.c rtc: rtc-m48t86: use devm_rtc_device_register() 2013-04-29 18:28:30 -07:00
rtc-max6900.c rtc: rtc-max6900: use devm_rtc_device_register() 2013-04-29 18:28:30 -07:00
rtc-max6902.c drivers/rtc/rtc-max6902.c: use register defines instead of magic numbers 2013-04-29 18:28:39 -07:00
rtc-max8907.c rtc: max8907: weekday encoding fixes 2014-02-06 11:08:15 -08:00
rtc-max8925.c drivers/rtc/rtc-max8925.c: use devm_* APIs 2013-04-29 18:28:36 -07:00
rtc-max8997.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2013-04-30 09:36:50 -07:00
rtc-max8998.c drivers/rtc/rtc-max8998.c: check for pdata presence before dereferencing 2013-05-24 16:22:53 -07:00
rtc-max77686.c drivers/rtc/rtc-max77686.c: Fix wrong register 2013-09-14 06:54:57 -07:00
rtc-mc13xxx.c rtc: rtc-mc13xxx: use devm_*() functions 2013-04-29 18:28:37 -07:00
rtc-mpc5121.c drivers/rtc: use of_match_ptr() macro 2013-02-21 17:22:27 -08:00
rtc-mrst.c Drivers: rtc: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
rtc-msm6242.c rtc: rtc-msm6242: use devm_*() functions 2013-04-29 18:28:37 -07:00
rtc-mv.c rtc: rtc-mv: use devm_rtc_device_register() 2013-04-29 18:28:26 -07:00
rtc-mxc.c rtc: rtc-mxc: switch to using SIMPLE_DEV_PM_OPS 2013-04-29 18:28:32 -07:00
rtc-nuc900.c drivers/rtc: don't check resource with devm_ioremap_resource 2013-05-18 11:57:07 +02:00
rtc-omap.c drivers/rtc: don't check resource with devm_ioremap_resource 2013-05-18 11:57:07 +02:00
rtc-palmas.c drivers/rtc/rtc-palmas.c: add dt support 2013-04-29 18:28:33 -07:00
rtc-pcap.c rtc: rtc-pcap: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-pcf2123.c drivers/rtc/rtc-pcf2123.c: fix error return code in pcf2123_probe() 2013-04-29 18:28:40 -07:00
rtc-pcf8523.c rtc: rtc-pcf8523: use devm_rtc_device_register() 2013-04-29 18:28:26 -07:00
rtc-pcf8563.c rtc: rtc-pcf8563: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-pcf8583.c rtc: rtc-pcf8583: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-pcf50633.c rtc: rtc-pcf50633: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-pl030.c Merge branch 'amba' of git://git.linaro.org/people/rmk/linux-arm 2012-03-23 17:36:29 -07:00
rtc-pl031.c drivers/rtc/rtc-pl031.c: pass correct pointer to free_irq() 2013-05-24 16:22:52 -07:00
rtc-pm8xxx.c Drivers: rtc: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
rtc-proc.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
rtc-ps3.c rtc: rtc-ps3: use devm_rtc_device_register() 2013-04-29 18:28:30 -07:00
rtc-puv3.c rtc: rtc-puv3: convert puv3_rtc_driver to dev_pm_ops 2013-04-29 18:28:39 -07:00
rtc-pxa.c rtc: rtc-pxa: switch to using SIMPLE_DEV_PM_OPS 2013-04-29 18:28:32 -07:00
rtc-r9701.c rtc: rtc-r9701: use spi_set_drvdata() 2013-04-29 18:28:34 -07:00
rtc-rc5t583.c rtc: rtc-rc5t583: switch to using SIMPLE_DEV_PM_OPS 2013-04-29 18:28:32 -07:00
rtc-rp5c01.c rtc: rtc-rp5c01: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-rs5c313.c rtc: rtc-rs5c313: use devm_rtc_device_register() 2013-04-29 18:28:31 -07:00
rtc-rs5c348.c rtc: rtc-rs5c348: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-rs5c372.c drivers/rtc/rtc-rs5c372.c: add R2221T/L variant to the driver 2013-05-07 18:38:26 -07:00
rtc-rv3029c2.c drivers/rtc/rtc-rv3029c2.c: fix disabling AIE irq 2013-07-21 18:21:28 -07:00
rtc-rx4581.c rtc: rtc-rx4581: use spi_set_drvdata() 2013-04-29 18:28:34 -07:00
rtc-rx8025.c Drivers: rtc: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
rtc-rx8581.c rtc: rtc-rx8581: use devm_rtc_device_register() 2013-04-29 18:28:31 -07:00
rtc-s3c.c drivers/rtc: don't check resource with devm_ioremap_resource 2013-05-18 11:57:07 +02:00
rtc-s3c.h rtc: s3c: make header file local 2013-04-19 13:51:25 +02:00
rtc-s35390a.c rtc: rtc-s35390a: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-sa1100.c rtc: rtc-sa1100: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-sh.c rtc: rtc-sh: switch to using SIMPLE_DEV_PM_OPS 2013-04-29 18:28:32 -07:00
rtc-snvs.c rtc: rtc-snvs: use devm_rtc_device_register() 2013-04-29 18:28:27 -07:00
rtc-spear.c rtc: rtc-spear: convert spear_rtc_driver to dev_pm_ops 2013-04-29 18:28:39 -07:00
rtc-starfire.c rtc: rtc-starfire: use devm_rtc_device_register() 2013-04-29 18:28:31 -07:00
rtc-stk17ta8.c rtc: rtc-stk17ta8: use devm_rtc_device_register() 2013-04-29 18:28:27 -07:00
rtc-stmp3xxx.c ARM: arm-soc cleanup for 3.10 2013-05-02 09:03:55 -07:00
rtc-sun4v.c rtc: rtc-sun4v: use devm_rtc_device_register() 2013-04-29 18:28:31 -07:00
rtc-sysfs.c rtc_sysfs_show_hctosys(): display 0 if resume failed 2012-10-06 03:05:04 +09:00
rtc-tegra.c drivers/rtc: don't check resource with devm_ioremap_resource 2013-05-18 11:57:07 +02:00
rtc-test.c rtc: rtc-test: use devm_rtc_device_register() 2013-04-29 18:28:31 -07:00
rtc-tile.c Merge branch 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2013-05-09 14:34:58 -07:00
rtc-tps6586x.c drivers/rtc/rtc-tps6586x.c: device wakeup flags correction 2013-06-12 16:29:45 -07:00
rtc-tps65910.c drivers/rtc/rtc-tps65910.c: fix incorrect return value on error 2013-04-29 18:28:33 -07:00
rtc-tps80031.c rtc: rtc-tps80031: switch to using SIMPLE_DEV_PM_OPS 2013-04-29 18:28:33 -07:00
rtc-twl.c drivers/rtc/rtc-twl.c: fix missing device_init_wakeup() when booted with device tree 2013-06-12 16:29:45 -07:00
rtc-tx4939.c rtc: rtc-tx4939: use devm_rtc_device_register() 2013-04-29 18:28:27 -07:00
rtc-v3020.c rtc: rtc-v3020: use devm_*() functions 2013-04-29 18:28:39 -07:00
rtc-vr41xx.c rtc: rtc-vr41xx: use dev_info() instead of printk() 2013-02-21 17:22:29 -08:00
rtc-vt8500.c rtc: rtc-vt8500: use devm_rtc_device_register() 2013-04-29 18:28:27 -07:00
rtc-wm831x.c rtc: rtc-wm831x: use devm_rtc_device_register() 2013-04-29 18:28:27 -07:00
rtc-wm8350.c rtc: rtc-wm8350: switch to using SIMPLE_DEV_PM_OPS 2013-04-29 18:28:32 -07:00
rtc-x1205.c rtc: rtc-x1205: use devm_rtc_device_register() 2013-04-29 18:28:32 -07:00
systohc.c NTP: Add a CONFIG_RTC_SYSTOHC configuration 2013-01-15 18:16:06 -08:00