Lines Matching refs:rtc
69 struct rtc_device *rtc; member
76 struct lpc24xx_rtc *rtc = dev_get_drvdata(dev); in lpc24xx_rtc_set_time() local
79 rtc_writel(rtc, LPC24XX_CCR, LPC178X_CCALEN); in lpc24xx_rtc_set_time()
81 rtc_writel(rtc, LPC24XX_SEC, tm->tm_sec); in lpc24xx_rtc_set_time()
82 rtc_writel(rtc, LPC24XX_MIN, tm->tm_min); in lpc24xx_rtc_set_time()
83 rtc_writel(rtc, LPC24XX_HOUR, tm->tm_hour); in lpc24xx_rtc_set_time()
84 rtc_writel(rtc, LPC24XX_DOW, tm->tm_wday); in lpc24xx_rtc_set_time()
85 rtc_writel(rtc, LPC24XX_DOM, tm->tm_mday); in lpc24xx_rtc_set_time()
86 rtc_writel(rtc, LPC24XX_DOY, tm->tm_yday); in lpc24xx_rtc_set_time()
87 rtc_writel(rtc, LPC24XX_MONTH, tm->tm_mon); in lpc24xx_rtc_set_time()
88 rtc_writel(rtc, LPC24XX_YEAR, tm->tm_year); in lpc24xx_rtc_set_time()
90 rtc_writel(rtc, LPC24XX_CCR, LPC24XX_CLKEN | LPC178X_CCALEN); in lpc24xx_rtc_set_time()
97 struct lpc24xx_rtc *rtc = dev_get_drvdata(dev); in lpc24xx_rtc_read_time() local
100 ct0 = rtc_readl(rtc, LPC24XX_CTIME0); in lpc24xx_rtc_read_time()
101 ct1 = rtc_readl(rtc, LPC24XX_CTIME1); in lpc24xx_rtc_read_time()
102 ct2 = rtc_readl(rtc, LPC24XX_CTIME2); in lpc24xx_rtc_read_time()
118 struct lpc24xx_rtc *rtc = dev_get_drvdata(dev); in lpc24xx_rtc_read_alarm() local
121 tm->tm_sec = rtc_readl(rtc, LPC24XX_ALSEC); in lpc24xx_rtc_read_alarm()
122 tm->tm_min = rtc_readl(rtc, LPC24XX_ALMIN); in lpc24xx_rtc_read_alarm()
123 tm->tm_hour = rtc_readl(rtc, LPC24XX_ALHOUR); in lpc24xx_rtc_read_alarm()
124 tm->tm_mday = rtc_readl(rtc, LPC24XX_ALDOM); in lpc24xx_rtc_read_alarm()
125 tm->tm_wday = rtc_readl(rtc, LPC24XX_ALDOW); in lpc24xx_rtc_read_alarm()
126 tm->tm_yday = rtc_readl(rtc, LPC24XX_ALDOY); in lpc24xx_rtc_read_alarm()
127 tm->tm_mon = rtc_readl(rtc, LPC24XX_ALMON); in lpc24xx_rtc_read_alarm()
128 tm->tm_year = rtc_readl(rtc, LPC24XX_ALYEAR); in lpc24xx_rtc_read_alarm()
130 wkalrm->enabled = rtc_readl(rtc, LPC24XX_AMR) == 0; in lpc24xx_rtc_read_alarm()
131 wkalrm->pending = !!(rtc_readl(rtc, LPC24XX_ILR) & LPC24XX_RTCCIF); in lpc24xx_rtc_read_alarm()
138 struct lpc24xx_rtc *rtc = dev_get_drvdata(dev); in lpc24xx_rtc_set_alarm() local
142 rtc_writel(rtc, LPC24XX_AMR, LPC24XX_ALARM_DISABLE); in lpc24xx_rtc_set_alarm()
144 rtc_writel(rtc, LPC24XX_ALSEC, tm->tm_sec); in lpc24xx_rtc_set_alarm()
145 rtc_writel(rtc, LPC24XX_ALMIN, tm->tm_min); in lpc24xx_rtc_set_alarm()
146 rtc_writel(rtc, LPC24XX_ALHOUR, tm->tm_hour); in lpc24xx_rtc_set_alarm()
147 rtc_writel(rtc, LPC24XX_ALDOM, tm->tm_mday); in lpc24xx_rtc_set_alarm()
148 rtc_writel(rtc, LPC24XX_ALDOW, tm->tm_wday); in lpc24xx_rtc_set_alarm()
149 rtc_writel(rtc, LPC24XX_ALDOY, tm->tm_yday); in lpc24xx_rtc_set_alarm()
150 rtc_writel(rtc, LPC24XX_ALMON, tm->tm_mon); in lpc24xx_rtc_set_alarm()
151 rtc_writel(rtc, LPC24XX_ALYEAR, tm->tm_year); in lpc24xx_rtc_set_alarm()
154 rtc_writel(rtc, LPC24XX_AMR, 0); in lpc24xx_rtc_set_alarm()
161 struct lpc24xx_rtc *rtc = dev_get_drvdata(dev); in lpc24xx_rtc_alarm_irq_enable() local
164 rtc_writel(rtc, LPC24XX_AMR, 0); in lpc24xx_rtc_alarm_irq_enable()
166 rtc_writel(rtc, LPC24XX_AMR, LPC24XX_ALARM_DISABLE); in lpc24xx_rtc_alarm_irq_enable()
174 struct lpc24xx_rtc *rtc = data; in lpc24xx_rtc_interrupt() local
178 rtc_iir = rtc_readl(rtc, LPC24XX_ILR); in lpc24xx_rtc_interrupt()
181 rtc_writel(rtc, LPC24XX_AMR, LPC24XX_ALARM_DISABLE); in lpc24xx_rtc_interrupt()
185 rtc_writel(rtc, LPC24XX_ILR, rtc_iir); in lpc24xx_rtc_interrupt()
186 rtc_update_irq(rtc->rtc, 1, events); in lpc24xx_rtc_interrupt()
201 struct lpc24xx_rtc *rtc; in lpc24xx_rtc_probe() local
205 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); in lpc24xx_rtc_probe()
206 if (!rtc) in lpc24xx_rtc_probe()
210 rtc->rtc_base = devm_ioremap_resource(&pdev->dev, res); in lpc24xx_rtc_probe()
211 if (IS_ERR(rtc->rtc_base)) in lpc24xx_rtc_probe()
212 return PTR_ERR(rtc->rtc_base); in lpc24xx_rtc_probe()
220 rtc->clk_rtc = devm_clk_get(&pdev->dev, "rtc"); in lpc24xx_rtc_probe()
221 if (IS_ERR(rtc->clk_rtc)) { in lpc24xx_rtc_probe()
223 return PTR_ERR(rtc->clk_rtc); in lpc24xx_rtc_probe()
226 rtc->clk_reg = devm_clk_get(&pdev->dev, "reg"); in lpc24xx_rtc_probe()
227 if (IS_ERR(rtc->clk_reg)) { in lpc24xx_rtc_probe()
229 return PTR_ERR(rtc->clk_reg); in lpc24xx_rtc_probe()
232 ret = clk_prepare_enable(rtc->clk_rtc); in lpc24xx_rtc_probe()
238 ret = clk_prepare_enable(rtc->clk_reg); in lpc24xx_rtc_probe()
244 platform_set_drvdata(pdev, rtc); in lpc24xx_rtc_probe()
247 rtc_writel(rtc, LPC24XX_ILR, LPC24XX_RTCCIF | LPC24XX_RTCALF); in lpc24xx_rtc_probe()
250 rtc_writel(rtc, LPC24XX_CCR, LPC24XX_CLKEN | LPC178X_CCALEN); in lpc24xx_rtc_probe()
253 pdev->name, rtc); in lpc24xx_rtc_probe()
259 rtc->rtc = devm_rtc_device_register(&pdev->dev, "lpc24xx-rtc", in lpc24xx_rtc_probe()
261 if (IS_ERR(rtc->rtc)) { in lpc24xx_rtc_probe()
263 ret = PTR_ERR(rtc->rtc); in lpc24xx_rtc_probe()
270 clk_disable_unprepare(rtc->clk_reg); in lpc24xx_rtc_probe()
272 clk_disable_unprepare(rtc->clk_rtc); in lpc24xx_rtc_probe()
278 struct lpc24xx_rtc *rtc = platform_get_drvdata(pdev); in lpc24xx_rtc_remove() local
281 rtc_writel(rtc, LPC24XX_AMR, LPC24XX_ALARM_DISABLE); in lpc24xx_rtc_remove()
282 rtc_writel(rtc, LPC24XX_CIIR, 0); in lpc24xx_rtc_remove()
284 rtc_writel(rtc, LPC24XX_CCR, LPC178X_CCALEN); in lpc24xx_rtc_remove()
286 clk_disable_unprepare(rtc->clk_rtc); in lpc24xx_rtc_remove()
287 clk_disable_unprepare(rtc->clk_reg); in lpc24xx_rtc_remove()