Message ID | 20181128114535.80223-3-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | i2c-multi-instantiate: Adapt for INT3515 and alike | expand |
On Wed, 28 Nov 2018 13:45:22 +0200 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > In the future i2c_acpi_new_device() will return error pointer in some cases. > Prepare intel_cht_int33fe driver to support that. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Reviewed-by: Hans de Goede <hdegoede@redhat.com> Really trivial comment inline. I haven't checked back to see if there has been any previous discussion on that bit of code. Otherwise looks sensible to me. Jonathan > --- > drivers/platform/x86/intel_cht_int33fe.c | 28 +++++++++++++++++++----- > 1 file changed, 23 insertions(+), 5 deletions(-) > > diff --git a/drivers/platform/x86/intel_cht_int33fe.c b/drivers/platform/x86/intel_cht_int33fe.c > index 431151d4e611..367d6e304ade 100644 > --- a/drivers/platform/x86/intel_cht_int33fe.c > +++ b/drivers/platform/x86/intel_cht_int33fe.c > @@ -168,8 +168,14 @@ static int cht_int33fe_probe(struct platform_device *pdev) > board_info.dev_name = "max17047"; > board_info.properties = max17047_props; > data->max17047 = i2c_acpi_new_device(dev, 1, &board_info); > - if (!data->max17047) > - return -EPROBE_DEFER; /* Wait for i2c-adapter to load */ > + if (IS_ERR(data->max17047)) > + ret = PTR_ERR(data->max17047); Every so slightly nicer to just return directly in these error cases? > + else if (!data->max17047) > + ret = -EPROBE_DEFER; /* Wait for i2c-adapter to load */ > + else > + ret = 0; Particularly so as then you don't need to set this ret as it's set in all paths where it is used below anyway... > + if (ret) > + return ret; > } > > data->connections[0].endpoint[0] = "port0"; > @@ -194,7 +200,13 @@ static int cht_int33fe_probe(struct platform_device *pdev) > board_info.irq = fusb302_irq; > > data->fusb302 = i2c_acpi_new_device(dev, 2, &board_info); > - if (!data->fusb302) > + if (IS_ERR(data->fusb302)) > + ret = PTR_ERR(data->fusb302); > + else if (!data->fusb302) > + ret = -EPROBE_DEFER; /* Wait for the i2c-adapter to load */ > + else > + ret = 0; > + if (ret) > goto out_unregister_max17047; > > memset(&board_info, 0, sizeof(board_info)); > @@ -202,7 +214,13 @@ static int cht_int33fe_probe(struct platform_device *pdev) > strlcpy(board_info.type, "pi3usb30532", I2C_NAME_SIZE); > > data->pi3usb30532 = i2c_acpi_new_device(dev, 3, &board_info); > - if (!data->pi3usb30532) > + if (IS_ERR(data->pi3usb30532)) > + ret = PTR_ERR(data->pi3usb30532); > + else if (!data->pi3usb30532) > + ret = -EPROBE_DEFER; /* Wait for the i2c-adapter to load */ > + else > + ret = 0; > + if (ret) > goto out_unregister_fusb302; > > platform_set_drvdata(pdev, data); > @@ -217,7 +235,7 @@ static int cht_int33fe_probe(struct platform_device *pdev) > > device_connections_remove(data->connections); > > - return -EPROBE_DEFER; /* Wait for the i2c-adapter to load */ > + return ret; > } > > static int cht_int33fe_remove(struct platform_device *pdev)
On Sun, Dec 02, 2018 at 03:56:06PM +0000, Jonathan Cameron wrote: > On Wed, 28 Nov 2018 13:45:22 +0200 > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > > In the future i2c_acpi_new_device() will return error pointer in some cases. > > Prepare intel_cht_int33fe driver to support that. > > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Reviewed-by: Hans de Goede <hdegoede@redhat.com> > > Really trivial comment inline. I haven't checked back to see if there > has been any previous discussion on that bit of code. > > Otherwise looks sensible to me. > > data->max17047 = i2c_acpi_new_device(dev, 1, &board_info); > > - if (!data->max17047) > > - return -EPROBE_DEFER; /* Wait for i2c-adapter to load */ > > + if (IS_ERR(data->max17047)) > > + ret = PTR_ERR(data->max17047); > Every so slightly nicer to just return directly in these error cases? > > + else if (!data->max17047) > > + ret = -EPROBE_DEFER; /* Wait for i2c-adapter to load */ > > + else > > + ret = 0; > Particularly so as then you don't need to set this ret as it's set in all > paths where it is used below anyway... It doesn't matter much, since the logically it's split to 3 stages: - preparation - change API - drop obsoleted pieces of code This one is preparation stage. After 3rd stage it will be as you suggested. > > + if (ret) > > + return ret;
diff --git a/drivers/platform/x86/intel_cht_int33fe.c b/drivers/platform/x86/intel_cht_int33fe.c index 431151d4e611..367d6e304ade 100644 --- a/drivers/platform/x86/intel_cht_int33fe.c +++ b/drivers/platform/x86/intel_cht_int33fe.c @@ -168,8 +168,14 @@ static int cht_int33fe_probe(struct platform_device *pdev) board_info.dev_name = "max17047"; board_info.properties = max17047_props; data->max17047 = i2c_acpi_new_device(dev, 1, &board_info); - if (!data->max17047) - return -EPROBE_DEFER; /* Wait for i2c-adapter to load */ + if (IS_ERR(data->max17047)) + ret = PTR_ERR(data->max17047); + else if (!data->max17047) + ret = -EPROBE_DEFER; /* Wait for i2c-adapter to load */ + else + ret = 0; + if (ret) + return ret; } data->connections[0].endpoint[0] = "port0"; @@ -194,7 +200,13 @@ static int cht_int33fe_probe(struct platform_device *pdev) board_info.irq = fusb302_irq; data->fusb302 = i2c_acpi_new_device(dev, 2, &board_info); - if (!data->fusb302) + if (IS_ERR(data->fusb302)) + ret = PTR_ERR(data->fusb302); + else if (!data->fusb302) + ret = -EPROBE_DEFER; /* Wait for the i2c-adapter to load */ + else + ret = 0; + if (ret) goto out_unregister_max17047; memset(&board_info, 0, sizeof(board_info)); @@ -202,7 +214,13 @@ static int cht_int33fe_probe(struct platform_device *pdev) strlcpy(board_info.type, "pi3usb30532", I2C_NAME_SIZE); data->pi3usb30532 = i2c_acpi_new_device(dev, 3, &board_info); - if (!data->pi3usb30532) + if (IS_ERR(data->pi3usb30532)) + ret = PTR_ERR(data->pi3usb30532); + else if (!data->pi3usb30532) + ret = -EPROBE_DEFER; /* Wait for the i2c-adapter to load */ + else + ret = 0; + if (ret) goto out_unregister_fusb302; platform_set_drvdata(pdev, data); @@ -217,7 +235,7 @@ static int cht_int33fe_probe(struct platform_device *pdev) device_connections_remove(data->connections); - return -EPROBE_DEFER; /* Wait for the i2c-adapter to load */ + return ret; } static int cht_int33fe_remove(struct platform_device *pdev)