Symbol: mt2712_rtc
drivers/rtc/rtc-mt2712.c
100
mt2712_writel(mt2712_rtc, MT2712_WRTGR, 1);
drivers/rtc/rtc-mt2712.c
102
if (!(mt2712_readl(mt2712_rtc, MT2712_BBPU)
drivers/rtc/rtc-mt2712.c
107
dev_err(&mt2712_rtc->rtc->dev,
drivers/rtc/rtc-mt2712.c
115
static void mt2712_rtc_writeif_unlock(struct mt2712_rtc *mt2712_rtc)
drivers/rtc/rtc-mt2712.c
117
mt2712_writel(mt2712_rtc, MT2712_PROT, MT2712_PROT_UNLOCK1);
drivers/rtc/rtc-mt2712.c
118
mt2712_rtc_write_trigger(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
119
mt2712_writel(mt2712_rtc, MT2712_PROT, MT2712_PROT_UNLOCK2);
drivers/rtc/rtc-mt2712.c
120
mt2712_rtc_write_trigger(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
125
struct mt2712_rtc *mt2712_rtc = data;
drivers/rtc/rtc-mt2712.c
129
irqsta = mt2712_readl(mt2712_rtc, MT2712_IRQ_STA);
drivers/rtc/rtc-mt2712.c
131
rtc_update_irq(mt2712_rtc->rtc, 1, RTC_IRQF | RTC_AF);
drivers/rtc/rtc-mt2712.c
138
static void __mt2712_rtc_read_time(struct mt2712_rtc *mt2712_rtc,
drivers/rtc/rtc-mt2712.c
141
tm->tm_sec = mt2712_readl(mt2712_rtc, MT2712_TC_SEC)
drivers/rtc/rtc-mt2712.c
143
tm->tm_min = mt2712_readl(mt2712_rtc, MT2712_TC_MIN)
drivers/rtc/rtc-mt2712.c
145
tm->tm_hour = mt2712_readl(mt2712_rtc, MT2712_TC_HOU)
drivers/rtc/rtc-mt2712.c
147
tm->tm_mday = mt2712_readl(mt2712_rtc, MT2712_TC_DOM)
drivers/rtc/rtc-mt2712.c
149
tm->tm_mon = (mt2712_readl(mt2712_rtc, MT2712_TC_MTH) - 1)
drivers/rtc/rtc-mt2712.c
151
tm->tm_year = (mt2712_readl(mt2712_rtc, MT2712_TC_YEA) + 100)
drivers/rtc/rtc-mt2712.c
154
*sec = mt2712_readl(mt2712_rtc, MT2712_TC_SEC) & MT2712_SEC_MASK;
drivers/rtc/rtc-mt2712.c
159
struct mt2712_rtc *mt2712_rtc = dev_get_drvdata(dev);
drivers/rtc/rtc-mt2712.c
162
if (mt2712_rtc->powerlost)
drivers/rtc/rtc-mt2712.c
166
__mt2712_rtc_read_time(mt2712_rtc, tm, &sec);
drivers/rtc/rtc-mt2712.c
174
struct mt2712_rtc *mt2712_rtc = dev_get_drvdata(dev);
drivers/rtc/rtc-mt2712.c
176
mt2712_writel(mt2712_rtc, MT2712_TC_SEC, tm->tm_sec & MT2712_SEC_MASK);
drivers/rtc/rtc-mt2712.c
177
mt2712_writel(mt2712_rtc, MT2712_TC_MIN, tm->tm_min & MT2712_MIN_MASK);
drivers/rtc/rtc-mt2712.c
178
mt2712_writel(mt2712_rtc, MT2712_TC_HOU, tm->tm_hour & MT2712_HOU_MASK);
drivers/rtc/rtc-mt2712.c
179
mt2712_writel(mt2712_rtc, MT2712_TC_DOM, tm->tm_mday & MT2712_DOM_MASK);
drivers/rtc/rtc-mt2712.c
180
mt2712_writel(mt2712_rtc, MT2712_TC_MTH,
drivers/rtc/rtc-mt2712.c
182
mt2712_writel(mt2712_rtc, MT2712_TC_YEA,
drivers/rtc/rtc-mt2712.c
185
mt2712_rtc_write_trigger(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
187
if (mt2712_rtc->powerlost)
drivers/rtc/rtc-mt2712.c
188
mt2712_rtc->powerlost = false;
drivers/rtc/rtc-mt2712.c
195
struct mt2712_rtc *mt2712_rtc = dev_get_drvdata(dev);
drivers/rtc/rtc-mt2712.c
199
irqen = mt2712_readl(mt2712_rtc, MT2712_IRQ_EN);
drivers/rtc/rtc-mt2712.c
202
tm->tm_sec = mt2712_readl(mt2712_rtc, MT2712_AL_SEC) & MT2712_SEC_MASK;
drivers/rtc/rtc-mt2712.c
203
tm->tm_min = mt2712_readl(mt2712_rtc, MT2712_AL_MIN) & MT2712_MIN_MASK;
drivers/rtc/rtc-mt2712.c
204
tm->tm_hour = mt2712_readl(mt2712_rtc, MT2712_AL_HOU) & MT2712_HOU_MASK;
drivers/rtc/rtc-mt2712.c
205
tm->tm_mday = mt2712_readl(mt2712_rtc, MT2712_AL_DOM) & MT2712_DOM_MASK;
drivers/rtc/rtc-mt2712.c
206
tm->tm_mon = (mt2712_readl(mt2712_rtc, MT2712_AL_MTH) - 1)
drivers/rtc/rtc-mt2712.c
208
tm->tm_year = (mt2712_readl(mt2712_rtc, MT2712_AL_YEA) + 100)
drivers/rtc/rtc-mt2712.c
217
struct mt2712_rtc *mt2712_rtc = dev_get_drvdata(dev);
drivers/rtc/rtc-mt2712.c
220
irqen = mt2712_readl(mt2712_rtc, MT2712_IRQ_EN);
drivers/rtc/rtc-mt2712.c
225
mt2712_writel(mt2712_rtc, MT2712_IRQ_EN, irqen);
drivers/rtc/rtc-mt2712.c
226
mt2712_rtc_write_trigger(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
233
struct mt2712_rtc *mt2712_rtc = dev_get_drvdata(dev);
drivers/rtc/rtc-mt2712.c
236
dev_dbg(&mt2712_rtc->rtc->dev, "set al time: %ptR, alm en: %d\n",
drivers/rtc/rtc-mt2712.c
239
mt2712_writel(mt2712_rtc, MT2712_AL_SEC,
drivers/rtc/rtc-mt2712.c
240
(mt2712_readl(mt2712_rtc, MT2712_AL_SEC)
drivers/rtc/rtc-mt2712.c
242
mt2712_writel(mt2712_rtc, MT2712_AL_MIN,
drivers/rtc/rtc-mt2712.c
243
(mt2712_readl(mt2712_rtc, MT2712_AL_MIN)
drivers/rtc/rtc-mt2712.c
245
mt2712_writel(mt2712_rtc, MT2712_AL_HOU,
drivers/rtc/rtc-mt2712.c
246
(mt2712_readl(mt2712_rtc, MT2712_AL_HOU)
drivers/rtc/rtc-mt2712.c
248
mt2712_writel(mt2712_rtc, MT2712_AL_DOM,
drivers/rtc/rtc-mt2712.c
249
(mt2712_readl(mt2712_rtc, MT2712_AL_DOM)
drivers/rtc/rtc-mt2712.c
251
mt2712_writel(mt2712_rtc, MT2712_AL_MTH,
drivers/rtc/rtc-mt2712.c
252
(mt2712_readl(mt2712_rtc, MT2712_AL_MTH)
drivers/rtc/rtc-mt2712.c
255
mt2712_writel(mt2712_rtc, MT2712_AL_YEA,
drivers/rtc/rtc-mt2712.c
256
(mt2712_readl(mt2712_rtc, MT2712_AL_YEA)
drivers/rtc/rtc-mt2712.c
261
mt2712_writel(mt2712_rtc, MT2712_AL_MASK, MT2712_AL_MASK_DOW);
drivers/rtc/rtc-mt2712.c
262
mt2712_rtc_write_trigger(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
270
static void mt2712_rtc_hw_init(struct mt2712_rtc *mt2712_rtc)
drivers/rtc/rtc-mt2712.c
274
mt2712_writel(mt2712_rtc, MT2712_BBPU,
drivers/rtc/rtc-mt2712.c
277
mt2712_writel(mt2712_rtc, MT2712_CII_EN, 0);
drivers/rtc/rtc-mt2712.c
278
mt2712_writel(mt2712_rtc, MT2712_AL_MASK, 0);
drivers/rtc/rtc-mt2712.c
280
mt2712_writel(mt2712_rtc, MT2712_CON0, 0x4848);
drivers/rtc/rtc-mt2712.c
281
mt2712_writel(mt2712_rtc, MT2712_CON1, 0x0048);
drivers/rtc/rtc-mt2712.c
283
mt2712_rtc_write_trigger(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
285
p1 = mt2712_readl(mt2712_rtc, MT2712_POWERKEY1);
drivers/rtc/rtc-mt2712.c
286
p2 = mt2712_readl(mt2712_rtc, MT2712_POWERKEY2);
drivers/rtc/rtc-mt2712.c
288
mt2712_rtc->powerlost = true;
drivers/rtc/rtc-mt2712.c
289
dev_dbg(&mt2712_rtc->rtc->dev,
drivers/rtc/rtc-mt2712.c
292
mt2712_rtc->powerlost = false;
drivers/rtc/rtc-mt2712.c
296
mt2712_writel(mt2712_rtc, MT2712_POWERKEY1, MT2712_POWERKEY1_KEY);
drivers/rtc/rtc-mt2712.c
297
mt2712_writel(mt2712_rtc, MT2712_POWERKEY2, MT2712_POWERKEY2_KEY);
drivers/rtc/rtc-mt2712.c
298
mt2712_rtc_write_trigger(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
300
mt2712_rtc_writeif_unlock(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
313
struct mt2712_rtc *mt2712_rtc;
drivers/rtc/rtc-mt2712.c
316
mt2712_rtc = devm_kzalloc(&pdev->dev,
drivers/rtc/rtc-mt2712.c
317
sizeof(struct mt2712_rtc), GFP_KERNEL);
drivers/rtc/rtc-mt2712.c
318
if (!mt2712_rtc)
drivers/rtc/rtc-mt2712.c
321
mt2712_rtc->base = devm_platform_ioremap_resource(pdev, 0);
drivers/rtc/rtc-mt2712.c
322
if (IS_ERR(mt2712_rtc->base))
drivers/rtc/rtc-mt2712.c
323
return PTR_ERR(mt2712_rtc->base);
drivers/rtc/rtc-mt2712.c
326
mt2712_rtc_hw_init(mt2712_rtc);
drivers/rtc/rtc-mt2712.c
328
mt2712_rtc->irq = platform_get_irq(pdev, 0);
drivers/rtc/rtc-mt2712.c
329
if (mt2712_rtc->irq < 0)
drivers/rtc/rtc-mt2712.c
330
return mt2712_rtc->irq;
drivers/rtc/rtc-mt2712.c
332
platform_set_drvdata(pdev, mt2712_rtc);
drivers/rtc/rtc-mt2712.c
334
mt2712_rtc->rtc = devm_rtc_allocate_device(&pdev->dev);
drivers/rtc/rtc-mt2712.c
335
if (IS_ERR(mt2712_rtc->rtc))
drivers/rtc/rtc-mt2712.c
336
return PTR_ERR(mt2712_rtc->rtc);
drivers/rtc/rtc-mt2712.c
338
ret = devm_request_threaded_irq(&pdev->dev, mt2712_rtc->irq, NULL,
drivers/rtc/rtc-mt2712.c
341
dev_name(&mt2712_rtc->rtc->dev),
drivers/rtc/rtc-mt2712.c
342
mt2712_rtc);
drivers/rtc/rtc-mt2712.c
345
mt2712_rtc->irq, ret);
drivers/rtc/rtc-mt2712.c
351
mt2712_rtc->rtc->ops = &mt2712_rtc_ops;
drivers/rtc/rtc-mt2712.c
352
mt2712_rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
drivers/rtc/rtc-mt2712.c
353
mt2712_rtc->rtc->range_max = MT2712_RTC_TIMESTAMP_END_2127;
drivers/rtc/rtc-mt2712.c
355
return devm_rtc_register_device(mt2712_rtc->rtc);
drivers/rtc/rtc-mt2712.c
362
struct mt2712_rtc *mt2712_rtc = dev_get_drvdata(dev);
drivers/rtc/rtc-mt2712.c
365
wake_status = enable_irq_wake(mt2712_rtc->irq);
drivers/rtc/rtc-mt2712.c
367
mt2712_rtc->irq_wake_enabled = true;
drivers/rtc/rtc-mt2712.c
376
struct mt2712_rtc *mt2712_rtc = dev_get_drvdata(dev);
drivers/rtc/rtc-mt2712.c
378
if (device_may_wakeup(dev) && mt2712_rtc->irq_wake_enabled) {
drivers/rtc/rtc-mt2712.c
379
wake_status = disable_irq_wake(mt2712_rtc->irq);
drivers/rtc/rtc-mt2712.c
381
mt2712_rtc->irq_wake_enabled = false;
drivers/rtc/rtc-mt2712.c
85
static inline u32 mt2712_readl(struct mt2712_rtc *mt2712_rtc, u32 reg)
drivers/rtc/rtc-mt2712.c
87
return readl(mt2712_rtc->base + reg);
drivers/rtc/rtc-mt2712.c
90
static inline void mt2712_writel(struct mt2712_rtc *mt2712_rtc,
drivers/rtc/rtc-mt2712.c
93
writel(val, mt2712_rtc->base + reg);
drivers/rtc/rtc-mt2712.c
96
static void mt2712_rtc_write_trigger(struct mt2712_rtc *mt2712_rtc)