From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> To: MyungJoo Ham <myungjoo.ham@samsung.com>, Chanwoo Choi <cw00.choi@samsung.com>, linux-usb@vger.kernel.org, Felipe Balbi <balbi@kernel.org>, Guenter Roeck <linux@roeck-us.net>, Heikki Krogerus <heikki.krogerus@linux.intel.com>, Roger Quadros <rogerq@ti.com>, linux-pm@vger.kernel.org, "Rafael J. Wysocki" <rafael@kernel.org>, Sebastian Reichel <sre@kernel.org>, linux-omap@vger.kernel.org, Darren Hart <dvhart@infradead.org>, platform-driver-x86@vger.kernel.org, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-kernel@vger.kernel.org, Chen-Yu Tsai <wens@csie.org>, Hans de Goede <hdegoede@redhat.com> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Subject: [PATCH v1 2/5] extcon: Return -EPROBE_DEFER when extcon device is not found Date: Sat, 10 Nov 2018 20:10:58 +0200 [thread overview] Message-ID: <20181110181101.24557-2-andriy.shevchenko@linux.intel.com> (raw) In-Reply-To: <20181110181101.24557-1-andriy.shevchenko@linux.intel.com> 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 <andriy.shevchenko@linux.intel.com> --- 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(-) 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"); -- 2.19.1
WARNING: multiple messages have this Message-ID (diff)
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> To: MyungJoo Ham <myungjoo.ham@samsung.com>, Chanwoo Choi <cw00.choi@samsung.com>, linux-usb@vger.kernel.org, Felipe Balbi <balbi@kernel.org>, Guenter Roeck <linux@roeck-us.net>, Heikki Krogerus <heikki.krogerus@linux.intel.com>, Roger Quadros <rogerq@ti.com>, linux-pm@vger.kernel.org, "Rafael J. Wysocki" <rafael@kernel.org>, Sebastian Reichel <sre@kernel.org>, linux-omap@vger.kernel.org, Darren Hart <dvhart@infradead.org>, platform-driver-x86@vger.kernel.org, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-kernel@vger.kernel.org, Chen-Yu Tsai <wens@csie.org>, Hans de Goede <hdegoede@redhat.com> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Subject: [v1,2/5] extcon: Return -EPROBE_DEFER when extcon device is not found Date: Sat, 10 Nov 2018 20:10:58 +0200 [thread overview] Message-ID: <20181110181101.24557-2-andriy.shevchenko@linux.intel.com> (raw) 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 <andriy.shevchenko@linux.intel.com> --- 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(-) 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");
next prev parent reply other threads:[~2018-11-10 18:11 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-11-10 18:10 [PATCH v1 1/5] drivercore: Revert "deferral race condition fix" Andy Shevchenko 2018-11-10 18:10 ` [v1,1/5] " Andy Shevchenko 2018-11-10 18:10 ` Andy Shevchenko [this message] 2018-11-10 18:10 ` [v1,2/5] extcon: Return -EPROBE_DEFER when extcon device is not found Andy Shevchenko 2018-11-10 18:39 ` [PATCH v1 2/5] " Guenter Roeck 2018-11-10 18:39 ` [v1,2/5] " Guenter Roeck 2018-11-11 0:06 ` [PATCH v1 2/5] " Sebastian Reichel 2018-11-11 0:06 ` [v1,2/5] " Sebastian Reichel 2018-11-12 0:24 ` [PATCH v1 2/5] " Chanwoo Choi 2018-11-12 0:24 ` [v1,2/5] " Chanwoo Choi 2018-11-13 23:52 ` [PATCH v1 2/5] " Chanwoo Choi 2018-11-13 23:52 ` [v1,2/5] " Chanwoo Choi 2018-11-14 8:35 ` [PATCH v1 2/5] " Andy Shevchenko 2018-11-14 8:35 ` [v1,2/5] " Andy Shevchenko 2018-11-14 9:13 ` [PATCH v1 2/5] " Chanwoo Choi 2018-11-14 9:13 ` [v1,2/5] " Chanwoo Choi 2018-11-14 9:36 ` [PATCH v1 2/5] " Andy Shevchenko 2018-11-14 9:36 ` [v1,2/5] " Andy Shevchenko 2018-11-14 9:48 ` [PATCH v1 2/5] " Chanwoo Choi 2018-11-14 9:48 ` [v1,2/5] " Chanwoo Choi 2018-11-14 10:20 ` [PATCH v1 2/5] " Andy Shevchenko 2018-11-14 10:20 ` [v1,2/5] " Andy Shevchenko 2018-11-14 11:05 ` [PATCH v1 2/5] " Chanwoo Choi 2018-11-14 11:05 ` [v1,2/5] " Chanwoo Choi 2018-11-14 11:17 ` [PATCH v1 2/5] " Andy Shevchenko 2018-11-14 11:17 ` [v1,2/5] " Andy Shevchenko 2018-11-14 14:04 ` [PATCH v1 2/5] " Andy Shevchenko 2018-11-14 14:04 ` [v1,2/5] " Andy Shevchenko 2018-11-15 1:16 ` [PATCH v1 2/5] " Chanwoo Choi 2018-11-15 1:16 ` [v1,2/5] " Chanwoo Choi 2018-11-12 11:47 ` [PATCH v1 2/5] " Heikki Krogerus 2018-11-12 11:47 ` [v1,2/5] " Heikki Krogerus 2018-11-10 18:10 ` [PATCH v1 3/5] staging: typec: fusb302: Rename fcs,extcon-name to linux,extcon-name Andy Shevchenko 2018-11-10 18:10 ` [v1,3/5] " Andy Shevchenko 2018-11-10 18:40 ` [PATCH v1 3/5] " Guenter Roeck 2018-11-10 18:40 ` [v1,3/5] " Guenter Roeck 2018-11-10 18:11 ` [PATCH v1 4/5] usb: dwc3: drd: Switch to device property for 'extcon' handling Andy Shevchenko 2018-11-10 18:11 ` [v1,4/5] " Andy Shevchenko 2018-11-12 11:47 ` [PATCH v1 4/5] " Felipe Balbi 2018-11-12 11:47 ` [v1,4/5] " Felipe Balbi 2018-11-12 11:47 ` [PATCH v1 4/5] " Felipe Balbi 2018-11-10 18:11 ` [PATCH v1 5/5] usb: dwc3: drd: Add support for DR detection through extcon Andy Shevchenko 2018-11-10 18:11 ` [v1,5/5] " Andy Shevchenko 2018-11-10 18:26 ` [PATCH v1 1/5] drivercore: Revert "deferral race condition fix" Greg Kroah-Hartman 2018-11-10 18:26 ` [v1,1/5] " Greg Kroah-Hartman 2018-11-10 18:36 ` [PATCH v1 1/5] " Andy Shevchenko 2018-11-10 18:36 ` [v1,1/5] " Andy Shevchenko 2018-11-11 11:45 ` [PATCH v1 1/5] " Hans de Goede 2018-11-11 11:45 ` [v1,1/5] " Hans de Goede 2018-11-11 13:04 ` [PATCH v1 1/5] " Andy Shevchenko 2018-11-11 19:26 ` Rob Herring 2018-11-11 23:53 ` Andy Shevchenko 2018-11-14 23:25 ` Grant Likely 2018-11-12 16:11 ` Peter Ujfalusi 2018-11-12 16:11 ` [v1,1/5] " Peter Ujfalusi 2018-11-12 16:11 ` [PATCH v1 1/5] " Peter Ujfalusi 2018-11-14 0:33 ` Mark Brown 2018-11-14 0:33 ` [v1,1/5] " Mark Brown 2018-11-14 8:45 ` [PATCH v1 1/5] " Andy Shevchenko 2018-11-14 8:45 ` [v1,1/5] " Andy Shevchenko 2018-11-14 8:45 ` [PATCH v1 1/5] " Andy Shevchenko 2018-11-14 10:19 ` Peter Ujfalusi 2018-11-14 10:19 ` [v1,1/5] " Peter Ujfalusi 2018-11-14 10:19 ` [PATCH v1 1/5] " Peter Ujfalusi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20181110181101.24557-2-andriy.shevchenko@linux.intel.com \ --to=andriy.shevchenko@linux.intel.com \ --cc=balbi@kernel.org \ --cc=cw00.choi@samsung.com \ --cc=dvhart@infradead.org \ --cc=gregkh@linuxfoundation.org \ --cc=hdegoede@redhat.com \ --cc=heikki.krogerus@linux.intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux-usb@vger.kernel.org \ --cc=linux@roeck-us.net \ --cc=myungjoo.ham@samsung.com \ --cc=platform-driver-x86@vger.kernel.org \ --cc=rafael@kernel.org \ --cc=rogerq@ti.com \ --cc=sre@kernel.org \ --cc=wens@csie.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.