Lines Matching +full:meson +full:- +full:device
1 // SPDX-License-Identifier: GPL-2.0
20 static int meson_vrtc_read_time(struct device *dev, struct rtc_time *tm) in meson_vrtc_read_time()
34 writel_relaxed(time, vrtc->io_alarm); in meson_vrtc_set_wakeup_time()
37 static int meson_vrtc_set_alarm(struct device *dev, struct rtc_wkalrm *alarm) in meson_vrtc_set_alarm()
41 dev_dbg(dev, "%s: alarm->enabled=%d\n", __func__, alarm->enabled); in meson_vrtc_set_alarm()
42 if (alarm->enabled) in meson_vrtc_set_alarm()
43 vrtc->alarm_time = rtc_tm_to_time64(&alarm->time); in meson_vrtc_set_alarm()
45 vrtc->alarm_time = 0; in meson_vrtc_set_alarm()
50 static int meson_vrtc_alarm_irq_enable(struct device *dev, unsigned int enabled) in meson_vrtc_alarm_irq_enable()
54 vrtc->enabled = enabled; in meson_vrtc_alarm_irq_enable()
69 vrtc = devm_kzalloc(&pdev->dev, sizeof(*vrtc), GFP_KERNEL); in meson_vrtc_probe()
71 return -ENOMEM; in meson_vrtc_probe()
73 vrtc->io_alarm = devm_platform_ioremap_resource(pdev, 0); in meson_vrtc_probe()
74 if (IS_ERR(vrtc->io_alarm)) in meson_vrtc_probe()
75 return PTR_ERR(vrtc->io_alarm); in meson_vrtc_probe()
77 device_init_wakeup(&pdev->dev, true); in meson_vrtc_probe()
81 rtc = devm_rtc_allocate_device(&pdev->dev); in meson_vrtc_probe()
85 rtc->ops = &meson_vrtc_ops; in meson_vrtc_probe()
89 static int __maybe_unused meson_vrtc_suspend(struct device *dev) in meson_vrtc_suspend()
94 if (vrtc->alarm_time) { in meson_vrtc_suspend()
103 vrtc->alarm_time, local_time); in meson_vrtc_suspend()
104 alarm_secs = vrtc->alarm_time - local_time; in meson_vrtc_suspend()
118 static int __maybe_unused meson_vrtc_resume(struct device *dev) in meson_vrtc_resume()
124 vrtc->alarm_time = 0; in meson_vrtc_resume()
133 { .compatible = "amlogic,meson-vrtc"},
141 .name = "meson-vrtc",