diff options
author | Stephen Neuendorffer <stephen.neuendorffer@xilinx.com> | 2008-03-17 13:36:32 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2008-03-26 08:27:31 -0400 |
commit | ac646734490b83afad3e058edeb6600d3666553b (patch) | |
tree | 294302f6b8330eaa402ea4d7afde073c36e8d8fe /drivers/char/xilinx_hwicap | |
parent | 4c58f8fe2e84ba76a4bef01cbd987b5ce62771c3 (diff) |
[POWERPC] Xilinx: hwicap: Use fixed device major.
Major 259 has been assigned by lanana. Use it. Also, publish
/dev/icap[0-k] as the device entries, and register platform devices
named 'icap' to be consistent.
Signed-off-by: Stephen Neuendorffer <stephen.neuendorffer@xilinx.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'drivers/char/xilinx_hwicap')
-rw-r--r-- | drivers/char/xilinx_hwicap/xilinx_hwicap.c | 43 |
1 files changed, 14 insertions, 29 deletions
diff --git a/drivers/char/xilinx_hwicap/xilinx_hwicap.c b/drivers/char/xilinx_hwicap/xilinx_hwicap.c index 5b8d6463e11e..016f90567a52 100644 --- a/drivers/char/xilinx_hwicap/xilinx_hwicap.c +++ b/drivers/char/xilinx_hwicap/xilinx_hwicap.c | |||
@@ -36,7 +36,7 @@ | |||
36 | *****************************************************************************/ | 36 | *****************************************************************************/ |
37 | 37 | ||
38 | /* | 38 | /* |
39 | * This is the code behind /dev/xilinx_icap -- it allows a user-space | 39 | * This is the code behind /dev/icap* -- it allows a user-space |
40 | * application to use the Xilinx ICAP subsystem. | 40 | * application to use the Xilinx ICAP subsystem. |
41 | * | 41 | * |
42 | * The following operations are possible: | 42 | * The following operations are possible: |
@@ -67,7 +67,7 @@ | |||
67 | * user-space application code that uses this device. The simplest | 67 | * user-space application code that uses this device. The simplest |
68 | * way to use this interface is simply: | 68 | * way to use this interface is simply: |
69 | * | 69 | * |
70 | * cp foo.bit /dev/xilinx_icap | 70 | * cp foo.bit /dev/icap0 |
71 | * | 71 | * |
72 | * Note that unless foo.bit is an appropriately constructed partial | 72 | * Note that unless foo.bit is an appropriately constructed partial |
73 | * bitstream, this has a high likelyhood of overwriting the design | 73 | * bitstream, this has a high likelyhood of overwriting the design |
@@ -105,18 +105,14 @@ | |||
105 | #include "buffer_icap.h" | 105 | #include "buffer_icap.h" |
106 | #include "fifo_icap.h" | 106 | #include "fifo_icap.h" |
107 | 107 | ||
108 | #define DRIVER_NAME "xilinx_icap" | 108 | #define DRIVER_NAME "icap" |
109 | 109 | ||
110 | #define HWICAP_REGS (0x10000) | 110 | #define HWICAP_REGS (0x10000) |
111 | 111 | ||
112 | /* dynamically allocate device number */ | 112 | #define XHWICAP_MAJOR 259 |
113 | static int xhwicap_major; | 113 | #define XHWICAP_MINOR 0 |
114 | static int xhwicap_minor; | ||
115 | #define HWICAP_DEVICES 1 | 114 | #define HWICAP_DEVICES 1 |
116 | 115 | ||
117 | module_param(xhwicap_major, int, S_IRUGO); | ||
118 | module_param(xhwicap_minor, int, S_IRUGO); | ||
119 | |||
120 | /* An array, which is set to true when the device is registered. */ | 116 | /* An array, which is set to true when the device is registered. */ |
121 | static bool probed_devices[HWICAP_DEVICES]; | 117 | static bool probed_devices[HWICAP_DEVICES]; |
122 | static struct mutex icap_sem; | 118 | static struct mutex icap_sem; |
@@ -605,7 +601,7 @@ static int __devinit hwicap_setup(struct device *dev, int id, | |||
605 | probed_devices[id] = 1; | 601 | probed_devices[id] = 1; |
606 | mutex_unlock(&icap_sem); | 602 | mutex_unlock(&icap_sem); |
607 | 603 | ||
608 | devt = MKDEV(xhwicap_major, xhwicap_minor + id); | 604 | devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR + id); |
609 | 605 | ||
610 | drvdata = kzalloc(sizeof(struct hwicap_drvdata), GFP_KERNEL); | 606 | drvdata = kzalloc(sizeof(struct hwicap_drvdata), GFP_KERNEL); |
611 | if (!drvdata) { | 607 | if (!drvdata) { |
@@ -710,7 +706,7 @@ static int __devexit hwicap_remove(struct device *dev) | |||
710 | dev_set_drvdata(dev, NULL); | 706 | dev_set_drvdata(dev, NULL); |
711 | 707 | ||
712 | mutex_lock(&icap_sem); | 708 | mutex_lock(&icap_sem); |
713 | probed_devices[MINOR(dev->devt)-xhwicap_minor] = 0; | 709 | probed_devices[MINOR(dev->devt)-XHWICAP_MINOR] = 0; |
714 | mutex_unlock(&icap_sem); | 710 | mutex_unlock(&icap_sem); |
715 | return 0; /* success */ | 711 | return 0; /* success */ |
716 | } | 712 | } |
@@ -850,23 +846,12 @@ static int __init hwicap_module_init(void) | |||
850 | icap_class = class_create(THIS_MODULE, "xilinx_config"); | 846 | icap_class = class_create(THIS_MODULE, "xilinx_config"); |
851 | mutex_init(&icap_sem); | 847 | mutex_init(&icap_sem); |
852 | 848 | ||
853 | if (xhwicap_major) { | 849 | devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR); |
854 | devt = MKDEV(xhwicap_major, xhwicap_minor); | 850 | retval = register_chrdev_region(devt, |
855 | retval = register_chrdev_region( | 851 | HWICAP_DEVICES, |
856 | devt, | 852 | DRIVER_NAME); |
857 | HWICAP_DEVICES, | 853 | if (retval < 0) |
858 | DRIVER_NAME); | 854 | return retval; |
859 | if (retval < 0) | ||
860 | return retval; | ||
861 | } else { | ||
862 | retval = alloc_chrdev_region(&devt, | ||
863 | xhwicap_minor, | ||
864 | HWICAP_DEVICES, | ||
865 | DRIVER_NAME); | ||
866 | if (retval < 0) | ||
867 | return retval; | ||
868 | xhwicap_major = MAJOR(devt); | ||
869 | } | ||
870 | 855 | ||
871 | retval = platform_driver_register(&hwicap_platform_driver); | 856 | retval = platform_driver_register(&hwicap_platform_driver); |
872 | 857 | ||
@@ -891,7 +876,7 @@ static int __init hwicap_module_init(void) | |||
891 | 876 | ||
892 | static void __exit hwicap_module_cleanup(void) | 877 | static void __exit hwicap_module_cleanup(void) |
893 | { | 878 | { |
894 | dev_t devt = MKDEV(xhwicap_major, xhwicap_minor); | 879 | dev_t devt = MKDEV(XHWICAP_MAJOR, XHWICAP_MINOR); |
895 | 880 | ||
896 | class_destroy(icap_class); | 881 | class_destroy(icap_class); |
897 | 882 | ||