Commit 770719df authored by Fabio Estevam's avatar Fabio Estevam Committed by Greg Kroah-Hartman

usb: chipidea: ci13xxx_imx: fix error path

If usbmisc_ops->post() fails it should point the error path to release all
previously acquired resources, so adjust it to call ci13xxx_remove_device().

While at it, remove the unnecessary 'plat_ci' indirection, as we can directly
use the private structure.
Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e4ce4ecd
...@@ -98,7 +98,7 @@ static struct ci13xxx_platform_data ci13xxx_imx_platdata = { ...@@ -98,7 +98,7 @@ static struct ci13xxx_platform_data ci13xxx_imx_platdata = {
static int ci13xxx_imx_probe(struct platform_device *pdev) static int ci13xxx_imx_probe(struct platform_device *pdev)
{ {
struct ci13xxx_imx_data *data; struct ci13xxx_imx_data *data;
struct platform_device *plat_ci, *phy_pdev; struct platform_device *phy_pdev;
struct device_node *phy_np; struct device_node *phy_np;
struct resource *res; struct resource *res;
struct regulator *reg_vbus; struct regulator *reg_vbus;
...@@ -180,11 +180,11 @@ static int ci13xxx_imx_probe(struct platform_device *pdev) ...@@ -180,11 +180,11 @@ static int ci13xxx_imx_probe(struct platform_device *pdev)
} }
} }
plat_ci = ci13xxx_add_device(&pdev->dev, data->ci_pdev = ci13xxx_add_device(&pdev->dev,
pdev->resource, pdev->num_resources, pdev->resource, pdev->num_resources,
&ci13xxx_imx_platdata); &ci13xxx_imx_platdata);
if (IS_ERR(plat_ci)) { if (IS_ERR(data->ci_pdev)) {
ret = PTR_ERR(plat_ci); ret = PTR_ERR(data->ci_pdev);
dev_err(&pdev->dev, dev_err(&pdev->dev,
"Can't register ci_hdrc platform device, err=%d\n", "Can't register ci_hdrc platform device, err=%d\n",
ret); ret);
...@@ -196,11 +196,10 @@ static int ci13xxx_imx_probe(struct platform_device *pdev) ...@@ -196,11 +196,10 @@ static int ci13xxx_imx_probe(struct platform_device *pdev)
if (ret) { if (ret) {
dev_err(&pdev->dev, dev_err(&pdev->dev,
"usbmisc post failed, ret=%d\n", ret); "usbmisc post failed, ret=%d\n", ret);
goto put_np; goto disable_device;
} }
} }
data->ci_pdev = plat_ci;
platform_set_drvdata(pdev, data); platform_set_drvdata(pdev, data);
pm_runtime_no_callbacks(&pdev->dev); pm_runtime_no_callbacks(&pdev->dev);
...@@ -208,6 +207,8 @@ static int ci13xxx_imx_probe(struct platform_device *pdev) ...@@ -208,6 +207,8 @@ static int ci13xxx_imx_probe(struct platform_device *pdev)
return 0; return 0;
disable_device:
ci13xxx_remove_device(data->ci_pdev);
err: err:
if (reg_vbus) if (reg_vbus)
regulator_disable(reg_vbus); regulator_disable(reg_vbus);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment