Lines Matching refs:rtap

56 	struct coh901331_port *rtap = data;  in coh901331_interrupt()  local
58 clk_enable(rtap->clk); in coh901331_interrupt()
60 writel(1, rtap->virtbase + COH901331_IRQ_EVENT); in coh901331_interrupt()
68 writel(0, rtap->virtbase + COH901331_IRQ_MASK); in coh901331_interrupt()
69 clk_disable(rtap->clk); in coh901331_interrupt()
72 rtc_update_irq(rtap->rtc, 1, RTC_AF); in coh901331_interrupt()
79 struct coh901331_port *rtap = dev_get_drvdata(dev); in coh901331_read_time() local
81 clk_enable(rtap->clk); in coh901331_read_time()
83 if (readl(rtap->virtbase + COH901331_VALID)) { in coh901331_read_time()
84 rtc_time_to_tm(readl(rtap->virtbase + COH901331_CUR_TIME), tm); in coh901331_read_time()
85 clk_disable(rtap->clk); in coh901331_read_time()
88 clk_disable(rtap->clk); in coh901331_read_time()
94 struct coh901331_port *rtap = dev_get_drvdata(dev); in coh901331_set_mmss() local
96 clk_enable(rtap->clk); in coh901331_set_mmss()
97 writel(secs, rtap->virtbase + COH901331_SET_TIME); in coh901331_set_mmss()
98 clk_disable(rtap->clk); in coh901331_set_mmss()
105 struct coh901331_port *rtap = dev_get_drvdata(dev); in coh901331_read_alarm() local
107 clk_enable(rtap->clk); in coh901331_read_alarm()
108 rtc_time_to_tm(readl(rtap->virtbase + COH901331_ALARM), &alarm->time); in coh901331_read_alarm()
109 alarm->pending = readl(rtap->virtbase + COH901331_IRQ_EVENT) & 1U; in coh901331_read_alarm()
110 alarm->enabled = readl(rtap->virtbase + COH901331_IRQ_MASK) & 1U; in coh901331_read_alarm()
111 clk_disable(rtap->clk); in coh901331_read_alarm()
118 struct coh901331_port *rtap = dev_get_drvdata(dev); in coh901331_set_alarm() local
122 clk_enable(rtap->clk); in coh901331_set_alarm()
123 writel(time, rtap->virtbase + COH901331_ALARM); in coh901331_set_alarm()
124 writel(alarm->enabled, rtap->virtbase + COH901331_IRQ_MASK); in coh901331_set_alarm()
125 clk_disable(rtap->clk); in coh901331_set_alarm()
132 struct coh901331_port *rtap = dev_get_drvdata(dev); in coh901331_alarm_irq_enable() local
134 clk_enable(rtap->clk); in coh901331_alarm_irq_enable()
136 writel(1, rtap->virtbase + COH901331_IRQ_MASK); in coh901331_alarm_irq_enable()
138 writel(0, rtap->virtbase + COH901331_IRQ_MASK); in coh901331_alarm_irq_enable()
139 clk_disable(rtap->clk); in coh901331_alarm_irq_enable()
154 struct coh901331_port *rtap = platform_get_drvdata(pdev); in coh901331_remove() local
156 if (rtap) in coh901331_remove()
157 clk_unprepare(rtap->clk); in coh901331_remove()
166 struct coh901331_port *rtap; in coh901331_probe() local
169 rtap = devm_kzalloc(&pdev->dev, in coh901331_probe()
171 if (!rtap) in coh901331_probe()
175 rtap->virtbase = devm_ioremap_resource(&pdev->dev, res); in coh901331_probe()
176 if (IS_ERR(rtap->virtbase)) in coh901331_probe()
177 return PTR_ERR(rtap->virtbase); in coh901331_probe()
179 rtap->irq = platform_get_irq(pdev, 0); in coh901331_probe()
180 if (devm_request_irq(&pdev->dev, rtap->irq, coh901331_interrupt, 0, in coh901331_probe()
181 "RTC COH 901 331 Alarm", rtap)) in coh901331_probe()
184 rtap->clk = devm_clk_get(&pdev->dev, NULL); in coh901331_probe()
185 if (IS_ERR(rtap->clk)) { in coh901331_probe()
186 ret = PTR_ERR(rtap->clk); in coh901331_probe()
192 ret = clk_prepare_enable(rtap->clk); in coh901331_probe()
197 clk_disable(rtap->clk); in coh901331_probe()
199 platform_set_drvdata(pdev, rtap); in coh901331_probe()
200 rtap->rtc = devm_rtc_device_register(&pdev->dev, "coh901331", in coh901331_probe()
202 if (IS_ERR(rtap->rtc)) { in coh901331_probe()
203 ret = PTR_ERR(rtap->rtc); in coh901331_probe()
210 clk_unprepare(rtap->clk); in coh901331_probe()
217 struct coh901331_port *rtap = dev_get_drvdata(dev); in coh901331_suspend() local
225 enable_irq_wake(rtap->irq); in coh901331_suspend()
227 clk_enable(rtap->clk); in coh901331_suspend()
228 rtap->irqmaskstore = readl(rtap->virtbase + COH901331_IRQ_MASK); in coh901331_suspend()
229 writel(0, rtap->virtbase + COH901331_IRQ_MASK); in coh901331_suspend()
230 clk_disable(rtap->clk); in coh901331_suspend()
232 clk_unprepare(rtap->clk); in coh901331_suspend()
238 struct coh901331_port *rtap = dev_get_drvdata(dev); in coh901331_resume() local
240 clk_prepare(rtap->clk); in coh901331_resume()
242 disable_irq_wake(rtap->irq); in coh901331_resume()
244 clk_enable(rtap->clk); in coh901331_resume()
245 writel(rtap->irqmaskstore, rtap->virtbase + COH901331_IRQ_MASK); in coh901331_resume()
246 clk_disable(rtap->clk); in coh901331_resume()
256 struct coh901331_port *rtap = platform_get_drvdata(pdev); in coh901331_shutdown() local
258 clk_enable(rtap->clk); in coh901331_shutdown()
259 writel(0, rtap->virtbase + COH901331_IRQ_MASK); in coh901331_shutdown()
260 clk_disable_unprepare(rtap->clk); in coh901331_shutdown()