diff options
Diffstat (limited to 'drivers/usb/dwc3/dwc3-pci.c')
| -rw-r--r-- | drivers/usb/dwc3/dwc3-pci.c | 53 | 
1 files changed, 26 insertions, 27 deletions
diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c index c68e4270457..a9ca9adba39 100644 --- a/drivers/usb/dwc3/dwc3-pci.c +++ b/drivers/usb/dwc3/dwc3-pci.c @@ -61,32 +61,36 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,  	struct dwc3_pci		*glue;  	int			ret = -ENOMEM;  	int			devid; +	struct device		*dev = &pci->dev; -	glue = kzalloc(sizeof(*glue), GFP_KERNEL); +	glue = devm_kzalloc(dev, sizeof(*glue), GFP_KERNEL);  	if (!glue) { -		dev_err(&pci->dev, "not enough memory\n"); -		goto err0; +		dev_err(dev, "not enough memory\n"); +		return -ENOMEM;  	} -	glue->dev	= &pci->dev; +	glue->dev = dev;  	ret = pci_enable_device(pci);  	if (ret) { -		dev_err(&pci->dev, "failed to enable pci device\n"); -		goto err1; +		dev_err(dev, "failed to enable pci device\n"); +		return -ENODEV;  	}  	pci_set_power_state(pci, PCI_D0);  	pci_set_master(pci);  	devid = dwc3_get_device_id(); -	if (devid < 0) -		goto err2; +	if (devid < 0) { +		ret = -ENOMEM; +		goto err1; +	}  	dwc3 = platform_device_alloc("dwc3", devid);  	if (!dwc3) { -		dev_err(&pci->dev, "couldn't allocate dwc3 device\n"); -		goto err3; +		dev_err(dev, "couldn't allocate dwc3 device\n"); +		ret = -ENOMEM; +		goto err1;  	}  	memset(res, 0x00, sizeof(struct resource) * ARRAY_SIZE(res)); @@ -102,41 +106,37 @@ static int __devinit dwc3_pci_probe(struct pci_dev *pci,  	ret = platform_device_add_resources(dwc3, res, ARRAY_SIZE(res));  	if (ret) { -		dev_err(&pci->dev, "couldn't add resources to dwc3 device\n"); -		goto err4; +		dev_err(dev, "couldn't add resources to dwc3 device\n"); +		goto err2;  	}  	pci_set_drvdata(pci, glue); -	dma_set_coherent_mask(&dwc3->dev, pci->dev.coherent_dma_mask); +	dma_set_coherent_mask(&dwc3->dev, dev->coherent_dma_mask); -	dwc3->dev.dma_mask = pci->dev.dma_mask; -	dwc3->dev.dma_parms = pci->dev.dma_parms; -	dwc3->dev.parent = &pci->dev; -	glue->dwc3	= dwc3; +	dwc3->dev.dma_mask = dev->dma_mask; +	dwc3->dev.dma_parms = dev->dma_parms; +	dwc3->dev.parent = dev; +	glue->dwc3 = dwc3;  	ret = platform_device_add(dwc3);  	if (ret) { -		dev_err(&pci->dev, "failed to register dwc3 device\n"); -		goto err4; +		dev_err(dev, "failed to register dwc3 device\n"); +		goto err3;  	}  	return 0; -err4: +err3:  	pci_set_drvdata(pci, NULL);  	platform_device_put(dwc3); -err3: -	dwc3_put_device_id(devid); -  err2: -	pci_disable_device(pci); +	dwc3_put_device_id(devid);  err1: -	kfree(glue); +	pci_disable_device(pci); -err0:  	return ret;  } @@ -148,7 +148,6 @@ static void __devexit dwc3_pci_remove(struct pci_dev *pci)  	platform_device_unregister(glue->dwc3);  	pci_set_drvdata(pci, NULL);  	pci_disable_device(pci); -	kfree(glue);  }  static DEFINE_PCI_DEVICE_TABLE(dwc3_pci_id_table) = {  |