Lines Matching refs:info

52 	struct sa1100_rtc *info = dev_get_drvdata(dev_id);  in sa1100_rtc_interrupt()  local
53 struct rtc_device *rtc = info->rtc; in sa1100_rtc_interrupt()
57 spin_lock(&info->lock); in sa1100_rtc_interrupt()
59 rtsr = readl_relaxed(info->rtsr); in sa1100_rtc_interrupt()
61 writel_relaxed(0, info->rtsr); in sa1100_rtc_interrupt()
68 writel_relaxed((RTSR_AL | RTSR_HZ) & (rtsr >> 2), info->rtsr); in sa1100_rtc_interrupt()
77 writel_relaxed(RTSR_AL | RTSR_HZ, info->rtsr); in sa1100_rtc_interrupt()
83 writel_relaxed(rtsr & (RTSR_ALE | RTSR_HZE), info->rtsr); in sa1100_rtc_interrupt()
93 spin_unlock(&info->lock); in sa1100_rtc_interrupt()
100 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_open() local
101 struct rtc_device *rtc = info->rtc; in sa1100_rtc_open()
104 ret = request_irq(info->irq_1hz, sa1100_rtc_interrupt, 0, "rtc 1Hz", dev); in sa1100_rtc_open()
106 dev_err(dev, "IRQ %d already in use.\n", info->irq_1hz); in sa1100_rtc_open()
109 ret = request_irq(info->irq_alarm, sa1100_rtc_interrupt, 0, "rtc Alrm", dev); in sa1100_rtc_open()
111 dev_err(dev, "IRQ %d already in use.\n", info->irq_alarm); in sa1100_rtc_open()
120 free_irq(info->irq_1hz, dev); in sa1100_rtc_open()
122 clk_disable_unprepare(info->clk); in sa1100_rtc_open()
128 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_release() local
130 spin_lock_irq(&info->lock); in sa1100_rtc_release()
131 writel_relaxed(0, info->rtsr); in sa1100_rtc_release()
132 spin_unlock_irq(&info->lock); in sa1100_rtc_release()
134 free_irq(info->irq_alarm, dev); in sa1100_rtc_release()
135 free_irq(info->irq_1hz, dev); in sa1100_rtc_release()
141 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_alarm_irq_enable() local
143 spin_lock_irq(&info->lock); in sa1100_rtc_alarm_irq_enable()
144 rtsr = readl_relaxed(info->rtsr); in sa1100_rtc_alarm_irq_enable()
149 writel_relaxed(rtsr, info->rtsr); in sa1100_rtc_alarm_irq_enable()
150 spin_unlock_irq(&info->lock); in sa1100_rtc_alarm_irq_enable()
156 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_read_time() local
158 rtc_time_to_tm(readl_relaxed(info->rcnr), tm); in sa1100_rtc_read_time()
164 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_set_time() local
170 writel_relaxed(time, info->rcnr); in sa1100_rtc_set_time()
177 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_read_alarm() local
179 rtsr = readl_relaxed(info->rtsr); in sa1100_rtc_read_alarm()
187 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_set_alarm() local
191 spin_lock_irq(&info->lock); in sa1100_rtc_set_alarm()
195 writel_relaxed(readl_relaxed(info->rtsr) & in sa1100_rtc_set_alarm()
196 (RTSR_HZE | RTSR_ALE | RTSR_AL), info->rtsr); in sa1100_rtc_set_alarm()
197 writel_relaxed(time, info->rtar); in sa1100_rtc_set_alarm()
199 writel_relaxed(readl_relaxed(info->rtsr) | RTSR_ALE, info->rtsr); in sa1100_rtc_set_alarm()
201 writel_relaxed(readl_relaxed(info->rtsr) & ~RTSR_ALE, info->rtsr); in sa1100_rtc_set_alarm()
203 spin_unlock_irq(&info->lock); in sa1100_rtc_set_alarm()
210 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_proc() local
212 seq_printf(seq, "trim/divider\t\t: 0x%08x\n", readl_relaxed(info->rttr)); in sa1100_rtc_proc()
213 seq_printf(seq, "RTSR\t\t\t: 0x%08x\n", readl_relaxed(info->rtsr)); in sa1100_rtc_proc()
229 int sa1100_rtc_init(struct platform_device *pdev, struct sa1100_rtc *info) in sa1100_rtc_init() argument
234 spin_lock_init(&info->lock); in sa1100_rtc_init()
236 info->clk = devm_clk_get(&pdev->dev, NULL); in sa1100_rtc_init()
237 if (IS_ERR(info->clk)) { in sa1100_rtc_init()
239 return PTR_ERR(info->clk); in sa1100_rtc_init()
242 ret = clk_prepare_enable(info->clk); in sa1100_rtc_init()
252 if (readl_relaxed(info->rttr) == 0) { in sa1100_rtc_init()
253 writel_relaxed(RTC_DEF_DIVIDER + (RTC_DEF_TRIM << 16), info->rttr); in sa1100_rtc_init()
257 writel_relaxed(0, info->rcnr); in sa1100_rtc_init()
263 clk_disable_unprepare(info->clk); in sa1100_rtc_init()
266 info->rtc = rtc; in sa1100_rtc_init()
290 writel_relaxed(RTSR_AL | RTSR_HZ, info->rtsr); in sa1100_rtc_init()
298 struct sa1100_rtc *info; in sa1100_rtc_probe() local
308 info = devm_kzalloc(&pdev->dev, sizeof(struct sa1100_rtc), GFP_KERNEL); in sa1100_rtc_probe()
309 if (!info) in sa1100_rtc_probe()
311 info->irq_1hz = irq_1hz; in sa1100_rtc_probe()
312 info->irq_alarm = irq_alarm; in sa1100_rtc_probe()
321 info->rcnr = base + 0x04; in sa1100_rtc_probe()
322 info->rtsr = base + 0x10; in sa1100_rtc_probe()
323 info->rtar = base + 0x00; in sa1100_rtc_probe()
324 info->rttr = base + 0x08; in sa1100_rtc_probe()
326 info->rcnr = base + 0x0; in sa1100_rtc_probe()
327 info->rtsr = base + 0x8; in sa1100_rtc_probe()
328 info->rtar = base + 0x4; in sa1100_rtc_probe()
329 info->rttr = base + 0xc; in sa1100_rtc_probe()
332 platform_set_drvdata(pdev, info); in sa1100_rtc_probe()
335 return sa1100_rtc_init(pdev, info); in sa1100_rtc_probe()
340 struct sa1100_rtc *info = platform_get_drvdata(pdev); in sa1100_rtc_remove() local
342 if (info) in sa1100_rtc_remove()
343 clk_disable_unprepare(info->clk); in sa1100_rtc_remove()
351 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_suspend() local
353 enable_irq_wake(info->irq_alarm); in sa1100_rtc_suspend()
359 struct sa1100_rtc *info = dev_get_drvdata(dev); in sa1100_rtc_resume() local
361 disable_irq_wake(info->irq_alarm); in sa1100_rtc_resume()