platform/x86: intel_cht_int33fe: Register max17047 in its own function
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Fri, 31 May 2019 14:15:42 +0000 (17:15 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 3 Jun 2019 08:55:38 +0000 (10:55 +0200)
To make the probe function a bit more nicer looking, moving
the registration of max17047 to its own function.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/platform/x86/intel_cht_int33fe.c

index 657b8d61554c60c6400db971b23b4f85413dbd7f..3f532b5a51336569f1f2fbb13bbe17d39de7b95c 100644 (file)
@@ -63,14 +63,6 @@ static int cht_int33fe_check_for_max17047(struct device *dev, void *data)
        return 1;
 }
 
-static struct i2c_client *cht_int33fe_find_max17047(void)
-{
-       struct i2c_client *max17047 = NULL;
-
-       i2c_for_each_dev(&max17047, cht_int33fe_check_for_max17047);
-       return max17047;
-}
-
 static const char * const max17047_suppliers[] = { "bq24190-charger" };
 
 static const struct property_entry max17047_props[] = {
@@ -86,12 +78,40 @@ static const struct property_entry fusb302_props[] = {
        { }
 };
 
+static int
+cht_int33fe_register_max17047(struct device *dev, struct cht_int33fe_data *data)
+{
+       struct i2c_client *max17047 = NULL;
+       struct i2c_board_info board_info;
+       int ret;
+
+       i2c_for_each_dev(&max17047, cht_int33fe_check_for_max17047);
+       if (max17047) {
+               /* Pre-existing i2c-client for the max17047, add device-props */
+               ret = device_add_properties(&max17047->dev, max17047_props);
+               if (ret)
+                       return ret;
+               /* And re-probe to get the new device-props applied. */
+               ret = device_reprobe(&max17047->dev);
+               if (ret)
+                       dev_warn(dev, "Reprobing max17047 error: %d\n", ret);
+               return 0;
+       }
+
+       memset(&board_info, 0, sizeof(board_info));
+       strlcpy(board_info.type, "max17047", I2C_NAME_SIZE);
+       board_info.dev_name = "max17047";
+       board_info.properties = max17047_props;
+       data->max17047 = i2c_acpi_new_device(dev, 1, &board_info);
+
+       return PTR_ERR_OR_ZERO(data->max17047);
+}
+
 static int cht_int33fe_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        struct i2c_board_info board_info;
        struct cht_int33fe_data *data;
-       struct i2c_client *max17047;
        struct regulator *regulator;
        unsigned long long ptyp;
        acpi_status status;
@@ -151,26 +171,10 @@ static int cht_int33fe_probe(struct platform_device *pdev)
        if (!data)
                return -ENOMEM;
 
-       /* Work around BIOS bug, see comment on cht_int33fe_find_max17047 */
-       max17047 = cht_int33fe_find_max17047();
-       if (max17047) {
-               /* Pre-existing i2c-client for the max17047, add device-props */
-               ret = device_add_properties(&max17047->dev, max17047_props);
-               if (ret)
-                       return ret;
-               /* And re-probe to get the new device-props applied. */
-               ret = device_reprobe(&max17047->dev);
-               if (ret)
-                       dev_warn(dev, "Reprobing max17047 error: %d\n", ret);
-       } else {
-               memset(&board_info, 0, sizeof(board_info));
-               strlcpy(board_info.type, "max17047", I2C_NAME_SIZE);
-               board_info.dev_name = "max17047";
-               board_info.properties = max17047_props;
-               data->max17047 = i2c_acpi_new_device(dev, 1, &board_info);
-               if (IS_ERR(data->max17047))
-                       return PTR_ERR(data->max17047);
-       }
+       /* Work around BIOS bug, see comment on cht_int33fe_check_for_max17047 */
+       ret = cht_int33fe_register_max17047(dev, data);
+       if (ret)
+               return ret;
 
        data->connections[0].endpoint[0] = "port0";
        data->connections[0].endpoint[1] = "i2c-pi3usb30532-switch";