From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chanwoo Choi Subject: Re: [PATCH v1 2/5] extcon: Return -EPROBE_DEFER when extcon device is not found Date: Mon, 12 Nov 2018 09:24:01 +0900 Message-ID: <5BE8C821.5080002@samsung.com> References: <20181110181101.24557-1-andriy.shevchenko@linux.intel.com> <20181110181101.24557-2-andriy.shevchenko@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Return-path: In-reply-to: <20181110181101.24557-2-andriy.shevchenko@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org To: Andy Shevchenko , MyungJoo Ham , linux-usb@vger.kernel.org, Felipe Balbi , Guenter Roeck , Heikki Krogerus , Roger Quadros , linux-pm@vger.kernel.org, "Rafael J. Wysocki" , Sebastian Reichel , linux-omap@vger.kernel.org, Darren Hart , platform-driver-x86@vger.kernel.org, Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Chen-Yu Tsai , Hans de Goede List-Id: linux-omap@vger.kernel.org Hi Andy, On 2018년 11월 11일 03:10, Andy Shevchenko wrote: > All current users of extcon_get_extcon_dev() API considers > an extcon device a mandatory to appear. Thus, they all convert > NULL pointer to -EPROBE_DEFER error code. > > There is one more caller anticipated with the same requirements. > > To decrease a code duplication and a burden to the callers, > return -EPROBE_DEFER directly from extcon_get_extcon_dev(). > > Signed-off-by: Andy Shevchenko > --- > drivers/extcon/extcon-axp288.c | 4 ++-- > drivers/extcon/extcon.c | 2 +- > drivers/power/supply/axp288_charger.c | 8 ++++---- > drivers/usb/phy/phy-omap-otg.c | 6 +++--- > drivers/usb/typec/tcpm/fusb302.c | 4 ++-- > 5 files changed, 12 insertions(+), 12 deletions(-) Acked-by: Chanwoo Choi Best Regards, Chanwoo Choi > > diff --git a/drivers/extcon/extcon-axp288.c b/drivers/extcon/extcon-axp288.c > index a983708b77a6..3472d3b756ed 100644 > --- a/drivers/extcon/extcon-axp288.c > +++ b/drivers/extcon/extcon-axp288.c > @@ -360,8 +360,8 @@ static int axp288_extcon_probe(struct platform_device *pdev) > name = acpi_dev_get_first_match_name("INT3496", NULL, -1); > if (name) { > info->id_extcon = extcon_get_extcon_dev(name); > - if (!info->id_extcon) > - return -EPROBE_DEFER; > + if (IS_ERR(info->id_extcon)) > + return PTR_ERR(info->id_extcon); > > dev_info(dev, "controlling USB role\n"); > } else { > diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c > index 5ab0498be652..2bd0f2f33f05 100644 > --- a/drivers/extcon/extcon.c > +++ b/drivers/extcon/extcon.c > @@ -884,7 +884,7 @@ struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name) > if (!strcmp(sd->name, extcon_name)) > goto out; > } > - sd = NULL; > + sd = ERR_PTR(-EPROBE_DEFER); > out: > mutex_unlock(&extcon_dev_list_lock); > return sd; > diff --git a/drivers/power/supply/axp288_charger.c b/drivers/power/supply/axp288_charger.c > index 735658ee1c60..8558577fccf5 100644 > --- a/drivers/power/supply/axp288_charger.c > +++ b/drivers/power/supply/axp288_charger.c > @@ -768,17 +768,17 @@ static int axp288_charger_probe(struct platform_device *pdev) > info->regmap_irqc = axp20x->regmap_irqc; > > info->cable.edev = extcon_get_extcon_dev(AXP288_EXTCON_DEV_NAME); > - if (info->cable.edev == NULL) { > + if (IS_ERR(info->cable.edev)) { > dev_dbg(&pdev->dev, "%s is not ready, probe deferred\n", > AXP288_EXTCON_DEV_NAME); > - return -EPROBE_DEFER; > + return PTR_ERR(info->cable.edev); > } > > if (acpi_dev_present(USB_HOST_EXTCON_HID, NULL, -1)) { > info->otg.cable = extcon_get_extcon_dev(USB_HOST_EXTCON_NAME); > - if (info->otg.cable == NULL) { > + if (IS_ERR(info->otg.cable)) { > dev_dbg(dev, "EXTCON_USB_HOST is not ready, probe deferred\n"); > - return -EPROBE_DEFER; > + return PTR_ERR(info->otg.cable); > } > dev_info(&pdev->dev, > "Using " USB_HOST_EXTCON_HID " extcon for usb-id\n"); > diff --git a/drivers/usb/phy/phy-omap-otg.c b/drivers/usb/phy/phy-omap-otg.c > index ee0863c6553e..605314ddcd3d 100644 > --- a/drivers/usb/phy/phy-omap-otg.c > +++ b/drivers/usb/phy/phy-omap-otg.c > @@ -91,12 +91,12 @@ static int omap_otg_probe(struct platform_device *pdev) > int ret; > u32 rev; > > - if (!config || !config->extcon) > + if (!config) > return -ENODEV; > > extcon = extcon_get_extcon_dev(config->extcon); > - if (!extcon) > - return -EPROBE_DEFER; > + if (IS_ERR(extcon)) > + return PTR_ERR(extcon); > > otg_dev = devm_kzalloc(&pdev->dev, sizeof(*otg_dev), GFP_KERNEL); > if (!otg_dev) > diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c > index 43b64d9309d0..6d332066202b 100644 > --- a/drivers/usb/typec/tcpm/fusb302.c > +++ b/drivers/usb/typec/tcpm/fusb302.c > @@ -1767,8 +1767,8 @@ static int fusb302_probe(struct i2c_client *client, > */ > if (device_property_read_string(dev, "fcs,extcon-name", &name) == 0) { > chip->extcon = extcon_get_extcon_dev(name); > - if (!chip->extcon) > - return -EPROBE_DEFER; > + if (IS_ERR(chip->extcon)) > + return PTR_ERR(chip->extcon); > } > > chip->vbus = devm_regulator_get(chip->dev, "vbus"); > From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v1,2/5] extcon: Return -EPROBE_DEFER when extcon device is not found From: Chanwoo Choi Message-Id: <5BE8C821.5080002@samsung.com> Date: Mon, 12 Nov 2018 09:24:01 +0900 To: Andy Shevchenko , MyungJoo Ham , linux-usb@vger.kernel.org, Felipe Balbi , Guenter Roeck , Heikki Krogerus , Roger Quadros , linux-pm@vger.kernel.org, "Rafael J. Wysocki" , Sebastian Reichel , linux-omap@vger.kernel.org, Darren Hart , platform-driver-x86@vger.kernel.org, Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Chen-Yu Tsai , Hans de Goede List-ID: SGkgQW5keSwKCk9uIDIwMTjrhYQgMTHsm5QgMTHsnbwgMDM6MTAsIEFuZHkgU2hldmNoZW5rbyB3 cm90ZToKPiBBbGwgY3VycmVudCB1c2VycyBvZiBleHRjb25fZ2V0X2V4dGNvbl9kZXYoKSBBUEkg Y29uc2lkZXJzCj4gYW4gZXh0Y29uIGRldmljZSBhIG1hbmRhdG9yeSB0byBhcHBlYXIuIFRodXMs IHRoZXkgYWxsIGNvbnZlcnQKPiBOVUxMIHBvaW50ZXIgdG8gLUVQUk9CRV9ERUZFUiBlcnJvciBj b2RlLgo+IAo+IFRoZXJlIGlzIG9uZSBtb3JlIGNhbGxlciBhbnRpY2lwYXRlZCB3aXRoIHRoZSBz YW1lIHJlcXVpcmVtZW50cy4KPiAKPiBUbyBkZWNyZWFzZSBhIGNvZGUgZHVwbGljYXRpb24gYW5k IGEgYnVyZGVuIHRvIHRoZSBjYWxsZXJzLAo+IHJldHVybiAtRVBST0JFX0RFRkVSIGRpcmVjdGx5 IGZyb20gZXh0Y29uX2dldF9leHRjb25fZGV2KCkuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5keSBT aGV2Y2hlbmtvIDxhbmRyaXkuc2hldmNoZW5rb0BsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZXh0Y29uL2V4dGNvbi1heHAyODguYyAgICAgICAgfCA0ICsrLS0KPiAgZHJpdmVycy9l eHRjb24vZXh0Y29uLmMgICAgICAgICAgICAgICB8IDIgKy0KPiAgZHJpdmVycy9wb3dlci9zdXBw bHkvYXhwMjg4X2NoYXJnZXIuYyB8IDggKysrKy0tLS0KPiAgZHJpdmVycy91c2IvcGh5L3BoeS1v bWFwLW90Zy5jICAgICAgICB8IDYgKysrLS0tCj4gIGRyaXZlcnMvdXNiL3R5cGVjL3RjcG0vZnVz YjMwMi5jICAgICAgfCA0ICsrLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKCkFja2VkLWJ5OiBDaGFud29vIENob2kgPGN3MDAuY2hvaUBzYW1z dW5nLmNvbT4KCkJlc3QgUmVnYXJkcywKQ2hhbndvbyBDaG9pCgo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2V4dGNvbi9leHRjb24tYXhwMjg4LmMgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24tYXhw Mjg4LmMKPiBpbmRleCBhOTgzNzA4Yjc3YTYuLjM0NzJkM2I3NTZlZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2V4dGNvbi9leHRjb24tYXhwMjg4LmMKPiArKysgYi9kcml2ZXJzL2V4dGNvbi9leHRj b24tYXhwMjg4LmMKPiBAQCAtMzYwLDggKzM2MCw4IEBAIHN0YXRpYyBpbnQgYXhwMjg4X2V4dGNv bl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCW5hbWUgPSBhY3BpX2Rl dl9nZXRfZmlyc3RfbWF0Y2hfbmFtZSgiSU5UMzQ5NiIsIE5VTEwsIC0xKTsKPiAgCQlpZiAobmFt ZSkgewo+ICAJCQlpbmZvLT5pZF9leHRjb24gPSBleHRjb25fZ2V0X2V4dGNvbl9kZXYobmFtZSk7 Cj4gLQkJCWlmICghaW5mby0+aWRfZXh0Y29uKQo+IC0JCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7 Cj4gKwkJCWlmIChJU19FUlIoaW5mby0+aWRfZXh0Y29uKSkKPiArCQkJCXJldHVybiBQVFJfRVJS KGluZm8tPmlkX2V4dGNvbik7Cj4gIAo+ICAJCQlkZXZfaW5mbyhkZXYsICJjb250cm9sbGluZyBV U0Igcm9sZVxuIik7Cj4gIAkJfSBlbHNlIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRjb24v ZXh0Y29uLmMgYi9kcml2ZXJzL2V4dGNvbi9leHRjb24uYwo+IGluZGV4IDVhYjA0OThiZTY1Mi4u MmJkMGYyZjMzZjA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZXh0Y29uL2V4dGNvbi5jCj4gKysr IGIvZHJpdmVycy9leHRjb24vZXh0Y29uLmMKPiBAQCAtODg0LDcgKzg4NCw3IEBAIHN0cnVjdCBl eHRjb25fZGV2ICpleHRjb25fZ2V0X2V4dGNvbl9kZXYoY29uc3QgY2hhciAqZXh0Y29uX25hbWUp Cj4gIAkJaWYgKCFzdHJjbXAoc2QtPm5hbWUsIGV4dGNvbl9uYW1lKSkKPiAgCQkJZ290byBvdXQ7 Cj4gIAl9Cj4gLQlzZCA9IE5VTEw7Cj4gKwlzZCA9IEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4g IG91dDoKPiAgCW11dGV4X3VubG9jaygmZXh0Y29uX2Rldl9saXN0X2xvY2spOwo+ICAJcmV0dXJu IHNkOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9heHAyODhfY2hhcmdlci5j IGIvZHJpdmVycy9wb3dlci9zdXBwbHkvYXhwMjg4X2NoYXJnZXIuYwo+IGluZGV4IDczNTY1OGVl MWM2MC4uODU1ODU3N2ZjY2Y1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L2F4 cDI4OF9jaGFyZ2VyLmMKPiArKysgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9heHAyODhfY2hhcmdl ci5jCj4gQEAgLTc2OCwxNyArNzY4LDE3IEBAIHN0YXRpYyBpbnQgYXhwMjg4X2NoYXJnZXJfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWluZm8tPnJlZ21hcF9pcnFjID0g YXhwMjB4LT5yZWdtYXBfaXJxYzsKPiAgCj4gIAlpbmZvLT5jYWJsZS5lZGV2ID0gZXh0Y29uX2dl dF9leHRjb25fZGV2KEFYUDI4OF9FWFRDT05fREVWX05BTUUpOwo+IC0JaWYgKGluZm8tPmNhYmxl LmVkZXYgPT0gTlVMTCkgewo+ICsJaWYgKElTX0VSUihpbmZvLT5jYWJsZS5lZGV2KSkgewo+ICAJ CWRldl9kYmcoJnBkZXYtPmRldiwgIiVzIGlzIG5vdCByZWFkeSwgcHJvYmUgZGVmZXJyZWRcbiIs Cj4gIAkJCUFYUDI4OF9FWFRDT05fREVWX05BTUUpOwo+IC0JCXJldHVybiAtRVBST0JFX0RFRkVS Owo+ICsJCXJldHVybiBQVFJfRVJSKGluZm8tPmNhYmxlLmVkZXYpOwo+ICAJfQo+ICAKPiAgCWlm IChhY3BpX2Rldl9wcmVzZW50KFVTQl9IT1NUX0VYVENPTl9ISUQsIE5VTEwsIC0xKSkgewo+ICAJ CWluZm8tPm90Zy5jYWJsZSA9IGV4dGNvbl9nZXRfZXh0Y29uX2RldihVU0JfSE9TVF9FWFRDT05f TkFNRSk7Cj4gLQkJaWYgKGluZm8tPm90Zy5jYWJsZSA9PSBOVUxMKSB7Cj4gKwkJaWYgKElTX0VS UihpbmZvLT5vdGcuY2FibGUpKSB7Cj4gIAkJCWRldl9kYmcoZGV2LCAiRVhUQ09OX1VTQl9IT1NU IGlzIG5vdCByZWFkeSwgcHJvYmUgZGVmZXJyZWRcbiIpOwo+IC0JCQlyZXR1cm4gLUVQUk9CRV9E RUZFUjsKPiArCQkJcmV0dXJuIFBUUl9FUlIoaW5mby0+b3RnLmNhYmxlKTsKPiAgCQl9Cj4gIAkJ ZGV2X2luZm8oJnBkZXYtPmRldiwKPiAgCQkJICJVc2luZyAiIFVTQl9IT1NUX0VYVENPTl9ISUQg IiBleHRjb24gZm9yIHVzYi1pZFxuIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3BoeS9w aHktb21hcC1vdGcuYyBiL2RyaXZlcnMvdXNiL3BoeS9waHktb21hcC1vdGcuYwo+IGluZGV4IGVl MDg2M2M2NTUzZS4uNjA1MzE0ZGRjZDNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3BoeS9w aHktb21hcC1vdGcuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL3BoeS9waHktb21hcC1vdGcuYwo+IEBA IC05MSwxMiArOTEsMTIgQEAgc3RhdGljIGludCBvbWFwX290Z19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQo+ICAJaW50IHJldDsKPiAgCXUzMiByZXY7Cj4gIAo+IC0JaWYgKCFj b25maWcgfHwgIWNvbmZpZy0+ZXh0Y29uKQo+ICsJaWYgKCFjb25maWcpCj4gIAkJcmV0dXJuIC1F Tk9ERVY7Cj4gIAo+ICAJZXh0Y29uID0gZXh0Y29uX2dldF9leHRjb25fZGV2KGNvbmZpZy0+ZXh0 Y29uKTsKPiAtCWlmICghZXh0Y29uKQo+IC0JCXJldHVybiAtRVBST0JFX0RFRkVSOwo+ICsJaWYg KElTX0VSUihleHRjb24pKQo+ICsJCXJldHVybiBQVFJfRVJSKGV4dGNvbik7Cj4gIAo+ICAJb3Rn X2RldiA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKm90Z19kZXYpLCBHRlBfS0VS TkVMKTsKPiAgCWlmICghb3RnX2RldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMv dGNwbS9mdXNiMzAyLmMgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtL2Z1c2IzMDIuYwo+IGluZGV4 IDQzYjY0ZDkzMDlkMC4uNmQzMzIwNjYyMDJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5 cGVjL3RjcG0vZnVzYjMwMi5jCj4gKysrIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS9mdXNiMzAy LmMKPiBAQCAtMTc2Nyw4ICsxNzY3LDggQEAgc3RhdGljIGludCBmdXNiMzAyX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQsCj4gIAkgKi8KPiAgCWlmIChkZXZpY2VfcHJvcGVydHlfcmVh ZF9zdHJpbmcoZGV2LCAiZmNzLGV4dGNvbi1uYW1lIiwgJm5hbWUpID09IDApIHsKPiAgCQljaGlw LT5leHRjb24gPSBleHRjb25fZ2V0X2V4dGNvbl9kZXYobmFtZSk7Cj4gLQkJaWYgKCFjaGlwLT5l eHRjb24pCj4gLQkJCXJldHVybiAtRVBST0JFX0RFRkVSOwo+ICsJCWlmIChJU19FUlIoY2hpcC0+ ZXh0Y29uKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoY2hpcC0+ZXh0Y29uKTsKPiAgCX0KPiAgCj4g IAljaGlwLT52YnVzID0gZGV2bV9yZWd1bGF0b3JfZ2V0KGNoaXAtPmRldiwgInZidXMiKTsKPgo=