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: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>hifive-unleashed-5.1
parent
e4ce4ecd96
commit
770719df7b
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue