Source
325
325
rtc->irq = platform_get_irq(pdev, 0);
326
326
if (rtc->irq < 0)
327
327
return rtc->irq;
328
328
329
329
rtc->regmap = mt6397_chip->regmap;
330
330
rtc->dev = &pdev->dev;
331
331
mutex_init(&rtc->lock);
332
332
333
333
platform_set_drvdata(pdev, rtc);
334
334
335
+
rtc->rtc_dev = devm_rtc_allocate_device(rtc->dev);
336
+
if (IS_ERR(rtc->rtc_dev))
337
+
return PTR_ERR(rtc->rtc_dev);
338
+
335
339
ret = request_threaded_irq(rtc->irq, NULL,
336
340
mtk_rtc_irq_handler_thread,
337
341
IRQF_ONESHOT | IRQF_TRIGGER_HIGH,
338
342
"mt6397-rtc", rtc);
339
343
if (ret) {
340
344
dev_err(&pdev->dev, "Failed to request alarm IRQ: %d: %d\n",
341
345
rtc->irq, ret);
342
346
goto out_dispose_irq;
343
347
}
344
348
345
349
device_init_wakeup(&pdev->dev, 1);
346
350
347
-
rtc->rtc_dev = rtc_device_register("mt6397-rtc", &pdev->dev,
348
-
&mtk_rtc_ops, THIS_MODULE);
349
-
if (IS_ERR(rtc->rtc_dev)) {
351
+
rtc->rtc_dev->ops = &mtk_rtc_ops;
352
+
353
+
ret = rtc_register_device(rtc->rtc_dev);
354
+
if (ret) {
350
355
dev_err(&pdev->dev, "register rtc device failed\n");
351
-
ret = PTR_ERR(rtc->rtc_dev);
352
356
goto out_free_irq;
353
357
}
354
358
355
359
return 0;
356
360
357
361
out_free_irq:
358
362
free_irq(rtc->irq, rtc->rtc_dev);
359
363
out_dispose_irq:
360
364
irq_dispose_mapping(rtc->irq);
361
365
return ret;
362
366
}
363
367
364
368
static int mtk_rtc_remove(struct platform_device *pdev)
365
369
{
366
370
struct mt6397_rtc *rtc = platform_get_drvdata(pdev);
367
371
368
-
rtc_device_unregister(rtc->rtc_dev);
369
372
free_irq(rtc->irq, rtc->rtc_dev);
370
373
irq_dispose_mapping(rtc->irq);
371
374
372
375
return 0;
373
376
}
374
377
375
378
#ifdef CONFIG_PM_SLEEP
376
379
static int mt6397_rtc_suspend(struct device *dev)
377
380
{
378
381
struct mt6397_rtc *rtc = dev_get_drvdata(dev);