diff options
Diffstat (limited to 'drivers/usb/chipidea/ci13xxx_pci.c')
| -rw-r--r-- | drivers/usb/chipidea/ci13xxx_pci.c | 52 | 
1 files changed, 15 insertions, 37 deletions
diff --git a/drivers/usb/chipidea/ci13xxx_pci.c b/drivers/usb/chipidea/ci13xxx_pci.c index e3dab27f5c7..918e14971f2 100644 --- a/drivers/usb/chipidea/ci13xxx_pci.c +++ b/drivers/usb/chipidea/ci13xxx_pci.c @@ -23,17 +23,17 @@  /******************************************************************************   * PCI block   *****************************************************************************/ -struct ci13xxx_udc_driver pci_driver = { +struct ci13xxx_platform_data pci_platdata = {  	.name		= UDC_DRIVER_NAME,  	.capoffset	= DEF_CAPOFFSET,  }; -struct ci13xxx_udc_driver langwell_pci_driver = { +struct ci13xxx_platform_data langwell_pci_platdata = {  	.name		= UDC_DRIVER_NAME,  	.capoffset	= 0,  }; -struct ci13xxx_udc_driver penwell_pci_driver = { +struct ci13xxx_platform_data penwell_pci_platdata = {  	.name		= UDC_DRIVER_NAME,  	.capoffset	= 0,  	.power_budget	= 200, @@ -51,12 +51,12 @@ struct ci13xxx_udc_driver penwell_pci_driver = {  static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,  				       const struct pci_device_id *id)  { -	struct ci13xxx_udc_driver *driver = (void *)id->driver_data; +	struct ci13xxx_platform_data *platdata = (void *)id->driver_data;  	struct platform_device *plat_ci;  	struct resource res[3];  	int retval = 0, nres = 2; -	if (!driver) { +	if (!platdata) {  		dev_err(&pdev->dev, "device doesn't provide driver data\n");  		return -ENODEV;  	} @@ -75,13 +75,6 @@ static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,  	pci_set_master(pdev);  	pci_try_set_mwi(pdev); -	plat_ci = platform_device_alloc("ci_hdrc", -1); -	if (!plat_ci) { -		dev_err(&pdev->dev, "can't allocate ci_hdrc platform device\n"); -		retval = -ENOMEM; -		goto disable_device; -	} -  	memset(res, 0, sizeof(res));  	res[0].start	= pci_resource_start(pdev, 0);  	res[0].end	= pci_resource_end(pdev, 0); @@ -89,32 +82,17 @@ static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,  	res[1].start	= pdev->irq;  	res[1].flags	= IORESOURCE_IRQ; -	retval = platform_device_add_resources(plat_ci, res, nres); -	if (retval) { -		dev_err(&pdev->dev, "can't add resources to platform device\n"); -		goto put_platform; +	plat_ci = ci13xxx_add_device(&pdev->dev, res, nres, platdata); +	if (IS_ERR(plat_ci)) { +		dev_err(&pdev->dev, "ci13xxx_add_device failed!\n"); +		retval = PTR_ERR(plat_ci); +		goto disable_device;  	} -	retval = platform_device_add_data(plat_ci, driver, sizeof(*driver)); -	if (retval) -		goto put_platform; - -	dma_set_coherent_mask(&plat_ci->dev, pdev->dev.coherent_dma_mask); -	plat_ci->dev.dma_mask = pdev->dev.dma_mask; -	plat_ci->dev.dma_parms = pdev->dev.dma_parms; -	plat_ci->dev.parent = &pdev->dev; -  	pci_set_drvdata(pdev, plat_ci); -	retval = platform_device_add(plat_ci); -	if (retval) -		goto put_platform; -  	return 0; - put_platform: -	pci_set_drvdata(pdev, NULL); -	platform_device_put(plat_ci);   disable_device:  	pci_disable_device(pdev);   done: @@ -133,7 +111,7 @@ static void __devexit ci13xxx_pci_remove(struct pci_dev *pdev)  {  	struct platform_device *plat_ci = pci_get_drvdata(pdev); -	platform_device_unregister(plat_ci); +	ci13xxx_remove_device(plat_ci);  	pci_set_drvdata(pdev, NULL);  	pci_disable_device(pdev);  } @@ -147,19 +125,19 @@ static void __devexit ci13xxx_pci_remove(struct pci_dev *pdev)  static DEFINE_PCI_DEVICE_TABLE(ci13xxx_pci_id_table) = {  	{  		PCI_DEVICE(0x153F, 0x1004), -		.driver_data = (kernel_ulong_t)&pci_driver, +		.driver_data = (kernel_ulong_t)&pci_platdata,  	},  	{  		PCI_DEVICE(0x153F, 0x1006), -		.driver_data = (kernel_ulong_t)&pci_driver, +		.driver_data = (kernel_ulong_t)&pci_platdata,  	},  	{  		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0811), -		.driver_data = (kernel_ulong_t)&langwell_pci_driver, +		.driver_data = (kernel_ulong_t)&langwell_pci_platdata,  	},  	{  		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0829), -		.driver_data = (kernel_ulong_t)&penwell_pci_driver, +		.driver_data = (kernel_ulong_t)&penwell_pci_platdata,  	},  	{ 0, 0, 0, 0, 0, 0, 0 /* end: all zeroes */ }  };  |