1 // SPDX-License-Identifier: GPL-2.0+
3 * (C) Copyright 2015 Google, Inc
4 * Written by Simon Glass <sjg@chromium.org>
12 int dm_rtc_get(struct udevice *dev, struct rtc_time *time)
14 struct rtc_ops *ops = rtc_get_ops(dev);
19 return ops->get(dev, time);
22 int dm_rtc_set(struct udevice *dev, struct rtc_time *time)
24 struct rtc_ops *ops = rtc_get_ops(dev);
29 return ops->set(dev, time);
32 int dm_rtc_reset(struct udevice *dev)
34 struct rtc_ops *ops = rtc_get_ops(dev);
39 return ops->reset(dev);
42 int rtc_read8(struct udevice *dev, unsigned int reg)
44 struct rtc_ops *ops = rtc_get_ops(dev);
49 return ops->read8(dev, reg);
52 int rtc_write8(struct udevice *dev, unsigned int reg, int val)
54 struct rtc_ops *ops = rtc_get_ops(dev);
59 return ops->write8(dev, reg, val);
62 int rtc_read16(struct udevice *dev, unsigned int reg, u16 *valuep)
68 for (i = 0; i < sizeof(value); i++) {
69 ret = rtc_read8(dev, reg + i);
72 value |= ret << (i << 3);
79 int rtc_write16(struct udevice *dev, unsigned int reg, u16 value)
83 for (i = 0; i < sizeof(value); i++) {
84 ret = rtc_write8(dev, reg + i, (value >> (i << 3)) & 0xff);
92 int rtc_read32(struct udevice *dev, unsigned int reg, u32 *valuep)
98 for (i = 0; i < sizeof(value); i++) {
99 ret = rtc_read8(dev, reg + i);
102 value |= ret << (i << 3);
109 int rtc_write32(struct udevice *dev, unsigned int reg, u32 value)
113 for (i = 0; i < sizeof(value); i++) {
114 ret = rtc_write8(dev, reg + i, (value >> (i << 3)) & 0xff);
122 UCLASS_DRIVER(rtc) = {
125 .post_bind = dm_scan_fdt_dev,