Lines Matching refs:pxa_rtc

68 #define rtc_readl(pxa_rtc, reg)	\
69 __raw_readl((pxa_rtc)->base + (reg))
70 #define rtc_writel(pxa_rtc, reg, value) \
71 __raw_writel((value), (pxa_rtc)->base + (reg))
73 struct pxa_rtc {
109 static void rtsr_clear_bits(struct pxa_rtc *pxa_rtc, u32 mask)
113 rtsr = rtc_readl(pxa_rtc, RTSR);
116 rtc_writel(pxa_rtc, RTSR, rtsr);
119 static void rtsr_set_bits(struct pxa_rtc *pxa_rtc, u32 mask)
123 rtsr = rtc_readl(pxa_rtc, RTSR);
126 rtc_writel(pxa_rtc, RTSR, rtsr);
131 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev_id);
135 spin_lock(&pxa_rtc->lock);
138 rtsr = rtc_readl(pxa_rtc, RTSR);
139 rtc_writel(pxa_rtc, RTSR, rtsr);
142 rtsr_clear_bits(pxa_rtc, RTSR_RDALE1 | RTSR_PIALE | RTSR_HZE);
156 rtc_update_irq(pxa_rtc->rtc, 1, events);
159 rtc_writel(pxa_rtc, RTSR, rtsr & ~RTSR_TRIG_MASK);
161 spin_unlock(&pxa_rtc->lock);
167 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
170 ret = request_irq(pxa_rtc->sa1100_rtc.irq_1hz, pxa_rtc_irq, 0,
174 pxa_rtc->sa1100_rtc.irq_1hz, ret);
177 ret = request_irq(pxa_rtc->sa1100_rtc.irq_alarm, pxa_rtc_irq, 0,
181 pxa_rtc->sa1100_rtc.irq_alarm, ret);
188 free_irq(pxa_rtc->sa1100_rtc.irq_1hz, dev);
195 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
197 spin_lock_irq(&pxa_rtc->lock);
198 rtsr_clear_bits(pxa_rtc, RTSR_PIALE | RTSR_RDALE1 | RTSR_HZE);
199 spin_unlock_irq(&pxa_rtc->lock);
201 free_irq(pxa_rtc->sa1100_rtc.irq_1hz, dev);
202 free_irq(pxa_rtc->sa1100_rtc.irq_alarm, dev);
207 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
209 spin_lock_irq(&pxa_rtc->lock);
212 rtsr_set_bits(pxa_rtc, RTSR_RDALE1);
214 rtsr_clear_bits(pxa_rtc, RTSR_RDALE1);
216 spin_unlock_irq(&pxa_rtc->lock);
222 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
225 rycr = rtc_readl(pxa_rtc, RYCR);
226 rdcr = rtc_readl(pxa_rtc, RDCR);
234 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
236 rtc_writel(pxa_rtc, RYCR, ryxr_calc(tm));
237 rtc_writel(pxa_rtc, RDCR, rdxr_calc(tm));
244 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
247 ryar = rtc_readl(pxa_rtc, RYAR1);
248 rdar = rtc_readl(pxa_rtc, RDAR1);
251 rtsr = rtc_readl(pxa_rtc, RTSR);
259 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
262 spin_lock_irq(&pxa_rtc->lock);
264 rtc_writel(pxa_rtc, RYAR1, ryxr_calc(&alrm->time));
265 rtc_writel(pxa_rtc, RDAR1, rdxr_calc(&alrm->time));
267 rtsr = rtc_readl(pxa_rtc, RTSR);
272 rtc_writel(pxa_rtc, RTSR, rtsr);
274 spin_unlock_irq(&pxa_rtc->lock);
281 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
283 seq_printf(seq, "trim/divider\t: 0x%08x\n", rtc_readl(pxa_rtc, RTTR));
285 (rtc_readl(pxa_rtc, RTSR) & RTSR_HZE) ? "yes" : "no");
287 (rtc_readl(pxa_rtc, RTSR) & RTSR_PIALE) ? "yes" : "no");
288 seq_printf(seq, "periodic_freq\t: %u\n", rtc_readl(pxa_rtc, PIAR));
305 struct pxa_rtc *pxa_rtc;
309 pxa_rtc = devm_kzalloc(dev, sizeof(*pxa_rtc), GFP_KERNEL);
310 if (!pxa_rtc)
312 sa1100_rtc = &pxa_rtc->sa1100_rtc;
314 spin_lock_init(&pxa_rtc->lock);
315 platform_set_drvdata(pdev, pxa_rtc);
317 pxa_rtc->ress = platform_get_resource(pdev, IORESOURCE_MEM, 0);
318 if (!pxa_rtc->ress) {
334 pxa_rtc->base = devm_ioremap(dev, pxa_rtc->ress->start,
335 resource_size(pxa_rtc->ress));
336 if (!pxa_rtc->base) {
343 sa1100_rtc->rcnr = pxa_rtc->base + 0x0;
344 sa1100_rtc->rtsr = pxa_rtc->base + 0x8;
345 sa1100_rtc->rtar = pxa_rtc->base + 0x4;
346 sa1100_rtc->rttr = pxa_rtc->base + 0xc;
353 rtsr_clear_bits(pxa_rtc, RTSR_PIALE | RTSR_RDALE1 | RTSR_HZE);
355 pxa_rtc->rtc = devm_rtc_device_register(&pdev->dev, "pxa-rtc",
357 if (IS_ERR(pxa_rtc->rtc)) {
358 ret = PTR_ERR(pxa_rtc->rtc);
387 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
390 enable_irq_wake(pxa_rtc->sa1100_rtc.irq_alarm);
396 struct pxa_rtc *pxa_rtc = dev_get_drvdata(dev);
399 disable_irq_wake(pxa_rtc->sa1100_rtc.irq_alarm);