rk808: rtc: set rtc stopped by default
[firefly-linux-kernel-4.4.55.git] / drivers / rtc / rtc-rk808.c
index 35c9aada07c8ef3a19f44cf8d4a3e8811f484e3f..13610ff513778db2ae02bc48d4236353ea6d2a88 100644 (file)
@@ -376,8 +376,35 @@ static int rk808_rtc_probe(struct platform_device *pdev)
        struct rk808 *rk808 = dev_get_drvdata(pdev->dev.parent);
        struct rk808_rtc *rk808_rtc;
        struct rtc_time tm;
+       struct device_node *np;
        int ret;
 
+       switch (rk808->variant) {
+       case RK805_ID:
+               np = of_get_child_by_name(pdev->dev.parent->of_node, "rtc");
+               if (np && !of_device_is_available(np)) {
+                       dev_info(&pdev->dev, "device is disabled\n");
+                       return -EINVAL;
+               }
+               break;
+       case RK808_ID:
+               np = of_get_child_by_name(pdev->dev.parent->of_node, "rtc");
+               if (np && !of_device_is_available(np)) {
+                       dev_info(&pdev->dev, "device is disabled\n");
+                       return -EINVAL;
+               }
+               break;
+       case RK818_ID:
+               np = of_get_child_by_name(pdev->dev.parent->of_node, "rtc");
+               if (np && !of_device_is_available(np)) {
+                       dev_info(&pdev->dev, "device is disabled\n");
+                       return -EINVAL;
+               }
+               break;
+       default:
+               break;
+       }
+
        rk808_rtc = devm_kzalloc(&pdev->dev, sizeof(*rk808_rtc), GFP_KERNEL);
        if (rk808_rtc == NULL)
                return -ENOMEM;