summaryrefslogtreecommitdiffstats
path: root/drivers/rtc
Commit message (Collapse)AuthorAgeFilesLines
...
| * | rtc: sunxi: fix possible race conditionAlexandre Belloni2018-06-041-14/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The IRQ is requested before the struct rtc is allocated and registered, but this struct is used in the IRQ handler. This may lead to a NULL pointer dereference. Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc before requesting the IRQ. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: test: remove irq sysfs fileAlexandre Belloni2018-05-311-39/+0
| | | | | | | | | | | | | | | | | | | | | Now that alarms are emulated, remove the irq sysfs file that could be used to send alarms. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: test: emulate alarms using timersAlexandre Belloni2018-05-311-4/+52
| | | | | | | | | | | | | | | | | | | | | Use timers to emulate alarms. Note that multiple alarms may happen if they are set more than 15 days after the current RTC time. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: test: store time as an offset to system timeAlexandre Belloni2018-05-311-16/+23
| | | | | | | | | | | | | | | | | | | | | Store the time as an offset to system time. As the offset is in second, it is currently always synced with system time. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: test: allow registering many devicesAlexandre Belloni2018-05-311-24/+24
| | | | | | | | | | | | | | | | | | Use a loop to register RTC devices Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: test: remove useless proc infoAlexandre Belloni2018-05-311-11/+0
| | | | | | | | | | | | | | | | | | | | | | | | The rtc proc callback is useless for two reasosn: - the test RTC is often not the first RTC so it will never be used - all the info is available in the name file of the RTC sys folder Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ds1685: Add rangeAlexandre Belloni2018-05-311-0/+4
| | | | | | | | | | | | | | | | | | Useful range is 2000-2099 because leap year fails on centuries. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ds1685: fix possible race conditionAlexandre Belloni2018-05-311-23/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The IRQ is requested before the struct rtc is allocated and registered, but this struct is used in the IRQ handler. Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc before requesting the IRQ. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: sprd: Add new RTC power down check methodBaolin Wang2018-05-311-23/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We should use the new method to check if RTC was powered down, which is more solid. Since we have introduced power control and power status registers, and we just check if the power status is the default value (0x96), if yes that means the RTC has been powered down. Meanwhile We can set the power control register to be one valid value to change the power status to indicate RTC device is valid now. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: sun6i: Fix bit_idx value for clk_register_gateMichael Trimarchi2018-05-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | clk-gate core will take bit_idx through clk_register_gate and then do clk_gate_ops by using BIT(bit_idx), but rtc-sun6i is passing bit_idx as BIT(bit_idx) it becomes BIT(BIT(bit_idx) which is wrong and eventually external gate clock is not enabling. This patch fixed by passing bit index and the original change introduced from below commit. "rtc: sun6i: Add support for the external oscillator gate" (sha1: 17ecd246414b3a0fe0cb248c86977a8bda465b7b) Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> Fixes: 17ecd246414b ("rtc: sun6i: Add support for the external oscillator gate") Cc: stable@vger.kernel.org Signed-off-by: Jagan Teki <jagan@amarulasolutions.com> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: jz4740: Fix a typo in KconfigMathieu Malaterre2018-05-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Fix typo introduced for RTC_DRV_JZ4740 in commit 586655d278ba ("rtc: jz4740: make the driver buildable as a module again"). Signed-off-by: Mathieu Malaterre <malat@debian.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: test: remove obsolete .set_mmssAlexandre Belloni2018-05-261-17/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | There is no point in testing .set_mmss versus .set_mmss64 as there are both taking the exact same argument (truncated for set_mmss though). Also, this allows to constify struct rtc_ops. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: st-lpc: add rangeAlexandre Belloni2018-05-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | The RTC has a 64 bit counter. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Acked-by: Patrice Chotard <patrice.chotard@st.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: st-lpc: fix possible race conditionAlexandre Belloni2018-05-231-15/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The IRQ is requested before the struct rtc is allocated and registered, but this struct is used in the IRQ handler. This may lead to a NULL pointer dereference. Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc before requesting the IRQ. Acked-by: Patrice Chotard <patrice.chotard@st.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: stm32: add stm32mp1 rtc supportAmelie Delaunay2018-05-221-14/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for stm32mp1 RTC. Some common registers with previous RTC version have a different offset. It is the case for Control Register (CR) and ALaRMA Register (ALRMAR). There are also new registers regarding event flags: now, Alarm event flag is in Status Register (SR) and write 1 in Status Clear Register (SCR) is required to clear the event. Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: stm32: rework register management to prepare other version of RTCAmelie Delaunay2018-05-221-57/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch reworks register/bits management because next version of RTC uses the same way of working but with different register's offset or bits moved in new registers. Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: stm32: fix misspelling and misalignment issuesAmelie Delaunay2018-05-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch cleans the following checkpatch complaints: CHECK: 'initalized' may be misspelled - perhaps 'initialized'? #644: FILE: drivers/rtc/rtc-stm32.c:644: + * the calendar has been initalized or not. INITS flag is reset by a CHECK: Alignment should match open parenthesis #669: FILE: drivers/rtc/rtc-stm32.c:669: + rtc->rtc_dev = devm_rtc_device_register(&pdev->dev, pdev->name, + &stm32_rtc_ops, THIS_MODULE); Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: mxc: Switch to SPDX identifierFabio Estevam2018-05-221-10/+3
| | | | | | | | | | | | | | | | | | | | | | | | Adopt the SPDX license identifier headers to ease license compliance management. Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: snvs: Switch to SPDX identifierFabio Estevam2018-05-221-10/+3
| | | | | | | | | | | | | | | | | | | | | | | | Adopt the SPDX license identifier headers to ease license compliance management. Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: nvmem: don't use IS_ERR_OR_NULLUwe Kleine-König2018-05-211-1/+1
| | | | | | | | | | | | | | | | | | | | | nvmem_register() never returns NULL, so IS_ERR is good enough here. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ds1742: don't explicitly specify word_size and stride of nvmemUwe Kleine-König2018-05-211-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | nvmem_register() assumes these values to be 1 if unset, so they don't need to be set explicitly. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: brcmstb-waketimer: add rangeAlexandre Belloni2018-05-211-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | Let the core handle the range. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: brcmstb-waketimer: switch to rtc_register_deviceAlexandre Belloni2018-05-211-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | Switch to devm_rtc_allocate_device/rtc_register_device. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: mxc_v2: use rtc_time64_to_tm in mxc_rtc_read_alarmAlexandre Belloni2018-05-191-1/+1
| | | | | | | | | | | | | | | | | | Use the 64-bit version of rtc_time_to_tm in mxc_rtc_read_alarm Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: mxc_v2: let the core handle rtc rangeAlexandre Belloni2018-05-191-10/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This RTC is a 32-bit second counter. This also solves an issue where mxc_rtc_set_alarm() can return with the lock taken. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: mxc_v2: fix possible race conditionAlexandre Belloni2018-05-191-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The IRQ is requested before the struct rtc is allocated and registered, but this struct is used in the IRQ handler. This may lead to a NULL pointer dereference. Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc before requesting the IRQ. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ls1x: add rangeAlexandre Belloni2018-05-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While the year is encoded on 32 bits in SYS_TOYWRITE1i/SYS_TOYREAD1. The Loongson 1c datasheet states that the range is from 0 to 99. The current code exceeds this range and seems to be working, I deduce that the leap year algorithm will fail in 2100. Anyway, alarm registers only encode the year on 14 bits so with alarm support, the range will always be limited to 0 to 16383. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ls1x: remove useless label and gotoAlexandre Belloni2018-05-171-8/+3
| | | | | | | | | | | | | | | | | | | | | | | | The error handling in ls1x_rtc_probe used to release resources but since it is using devm functions, it only returns a value. Make the code clearer by returning directly instead of using goto. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ls1x: switch to rtc_register_deviceAlexandre Belloni2018-05-171-7/+7
| | | | | | | | | | | | | | | | | | This allows for future improvement of the driver. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: tps6586x: let the core handle rtc rangeAlexandre Belloni2018-05-171-22/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let the core handle offsetting and windowing the RTC range. The RTC has a 40-bit counter counting at 1024 Hz. So its maximum value is 2^(40-10) - 1. Also, let the core handle the offset instead of coding it in the callbacks. Keep the default epoch at the beginning of 2009 (this will fail in 2043). Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: tps6586x: fix possible race conditionAlexandre Belloni2018-05-171-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The probe function is not allowed to fail after the RTC is registered because the following may happen: CPU0: CPU1: sys_load_module() do_init_module() do_one_initcall() cmos_do_probe() rtc_device_register() __register_chrdev() cdev->owner = struct module* open("/dev/rtc0") rtc_device_unregister() module_put() free_module() module_free(mod->module_core) /* struct module *module is now freed */ chrdev_open() spin_lock(cdev_lock) cdev_get() try_module_get() module_is_live() /* dereferences already freed struct module* */ Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: vr41xx: add rangeAlexandre Belloni2018-05-171-0/+2
| | | | | | | | | | | | | | | | | | | | | The vr41xx RTC is a 48-bit counter counting at 32.768 kHz, giving a maximum value of 2^(48-15)-1 seconds. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: vr41xx: fix possible race conditionAlexandre Belloni2018-05-171-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The probe function is not allowed to fail after the RTC is registered because the following may happen: CPU0: CPU1: sys_load_module() do_init_module() do_one_initcall() cmos_do_probe() rtc_device_register() __register_chrdev() cdev->owner = struct module* open("/dev/rtc0") rtc_device_unregister() module_put() free_module() module_free(mod->module_core) /* struct module *module is now freed */ chrdev_open() spin_lock(cdev_lock) cdev_get() try_module_get() module_is_live() /* dereferences already freed struct module* */ Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: rx8581: switch to regmapAlexandre Belloni2018-05-171-113/+42
| | | | | | | | | | | | | | | | | | Switch to regmap to simplify handling block read/write. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: rx8581: error out when time invalidAlexandre Belloni2018-05-171-4/+6
| | | | | | | | | | | | | | | | | | Return an error when the date is unreliable because the battery is low. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: rx8581: remove useless declarationAlexandre Belloni2018-05-171-18/+15
| | | | | | | | | | | | | | | | | | The rx8581_driver forward declaration is useless, remove it. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: rx8581: remove useless indirectionAlexandre Belloni2018-05-171-12/+4
| | | | | | | | | | | | | | | | | | | | | rx8581_get_datetime and rx8581_set_datetime are only used after casting dev to an i2c_client. Remove that useless indirection. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: rx8581: let the core handle rtc rangeAlexandre Belloni2018-05-171-5/+4
| | | | | | | | | | | | | | | | | | Let the core handle offsetting and windowing the RTC range. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: rx8581: add RTC rangeAlexandre Belloni2018-05-171-0/+2
| | | | | | | | | | | | | | | | | | The rx8581 can support dates from 01/01/2000 to 31/12/2099. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: rx8581: switch to rtc_register_deviceAlexandre Belloni2018-05-171-8/+5
| | | | | | | | | | | | | | | | | | This allows for future improvement of the driver. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: tps65910: add rangeAlexandre Belloni2018-05-171-0/+2
| | | | | | | | | | | | | | | | | | The tps65910 RTC can support dates from 01/01/2000 to 31/12/2099. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: tps65910: allow platform power upAlexandre Belloni2018-05-171-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | Currently, the IRQs are disabled when the rtc driver is removed (e.g. when shutting down the platform). This means that the RTC will be unable to power up the platform. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: tps65910: fix possible race conditionAlexandre Belloni2018-05-171-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The IRQ is requested before the struct rtc is allocated and registered, but this struct is used in the IRQ handler. This may lead to a NULL pointer dereference. Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc before requesting the IRQ. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ab-b5ze-s3: let the core handle the RTC rangeAlexandre Belloni2018-05-171-9/+2
| | | | | | | | | | | | | | | | | | | | | The ab-b5ze-s3 RTC is storing the year in an 8bit bcd coded register so it can handle dates from year 2000 to year 2099. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: ab-b5ze-s3: fix possible race conditionsAlexandre Belloni2018-05-171-8/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The IRQ is requested before the struct rtc is allocated and registered, but this struct is used in the IRQ handler. This may lead to a NULL pointer dereference. Also, the probe function is not allowed to fail after the RTC is registered because the following may happen: CPU0: CPU1: sys_load_module() do_init_module() do_one_initcall() cmos_do_probe() rtc_device_register() __register_chrdev() cdev->owner = struct module* open("/dev/rtc0") rtc_device_unregister() module_put() free_module() module_free(mod->module_core) /* struct module *module is now freed */ chrdev_open() spin_lock(cdev_lock) cdev_get() try_module_get() module_is_live() /* dereferences already freed struct module* */ Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc before requesting the IRQ and register the RTC as late as possible. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: 88pm80x: convert to rtc_tm_to_time64/rtc_time64_to_tmAlexandre Belloni2018-05-171-8/+8
| | | | | | | | | | | | | | | | | | | | | Now that the RTC range is properly checked, convert the driver to rtc_tm_to_time64/rtc_time64_to_tm Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: 88pm80x: let the core handle the RTC rangeAlexandre Belloni2018-05-171-6/+2
| | | | | | | | | | | | | | | | | | | | | The 88pm80x RTC is storing the time as a 32bit offset from a 32bit counter so it can handle dates from 0 to U32_MAX. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: 88pm80x: fix possible race conditionAlexandre Belloni2018-05-171-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The IRQ is requested before the struct rtc is allocated and registered, but this struct is used in the IRQ handler. This may lead to a NULL pointer dereference. Switch to devm_rtc_allocate_device/rtc_register_device to allocate the rtc before requesting the IRQ. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: 88pm80x: remove unused pm80x_rtc_info membersAlexandre Belloni2018-05-171-2/+0
| | | | | | | | | | | | | | | | | | | | | pm80x_rtc_info.calib_work and pm80x_rtc_info.vrtc are never used, remove them. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
| * | rtc: 88pm80x: stop setting a default timeAlexandre Belloni2018-05-171-22/+0
| | | | | | | | | | | | | | | | | | | | | It doesn't make sense to set the RTC to a default value at probe time. Let the core handle invalid date and time. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
OpenPOWER on IntegriCloud