aboutsummaryrefslogtreecommitdiff
path: root/drivers/rtc
AgeCommit message (Collapse)AuthorFilesLines
2017-09-13Merge tag 'rtc-4.14' of ↵Linus Torvalds19-475/+908
git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux Pull RTC updates from Alexandre Belloni: "Subsystem: - remove .open() and .release() RTC ops - constify i2c_device_id New driver: - Realtek RTD1295 - Android emulator (goldfish) RTC Drivers: - ds1307: Beginning of a huge cleanup - s35390a: handle invalid RTC time - sun6i: external oscillator gate support" * tag 'rtc-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (40 commits) rtc: ds1307: use octal permissions rtc: ds1307: fix braces rtc: ds1307: fix alignments and blank lines rtc: ds1307: use BIT rtc: ds1307: use u32 rtc: ds1307: use sizeof rtc: ds1307: remove regs member rtc: Add Realtek RTD1295 dt-bindings: rtc: Add Realtek RTD1295 rtc: sun6i: Add support for the external oscillator gate rtc: goldfish: Add RTC driver for Android emulator dt-bindings: Add device tree binding for Goldfish RTC driver rtc: ds1307: add basic support for ds1341 chip rtc: ds1307: remove member nvram_offset from struct ds1307 rtc: ds1307: factor out offset to struct chip_desc rtc: ds1307: factor out rtc_ops to struct chip_desc rtc: ds1307: factor out irq_handler to struct chip_desc rtc: ds1307: improve irq setup rtc: ds1307: constify struct chip_desc variables rtc: ds1307: improve trickle charger initialization ...
2017-09-05rtc: ds1307: use octal permissionsAlexandre Belloni1-1/+1
Octal permissions are preferred over symbolic permissions. Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05rtc: ds1307: fix bracesAlexandre Belloni1-3/+3
Fix unnecessary or unbalanced braces. Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05rtc: ds1307: fix alignments and blank linesAlexandre Belloni1-11/+10
Alignment should always match open parenthesis. Also remove two unnecessary blank lines Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05rtc: ds1307: use BITAlexandre Belloni1-9/+9
Use the BIT macro were possbiel. Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05rtc: ds1307: use u32Alexandre Belloni1-4/+4
u32 should be used instead of uint32_t Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05rtc: ds1307: use sizeofAlexandre Belloni1-8/+16
Use sizeof where possible to ensure we don't read/write more than the allocated buffer. Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05rtc: ds1307: remove regs memberAlexandre Belloni1-100/+107
ds1307->regs is never used before being read or initialized locally. There is no point in keeping a copy in memory. Also limit the size of the read buffer to what is really used, rename buf to regs for consistency and use sizeof() where possible. Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05rtc: Add Realtek RTD1295Andreas Färber3-0/+251
Based on QNAP's arch/arm/mach-rtk119x/driver/rtk_rtc_drv.c code and mach-rtk119x/driver/dc2vo/fpga/include/mis_reg.h register definitions. The base year 2014 was observed on all of Zidoo X9S, ProBox2 Ava and Beelink Lake I. Signed-off-by: Andreas Färber <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-05Merge branches 'ib-mfd-arm-i2c-4.14', 'ib-mfd-arm-usb-video-4.14', ↵Lee Jones3-3/+2
'ib-mfd-hwmon-4.14', 'ib-mfd-iio-pwm-4.14', 'ib-mfd-input-rtc-4.14', 'ib-mfd-many-4.14' and 'ib-mfd-pinctrl-regulator-4.14' into ibs-for-mfd-merged
2017-09-04mfd: twl: Move header file out of I2C realmWolfram Sang1-1/+1
include/linux/i2c is not for client devices. Move the header file to a more appropriate location. Signed-off-by: Wolfram Sang <[email protected]> Acked-by: Greg Kroah-Hartman <[email protected]> Acked-by: Alexandre Belloni <[email protected]> Acked-by: Mark Brown <[email protected]> Acked-by: Sebastian Reichel <[email protected]> Acked-by: Jonathan Cameron <[email protected]> Acked-by: Dmitry Torokhov <[email protected]> Acked-by: Kishon Vijay Abraham I <[email protected]> Acked-by: Bartlomiej Zolnierkiewicz <[email protected]> Acked-by: Thierry Reding <[email protected]> Acked-by: Tony Lindgren <[email protected]> Acked-by: Daniel Thompson <[email protected]> Acked-by: Linus Walleij <[email protected]> Acked-by: Guenter Roeck <[email protected]> Signed-off-by: Lee Jones <[email protected]>
2017-09-01rtc: sun6i: Add support for the external oscillator gateMaxime Ripard1-3/+21
The RTC can output its 32kHz clock outside of the SoC, for example to clock a WiFi chip. Create a new clock that other devices will be able to retrieve, while maintaining the DT stability by providing a default name for that clock if clock-output-names doesn't list one. Signed-off-by: Maxime Ripard <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: goldfish: Add RTC driver for Android emulatorMiodrag Dinic3-0/+246
Add device driver for a virtual RTC device in Android emulator. The compatible string used by OS for binding the driver is defined as "google,goldfish-rtc". Signed-off-by: Miodrag Dinic <[email protected]> Signed-off-by: Goran Ferenc <[email protected]> Signed-off-by: Aleksandar Markovic <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: add basic support for ds1341 chipNikita Yushchenko2-5/+17
This adds support for reading and writing date/time from/to ds1341 chip. ds1341 chip has other features - alarms, input clock (can be used instead of intercal oscillator for better accuracy), output clock ("square wave generation"). However, not all of that is available at the same time. Same chip pins, CLKIN/nINTA and SQW/nINTB, can be used either for input/output clocks, or for alarm interrupts. Role of these pins on particular board depends on hardware wiring. We can add device tree properties that describe if each of pins is wired as clock, or as interrupt, or left unconnected, and enable support for corresponding functionality based on that. But that is cumbersome, requires hardware for testing, and has to deal with bit enabling/disabling output clock also affects which pins alarm interrupts are routed to. Another factor is that there are hardware setups (i.e. ZII RDU2) that power DS1341 from SuperCap, which makes power saving critical. For such setups, kernel driver should leave register bits that control mentioned pins in the state configured by bootloader. Given all that, it was decided to limit support to "only date/time" for now. That is enough for common use case. Full (and cumbersome) implementation can be added later if ever needed. Signed-off-by: Nikita Yushchenko <[email protected]> Reviewed-by: Linus Walleij <[email protected]> Tested-by: Aleksander Morgado <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: remove member nvram_offset from struct ds1307Heiner Kallweit1-4/+4
Remove member nvram_offset from struct ds1307 and use the value stored in struct chip_desc directly. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: factor out offset to struct chip_descHeiner Kallweit1-11/+7
Factor out offset to struct chip_desc and remove it from struct ds1307. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: factor out rtc_ops to struct chip_descHeiner Kallweit1-23/+28
Factor out rtc_ops to struct chip_desc and use ds13xx_rtc_ops as default. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: factor out irq_handler to struct chip_descHeiner Kallweit1-8/+7
Factor out irq_handler to struct chip_desc and use ds1307_irq as default. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: improve irq setupHeiner Kallweit1-17/+10
Change the usage of variable want_irq to reflect its name. Don't set it to true in case wakeup is enabled but no interrupt number is given. In addition set variable ds1307_can_wakeup_device if chip->alarm is set only. This allows to simplify the code and make it better understandable. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: constify struct chip_desc variablesHeiner Kallweit1-3/+3
Constify struct chip_desc variables. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: improve trickle charger initializationHeiner Kallweit1-17/+16
Instead of storing the trickle_charger_setup value in struct chip_desc we can let function ds1307_trickle_init return it because it's used in the probe function only. This allows us to constify struct chip_desc variables in a next step. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: factor out bbsqi bit to struct chip_descHeiner Kallweit1-7/+4
Factor out the bbsqi bit to struct chip_desc. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: ds1307: remove member irq from struct ds1307Heiner Kallweit1-7/+5
The irq number is used in the probe function only, so we don't have to store it in struct ds1307. Signed-off-by: Heiner Kallweit <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: rk808: Name RK805 in Kconfig for RTC_DRV_RK808Elaine Zhang1-2/+2
The RK808 and RK805 PMICs are using a similar register map. We can reuse the rtc driver for the RK805 PMIC. So let's add the RK805 in the Kconfig description. Signed-off-by: Elaine Zhang <[email protected]> Signed-off-by: Joseph Chen <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-09-01rtc: constify i2c_device_idArvind Yadav4-4/+4
i2c_device_id are not supposed to change at runtime. All functions working with i2c_device_id provided by <linux/i2c.h> work with const i2c_device_id. So mark the non-const structs as const. Signed-off-by: Arvind Yadav <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: remove .open() and .release()Alexandre Belloni1-16/+4
There are no driver left using .open and .release. There is no good use case for them as there is nothing the character device interface does that should not be done in the sysfs interface or in-kernel interface. Remove those callbacks now to avoid future confusion. Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: mxc: avoid disabling interrupts on device closeAlexandre Belloni1-21/+0
Currently, the IRQs are disabled when the rtc character device is closed. This means that the device needs to stay open to get alarms while the usual use case will open the device, set the alarm and close the device as is done in rtcwake. Keep the alarm functional on character device release so the platform can actually wakeup. Reviewed-by: Fabio Estevam <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: vr41xx: make alarms usefulAlexandre Belloni1-18/+0
Currently, the IRQs are disabled when the rtc character device is closed. This means that the device needs to stay open to get alarms while the usual use case will open the device, set the alarm and close the device. Keep the alarms functional on character device release. Note that the PIE are never enabled and would anyway be disabled by the core. Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: sa1100: make alarms usefulAlexandre Belloni1-41/+22
Currently, the driver unregisters the IRQs when the rtc character device is closed. This means that the device needs to stay open to get alarms while the usual use case will open the device, set the alarm and close the device. Move the IRQ requests to sa1100_rtc_probe() and use the devm managed versions so we don't need to free them. Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: sa1100: fix unbalanced clk_prepare_enable/clk_disable_unprepareAlexandre Belloni1-3/+1
In the error path of sa1100_rtc_open(), info->clk is disabled which will happen again in sa1100_rtc_remove() when the module is removed whereas it is only enabled once in sa1100_rtc_init(). Fixes: 0cc0c38e9139 ("drivers/rtc/rtc-sa1100.c: move clock enable/disable to probe/remove") Acked-by: Robert Jarzmik <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: pxa: fix possible race conditionAlexandre Belloni1-1/+3
pxa_rtc_open() registers the interrupt handler which will access the RTC registers. However, pxa_rtc_open() is called before the register range is ioremapped. Instead, call it after devm_ioremap(). Acked-by: Robert Jarzmik <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: m41t80: remove debug sysfs attributeAlexandre Belloni1-44/+0
The last remaining sysfs attribute is undocumented and useless as it can only be used to debug the driver. Remove it. Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-24rtc: m41t80: enable wakealarm when "wakeup-source" is specifiedEric Cooper1-6/+17
Don't require an IRQ if the wakeup-source device-tree property is present. Signed-off-by: Eric Cooper <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-22rtc: puv3: make alarms usefulAlexandre Belloni1-42/+14
Currently, the driver unregisters the IRQs when the rtc character device is closed. This means that the device needs to stay open to get alarms while the usual use case will open the device, set the alarm and close the device. Move the IRQ requests to puv3_rtc_probe() and use the devm managed versions so we don't need to free them. Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-22rtc: puv3: switch to devm_rtc_allocate_device()/rtc_register_device()Alexandre Belloni1-9/+7
Use managed RTC device allocation as this allows for further cleanup. Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-21rtc: ds1307: fix regmap configHeiner Kallweit1-1/+0
Current max_register setting breaks reading nvram on certain chips and also reading the standard registers on RX8130 where register map starts at 0x10. Signed-off-by: Heiner Kallweit <[email protected]> Fixes: 11e5890b5342 "rtc: ds1307: convert driver to regmap" Signed-off-by: Alexandre Belloni <[email protected]>
2017-08-15mfd: dm355evm_msp: Move header file out of I2C realmWolfram Sang1-1/+1
include/linux/i2c is not for client devices. Move the header file to a more appropriate location. Signed-off-by: Wolfram Sang <[email protected]> Acked-by: Alexandre Belloni <[email protected]> Acked-by: Dmitry Torokhov <[email protected]> Signed-off-by: Lee Jones <[email protected]>
2017-07-31rtc: max8925: remove redundant check on retColin Ian King1-2/+0
The check on ret < 0 is redundant as the goto destination is the next statment. Remove this redudant check and goto. Detected by CoverityScan, CID#1268785 ("Identical code for different branches") Signed-off-by: Colin Ian King <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-31rtc: sun6i: ensure clk_data is kfree'd on errorColin Ian King1-2/+6
There are two error return paths that do not kfree clk_data and we end up with a memory leak. Fix these with a kfree error exit path. Detected by CoverityScan, CID#1402959 ("Resource Leak") Signed-off-by: Colin Ian King <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-31rtc: sun6i: Remove double init of spinlock in sun6i_rtc_clk_init()Alexey Klimov1-1/+1
Remove double init of spinlock in sun6i_rtc_clk_init() Fixes: 847b8bf62eb4 ("rtc: sun6i: Expose the 32kHz oscillator") Signed-off-by: Alexey Klimov <[email protected]> Reviewed-by: Chen-Yu Tsai <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-31rtc: ds1307: remove legacy check for "isil, irq2-can-wakeup-machine" propertyHeiner Kallweit1-7/+1
Commit 8b44f5be20fd ("ARM: dts: armada: replace isil,irq2-can-wakeup-machine with wakeup-source property") removed the last usage of "isil,irq2-can-wakeup-machine" almost two years ago. So I think we can get rid of supporting this legacy binding. Signed-off-by: Heiner Kallweit <[email protected]> Acked-by: Rob Herring <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-31rtc: s35390a: implement ioctlsFabien Lahoudere1-1/+31
Implements RTC_VL_READ and RTC_VL_CLR ioctls. Signed-off-by: Fabien Lahoudere <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-31rtc: s35390a: handle invalid RTC timeFabien Lahoudere1-30/+42
If RTC time have been altered by low voltage, we notify users that RTC time is invalid by returning -EINVAL. The RTC time needs to be set correctly to clear the invalid flag. Signed-off-by: Fabien Lahoudere <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-13Merge tag 'rtc-4.13' of ↵Linus Torvalds22-839/+1696
git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux Pull RTC updates from Alexandre Belloni: "Here is the pull-request for the RTC subsystem for 4.13. Subsystem: - expose non volatile RAM using nvmem instead of open coding in many drivers. Unfortunately, this option has to be enabled by default to not break existing users. - rtctest can now test for cutoff dates, showing when an RTC will start failing to properly save time and date. - new RTC registration functions to remove race conditions in drivers Newly supported RTCs: - Broadcom STB wake-timer - Epson RX8130CE - Maxim IC DS1308 - STMicroelectronics STM32H7 Drivers: - ds1307: use regmap, use nvmem, more cleanups - ds3232: temperature reading support - gemini: renamed to ftrtc010 - m41t80: use CCF to expose the clock - rv8803: use nvmem - s3c: many cleanups - st-lpc: fix y2106 bug" * tag 'rtc-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (51 commits) rtc: Remove wrong deprecation comment nvmem: include linux/err.h from header rtc: st-lpc: make it robust against y2038/2106 bug rtc: rtctest: add check for problematic dates tools: timer: add rtctest_setdate rtc: ds1307: remove ds1307_remove rtc: ds1307: use generic nvmem rtc: ds1307: switch to rtc_register_device rtc: rv8803: remove rv8803_remove rtc: rv8803: use generic nvmem support rtc: rv8803: switch to rtc_register_device rtc: add generic nvmem support rtc: at91rm9200: remove race condition rtc: introduce new registration method rtc: class separate id allocation from registration rtc: class separate device allocation from registration rtc: stm32: add STM32H7 RTC support dt-bindings: rtc: stm32: add support for STM32H7 rtc: ds1307: add ds1308 variant rtc: ds3232: add temperature support ...
2017-07-09rtc: st-lpc: make it robust against y2038/2106 bugBenjamin Gaignard1-11/+8
Make driver use u64 variables and functions to be sure that it will support dates after year 2038. Signed-off-by: Benjamin Gaignard <[email protected]> Acked-by: Patrice Chotard <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: ds1307: remove ds1307_removeAlexandre Belloni1-6/+0
ds1307_remove() is now empty, remove it Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: ds1307: use generic nvmemAlexandre Belloni1-66/+22
Instead of adding a binary sysfs attribute from the driver (which suffers from a race condition as the attribute appears after the device), use the core to register an nvmem device. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: ds1307: switch to rtc_register_deviceAlexandre Belloni1-2/+7
This removes a possible race condition and crash and allows for further improvement of the driver. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: rv8803: remove rv8803_removeAlexandre Belloni1-6/+0
rv8803_remove() is now empty, remove it. Signed-off-by: Alexandre Belloni <[email protected]>
2017-07-07rtc: rv8803: use generic nvmem supportAlexandre Belloni1-31/+20
Instead of adding a binary sysfs attribute from the driver (which suffers from a race condition as the attribute appears after the device), use the core to register an nvmem device. Signed-off-by: Alexandre Belloni <[email protected]>