summaryrefslogtreecommitdiffstats
path: root/drivers
AgeCommit message (Collapse)AuthorFilesLines
2019-04-16rtc: mc13xxx: set rangeAlexandre Belloni1-2/+10
All supported PMICs have a 15 bits days counter and hours, minutes, seconds Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-16rtc: ds1685: use threaded interruptThomas Bogendoerfer1-116/+104
Handling of extended interrupts (kickstart, wake-up, ram-clear) was moved off to a work queue, but the interrupts aren't acknowledged in the interrupt handler. This leads to a deadlock, if driver is used with interrupts. To fix this we use a threaded interrupt, get rid of the work queue and do locking with just the rtc mutex lock. Fixes: aaaf5fbf56f1 ("rtc: add driver for DS1685 family of real time clocks") Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-16rtc: ds1685: remove dead codeThomas Bogendoerfer1-36/+0
ds1685_rtc_begin_ctrl_access/ds1685_rtc_end_ctrl_access aren't used, so get rid of it. Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-12rtc: ds1685: fix crash caused by referencing wrong device structThomas Bogendoerfer1-3/+3
sysfs entries added by rtc_add_group are called with the rtc device as argument and not the underlying device. Fixed by using the dev->parent Fixes: cfb74916e2ec ("rtc: ds1685: use rtc_add_group") Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-12rtc: lpc32xx: convert to SPDX identifierAlexandre Belloni1-9/+1
Use SPDX-License-Identifier instead of a verbose license text. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-12rtc: lpc32xx: use .set_timeAlexandre Belloni1-2/+3
Use .set_time instead of the deprecated .set_mmss. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-12rtc: lpc32xx: switch to rtc_time64_to_tm/rtc_tm_to_time64Alexandre Belloni1-8/+3
Call the 64bit versions of rtc_tm time conversion now that the range is enforced by the core. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-12rtc: lpc32xx: simplify IRQ setupAlexandre Belloni1-10/+5
Move the optional IRQ setup to a single location. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-12rtc: lpc32xx: set rangeAlexandre Belloni1-0/+1
The LPC32xx RTC is a 32bit second counter. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-12rtc: lpc32xx: convert to devm_rtc_allocate_deviceAlexandre Belloni1-9/+10
This allows further improvement of the driver. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: mxc_v2: use dev_pm_set_wake_irq() to simplify codeAnson Huang1-25/+4
With calling dev_pm_set_wake_irq() to set MXC_V2 RTC as wakeup source for suspend, generic wake irq mechanism will automatically enable it as wakeup source when suspend, then the suspend/resume callback which are ONLY for enabling/disabling irq wake can be removed, it simplifies the code. Signed-off-by: Anson Huang <Anson.Huang@nxp.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: mxc: use dev_pm_set_wake_irq() to simplify codeAnson Huang1-26/+6
With calling dev_pm_set_wake_irq() to set MXC RTC as wakeup source for suspend, generic wake irq mechanism will automatically enable it as wakeup source when suspend, then the suspend/resume callback which are ONLY for enabling/disabling irq wake can be removed, it simplifies the code. Signed-off-by: Anson Huang <Anson.Huang@nxp.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: rx8025: Fix a parameter to %ptR in rx8025_read_alarm()Andy Shevchenko1-1/+1
The commit 1921cab11723 ("rtc: rx8025: Switch to use %ptR") converted the driver to use new %p extension, but actually used wrong type of the parameter in one case. Fix a parameter to %ptR in rx8025_read_alarm(). Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: sirfsoc: Make sysrtc_regmap_config staticYueHaibing1-1/+1
Fix sparse warning: drivers/rtc/rtc-sirfsoc.c:282:28: warning: symbol 'sysrtc_regmap_config' was not declared. Should it be static? Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: YueHaibing <yuehaibing@huawei.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: ab3100: convert to SPDX identifierAlexandre Belloni1-1/+1
Use SPDX-License-Identifier instead of the custom license line. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: ab3100: use .set_timeAlexandre Belloni1-3/+3
Use .set_time instead of the deprecated .set_mmss64. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: ab3100: set rangeAlexandre Belloni1-7/+9
The ab3100 has a 48bit counter running at 65536 Hz (despite one of the comment). The max value is then (2^48 - 1)/2^16 == 2^32 - 1. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: pcf85363: convert to SPDX identifierAlexandre Belloni1-6/+1
Use SPDX-License-Identifier instead of a verbose license text. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: pcf85363: remove useless forward declarationAlexandre Belloni1-2/+0
It is not necessary to forward declare pcf85363_driver as it is not used before being declared. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: pcf85363: remove bogus i2c functionality checkAlexandre Belloni1-3/+0
regmap is abstracting the i2c functionalities the best it can, there is no need to check. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: pcf85363: set rangeAlexandre Belloni1-0/+2
This is a standard BCD RTC that will fail in 2100. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: pcf85363: remove unused struct pcf85363 memberAlexandre Belloni1-4/+2
pcf85363->dev is unused, remove it. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: stmp3xxx: convert to SPDX identifierAlexandre Belloni1-9/+1
Use SPDX-License-Identifier instead of a verbose license text. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: stmp3xxx: use .set_timeAlexandre Belloni1-3/+3
Use .set_time instead of the deprecated .set_mmss. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: stmp3xxx: switch to rtc_time64_to_tm/rtc_tm_to_time64Alexandre Belloni1-5/+3
Call the 64bit versions of rtc_tm time conversion now that the range is enforced by the core. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-11rtc: stmp3xxx: set rangeAlexandre Belloni1-2/+8
From the datasheet: "HW_RTC_SECONDS provides access to the 32-bit real-time seconds counter." Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: tegra: convert to SPDX identifierAlexandre Belloni1-14/+1
Use SPDX-License-Identifier instead of a verbose license text. Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: tegra: switch to rtc_time64_to_tm/rtc_tm_to_time64Alexandre Belloni1-4/+4
Call the 64bit versions of rtc_tm time conversion now that the range is enforced by the core. Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: tegra: set rangeAlexandre Belloni1-10/+14
The Tegra 20 RTC is a 32bit seconds counter (with an unused millisecond counter). Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: coh901331: convert to SPDX identifierAlexandre Belloni1-1/+1
Use SPDX-License-Identifier instead of the custom license line. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: coh901331: use .set_timeAlexandre Belloni1-3/+3
Use .set_time instead of the deprecated .set_mmss. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: coh901331: switch to rtc_time64_to_tm/rtc_tm_to_time64Alexandre Belloni1-7/+7
Call the 64bit versions of rtc_tm time conversion now that the range is enforced by the core. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: coh901331: set rangeAlexandre Belloni1-5/+10
The COH 901 331 is a 32bit seconds counter. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: switch debug message to %ptRAlexandre Belloni1-4/+1
Use %ptR to simplify debug message. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: convert to SPDX identifierAlexandre Belloni1-4/+1
Use SPDX-License-Identifier instead of a verbose license text. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: use .set_timeAlexandre Belloni1-2/+3
Use .set_time instead of the deprecated .set_mmss. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: use rtc_time64_to_tmAlexandre Belloni1-1/+1
Use the 64bit version of rtc_time_to_tm.rtc_time_to_tm. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: remove useless indirectionAlexandre Belloni1-14/+6
ds1672_get_datetime and ds1672_set_mmss are only used after casting dev to an i2c_client. Remove that useless indirection. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: remove sysfs debug interfaceAlexandre Belloni1-51/+0
Remove the control sysfs file as it is not documented, read only and was only used to provide the oscillator state. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: move oscillator handling to .read_timeAlexandre Belloni1-13/+16
Return -EINVAL when trying to read an invalid time instead of just probe because this is a useful information for userspace. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: ds1672: set rangeAlexandre Belloni1-5/+11
The ds1672 is a 32bit seconds counter. Also remove erroneous comment claiming that epoch is set to 2000, it was not. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-08rtc: test: use .set_timeAlexandre Belloni1-4/+4
Use .set_time instead of the deprecated .set_mmss64. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-06rtc: lib: check whether tm->tm_year in int32 rangeXuefeng Wang1-0/+1
When setting rtc alarm (RTC_WKALM_SET), the tm_year is not checked if it is in suiteable range. Use INT_MAX - 1900 to check it. UBSAN: Undefined behaviour in drivers/rtc/rtc-lib.c:119:30 signed integer overflow: 2147483647 + 1900 cannot be represented in type 'int' CPU: 1 PID: 20994 Comm: syz-executor0 Not tainted 4.19.18-514.55.6.9.x86_64 + #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014 Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0xca/0x13e lib/dump_stack.c:113 ubsan_epilogue+0xe/0x81 lib/ubsan.c:159 handle_overflow+0x193/0x1e2 lib/ubsan.c:190 rtc_tm_to_time64+0x267/0x280 drivers/rtc/rtc-lib.c:119 rtc_tm_to_ktime+0x16/0x70 drivers/rtc/rtc-lib.c:129 rtc_set_alarm+0x1a9/0x2d0 drivers/rtc/interface.c:466 rtc_dev_ioctl+0x6db/0x810 drivers/rtc/rtc-dev.c:380 vfs_ioctl fs/ioctl.c:46 [inline] do_vfs_ioctl+0x1a5/0x10b0 fs/ioctl.c:690 ksys_ioctl+0x89/0xa0 fs/ioctl.c:705 __do_sys_ioctl fs/ioctl.c:712 [inline] __se_sys_ioctl fs/ioctl.c:710 [inline] __x64_sys_ioctl+0x74/0xb0 fs/ioctl.c:710 do_syscall_64+0xc8/0x580 arch/x86/entry/common.c:290 entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x462589 Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f5348896c58 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 000000000072bf00 RCX: 0000000000462589 RDX: 0000000020000000 RSI: 000000004028700f RDI: 0000000000000003 RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007f53488976bc R13: 00000000004bf67e R14: 00000000006f96e0 R15: 00000000ffffffff ========================================================================== Signed-off-by: Xuefeng Wang <wxf.wang@hisilicon.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-04rtc: don't reference bogus function pointer in kdocWolfram Sang1-4/+3
The mentioned function pointer is long gone since early 2011. Remove the reference in the comment and reword it slightly. Fixes: 51ba60c5bb3b ("RTC: Cleanup rtc_class_ops->update_irq_enable()") Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-04rtc: remove unnecessary Kconfig dependenciesAlexandre Belloni1-2/+0
Remove the unused "depends on I2C" as the config options are already guarded by if I2C. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-04rtc: pcf85063: add RTC_VL_READ/RTC_VL_CLR supportAlexandre Belloni1-0/+35
Allow reading the oscillator status bit. Also allow clearing it even if that makes little sense and can't be done in a race free way. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-04rtc: pcf85063: add offset correction supportAlexandre Belloni1-1/+57
The PCF850363 has an offset correction with two modes: With mode 0, the correction is triggered once every two hours and then correction pulses are applied once per minute until the programmed correction values have been implemented. This gives a step of 4.34 ppm. With mode 1, the correction is triggered once every four minutes and then correction pulses are applied once per second up to a maximum of 60 pulses. When correction values greater than 60 pulses are used, additional correction pulses are made in the 59 th second. This gives a step of 4.069 ppm. Use the correction closest to the requested value. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-04rtc: pcf85063: add nvram supportAlexandre Belloni1-0/+24
The pcf85063 has one byte of nvram. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-04rtc: pcf85063: add Micro Crystal RV8263 supportAlexandre Belloni1-4/+28
The Micro Crystal RV8263 has the same IC as the pcf85063 but has an on board crystal. This means that the CAP_SEL bit has to be cleared so the correct capacitance is selected for the crystal. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2019-04-04rtc: pcf85063: add alarm supportAlexandre Belloni1-0/+121
Add support for the alarms. The match on the weekday is not used as it it not necessarily properly set. The tested RTC shows a behaviour where setting an alarm on the second right after an alarm that fired is not working, probably because of the circuit that ensures an alarm only fires once. This is why uie_unsupported is set. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>