summaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-pcf85363.c
Commit message (Collapse)AuthorAgeFilesLines
* rtc: use simple i2c probeStephen Kitt2022-06-241-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All these drivers have an i2c probe function which doesn't use the "struct i2c_device_id *id" parameter, so they can trivially be converted to the "probe_new" style of probe with a single argument. This change was done using the following Coccinelle script, and fixed up for whitespace changes: @ rule1 @ identifier fn; identifier client, id; @@ - static int fn(struct i2c_client *client, const struct i2c_device_id *id) + static int fn(struct i2c_client *client) { ...when != id } @ rule2 depends on rule1 @ identifier rule1.fn; identifier driver; @@ struct i2c_driver driver = { - .probe + .probe_new = ( fn | - &fn + fn ) , }; Signed-off-by: Stephen Kitt <steve@sk2.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20220610162346.4134094-1-steve@sk2.org
* rtc: pcf85363: quiet maybe-unused variable warningAlexandre Belloni2021-02-061-1/+1
| | | | | | | When CONFIG_OF is disabled then the matching table is not referenced. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20210202112219.3610853-13-alexandre.belloni@bootlin.com
* rtc: pcf85363: drop a struct rtc_class_opsAlexandre Belloni2021-01-161-6/+2
| | | | | | | | Merge both struct rtc_class_ops in a single one and use RTC_FEATURE_ALARM to signal to the core whether alarms are available. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20210110231752.1418816-11-alexandre.belloni@bootlin.com
* rtc: rework rtc_register_device() resource managementBartosz Golaszewski2020-11-191-1/+1
| | | | | | | | | | | | | | | | | | | | rtc_register_device() is a managed interface but it doesn't use devres by itself - instead it marks an rtc_device as "registered" and the devres callback for devm_rtc_allocate_device() takes care of resource release. This doesn't correspond with the design behind devres where managed structures should not be aware of being managed. The correct solution here is to register a separate devres callback for unregistering the device. While at it: rename rtc_register_device() to devm_rtc_register_device() and add it to the list of managed interfaces in devres.rst. This way we can avoid any potential confusion of driver developers who may expect there to exist a corresponding unregister function. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20201109163409.24301-8-brgl@bgdev.pl
* rtc: add devm_ prefix to rtc_nvmem_register()Bartosz Golaszewski2020-11-191-1/+1
| | | | | | | | | | | rtc_nvmem_register() is a managed interface. It doesn't require any release function to be called at driver detach. To avoid confusing driver authors, let's rename it to devm_rtc_nvmem_register() and add it to the list of managed interfaces in Documentation/. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20201109163409.24301-6-brgl@bgdev.pl
* rtc: pcf85363/pcf85263: fix regmap error in set_timeBiwen Li2019-09-011-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Issue: - # hwclock -w hwclock: RTC_SET_TIME: Invalid argument Why: - Relative commit: 8b9f9d4dc511 ("regmap: verify if register is writeable before writing operations"), this patch will always check for unwritable registers, it will compare reg with max_register in regmap_writeable. - The pcf85363/pcf85263 has the capability of address wrapping which means if you access an address outside the allowed range (0x00-0x2f) hardware actually wraps the access to a lower address. The rtc-pcf85363 driver will use this feature to configure the time and execute 2 actions in the same i2c write operation (stopping the clock and configure the time). However the driver has also configured the `regmap maxregister` protection mechanism that will block accessing addresses outside valid range (0x00-0x2f). How: - Split of writing regs to two parts, first part writes control registers about stop_enable and resets, second part writes RTC time and date registers. Signed-off-by: Biwen Li <biwen.li@nxp.com> Link: https://lore.kernel.org/r/20190829021418.4607-1-biwen.li@nxp.com Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: convert to SPDX identifierAlexandre Belloni2019-04-111-6/+1
| | | | | | Use SPDX-License-Identifier instead of a verbose license text. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: remove useless forward declarationAlexandre Belloni2019-04-111-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>
* rtc: pcf85363: remove bogus i2c functionality checkAlexandre Belloni2019-04-111-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>
* rtc: pcf85363: set rangeAlexandre Belloni2019-04-111-0/+2
| | | | | | This is a standard BCD RTC that will fail in 2100. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: remove unused struct pcf85363 memberAlexandre Belloni2019-04-111-4/+2
| | | | | | pcf85363->dev is unused, remove it. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: Add support for NXP pcf85263 rtcBiju Das2018-12-111-18/+76
| | | | | | | | | | | Add support for NXP pcf85263 real-time clock. pcf85263 rtc is compatible with pcf85363,except that pcf85363 has additional 64 bytes of RAM. 1 byte of nvmem is supported and exposed in sysfs (# is the instance number,starting with 0): /sys/bus/nvmem/devices/pcf85x63-#/nvmem Signed-off-by: Biju Das <biju.das@bp.renesas.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: set time accuratelyAlexandre Belloni2018-03-171-4/+16
| | | | | | | | | | | | | | | | | | | | As per 8.2.6 Setting and reading the time in RTC mode, first stop the clok, then reset it before setting the date and time registers. Finally, start the clock. This uses register address wrap around from 0x2f to 0x00 for efficiency. This allows to set the clock with a millisecond accuracy (drift is not corrected in this example): RTC System 1325388767 1325388767.000029180 1325388768 1325388768.000018362 1325388769 1325388769.000006544 1325388770 1325388769.999992725 1325388771 1325388770.999974544 Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: add alarm supportAlexandre Belloni2018-03-171-0/+159
| | | | | | Handle alarms, currently only on INTA Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: add .max_register in regmap_configAlexandre Belloni2018-03-171-0/+1
| | | | | | This helps debugging as it allows reading registers from debugfs. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: put struct nvmem_config on the stackAlexandre Belloni2018-03-011-9/+10
| | | | | | Avoid allocating memory for struct nvmem_config. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: pcf85363: call rtc_nvmem_register()Alexandre Belloni2018-03-011-2/+6
| | | | | | | Call rtc_nvmem_register instead of letting the core do it and stop using the nvmem_config member of struct rtc_device. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
* rtc: add support for NXP PCF85363 real-time clockEric Nelson2017-11-081-0/+220
Note that alarms are not currently implemented. 64 bytes of nvmem is supported and exposed in sysfs (# is the instance number, starting with 0): /sys/bus/nvmem/devices/pcf85363-#/nvmem Signed-off-by: Eric Nelson <eric@nelint.com> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> Tested-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>