diff options
author | Bernhard Walle <bwalle@suse.de> | 2007-05-06 17:48:44 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:12:50 -0400 |
commit | 6179b5562d5d17c7c09b54cb11dd925ca308d7a9 (patch) | |
tree | 2f740d0f653678557a5601c6dffed1287b9aa513 /include/pcmcia | |
parent | 02c83595b86480ee4d61665beb13f76685d40239 (diff) |
add new_id to PCMCIA drivers
PCI drivers have the new_id file in sysfs which allows new IDs to be added
at runtime. The advantage is to avoid re-compilation of a driver that
works for a new device, but it's ID table doesn't contain the new device.
This mechanism is only meant for testing, after the driver has been tested
successfully, the ID should be added in source code so that new revisions
of the kernel automatically detect the device.
The implementation follows the PCI implementation. The interface is documented
in Documentation/pcmcia/driver.txt. Computations should be done in userspace,
so the sysfs string contains the raw structure members for matching.
Signed-off-by: Bernhard Walle <bwalle@suse.de>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/pcmcia')
-rw-r--r-- | include/pcmcia/ds.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/pcmcia/ds.h b/include/pcmcia/ds.h index 8c339f5678cf..90ef552c42dd 100644 --- a/include/pcmcia/ds.h +++ b/include/pcmcia/ds.h | |||
@@ -108,6 +108,11 @@ typedef struct dev_node_t { | |||
108 | struct pcmcia_socket; | 108 | struct pcmcia_socket; |
109 | struct config_t; | 109 | struct config_t; |
110 | 110 | ||
111 | struct pcmcia_dynids { | ||
112 | spinlock_t lock; | ||
113 | struct list_head list; | ||
114 | }; | ||
115 | |||
111 | struct pcmcia_driver { | 116 | struct pcmcia_driver { |
112 | int (*probe) (struct pcmcia_device *dev); | 117 | int (*probe) (struct pcmcia_device *dev); |
113 | void (*remove) (struct pcmcia_device *dev); | 118 | void (*remove) (struct pcmcia_device *dev); |
@@ -118,6 +123,7 @@ struct pcmcia_driver { | |||
118 | struct module *owner; | 123 | struct module *owner; |
119 | struct pcmcia_device_id *id_table; | 124 | struct pcmcia_device_id *id_table; |
120 | struct device_driver drv; | 125 | struct device_driver drv; |
126 | struct pcmcia_dynids dynids; | ||
121 | }; | 127 | }; |
122 | 128 | ||
123 | /* driver registration */ | 129 | /* driver registration */ |