Lines Matching full:rtc

10  * checkpatch fixes and usage of rtc-lib code
14 #include <linux/rtc.h>
23 #define DRV_NAME "rtc-ftrtc010"
26 MODULE_DESCRIPTION("RTC driver for Gemini SoC");
56 * Looks like the RTC in the Gemini SoC is (totaly) broken
57 * We can't read/write directly the time from RTC registers.
61 * the same thing, without the rtc-lib.c calls.
66 struct ftrtc010_rtc *rtc = dev_get_drvdata(dev); in ftrtc010_rtc_read_time() local
71 sec = readl(rtc->rtc_base + FTRTC010_RTC_SECOND); in ftrtc010_rtc_read_time()
72 min = readl(rtc->rtc_base + FTRTC010_RTC_MINUTE); in ftrtc010_rtc_read_time()
73 hour = readl(rtc->rtc_base + FTRTC010_RTC_HOUR); in ftrtc010_rtc_read_time()
74 days = readl(rtc->rtc_base + FTRTC010_RTC_DAYS); in ftrtc010_rtc_read_time()
75 offset = readl(rtc->rtc_base + FTRTC010_RTC_RECORD); in ftrtc010_rtc_read_time()
86 struct ftrtc010_rtc *rtc = dev_get_drvdata(dev); in ftrtc010_rtc_set_time() local
92 sec = readl(rtc->rtc_base + FTRTC010_RTC_SECOND); in ftrtc010_rtc_set_time()
93 min = readl(rtc->rtc_base + FTRTC010_RTC_MINUTE); in ftrtc010_rtc_set_time()
94 hour = readl(rtc->rtc_base + FTRTC010_RTC_HOUR); in ftrtc010_rtc_set_time()
95 day = readl(rtc->rtc_base + FTRTC010_RTC_DAYS); in ftrtc010_rtc_set_time()
99 writel(offset, rtc->rtc_base + FTRTC010_RTC_RECORD); in ftrtc010_rtc_set_time()
100 writel(0x01, rtc->rtc_base + FTRTC010_RTC_CR); in ftrtc010_rtc_set_time()
113 struct ftrtc010_rtc *rtc; in ftrtc010_rtc_probe() local
118 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); in ftrtc010_rtc_probe()
119 if (unlikely(!rtc)) in ftrtc010_rtc_probe()
121 platform_set_drvdata(pdev, rtc); in ftrtc010_rtc_probe()
123 rtc->pclk = devm_clk_get(dev, "PCLK"); in ftrtc010_rtc_probe()
124 if (IS_ERR(rtc->pclk)) { in ftrtc010_rtc_probe()
127 ret = clk_prepare_enable(rtc->pclk); in ftrtc010_rtc_probe()
133 rtc->extclk = devm_clk_get(dev, "EXTCLK"); in ftrtc010_rtc_probe()
134 if (IS_ERR(rtc->extclk)) { in ftrtc010_rtc_probe()
137 ret = clk_prepare_enable(rtc->extclk); in ftrtc010_rtc_probe()
148 rtc->rtc_irq = res->start; in ftrtc010_rtc_probe()
154 rtc->rtc_base = devm_ioremap(dev, res->start, in ftrtc010_rtc_probe()
156 if (!rtc->rtc_base) in ftrtc010_rtc_probe()
159 rtc->rtc_dev = devm_rtc_allocate_device(dev); in ftrtc010_rtc_probe()
160 if (IS_ERR(rtc->rtc_dev)) in ftrtc010_rtc_probe()
161 return PTR_ERR(rtc->rtc_dev); in ftrtc010_rtc_probe()
163 rtc->rtc_dev->ops = &ftrtc010_rtc_ops; in ftrtc010_rtc_probe()
165 sec = readl(rtc->rtc_base + FTRTC010_RTC_SECOND); in ftrtc010_rtc_probe()
166 min = readl(rtc->rtc_base + FTRTC010_RTC_MINUTE); in ftrtc010_rtc_probe()
167 hour = readl(rtc->rtc_base + FTRTC010_RTC_HOUR); in ftrtc010_rtc_probe()
168 days = readl(rtc->rtc_base + FTRTC010_RTC_DAYS); in ftrtc010_rtc_probe()
170 rtc->rtc_dev->range_min = (u64)days * 86400 + hour * 3600 + in ftrtc010_rtc_probe()
172 rtc->rtc_dev->range_max = U32_MAX + rtc->rtc_dev->range_min; in ftrtc010_rtc_probe()
174 ret = devm_request_irq(dev, rtc->rtc_irq, ftrtc010_rtc_interrupt, in ftrtc010_rtc_probe()
179 return rtc_register_device(rtc->rtc_dev); in ftrtc010_rtc_probe()
184 struct ftrtc010_rtc *rtc = platform_get_drvdata(pdev); in ftrtc010_rtc_remove() local
186 if (!IS_ERR(rtc->extclk)) in ftrtc010_rtc_remove()
187 clk_disable_unprepare(rtc->extclk); in ftrtc010_rtc_remove()
188 if (!IS_ERR(rtc->pclk)) in ftrtc010_rtc_remove()
189 clk_disable_unprepare(rtc->pclk); in ftrtc010_rtc_remove()
195 { .compatible = "cortina,gemini-rtc" },