aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/atm/fore200e.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/atm/fore200e.c')
-rw-r--r--drivers/atm/fore200e.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
index c8fc69c85a06..bc9e702186dd 100644
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -92,7 +92,7 @@
92 92
93#define FORE200E_INDEX(virt_addr, type, index) (&((type *)(virt_addr))[ index ]) 93#define FORE200E_INDEX(virt_addr, type, index) (&((type *)(virt_addr))[ index ])
94 94
95#define FORE200E_NEXT_ENTRY(index, modulo) (index = ++(index) % (modulo)) 95#define FORE200E_NEXT_ENTRY(index, modulo) (index = ((index) + 1) % (modulo))
96 96
97#if 1 97#if 1
98#define ASSERT(expr) if (!(expr)) { \ 98#define ASSERT(expr) if (!(expr)) { \
@@ -2567,14 +2567,14 @@ release:
2567 2567
2568 2568
2569static int __devinit 2569static int __devinit
2570fore200e_register(struct fore200e* fore200e) 2570fore200e_register(struct fore200e* fore200e, struct device *parent)
2571{ 2571{
2572 struct atm_dev* atm_dev; 2572 struct atm_dev* atm_dev;
2573 2573
2574 DPRINTK(2, "device %s being registered\n", fore200e->name); 2574 DPRINTK(2, "device %s being registered\n", fore200e->name);
2575 2575
2576 atm_dev = atm_dev_register(fore200e->bus->proc_name, &fore200e_ops, -1, 2576 atm_dev = atm_dev_register(fore200e->bus->proc_name, parent, &fore200e_ops,
2577 NULL); 2577 -1, NULL);
2578 if (atm_dev == NULL) { 2578 if (atm_dev == NULL) {
2579 printk(FORE200E "unable to register device %s\n", fore200e->name); 2579 printk(FORE200E "unable to register device %s\n", fore200e->name);
2580 return -ENODEV; 2580 return -ENODEV;
@@ -2594,9 +2594,9 @@ fore200e_register(struct fore200e* fore200e)
2594 2594
2595 2595
2596static int __devinit 2596static int __devinit
2597fore200e_init(struct fore200e* fore200e) 2597fore200e_init(struct fore200e* fore200e, struct device *parent)
2598{ 2598{
2599 if (fore200e_register(fore200e) < 0) 2599 if (fore200e_register(fore200e, parent) < 0)
2600 return -ENODEV; 2600 return -ENODEV;
2601 2601
2602 if (fore200e->bus->configure(fore200e) < 0) 2602 if (fore200e->bus->configure(fore200e) < 0)
@@ -2643,14 +2643,20 @@ fore200e_init(struct fore200e* fore200e)
2643} 2643}
2644 2644
2645#ifdef CONFIG_SBUS 2645#ifdef CONFIG_SBUS
2646static int __devinit fore200e_sba_probe(struct platform_device *op, 2646static const struct of_device_id fore200e_sba_match[];
2647 const struct of_device_id *match) 2647static int __devinit fore200e_sba_probe(struct platform_device *op)
2648{ 2648{
2649 const struct fore200e_bus *bus = match->data; 2649 const struct of_device_id *match;
2650 const struct fore200e_bus *bus;
2650 struct fore200e *fore200e; 2651 struct fore200e *fore200e;
2651 static int index = 0; 2652 static int index = 0;
2652 int err; 2653 int err;
2653 2654
2655 match = of_match_device(fore200e_sba_match, &op->dev);
2656 if (!match)
2657 return -EINVAL;
2658 bus = match->data;
2659
2654 fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL); 2660 fore200e = kzalloc(sizeof(struct fore200e), GFP_KERNEL);
2655 if (!fore200e) 2661 if (!fore200e)
2656 return -ENOMEM; 2662 return -ENOMEM;
@@ -2662,7 +2668,7 @@ static int __devinit fore200e_sba_probe(struct platform_device *op,
2662 2668
2663 sprintf(fore200e->name, "%s-%d", bus->model_name, index); 2669 sprintf(fore200e->name, "%s-%d", bus->model_name, index);
2664 2670
2665 err = fore200e_init(fore200e); 2671 err = fore200e_init(fore200e, &op->dev);
2666 if (err < 0) { 2672 if (err < 0) {
2667 fore200e_shutdown(fore200e); 2673 fore200e_shutdown(fore200e);
2668 kfree(fore200e); 2674 kfree(fore200e);
@@ -2694,7 +2700,7 @@ static const struct of_device_id fore200e_sba_match[] = {
2694}; 2700};
2695MODULE_DEVICE_TABLE(of, fore200e_sba_match); 2701MODULE_DEVICE_TABLE(of, fore200e_sba_match);
2696 2702
2697static struct of_platform_driver fore200e_sba_driver = { 2703static struct platform_driver fore200e_sba_driver = {
2698 .driver = { 2704 .driver = {
2699 .name = "fore_200e", 2705 .name = "fore_200e",
2700 .owner = THIS_MODULE, 2706 .owner = THIS_MODULE,
@@ -2740,7 +2746,7 @@ fore200e_pca_detect(struct pci_dev *pci_dev, const struct pci_device_id *pci_ent
2740 2746
2741 sprintf(fore200e->name, "%s-%d", bus->model_name, index); 2747 sprintf(fore200e->name, "%s-%d", bus->model_name, index);
2742 2748
2743 err = fore200e_init(fore200e); 2749 err = fore200e_init(fore200e, &pci_dev->dev);
2744 if (err < 0) { 2750 if (err < 0) {
2745 fore200e_shutdown(fore200e); 2751 fore200e_shutdown(fore200e);
2746 goto out_free; 2752 goto out_free;
@@ -2795,7 +2801,7 @@ static int __init fore200e_module_init(void)
2795 printk(FORE200E "FORE Systems 200E-series ATM driver - version " FORE200E_VERSION "\n"); 2801 printk(FORE200E "FORE Systems 200E-series ATM driver - version " FORE200E_VERSION "\n");
2796 2802
2797#ifdef CONFIG_SBUS 2803#ifdef CONFIG_SBUS
2798 err = of_register_platform_driver(&fore200e_sba_driver); 2804 err = platform_driver_register(&fore200e_sba_driver);
2799 if (err) 2805 if (err)
2800 return err; 2806 return err;
2801#endif 2807#endif
@@ -2806,7 +2812,7 @@ static int __init fore200e_module_init(void)
2806 2812
2807#ifdef CONFIG_SBUS 2813#ifdef CONFIG_SBUS
2808 if (err) 2814 if (err)
2809 of_unregister_platform_driver(&fore200e_sba_driver); 2815 platform_driver_unregister(&fore200e_sba_driver);
2810#endif 2816#endif
2811 2817
2812 return err; 2818 return err;
@@ -2818,7 +2824,7 @@ static void __exit fore200e_module_cleanup(void)
2818 pci_unregister_driver(&fore200e_pca_driver); 2824 pci_unregister_driver(&fore200e_pca_driver);
2819#endif 2825#endif
2820#ifdef CONFIG_SBUS 2826#ifdef CONFIG_SBUS
2821 of_unregister_platform_driver(&fore200e_sba_driver); 2827 platform_driver_unregister(&fore200e_sba_driver);
2822#endif 2828#endif
2823} 2829}
2824 2830