mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Also refresh 3.10 patches. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 37832
		
			
				
	
	
		
			114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/drivers/staging/octeon-usb/octeon-hcd.c
 | |
| +++ b/drivers/staging/octeon-usb/octeon-hcd.c
 | |
| @@ -673,8 +673,9 @@ static const struct hc_driver octeon_hc_
 | |
|  };
 | |
|  
 | |
|  
 | |
| -static int octeon_usb_driver_probe(struct device *dev)
 | |
| +static int octeon_usb_driver_probe(struct platform_device *pdev)
 | |
|  {
 | |
| +	struct device *dev = &pdev->dev;
 | |
|  	int status;
 | |
|  	int usb_num = to_platform_device(dev)->id;
 | |
|  	int irq = platform_get_irq(to_platform_device(dev), 0);
 | |
| @@ -728,8 +729,9 @@ static int octeon_usb_driver_probe(struc
 | |
|  	return 0;
 | |
|  }
 | |
|  
 | |
| -static int octeon_usb_driver_remove(struct device *dev)
 | |
| +static int octeon_usb_driver_remove(struct platform_device *pdev)
 | |
|  {
 | |
| +	struct device *dev = &pdev->dev;
 | |
|  	int status;
 | |
|  	struct usb_hcd *hcd = dev_get_drvdata(dev);
 | |
|  	struct octeon_hcd *priv = hcd_to_octeon(hcd);
 | |
| @@ -748,30 +750,35 @@ static int octeon_usb_driver_remove(stru
 | |
|  	return 0;
 | |
|  }
 | |
|  
 | |
| -static struct device_driver octeon_usb_driver = {
 | |
| -	.name	= "OcteonUSB",
 | |
| -	.bus	= &platform_bus_type,
 | |
| +static struct platform_driver octeon_usb_driver = {
 | |
| +	.driver = {
 | |
| +		.name	= "OcteonUSB",
 | |
| +		.owner  = THIS_MODULE,
 | |
| +	},
 | |
|  	.probe	= octeon_usb_driver_probe,
 | |
|  	.remove	= octeon_usb_driver_remove,
 | |
|  };
 | |
|  
 | |
| +static struct resource octeon_usb_resources = {
 | |
| +	.start	= OCTEON_IRQ_USB0,
 | |
| +	.end	= OCTEON_IRQ_USB0,
 | |
| +	.flags	= IORESOURCE_IRQ,
 | |
| +};
 | |
| +
 | |
| +static struct platform_device octeon_usb_device = {
 | |
| +	.name		= "OcteonUSB",
 | |
| +	.id		= 0,
 | |
| +	.resource	= &octeon_usb_resources,
 | |
| +	.num_resources	= 1,
 | |
| +};
 | |
|  
 | |
| -#define MAX_USB_PORTS   10
 | |
| -static struct platform_device *pdev_glob[MAX_USB_PORTS];
 | |
| -static int octeon_usb_registered;
 | |
|  static int __init octeon_usb_module_init(void)
 | |
|  {
 | |
|  	int num_devices = cvmx_usb_get_num_ports();
 | |
| -	int device;
 | |
|  
 | |
|  	if (usb_disabled() || num_devices == 0)
 | |
|  		return -ENODEV;
 | |
|  
 | |
| -	if (driver_register(&octeon_usb_driver))
 | |
| -		return -ENOMEM;
 | |
| -
 | |
| -	octeon_usb_registered = 1;
 | |
| -
 | |
|  	/*
 | |
|  	 * Only cn52XX and cn56XX have DWC_OTG USB hardware and the
 | |
|  	 * IOB priority registers.  Under heavy network load USB
 | |
| @@ -792,37 +799,14 @@ static int __init octeon_usb_module_init
 | |
|  		cvmx_write_csr(CVMX_IOB_N2C_L2C_PRI_CNT, pri_cnt.u64);
 | |
|  	}
 | |
|  
 | |
| -	for (device = 0; device < num_devices; device++) {
 | |
| -		struct resource irq_resource;
 | |
| -		struct platform_device *pdev;
 | |
| -		memset(&irq_resource, 0, sizeof(irq_resource));
 | |
| -		irq_resource.start = (device == 0) ? OCTEON_IRQ_USB0 : OCTEON_IRQ_USB1;
 | |
| -		irq_resource.end = irq_resource.start;
 | |
| -		irq_resource.flags = IORESOURCE_IRQ;
 | |
| -		pdev = platform_device_register_simple((char *)octeon_usb_driver.  name, device, &irq_resource, 1);
 | |
| -		if (IS_ERR(pdev)) {
 | |
| -			driver_unregister(&octeon_usb_driver);
 | |
| -			octeon_usb_registered = 0;
 | |
| -			return PTR_ERR(pdev);
 | |
| -		}
 | |
| -		if (device < MAX_USB_PORTS)
 | |
| -			pdev_glob[device] = pdev;
 | |
| +	platform_device_register(&octeon_usb_device);
 | |
|  
 | |
| -	}
 | |
| -	return 0;
 | |
| +	return platform_driver_register(&octeon_usb_driver);
 | |
|  }
 | |
|  
 | |
|  static void __exit octeon_usb_module_cleanup(void)
 | |
|  {
 | |
| -	int i;
 | |
| -
 | |
| -	for (i = 0; i < MAX_USB_PORTS; i++)
 | |
| -		if (pdev_glob[i]) {
 | |
| -			platform_device_unregister(pdev_glob[i]);
 | |
| -			pdev_glob[i] = NULL;
 | |
| -		}
 | |
| -	if (octeon_usb_registered)
 | |
| -		driver_unregister(&octeon_usb_driver);
 | |
| +	platform_driver_unregister(&octeon_usb_driver);
 | |
|  }
 | |
|  
 | |
|  MODULE_LICENSE("GPL");
 |