diff options
Diffstat (limited to 'drivers/atm/fore200e.c')
-rw-r--r-- | drivers/atm/fore200e.c | 36 |
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 | ||
2569 | static int __devinit | 2569 | static int __devinit |
2570 | fore200e_register(struct fore200e* fore200e) | 2570 | fore200e_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 | ||
2596 | static int __devinit | 2596 | static int __devinit |
2597 | fore200e_init(struct fore200e* fore200e) | 2597 | fore200e_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 |
2646 | static int __devinit fore200e_sba_probe(struct platform_device *op, | 2646 | static const struct of_device_id fore200e_sba_match[]; |
2647 | const struct of_device_id *match) | 2647 | static 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 | }; |
2695 | MODULE_DEVICE_TABLE(of, fore200e_sba_match); | 2701 | MODULE_DEVICE_TABLE(of, fore200e_sba_match); |
2696 | 2702 | ||
2697 | static struct of_platform_driver fore200e_sba_driver = { | 2703 | static 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 | ||