xref: /openbmc/linux/drivers/rtc/nvmem.c (revision e0d77d0f38aa60ca61b3ce6e60d64fad2aa0853d)
1cdf7545aSAlexandre Belloni // SPDX-License-Identifier: GPL-2.0
2697e5a47SAlexandre Belloni /*
3697e5a47SAlexandre Belloni  * RTC subsystem, nvmem interface
4697e5a47SAlexandre Belloni  *
5697e5a47SAlexandre Belloni  * Copyright (C) 2017 Alexandre Belloni
6697e5a47SAlexandre Belloni  */
7697e5a47SAlexandre Belloni 
8697e5a47SAlexandre Belloni #include <linux/err.h>
9697e5a47SAlexandre Belloni #include <linux/types.h>
10697e5a47SAlexandre Belloni #include <linux/nvmem-consumer.h>
11697e5a47SAlexandre Belloni #include <linux/rtc.h>
12697e5a47SAlexandre Belloni 
devm_rtc_nvmem_register(struct rtc_device * rtc,struct nvmem_config * nvmem_config)133a905c2dSBartosz Golaszewski int devm_rtc_nvmem_register(struct rtc_device *rtc,
144cce9d39SAlexandre Belloni 		       struct nvmem_config *nvmem_config)
15697e5a47SAlexandre Belloni {
166746bc09SBartosz Golaszewski 	struct device *dev = rtc->dev.parent;
1741c9e132SAlexandre Belloni 	struct nvmem_device *nvmem;
18ab3ea36eSAlexandre Belloni 
194cce9d39SAlexandre Belloni 	if (!nvmem_config)
202cc82121SAlexandre Belloni 		return -ENODEV;
21697e5a47SAlexandre Belloni 
226746bc09SBartosz Golaszewski 	nvmem_config->dev = dev;
234cce9d39SAlexandre Belloni 	nvmem_config->owner = rtc->owner;
24*26e2fe4cSRafał Miłecki 	nvmem_config->add_legacy_fixed_of_cells = true;
256746bc09SBartosz Golaszewski 	nvmem = devm_nvmem_register(dev, nvmem_config);
266746bc09SBartosz Golaszewski 	if (IS_ERR(nvmem))
276746bc09SBartosz Golaszewski 		dev_err(dev, "failed to register nvmem device for RTC\n");
28697e5a47SAlexandre Belloni 
2925ece305SAlexandre Belloni 	return PTR_ERR_OR_ZERO(nvmem);
30697e5a47SAlexandre Belloni }
313a905c2dSBartosz Golaszewski EXPORT_SYMBOL_GPL(devm_rtc_nvmem_register);
32