Lines Matching defs:config

85 static inline void spear_rtc_clear_interrupt(struct spear_rtc_config *config)
90 spin_lock_irqsave(&config->lock, flags);
91 val = readl(config->ioaddr + STATUS_REG);
93 writel(val, config->ioaddr + STATUS_REG);
94 spin_unlock_irqrestore(&config->lock, flags);
97 static inline void spear_rtc_enable_interrupt(struct spear_rtc_config *config)
101 val = readl(config->ioaddr + CTRL_REG);
103 spear_rtc_clear_interrupt(config);
105 writel(val, config->ioaddr + CTRL_REG);
109 static inline void spear_rtc_disable_interrupt(struct spear_rtc_config *config)
113 val = readl(config->ioaddr + CTRL_REG);
116 writel(val, config->ioaddr + CTRL_REG);
120 static inline int is_write_complete(struct spear_rtc_config *config)
125 spin_lock_irqsave(&config->lock, flags);
126 if ((readl(config->ioaddr + STATUS_REG)) & STATUS_FAIL)
128 spin_unlock_irqrestore(&config->lock, flags);
133 static void rtc_wait_not_busy(struct spear_rtc_config *config)
140 spin_lock_irqsave(&config->lock, flags);
141 status = readl(config->ioaddr + STATUS_REG);
142 spin_unlock_irqrestore(&config->lock, flags);
152 struct spear_rtc_config *config = dev_id;
156 spin_lock(&config->lock);
157 irq_data = readl(config->ioaddr + STATUS_REG);
158 spin_unlock(&config->lock);
161 spear_rtc_clear_interrupt(config);
163 rtc_update_irq(config->rtc, 1, events);
201 struct spear_rtc_config *config = dev_get_drvdata(dev);
205 rtc_wait_not_busy(config);
208 time = readl(config->ioaddr + TIME_REG);
209 date = readl(config->ioaddr + DATE_REG);
210 } while (time == readl(config->ioaddr + TIME_REG));
232 struct spear_rtc_config *config = dev_get_drvdata(dev);
237 rtc_wait_not_busy(config);
242 writel(time, config->ioaddr + TIME_REG);
243 writel(date, config->ioaddr + DATE_REG);
245 return is_write_complete(config);
258 struct spear_rtc_config *config = dev_get_drvdata(dev);
261 rtc_wait_not_busy(config);
263 time = readl(config->ioaddr + ALARM_TIME_REG);
264 date = readl(config->ioaddr + ALARM_DATE_REG);
273 alm->enabled = readl(config->ioaddr + CTRL_REG) & INT_ENABLE;
288 struct spear_rtc_config *config = dev_get_drvdata(dev);
294 rtc_wait_not_busy(config);
301 writel(time, config->ioaddr + ALARM_TIME_REG);
302 writel(date, config->ioaddr + ALARM_DATE_REG);
303 err = is_write_complete(config);
308 spear_rtc_enable_interrupt(config);
310 spear_rtc_disable_interrupt(config);
317 struct spear_rtc_config *config = dev_get_drvdata(dev);
320 spear_rtc_clear_interrupt(config);
325 spear_rtc_disable_interrupt(config);
329 spear_rtc_enable_interrupt(config);
349 struct spear_rtc_config *config;
353 config = devm_kzalloc(&pdev->dev, sizeof(*config), GFP_KERNEL);
354 if (!config)
357 config->rtc = devm_rtc_allocate_device(&pdev->dev);
358 if (IS_ERR(config->rtc))
359 return PTR_ERR(config->rtc);
367 config);
374 config->ioaddr = devm_platform_ioremap_resource(pdev, 0);
375 if (IS_ERR(config->ioaddr))
376 return PTR_ERR(config->ioaddr);
378 config->clk = devm_clk_get(&pdev->dev, NULL);
379 if (IS_ERR(config->clk))
380 return PTR_ERR(config->clk);
382 status = clk_prepare_enable(config->clk);
386 spin_lock_init(&config->lock);
387 platform_set_drvdata(pdev, config);
389 config->rtc->ops = &spear_rtc_ops;
390 config->rtc->range_min = RTC_TIMESTAMP_BEGIN_0000;
391 config->rtc->range_max = RTC_TIMESTAMP_END_9999;
393 status = devm_rtc_register_device(config->rtc);
403 clk_disable_unprepare(config->clk);
410 struct spear_rtc_config *config = platform_get_drvdata(pdev);
412 spear_rtc_disable_interrupt(config);
413 clk_disable_unprepare(config->clk);
421 struct spear_rtc_config *config = platform_get_drvdata(pdev);
427 config->irq_wake = 1;
429 spear_rtc_disable_interrupt(config);
430 clk_disable(config->clk);
439 struct spear_rtc_config *config = platform_get_drvdata(pdev);
445 if (config->irq_wake) {
447 config->irq_wake = 0;
450 clk_enable(config->clk);
451 spear_rtc_enable_interrupt(config);
462 struct spear_rtc_config *config = platform_get_drvdata(pdev);
464 spear_rtc_disable_interrupt(config);
465 clk_disable(config->clk);