Merge tag 'drm-intel-next-fixes-2014-12-17' of git://anongit.freedesktop.org/drm...
[firefly-linux-kernel-4.4.55.git] / drivers / regulator / sky81452-regulator.c
index 97aff0ccd65ff3062ec435c8d626941d1cde03c9..6478606119160b63740947ca02c2e3f8737028af 100644 (file)
@@ -5,9 +5,8 @@
  * Author : Gyungoh Yoo <jack.yoo@skyworksinc.com>
  *
  * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
+ * under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -52,6 +51,8 @@ static const struct regulator_linear_range sky81452_reg_ranges[] = {
 
 static const struct regulator_desc sky81452_reg = {
        .name = "LOUT",
+       .of_match = of_match_ptr("lout"),
+       .regulators_node = of_match_ptr("regulator"),
        .ops = &sky81452_reg_ops,
        .type = REGULATOR_VOLTAGE,
        .owner = THIS_MODULE,
@@ -64,30 +65,6 @@ static const struct regulator_desc sky81452_reg = {
        .enable_mask = SKY81452_LEN,
 };
 
-#ifdef CONFIG_OF
-static struct regulator_init_data *sky81452_reg_parse_dt(struct device *dev)
-{
-       struct regulator_init_data *init_data;
-       struct device_node *np;
-
-       np = of_get_child_by_name(dev->parent->of_node, "regulator");
-       if (unlikely(!np)) {
-               dev_err(dev, "regulator node not found");
-               return NULL;
-       }
-
-       init_data = of_get_regulator_init_data(dev, np);
-
-       of_node_put(np);
-       return init_data;
-}
-#else
-static struct regulator_init_data *sky81452_reg_parse_dt(struct device *dev)
-{
-       return ERR_PTR(-EINVAL);
-}
-#endif
-
 static int sky81452_reg_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
@@ -95,20 +72,16 @@ static int sky81452_reg_probe(struct platform_device *pdev)
        struct regulator_config config = { };
        struct regulator_dev *rdev;
 
-       if (!init_data) {
-               init_data = sky81452_reg_parse_dt(dev);
-               if (IS_ERR(init_data))
-                       return PTR_ERR(init_data);
-       }
-
-       config.dev = dev;
+       config.dev = dev->parent;
        config.init_data = init_data;
        config.of_node = dev->of_node;
        config.regmap = dev_get_drvdata(dev->parent);
 
        rdev = devm_regulator_register(dev, &sky81452_reg, &config);
-       if (IS_ERR(rdev))
+       if (IS_ERR(rdev)) {
+               dev_err(dev, "failed to register. err=%ld\n", PTR_ERR(rdev));
                return PTR_ERR(rdev);
+       }
 
        platform_set_drvdata(pdev, rdev);
 
@@ -126,5 +99,4 @@ module_platform_driver(sky81452_reg_driver);
 
 MODULE_DESCRIPTION("Skyworks SKY81452 Regulator driver");
 MODULE_AUTHOR("Gyungoh Yoo <jack.yoo@skyworksinc.com>");
-MODULE_LICENSE("GPL");
-MODULE_VERSION("1.0");
+MODULE_LICENSE("GPL v2");