Lines Matching refs:info
46 struct sa1100_rtc *info = dev_get_drvdata(dev_id); in sa1100_rtc_interrupt() local
47 struct rtc_device *rtc = info->rtc; in sa1100_rtc_interrupt()
51 spin_lock(&info->lock); in sa1100_rtc_interrupt()
53 rtsr = readl_relaxed(info->rtsr); in sa1100_rtc_interrupt()
55 writel_relaxed(0, info->rtsr); in sa1100_rtc_interrupt()
62 writel_relaxed((RTSR_AL | RTSR_HZ) & (rtsr >> 2), info->rtsr); in sa1100_rtc_interrupt()
71 writel_relaxed(RTSR_AL | RTSR_HZ, info->rtsr); in sa1100_rtc_interrupt()
77 writel_relaxed(rtsr & (RTSR_ALE | RTSR_HZE), info->rtsr); in sa1100_rtc_interrupt()
87 spin_unlock(&info->lock); in sa1100_rtc_interrupt()
95 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_alarm_irq_enable() local
97 spin_lock_irq(&info->lock); in sa1100_rtc_alarm_irq_enable()
98 rtsr = readl_relaxed(info->rtsr); in sa1100_rtc_alarm_irq_enable()
103 writel_relaxed(rtsr, info->rtsr); in sa1100_rtc_alarm_irq_enable()
104 spin_unlock_irq(&info->lock); in sa1100_rtc_alarm_irq_enable()
110 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_read_time() local
112 rtc_time64_to_tm(readl_relaxed(info->rcnr), tm); in sa1100_rtc_read_time()
118 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_set_time() local
120 writel_relaxed(rtc_tm_to_time64(tm), info->rcnr); in sa1100_rtc_set_time()
128 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_read_alarm() local
130 rtsr = readl_relaxed(info->rtsr); in sa1100_rtc_read_alarm()
138 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_set_alarm() local
140 spin_lock_irq(&info->lock); in sa1100_rtc_set_alarm()
141 writel_relaxed(readl_relaxed(info->rtsr) & in sa1100_rtc_set_alarm()
142 (RTSR_HZE | RTSR_ALE | RTSR_AL), info->rtsr); in sa1100_rtc_set_alarm()
143 writel_relaxed(rtc_tm_to_time64(&alrm->time), info->rtar); in sa1100_rtc_set_alarm()
145 writel_relaxed(readl_relaxed(info->rtsr) | RTSR_ALE, info->rtsr); in sa1100_rtc_set_alarm()
147 writel_relaxed(readl_relaxed(info->rtsr) & ~RTSR_ALE, info->rtsr); in sa1100_rtc_set_alarm()
148 spin_unlock_irq(&info->lock); in sa1100_rtc_set_alarm()
155 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_proc() local
157 seq_printf(seq, "trim/divider\t\t: 0x%08x\n", readl_relaxed(info->rttr)); in sa1100_rtc_proc()
158 seq_printf(seq, "RTSR\t\t\t: 0x%08x\n", readl_relaxed(info->rtsr)); in sa1100_rtc_proc()
172 int sa1100_rtc_init(struct platform_device *pdev, struct sa1100_rtc *info) in sa1100_rtc_init() argument
176 spin_lock_init(&info->lock); in sa1100_rtc_init()
178 info->clk = devm_clk_get(&pdev->dev, NULL); in sa1100_rtc_init()
179 if (IS_ERR(info->clk)) { in sa1100_rtc_init()
181 return PTR_ERR(info->clk); in sa1100_rtc_init()
184 ret = clk_prepare_enable(info->clk); in sa1100_rtc_init()
194 if (readl_relaxed(info->rttr) == 0) { in sa1100_rtc_init()
195 writel_relaxed(RTC_DEF_DIVIDER + (RTC_DEF_TRIM << 16), info->rttr); in sa1100_rtc_init()
199 writel_relaxed(0, info->rcnr); in sa1100_rtc_init()
202 info->rtc->ops = &sa1100_rtc_ops; in sa1100_rtc_init()
203 info->rtc->range_max = U32_MAX; in sa1100_rtc_init()
205 ret = devm_rtc_register_device(info->rtc); in sa1100_rtc_init()
207 clk_disable_unprepare(info->clk); in sa1100_rtc_init()
233 writel_relaxed(RTSR_AL | RTSR_HZ, info->rtsr); in sa1100_rtc_init()
241 struct sa1100_rtc *info; in sa1100_rtc_probe() local
251 info = devm_kzalloc(&pdev->dev, sizeof(struct sa1100_rtc), GFP_KERNEL); in sa1100_rtc_probe()
252 if (!info) in sa1100_rtc_probe()
254 info->irq_1hz = irq_1hz; in sa1100_rtc_probe()
255 info->irq_alarm = irq_alarm; in sa1100_rtc_probe()
257 info->rtc = devm_rtc_allocate_device(&pdev->dev); in sa1100_rtc_probe()
258 if (IS_ERR(info->rtc)) in sa1100_rtc_probe()
259 return PTR_ERR(info->rtc); in sa1100_rtc_probe()
280 info->rcnr = base + 0x04; in sa1100_rtc_probe()
281 info->rtsr = base + 0x10; in sa1100_rtc_probe()
282 info->rtar = base + 0x00; in sa1100_rtc_probe()
283 info->rttr = base + 0x08; in sa1100_rtc_probe()
285 info->rcnr = base + 0x0; in sa1100_rtc_probe()
286 info->rtsr = base + 0x8; in sa1100_rtc_probe()
287 info->rtar = base + 0x4; in sa1100_rtc_probe()
288 info->rttr = base + 0xc; in sa1100_rtc_probe()
291 platform_set_drvdata(pdev, info); in sa1100_rtc_probe()
294 return sa1100_rtc_init(pdev, info); in sa1100_rtc_probe()
299 struct sa1100_rtc *info = platform_get_drvdata(pdev); in sa1100_rtc_remove() local
301 if (info) { in sa1100_rtc_remove()
302 spin_lock_irq(&info->lock); in sa1100_rtc_remove()
303 writel_relaxed(0, info->rtsr); in sa1100_rtc_remove()
304 spin_unlock_irq(&info->lock); in sa1100_rtc_remove()
305 clk_disable_unprepare(info->clk); in sa1100_rtc_remove()
312 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_suspend() local
314 enable_irq_wake(info->irq_alarm); in sa1100_rtc_suspend()
320 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_resume() local
322 disable_irq_wake(info->irq_alarm); in sa1100_rtc_resume()