diff options
Diffstat (limited to 'drivers/atm/fore200e.c')
| -rw-r--r-- | drivers/atm/fore200e.c | 102 | 
1 files changed, 46 insertions, 56 deletions
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index c0976195935..d4725fc0395 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c @@ -44,7 +44,7 @@  #include <asm/dma.h>  #include <asm/byteorder.h>  #include <asm/uaccess.h> -#include <asm/atomic.h> +#include <linux/atomic.h>  #ifdef CONFIG_SBUS  #include <linux/of.h> @@ -527,8 +527,7 @@ fore200e_pca_reset(struct fore200e* fore200e)  } -static int __devinit -fore200e_pca_map(struct fore200e* fore200e) +static int fore200e_pca_map(struct fore200e* fore200e)  {      DPRINTK(2, "device %s being mapped in memory\n", fore200e->name); @@ -561,8 +560,7 @@ fore200e_pca_unmap(struct fore200e* fore200e)  } -static int __devinit -fore200e_pca_configure(struct fore200e* fore200e) +static int fore200e_pca_configure(struct fore200e *fore200e)  {      struct pci_dev* pci_dev = (struct pci_dev*)fore200e->bus_dev;      u8              master_ctrl, latency; @@ -2028,8 +2026,7 @@ fore200e_change_qos(struct atm_vcc* vcc,struct atm_qos* qos, int flags)  } -static int __devinit -fore200e_irq_request(struct fore200e* fore200e) +static int fore200e_irq_request(struct fore200e *fore200e)  {      if (request_irq(fore200e->irq, fore200e_interrupt, IRQF_SHARED, fore200e->name, fore200e->atm_dev) < 0) { @@ -2051,8 +2048,7 @@ fore200e_irq_request(struct fore200e* fore200e)  } -static int __devinit -fore200e_get_esi(struct fore200e* fore200e) +static int fore200e_get_esi(struct fore200e *fore200e)  {      struct prom_data* prom = kzalloc(sizeof(struct prom_data), GFP_KERNEL | GFP_DMA);      int ok, i; @@ -2081,8 +2077,7 @@ fore200e_get_esi(struct fore200e* fore200e)  } -static int __devinit -fore200e_alloc_rx_buf(struct fore200e* fore200e) +static int fore200e_alloc_rx_buf(struct fore200e *fore200e)  {      int scheme, magn, nbr, size, i; @@ -2146,8 +2141,7 @@ fore200e_alloc_rx_buf(struct fore200e* fore200e)  } -static int __devinit -fore200e_init_bs_queue(struct fore200e* fore200e) +static int fore200e_init_bs_queue(struct fore200e *fore200e)  {      int scheme, magn, i; @@ -2209,8 +2203,7 @@ fore200e_init_bs_queue(struct fore200e* fore200e)  } -static int __devinit -fore200e_init_rx_queue(struct fore200e* fore200e) +static int fore200e_init_rx_queue(struct fore200e *fore200e)  {      struct host_rxq*     rxq =  &fore200e->host_rxq;      struct cp_rxq_entry __iomem * cp_entry; @@ -2269,8 +2262,7 @@ fore200e_init_rx_queue(struct fore200e* fore200e)  } -static int __devinit -fore200e_init_tx_queue(struct fore200e* fore200e) +static int fore200e_init_tx_queue(struct fore200e *fore200e)  {      struct host_txq*     txq =  &fore200e->host_txq;      struct cp_txq_entry __iomem * cp_entry; @@ -2332,8 +2324,7 @@ fore200e_init_tx_queue(struct fore200e* fore200e)  } -static int __devinit -fore200e_init_cmd_queue(struct fore200e* fore200e) +static int fore200e_init_cmd_queue(struct fore200e *fore200e)  {      struct host_cmdq*     cmdq =  &fore200e->host_cmdq;      struct cp_cmdq_entry __iomem * cp_entry; @@ -2374,10 +2365,10 @@ fore200e_init_cmd_queue(struct fore200e* fore200e)  } -static void __devinit -fore200e_param_bs_queue(struct fore200e* fore200e, -			enum buffer_scheme scheme, enum buffer_magn magn, -			int queue_length, int pool_size, int supply_blksize) +static void fore200e_param_bs_queue(struct fore200e *fore200e, +				    enum buffer_scheme scheme, +				    enum buffer_magn magn, int queue_length, +				    int pool_size, int supply_blksize)  {      struct bs_spec __iomem * bs_spec = &fore200e->cp_queues->init.bs_spec[ scheme ][ magn ]; @@ -2388,8 +2379,7 @@ fore200e_param_bs_queue(struct fore200e* fore200e,  } -static int __devinit -fore200e_initialize(struct fore200e* fore200e) +static int fore200e_initialize(struct fore200e *fore200e)  {      struct cp_queues __iomem * cpq;      int               ok, scheme, magn; @@ -2440,8 +2430,7 @@ fore200e_initialize(struct fore200e* fore200e)  } -static void __devinit -fore200e_monitor_putc(struct fore200e* fore200e, char c) +static void fore200e_monitor_putc(struct fore200e *fore200e, char c)  {      struct cp_monitor __iomem * monitor = fore200e->cp_monitor; @@ -2452,8 +2441,7 @@ fore200e_monitor_putc(struct fore200e* fore200e, char c)  } -static int __devinit -fore200e_monitor_getc(struct fore200e* fore200e) +static int fore200e_monitor_getc(struct fore200e *fore200e)  {      struct cp_monitor __iomem * monitor = fore200e->cp_monitor;      unsigned long      timeout = jiffies + msecs_to_jiffies(50); @@ -2477,8 +2465,7 @@ fore200e_monitor_getc(struct fore200e* fore200e)  } -static void __devinit -fore200e_monitor_puts(struct fore200e* fore200e, char* str) +static void fore200e_monitor_puts(struct fore200e *fore200e, char *str)  {      while (*str) { @@ -2497,8 +2484,7 @@ fore200e_monitor_puts(struct fore200e* fore200e, char* str)  #define FW_EXT "_ecd.bin2"  #endif -static int __devinit -fore200e_load_and_start_fw(struct fore200e* fore200e) +static int fore200e_load_and_start_fw(struct fore200e *fore200e)  {      const struct firmware *firmware;      struct device *device; @@ -2566,15 +2552,14 @@ release:  } -static int __devinit -fore200e_register(struct fore200e* fore200e) +static int fore200e_register(struct fore200e *fore200e, struct device *parent)  {      struct atm_dev* atm_dev;      DPRINTK(2, "device %s being registered\n", fore200e->name); -    atm_dev = atm_dev_register(fore200e->bus->proc_name, &fore200e_ops, -1, -      NULL);  +    atm_dev = atm_dev_register(fore200e->bus->proc_name, parent, &fore200e_ops, +                               -1, NULL);      if (atm_dev == NULL) {  	printk(FORE200E "unable to register device %s\n", fore200e->name);  	return -ENODEV; @@ -2593,10 +2578,9 @@ fore200e_register(struct fore200e* fore200e)  } -static int __devinit -fore200e_init(struct fore200e* fore200e) +static int fore200e_init(struct fore200e *fore200e, struct device *parent)  { -    if (fore200e_register(fore200e) < 0) +    if (fore200e_register(fore200e, parent) < 0)  	return -ENODEV;      if (fore200e->bus->configure(fore200e) < 0) @@ -2643,14 +2627,20 @@ fore200e_init(struct fore200e* fore200e)  }  #ifdef CONFIG_SBUS -static int __devinit fore200e_sba_probe(struct platform_device *op, -					const struct of_device_id *match) +static const struct of_device_id fore200e_sba_match[]; +static int fore200e_sba_probe(struct platform_device *op)  { -	const struct fore200e_bus *bus = match->data; +	const struct of_device_id *match; +	const struct fore200e_bus *bus;  	struct fore200e *fore200e;  	static int index = 0;  	int err; +	match = of_match_device(fore200e_sba_match, &op->dev); +	if (!match) +		return -EINVAL; +	bus = match->data; +  	fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL);  	if (!fore200e)  		return -ENOMEM; @@ -2662,7 +2652,7 @@ static int __devinit fore200e_sba_probe(struct platform_device *op,  	sprintf(fore200e->name, "%s-%d", bus->model_name, index); -	err = fore200e_init(fore200e); +	err = fore200e_init(fore200e, &op->dev);  	if (err < 0) {  		fore200e_shutdown(fore200e);  		kfree(fore200e); @@ -2675,7 +2665,7 @@ static int __devinit fore200e_sba_probe(struct platform_device *op,  	return 0;  } -static int __devexit fore200e_sba_remove(struct platform_device *op) +static int fore200e_sba_remove(struct platform_device *op)  {  	struct fore200e *fore200e = dev_get_drvdata(&op->dev); @@ -2694,20 +2684,20 @@ static const struct of_device_id fore200e_sba_match[] = {  };  MODULE_DEVICE_TABLE(of, fore200e_sba_match); -static struct of_platform_driver fore200e_sba_driver = { +static struct platform_driver fore200e_sba_driver = {  	.driver = {  		.name = "fore_200e",  		.owner = THIS_MODULE,  		.of_match_table = fore200e_sba_match,  	},  	.probe		= fore200e_sba_probe, -	.remove		= __devexit_p(fore200e_sba_remove), +	.remove		= fore200e_sba_remove,  };  #endif  #ifdef CONFIG_PCI -static int __devinit -fore200e_pca_detect(struct pci_dev *pci_dev, const struct pci_device_id *pci_ent) +static int fore200e_pca_detect(struct pci_dev *pci_dev, +			       const struct pci_device_id *pci_ent)  {      const struct fore200e_bus* bus = (struct fore200e_bus*) pci_ent->driver_data;      struct fore200e* fore200e; @@ -2740,7 +2730,7 @@ fore200e_pca_detect(struct pci_dev *pci_dev, const struct pci_device_id *pci_ent      sprintf(fore200e->name, "%s-%d", bus->model_name, index); -    err = fore200e_init(fore200e); +    err = fore200e_init(fore200e, &pci_dev->dev);      if (err < 0) {  	fore200e_shutdown(fore200e);  	goto out_free; @@ -2760,7 +2750,7 @@ out_disable:  } -static void __devexit fore200e_pca_remove_one(struct pci_dev *pci_dev) +static void fore200e_pca_remove_one(struct pci_dev *pci_dev)  {      struct fore200e *fore200e; @@ -2783,19 +2773,19 @@ MODULE_DEVICE_TABLE(pci, fore200e_pca_tbl);  static struct pci_driver fore200e_pca_driver = {      .name =     "fore_200e",      .probe =    fore200e_pca_detect, -    .remove =   __devexit_p(fore200e_pca_remove_one), +    .remove =   fore200e_pca_remove_one,      .id_table = fore200e_pca_tbl,  };  #endif  static int __init fore200e_module_init(void)  { -	int err; +	int err = 0;  	printk(FORE200E "FORE Systems 200E-series ATM driver - version " FORE200E_VERSION "\n");  #ifdef CONFIG_SBUS -	err = of_register_platform_driver(&fore200e_sba_driver); +	err = platform_driver_register(&fore200e_sba_driver);  	if (err)  		return err;  #endif @@ -2806,7 +2796,7 @@ static int __init fore200e_module_init(void)  #ifdef CONFIG_SBUS  	if (err) -		of_unregister_platform_driver(&fore200e_sba_driver); +		platform_driver_unregister(&fore200e_sba_driver);  #endif  	return err; @@ -2818,7 +2808,7 @@ static void __exit fore200e_module_cleanup(void)  	pci_unregister_driver(&fore200e_pca_driver);  #endif  #ifdef CONFIG_SBUS -	of_unregister_platform_driver(&fore200e_sba_driver); +	platform_driver_unregister(&fore200e_sba_driver);  #endif  }  | 
