Merge tag 'trace-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux...
[cascardo/linux.git] / drivers / mfd / mt6397-core.c
index 8e8d932..e14d8b0 100644 (file)
@@ -267,17 +267,26 @@ static int mt6397_probe(struct platform_device *pdev)
        ret = regmap_read(pmic->regmap, MT6397_CID, &id);
        if (ret) {
                dev_err(pmic->dev, "Failed to read chip id: %d\n", ret);
-               goto fail_irq;
+               return ret;
        }
 
+       pmic->irq = platform_get_irq(pdev, 0);
+       if (pmic->irq <= 0)
+               return pmic->irq;
+
        switch (id & 0xff) {
        case MT6323_CID_CODE:
                pmic->int_con[0] = MT6323_INT_CON0;
                pmic->int_con[1] = MT6323_INT_CON1;
                pmic->int_status[0] = MT6323_INT_STATUS0;
                pmic->int_status[1] = MT6323_INT_STATUS1;
-               ret = mfd_add_devices(&pdev->dev, -1, mt6323_devs,
-                               ARRAY_SIZE(mt6323_devs), NULL, 0, NULL);
+               ret = mt6397_irq_init(pmic);
+               if (ret)
+                       return ret;
+
+               ret = devm_mfd_add_devices(&pdev->dev, -1, mt6323_devs,
+                                          ARRAY_SIZE(mt6323_devs), NULL,
+                                          0, NULL);
                break;
 
        case MT6397_CID_CODE:
@@ -286,8 +295,13 @@ static int mt6397_probe(struct platform_device *pdev)
                pmic->int_con[1] = MT6397_INT_CON1;
                pmic->int_status[0] = MT6397_INT_STATUS0;
                pmic->int_status[1] = MT6397_INT_STATUS1;
-               ret = mfd_add_devices(&pdev->dev, -1, mt6397_devs,
-                               ARRAY_SIZE(mt6397_devs), NULL, 0, NULL);
+               ret = mt6397_irq_init(pmic);
+               if (ret)
+                       return ret;
+
+               ret = devm_mfd_add_devices(&pdev->dev, -1, mt6397_devs,
+                                          ARRAY_SIZE(mt6397_devs), NULL,
+                                          0, NULL);
                break;
 
        default:
@@ -296,14 +310,6 @@ static int mt6397_probe(struct platform_device *pdev)
                break;
        }
 
-       pmic->irq = platform_get_irq(pdev, 0);
-       if (pmic->irq > 0) {
-               ret = mt6397_irq_init(pmic);
-               if (ret)
-                       return ret;
-       }
-
-fail_irq:
        if (ret) {
                irq_domain_remove(pmic->irq_domain);
                dev_err(&pdev->dev, "failed to add child devices: %d\n", ret);
@@ -312,13 +318,6 @@ fail_irq:
        return ret;
 }
 
-static int mt6397_remove(struct platform_device *pdev)
-{
-       mfd_remove_devices(&pdev->dev);
-
-       return 0;
-}
-
 static const struct of_device_id mt6397_of_match[] = {
        { .compatible = "mediatek,mt6397" },
        { .compatible = "mediatek,mt6323" },
@@ -334,7 +333,6 @@ MODULE_DEVICE_TABLE(platform, mt6397_id);
 
 static struct platform_driver mt6397_driver = {
        .probe = mt6397_probe,
-       .remove = mt6397_remove,
        .driver = {
                .name = "mt6397",
                .of_match_table = of_match_ptr(mt6397_of_match),