aboutsummaryrefslogtreecommitdiff
path: root/drivers/rtc
AgeCommit message (Collapse)AuthorFilesLines
2017-07-07rtc: rv8803: switch to rtc_register_deviceAlexandre Belloni1-6/+9
This removes a possible race condition and allows for further improvement of the driver. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: add generic nvmem supportAlexandre Belloni5-0/+134
Many RTCs have an on board non volatile storage. It can be battery backed RAM or an EEPROM. Use the nvmem subsystem to export it to both userspace and in-kernel consumers. This stays compatible with the previous (non documented) ABI that was using /sys/class/rtc/rtcx/device/nvram to export that memory. But will warn about the deprecation. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: at91rm9200: remove race conditionAlexandre Belloni1-6/+8
While highly unlikely, it is possible to get an interrupt as soon as it is requested. In that case, at91_rtc_interrupt() will be called with rtc == NULL. Solve that by using devm_rtc_allocate_device/rtc_register_device. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: introduce new registration methodAlexandre Belloni1-0/+84
Introduce rtc_register_device() to register an already allocated and initialized struct rtc_device. It automatically sets up the owner and the two steps allocation/registration will allow to remove race conditions in the IRQ handling of some driver. It also allows to properly extend the core without adding more arguments to rtc_device_register(). Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: class separate id allocation from registrationAlexandre Belloni1-19/+25
Create rtc_device_get_id to allocate the id for an RTC. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: class separate device allocation from registrationAlexandre Belloni1-26/+37
Create rtc_allocate_device to allocate memory for a struct rtc_device and initialize it. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-06rtc: stm32: add STM32H7 RTC supportAmelie Delaunay1-17/+65
This patch adds support for STM32H7 RTC. On STM32H7, the RTC bus interface clock (APB clock) needs to be enabled. Signed-off-by: Amelie Delaunay <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-06rtc: ds1307: add ds1308 variantSean Nyekjaer1-0/+12
The ds1308 variant is very similar to the already supported ds1338 variant, it have more debug registers and a square wave clock output. Signed-off-by: Sean Nyekjaer <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-06rtc: ds3232: add temperature supportKirill Esipov2-0/+127
DS3232/DS3234 has the temperature registers with a resolution of 0.25 degree celsius. This enables to get the value through hwmon. # cat /sys/class/hwmon/hwmon0/temp1_input 37250 Signed-off-by: Kirill Esipov <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-06rtc: rtc-nuc900: fix loop timeout testDan Carpenter1-1/+1
We should change this post-op to a pre-op because we want the loop to exit with "timeout" set to zero. Fixes: 0a89b55364e0 ("nuc900/rtc: change the waiting for device ready implement") Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-06rtc: gemini/ftrtc010: rename driver and symbolsLinus Walleij3-51/+52
The Gemini RTC is actually a generic IP block from Faraday Technology names FTRTC010. Rename the driver file and all symbols to match this IP name. The relationship can be clearly seen in the U-Boot driver posted by Po-Yu Chuang for the Faraday A320 board: https://lists.denx.de/pipermail/u-boot/2009-September/061326.html Remove the dependency on ARCH_GEMINI but select the driver for ARCH_GEMINI so we get a smooth transition. The IP block is synthsized on different silicon and architectures. Cc: Po-Yu Chuang <[email protected]> Acked-by: Hans Ulli Kroll <[email protected]> Signed-off-by: Linus Walleij <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-06rtc: gemini: Add optional clock handlingLinus Walleij1-0/+28
This makes the Gemini optionally take two clock references to the PCLK and EXTCLK. As we are adding a clock framework to the Gemini platform we need to make sure that we get the right references. Acked-by: Hans Ulli Kroll <[email protected]> Signed-off-by: Linus Walleij <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-06rtc: ds1307: factor out century bit handlingHeiner Kallweit1-46/+27
The driver has lots of places with chip-specific code what doesn't necessarily facilitate maintenance. Let's describe chip-specific differences in century bit handling in struct chip_desc to improve this. Signed-off-by: Heiner Kallweit <[email protected]> Reviewed-by: Linus Walleij <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-05rtc: ds1307: use regmap_update_bits where applicableHeiner Kallweit1-62/+20
After the switch to regmap we can now make use of regmap_update_bits to simplify read/modify/write ops. Signed-off-by: Heiner Kallweit <[email protected]> Reviewed-by: Linus Walleij <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-05rtc: brcmstb-waketimer: Add Broadcom STB wake-timerBrian Norris3-0/+342
This adds support for the Broadcom STB wake-timer which is a timer in the chip's 27Mhz clock domain that offers the ability to wake the system (wake-up source) from suspend states (S2, S3, S5). It is supported using the rtc framework allowing us to configure alarms for system wake-up. Signed-off-by: Brian Norris <[email protected]> Signed-off-by: Markus Mayer <[email protected]> Signed-off-by: Florian Fainelli <[email protected]> Signed-off-by: Arnd Bergmann <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: ds1307: Add support for Epson RX8130CEMarek Vasut1-0/+175
Add support for yet another RTC chip, Epson RX8130CE. This time around, the chip has slightly permutated registers and also the register starts at 0x10 instead of 0x0 . So far, we only support the RTC and NVRAM parts of the chip, Alarm and Timer is not supported. Signed-off-by: Marek Vasut <[email protected]> Cc: Alexandre Belloni <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Felipe Balbi <[email protected]> Cc: Nishanth Menon <[email protected]> Cc: Tony Lindgren <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: s3c: Handle clock enable failuresKrzysztof Kozlowski1-15/+57
clk_enable() can fail so handle such case. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: s3c: Handle clock prepare failures in probeKrzysztof Kozlowski1-2/+6
clk_prepare_enable() can fail so handle such case. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: s3c: Do not remove const from rodata memoryKrzysztof Kozlowski1-3/+3
All instances of struct s3c_rtc_data are in fact static const thus put in rodata so we should not drop the const while getting the pointer to them. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: s3c: Drop unneeded cast to void pointerKrzysztof Kozlowski1-5/+5
There is no need for casting to void pointer for of_device_id data. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: s3c: Minor white-space cleanupsKrzysztof Kozlowski1-24/+23
Minor cleanups to make the code easier to read. No functional changes. 1. Remove one space before labels as this is nowadays mostly preferred. 2. Fix indentation of arguments in function calls. 3. Split structure member declaration. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: s3c: Jump to central exit point on getting src clock errorKrzysztof Kozlowski1-2/+2
In other error paths in probe, centralized exit point was used so make this consistent. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: mxc: remove unused variableDiaz de Grenu, Jose1-11/+0
This variable was never used. With GCC 6.2, we get the following warning: drivers/rtc/rtc-mxc.c:44:18: warning: ‘PIE_BIT_DEF’ defined but not used [-Wunused-const-variable=] static const u32 PIE_BIT_DEF[MAX_PIE_NUM][2] = { Signed-off-by: Diaz de Grenu, Jose <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-24rtc: opal: Implement rtc_class_ops.alarm_irq_enable callbackVaibhav Jain1-1/+21
Provide an implementation of the callback rtc_class_ops.alarm_irq_enable for rtc-opal driver. This callback is called when the wake alarm is disabled via the command: 'echo 0 > /sys/class/rtc/rtc0/wakealarm' Without this the Timed-Power-On(TPO) config remains set even when its disabled by the above command and FSP will still force machine boot at previously configured alarm time. The callback is implemented as function opal_tpo_alarm_irq_enable() which calls opal_set_tpo_time() with alarm.enabled == 0. A branch is added to opal_set_tpo_time() to handle this case by passing y_m_d == h_m_s_ms == 0 to opal as arguments for opal_tpo_write() call. Signed-off-by: Vaibhav Jain <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-20sched/wait: Disambiguate wq_entry->task_list and wq_head->task_list namingIngo Molnar1-1/+1
So I've noticed a number of instances where it was not obvious from the code whether ->task_list was for a wait-queue head or a wait-queue entry. Furthermore, there's a number of wait-queue users where the lists are not for 'tasks' but other entities (poll tables, etc.), in which case the 'task_list' name is actively confusing. To clear this all up, name the wait-queue head and entry list structure fields unambiguously: struct wait_queue_head::task_list => ::head struct wait_queue_entry::task_list => ::entry For example, this code: rqw->wait.task_list.next != &wait->task_list ... is was pretty unclear (to me) what it's doing, while now it's written this way: rqw->wait.head.next != &wait->entry ... which makes it pretty clear that we are iterating a list until we see the head. Other examples are: list_for_each_entry_safe(pos, next, &x->task_list, task_list) { list_for_each_entry(wq, &fence->wait.task_list, task_list) { ... where it's unclear (to me) what we are iterating, and during review it's hard to tell whether it's trying to walk a wait-queue entry (which would be a bug), while now it's written as: list_for_each_entry_safe(pos, next, &x->head, entry) { list_for_each_entry(wq, &fence->wait.head, entry) { Cc: Linus Torvalds <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: [email protected] Signed-off-by: Ingo Molnar <[email protected]>
2017-06-03rtc: remove rtc_device.nameAlexandre Belloni1-4/+3
rtc->name is only used in messages were it is superfluous. Remove it completely from the structure. Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-03rtc: ds1307: avoid using rtc-nameAlexandre Belloni1-1/+1
ds1307->rtc->name is a copy of ds1307->name, use it instead. Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-03rtc: pcf8563: avoid using rtc->nameAlexandre Belloni1-1/+1
pcf8563->rtc->name is a copy of pcf8563_driver.driver.name, use it instead Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-03rtc: dev: remove rtc->name from debug messageAlexandre Belloni1-1/+1
rtc->name is superfluous here because the rtc is already registered at that point and its name has already been printed. Signed-off-by: Alexandre Belloni <[email protected]>
2017-06-03rtc: sysfs: make name uniformAlexandre Belloni1-1/+2
The name sysfs attribute is not useful in its current form because of all the drivers: - 3 are using the feature correctly - 2 are clearly misusing it - 60 are using driver.name, either directly or indirectly - 46 are using pdev->name - 8 are using client->name - 31 are using a variation of driver.name (addition or removal of rtc-, -rtc, _rtc, rtc_) Make it uniform and use the driver name and the device name. Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-31rtc: interface: Validate alarm-time before handling rolloverVaibhav Jain1-1/+8
In function __rtc_read_alarm() its possible for an alarm time-stamp to be invalid even after replacing missing components with current time-stamp. The condition 'alarm->time.tm_year < 70' will trigger this case and will cause the call to 'rtc_tm_to_time64(&alarm->time)' return a negative value for variable t_alm. While handling alarm rollover this negative t_alm (assumed to seconds offset from '1970-01-01 00:00:00') is converted back to rtc_time via rtc_time64_to_tm() which results in this error log with seemingly garbage values: "rtc rtc0: invalid alarm value: -2-1--1041528741 2005511117:71582844:32" This error was generated when the rtc driver (rtc-opal in this case) returned an alarm time-stamp of '00-00-00 00:00:00' to indicate that the alarm is disabled. Though I have submitted a separate fix for the rtc-opal driver, this issue may potentially impact other existing/future rtc drivers. To fix this issue the patch validates the alarm time-stamp just after filling up the missing datetime components and if rtc_valid_tm() still reports it to be invalid then bails out of the function without handling the rollover. Reported-by: Steve Best <[email protected]> Signed-off-by: Vaibhav Jain <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-31rtc: opal: Handle disabled TPO in opal_get_tpo_time()Vaibhav Jain1-0/+10
On PowerNV platform when Timed-Power-On(TPO) is disabled, read of stored TPO yields value with all date components set to '0' inside opal_get_tpo_time(). The function opal_to_tm() then converts it to an offset from year 1900 yielding alarm-time == "1900-00-01 00:00:00". This causes problems with __rtc_read_alarm() that expecting an offset from "1970-00-01 00:00:00" and returned alarm-time results in a -ve value for time64_t. Which ultimately results in this error reported in kernel logs with a seemingly garbage value: "rtc rtc0: invalid alarm value: -2-1--1041528741 2005511117:71582844:32" We fix this by explicitly handling the case of all alarm date-time components being '0' inside opal_get_tpo_time() and returning -ENOENT in such a case. This signals generic rtc that no alarm is set and it bails out from the alarm initialization flow without reporting the above error. Signed-off-by: Vaibhav Jain <[email protected]> Reported-by: Steve Best <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-31rtc: m41t80: add clock provider supportGary Bisson1-0/+172
Some devices supported by the m41t80 driver have a programmable square-wave output signal (see M41T80_FEATURE_SQ). This enables to use this feature as a clock provider of common clock framework. Signed-off-by: Gary Bisson <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-31rtc: m41t80: remove sqw sysfs entryGary Bisson1-88/+0
In order to use the proper clock framework to control this feature. Signed-off-by: Gary Bisson <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-31rtc: m41t80: fix SQW dividers override when setting a dateGary Bisson1-0/+12
This patch is only relevant for RTC with the SQ_ALT feature which means the clock output frequency divider is stored in the weekday register. Current implementation discards the previous dividers value and clear them as soon as the time is set. Signed-off-by: Gary Bisson <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-31rtc: m41t80: fix SQWE override when setting an alarmGary Bisson1-0/+3
Currently setting an alarm clears the SQWE bit which means that the clock output is disabled no matter its previous state. Signed-off-by: Gary Bisson <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-31rtc: rtc-ds1307: enable support for mcp794xx as a wakeup source without IRQDavid Lowe1-1/+2
This patch extends the fixes for ds1337, ds1339, ds3231 in commit 8bc2a40730ec ("rtc: ds1307: add support for the DT property 'wakeup-source'") to mcp794xx devices, so that those parts can similarly be used as a wakeup source without an IRQ to the processor. Tested on Raspberry Pi ZeroW with MCP79400. Signed-off-by: David Lowe <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-26rtc: ds1307: convert driver to regmapHeiner Kallweit1-382/+221
This patch converts the ds1307 driver to using regmap. It's a rather big patch and I can test with DS3231 only. With this chip it's working fine. I'd appreciate if people with other supported hardware could test as well. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-22Merge branches 'pm-sleep' and 'powercap'Rafael J. Wysocki1-1/+1
* pm-sleep: PM / hibernate: Declare variables as static RTC: rtc-cmos: Fix wakeup from suspend-to-idle PM / wakeup: Fix up wakeup_source_report_event() * powercap: PowerCap: Fix an error code in powercap_register_zone()
2017-05-14RTC: rtc-cmos: Fix wakeup from suspend-to-idleRafael J. Wysocki1-1/+1
Commit eed4d47efe95 (ACPI / sleep: Ignore spurious SCI wakeups from suspend-to-idle) modified the core suspend-to-idle code to filter out spurious SCI interrupts received while suspended, which requires ACPI event source handlers to report wakeup events in a way that will trigger a wakeup from suspend to idle (or abort system suspends in progress, which is equivalent). That needs to be done in the rtc-cmos driver too, which was overlooked by the above commit, so do that now. Fixes: eed4d47efe95 (ACPI / sleep: Ignore spurious SCI wakeups from suspend-to-idle) Reported-by: David E. Box <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
2017-05-10Merge tag 'rtc-4.12' of ↵Linus Torvalds23-46/+672
git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux Pull RTC updates from Alexandre Belloni: "RTC subsystem update: - Add OF device ID table for i2c drivers New RTC driver: - Motorola CPCAP PMIC RTC RTC driver updates: - cmos: fix IRQ selection - ds1307: Add ST m41t0 support - ds1374: fix watchdog configuration - sh: Add rza series support" * tag 'rtc-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (33 commits) rtc: gemini: add return value validation rtc: snvs: fix an incorrect check of return value rtc: ds1374: wdt: Fix stop/start ioctl always returning -EINVAL rtc: ds1374: wdt: Fix issue with timeout scaling from secs to wdt ticks rtc: sh: mark PM functions as unused rtc: hid-sensor-time: remove some dead code rtc: m41t80: Add proper compatible for rv4162 rtc: ds1307: Add m41t0 to OF device ID table rtc: ds1307: support m41t0 variant rtc: cpcap: fix improper use of IRQ_NONE for request_threaded_irq rtc: cmos: Do not assume irq 8 for rtc when there are no legacy irqs x86: i8259: export legacy_pic symbol dt-bindings: rtc: document the rtc-sh bindings rtc: sh: add support for rza series rtc: cpcap: kfreeing devm allocated memory rtc: wm8350: Remove unused to_wm8350_from_rtc_dev rtc: cpcap: new rtc driver dt-bindings: Add vendor prefix for Motorola rtc: omap: mark PM methods as __maybe_unused rtc: omap: remove incorrect __exit markups ...
2017-05-05rtc: gemini: add return value validationPan Bian1-0/+2
Function devm_ioremap() will return a NULL pointer if it fails to remap IO address, and its return value should be validated before it is used. However, in function gemini_rtc_probe(), its return value is not checked. This may result in bad memory access bugs on future access, e.g. calling the function gemini_rtc_read_time(). Signed-off-by: Pan Bian <[email protected]> Acked-by: Hans Ulli Kroll <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-05rtc: snvs: fix an incorrect check of return valuePan Bian1-1/+1
Function devm_regmap_init_mmio() returns an ERR_PTR on error. However, in function snvs_rtc_probe() its return value is checked against NULL. This patch fixes it by checking the return value with IS_ERR(). Signed-off-by: Pan Bian <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-04rtc: ds1374: wdt: Fix stop/start ioctl always returning -EINVALMoritz Fischer1-1/+2
The WDIOC_SETOPTIONS case in the watchdog ioctl would alwayss falls through to the -EINVAL case. This is wrong since thew watchdog does actually get stopped or started correctly. Fixes: 920f91e50c5b ("drivers/rtc/rtc-ds1374.c: add watchdog support") Signed-off-by: Moritz Fischer <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-05-04rtc: ds1374: wdt: Fix issue with timeout scaling from secs to wdt ticksMoritz Fischer1-1/+6
The issue is that the internal counter that triggers the watchdog reset is actually running at 4096 Hz instead of 1Hz, therefore the value given by userland (in sec) needs to be multiplied by 4096 to get the correct behavior. Fixes: 920f91e50c5b ("drivers/rtc/rtc-ds1374.c: add watchdog support") Signed-off-by: Moritz Fischer <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-04-22rtc: sh: mark PM functions as unusedArnd Bergmann1-4/+2
The sh_rtc_set_irq_wake() function is only called from the suspend/resume handlers that may be hidden, causing a harmless warning: drivers/rtc/rtc-sh.c:724:13: error: 'sh_rtc_set_irq_wake' defined but not used [-Werror=unused-function] static void sh_rtc_set_irq_wake(struct device *dev, int enabled) The most reliable way to avoid the warning is to remove the existing #ifdef and mark the two functions as __maybe_unused so the compiler can silently drop all three when there is no reference. Fixes: dab5aec64bf5 ("rtc: sh: add support for rza series") Signed-off-by: Arnd Bergmann <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-04-22rtc: hid-sensor-time: remove some dead codeDan Carpenter1-2/+2
devm_rtc_device_register() doesn't ever return NULL so there is no need to check. Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-04-19rtc: m41t80: Add proper compatible for rv4162Alexandre Belloni1-0/+5
The correct compatible for the rv4162 (microcrystal,rv4162) was not used upstream and so was not added by eb235c561d04e. Signed-off-by: Alexandre Belloni <[email protected]>
2017-04-14rtc: ds1307: Add m41t0 to OF device ID tableAlexandre Belloni1-0/+4
m41t0 was added to the I2C device ID table but not the OF table. Fix that. Signed-off-by: Alexandre Belloni <[email protected]>
2017-04-14rtc: ds1307: support m41t0 variantStefan Agner1-0/+13
The m41t0 variant is very similar to the already supported m41t00 variant, with the notable exception of the oscillator fail bit. The data sheet notes: If the oscillator fail (OF) bit is internally set to a '1,' this indicates that the oscillator has either stopped, or was stopped for some period of time and can be used to judge the validity of the clock and date data. The bit will get cleared with a regular write of the system time, so no changes are needed to clear it. Signed-off-by: Stefan Agner <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>