Lines Matching refs:data
86 static int snvs_rtc_enable(struct snvs_rtc_data *data, bool enable) in snvs_rtc_enable() argument
92 spin_lock_irqsave(&data->lock, flags); in snvs_rtc_enable()
94 lpcr = readl(data->ioaddr + SNVS_LPCR); in snvs_rtc_enable()
99 writel(lpcr, data->ioaddr + SNVS_LPCR); in snvs_rtc_enable()
101 spin_unlock_irqrestore(&data->lock, flags); in snvs_rtc_enable()
104 lpcr = readl(data->ioaddr + SNVS_LPCR); in snvs_rtc_enable()
123 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_read_time() local
124 unsigned long time = rtc_read_lp_counter(data->ioaddr); in snvs_rtc_read_time()
133 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_set_time() local
139 snvs_rtc_enable(data, false); in snvs_rtc_set_time()
142 writel(time << CNTR_TO_SECS_SH, data->ioaddr + SNVS_LPSRTCLR); in snvs_rtc_set_time()
143 writel(time >> (32 - CNTR_TO_SECS_SH), data->ioaddr + SNVS_LPSRTCMR); in snvs_rtc_set_time()
146 snvs_rtc_enable(data, true); in snvs_rtc_set_time()
153 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_read_alarm() local
156 lptar = readl(data->ioaddr + SNVS_LPTAR); in snvs_rtc_read_alarm()
159 lpsr = readl(data->ioaddr + SNVS_LPSR); in snvs_rtc_read_alarm()
167 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_alarm_irq_enable() local
171 spin_lock_irqsave(&data->lock, flags); in snvs_rtc_alarm_irq_enable()
173 lpcr = readl(data->ioaddr + SNVS_LPCR); in snvs_rtc_alarm_irq_enable()
178 writel(lpcr, data->ioaddr + SNVS_LPCR); in snvs_rtc_alarm_irq_enable()
180 spin_unlock_irqrestore(&data->lock, flags); in snvs_rtc_alarm_irq_enable()
182 rtc_write_sync_lp(data->ioaddr); in snvs_rtc_alarm_irq_enable()
189 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_set_alarm() local
197 spin_lock_irqsave(&data->lock, flags); in snvs_rtc_set_alarm()
200 lpcr = readl(data->ioaddr + SNVS_LPCR); in snvs_rtc_set_alarm()
202 writel(lpcr, data->ioaddr + SNVS_LPCR); in snvs_rtc_set_alarm()
204 spin_unlock_irqrestore(&data->lock, flags); in snvs_rtc_set_alarm()
206 writel(time, data->ioaddr + SNVS_LPTAR); in snvs_rtc_set_alarm()
209 writel(SNVS_LPSR_LPTA, data->ioaddr + SNVS_LPSR); in snvs_rtc_set_alarm()
225 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_irq_handler() local
229 lpsr = readl(data->ioaddr + SNVS_LPSR); in snvs_rtc_irq_handler()
237 rtc_update_irq(data->rtc, 1, events); in snvs_rtc_irq_handler()
241 writel(lpsr, data->ioaddr + SNVS_LPSR); in snvs_rtc_irq_handler()
248 struct snvs_rtc_data *data; in snvs_rtc_probe() local
252 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in snvs_rtc_probe()
253 if (!data) in snvs_rtc_probe()
257 data->ioaddr = devm_ioremap_resource(&pdev->dev, res); in snvs_rtc_probe()
258 if (IS_ERR(data->ioaddr)) in snvs_rtc_probe()
259 return PTR_ERR(data->ioaddr); in snvs_rtc_probe()
261 data->irq = platform_get_irq(pdev, 0); in snvs_rtc_probe()
262 if (data->irq < 0) in snvs_rtc_probe()
263 return data->irq; in snvs_rtc_probe()
265 data->clk = devm_clk_get(&pdev->dev, "snvs-rtc"); in snvs_rtc_probe()
266 if (IS_ERR(data->clk)) { in snvs_rtc_probe()
267 data->clk = NULL; in snvs_rtc_probe()
269 ret = clk_prepare_enable(data->clk); in snvs_rtc_probe()
277 platform_set_drvdata(pdev, data); in snvs_rtc_probe()
279 spin_lock_init(&data->lock); in snvs_rtc_probe()
282 writel(SNVS_LPPGDR_INIT, data->ioaddr + SNVS_LPPGDR); in snvs_rtc_probe()
285 writel(0xffffffff, data->ioaddr + SNVS_LPSR); in snvs_rtc_probe()
288 snvs_rtc_enable(data, true); in snvs_rtc_probe()
292 ret = devm_request_irq(&pdev->dev, data->irq, snvs_rtc_irq_handler, in snvs_rtc_probe()
296 data->irq, ret); in snvs_rtc_probe()
300 data->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, in snvs_rtc_probe()
302 if (IS_ERR(data->rtc)) { in snvs_rtc_probe()
303 ret = PTR_ERR(data->rtc); in snvs_rtc_probe()
311 if (data->clk) in snvs_rtc_probe()
312 clk_disable_unprepare(data->clk); in snvs_rtc_probe()
320 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_suspend() local
323 enable_irq_wake(data->irq); in snvs_rtc_suspend()
330 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_suspend_noirq() local
332 if (data->clk) in snvs_rtc_suspend_noirq()
333 clk_disable_unprepare(data->clk); in snvs_rtc_suspend_noirq()
340 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_resume() local
343 return disable_irq_wake(data->irq); in snvs_rtc_resume()
350 struct snvs_rtc_data *data = dev_get_drvdata(dev); in snvs_rtc_resume_noirq() local
352 if (data->clk) in snvs_rtc_resume_noirq()
353 return clk_prepare_enable(data->clk); in snvs_rtc_resume_noirq()