diff options
Diffstat (limited to 'drivers/usb/dwc2/pci.c')
| -rw-r--r-- | drivers/usb/dwc2/pci.c | 27 | 
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/usb/dwc2/pci.c b/drivers/usb/dwc2/pci.c index 3ecc951a1aea..7f21747007f1 100644 --- a/drivers/usb/dwc2/pci.c +++ b/drivers/usb/dwc2/pci.c @@ -83,7 +83,6 @@ static void dwc2_pci_remove(struct pci_dev *pci)  	platform_device_unregister(glue->dwc2);  	usb_phy_generic_unregister(glue->phy); -	kfree(glue);  	pci_set_drvdata(pci, NULL);  } @@ -105,10 +104,17 @@ static int dwc2_pci_probe(struct pci_dev *pci,  	pci_set_master(pci); +	phy = usb_phy_generic_register(); +	if (IS_ERR(phy)) { +		dev_err(dev, "error registering generic PHY (%ld)\n", +			PTR_ERR(phy)); +		return PTR_ERR(phy); +	} +  	dwc2 = platform_device_alloc("dwc2", PLATFORM_DEVID_AUTO);  	if (!dwc2) {  		dev_err(dev, "couldn't allocate dwc2 device\n"); -		return -ENOMEM; +		goto err;  	}  	memset(res, 0x00, sizeof(struct resource) * ARRAY_SIZE(res)); @@ -125,32 +131,25 @@ static int dwc2_pci_probe(struct pci_dev *pci,  	ret = platform_device_add_resources(dwc2, res, ARRAY_SIZE(res));  	if (ret) {  		dev_err(dev, "couldn't add resources to dwc2 device\n"); -		return ret; +		goto err;  	}  	dwc2->dev.parent = dev; -	phy = usb_phy_generic_register(); -	if (IS_ERR(phy)) { -		dev_err(dev, "error registering generic PHY (%ld)\n", -			PTR_ERR(phy)); -		return PTR_ERR(phy); -	} -  	ret = dwc2_pci_quirks(pci, dwc2);  	if (ret)  		goto err; +	glue = devm_kzalloc(dev, sizeof(*glue), GFP_KERNEL); +	if (!glue) +		goto err; +  	ret = platform_device_add(dwc2);  	if (ret) {  		dev_err(dev, "failed to register dwc2 device\n");  		goto err;  	} -	glue = kzalloc(sizeof(*glue), GFP_KERNEL); -	if (!glue) -		return -ENOMEM; -  	glue->phy = phy;  	glue->dwc2 = dwc2;  	pci_set_drvdata(pci, glue);  |