drivers/usb/host/ehci-msm.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver detaches. This patch uses these functions for data that is allocated in the probe function of a platform device and is only freed in the remove function. The original code was also missing a call to iounmap(hcd->regs); in the remove function, so this patch also implicitly fixes a bug. Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
84b79838b9
Коммит
df5eb3ffa8
|
@ -133,7 +133,7 @@ static int ehci_msm_probe(struct platform_device *pdev)
|
|||
|
||||
hcd->rsrc_start = res->start;
|
||||
hcd->rsrc_len = resource_size(res);
|
||||
hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
|
||||
hcd->regs = devm_ioremap(&pdev->dev, hcd->rsrc_start, hcd->rsrc_len);
|
||||
if (!hcd->regs) {
|
||||
dev_err(&pdev->dev, "ioremap failed\n");
|
||||
ret = -ENOMEM;
|
||||
|
@ -145,17 +145,17 @@ static int ehci_msm_probe(struct platform_device *pdev)
|
|||
* powering up VBUS, mapping of registers address space and power
|
||||
* management.
|
||||
*/
|
||||
phy = usb_get_phy(USB_PHY_TYPE_USB2);
|
||||
phy = devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);
|
||||
if (IS_ERR_OR_NULL(phy)) {
|
||||
dev_err(&pdev->dev, "unable to find transceiver\n");
|
||||
ret = -ENODEV;
|
||||
goto unmap;
|
||||
goto put_hcd;
|
||||
}
|
||||
|
||||
ret = otg_set_host(phy->otg, &hcd->self);
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "unable to register with transceiver\n");
|
||||
goto put_transceiver;
|
||||
goto put_hcd;
|
||||
}
|
||||
|
||||
device_init_wakeup(&pdev->dev, 1);
|
||||
|
@ -168,10 +168,6 @@ static int ehci_msm_probe(struct platform_device *pdev)
|
|||
|
||||
return 0;
|
||||
|
||||
put_transceiver:
|
||||
usb_put_phy(phy);
|
||||
unmap:
|
||||
iounmap(hcd->regs);
|
||||
put_hcd:
|
||||
usb_put_hcd(hcd);
|
||||
|
||||
|
@ -187,7 +183,6 @@ static int __devexit ehci_msm_remove(struct platform_device *pdev)
|
|||
pm_runtime_set_suspended(&pdev->dev);
|
||||
|
||||
otg_set_host(phy->otg, NULL);
|
||||
usb_put_phy(phy);
|
||||
|
||||
usb_put_hcd(hcd);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче