aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/ds_internal.h
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2005-06-27 16:28:47 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-27 18:03:18 -0700
commite7a480d229461e54a0b3b0439b2bf0e652545e3d (patch)
treea1a8226fcd713e5db3e26a99ad877e4fd1a58edd /drivers/pcmcia/ds_internal.h
parent[PATCH] pcmcia: add a config option for the PCMICA ioctl (diff)
downloadlinux-dev-e7a480d229461e54a0b3b0439b2bf0e652545e3d.tar.xz
linux-dev-e7a480d229461e54a0b3b0439b2bf0e652545e3d.zip
[PATCH] pcmcia: move PCMCIA ioctl to a separate file
Move all PCMCIA_IOCTL-related code to a different file. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net> From: Richard Purdie <rpurdie@rpsys.net> The pcmcia-move-pcmcia-ioctl-to-a-separate-file patch was corrupted in -mm2 causing this problem. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/pcmcia/ds_internal.h')
-rw-r--r--drivers/pcmcia/ds_internal.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/drivers/pcmcia/ds_internal.h b/drivers/pcmcia/ds_internal.h
new file mode 100644
index 000000000000..0de90e5e67a7
--- /dev/null
+++ b/drivers/pcmcia/ds_internal.h
@@ -0,0 +1,55 @@
+/* ds_internal.h - internal header for 16-bit PCMCIA devices management */
+
+struct user_info_t;
+
+/* Socket state information */
+struct pcmcia_bus_socket {
+ struct kref refcount;
+ struct pcmcia_callback callback;
+ int state;
+ struct pcmcia_socket *parent;
+
+ /* the PCMCIA devices connected to this socket (normally one, more
+ * for multifunction devices: */
+ struct list_head devices_list;
+ u8 device_count; /* the number of devices, used
+ * only internally and subject
+ * to incorrectness and change */
+
+ u8 device_add_pending;
+ struct work_struct device_add;
+
+
+#ifdef CONFIG_PCMCIA_IOCTL
+ struct user_info_t *user;
+ wait_queue_head_t queue;
+#endif
+};
+extern spinlock_t pcmcia_dev_list_lock;
+
+extern struct bus_type pcmcia_bus_type;
+
+
+#define DS_SOCKET_PRESENT 0x01
+#define DS_SOCKET_BUSY 0x02
+#define DS_SOCKET_DEAD 0x80
+
+extern struct pcmcia_device * pcmcia_get_dev(struct pcmcia_device *p_dev);
+extern void pcmcia_put_dev(struct pcmcia_device *p_dev);
+
+struct pcmcia_bus_socket *pcmcia_get_bus_socket(struct pcmcia_bus_socket *s);
+void pcmcia_put_bus_socket(struct pcmcia_bus_socket *s);
+
+struct pcmcia_device * pcmcia_device_add(struct pcmcia_bus_socket *s, unsigned int function);
+
+#ifdef CONFIG_PCMCIA_IOCTL
+extern void __init pcmcia_setup_ioctl(void);
+extern void __exit pcmcia_cleanup_ioctl(void);
+extern void handle_event(struct pcmcia_bus_socket *s, event_t event);
+extern int handle_request(struct pcmcia_bus_socket *s, event_t event);
+#else
+static inline void __init pcmcia_setup_ioctl(void) { return; }
+static inline void __init pcmcia_cleanup_ioctl(void) { return; }
+static inline void handle_event(struct pcmcia_bus_socket *s, event_t event) { return; }
+static inline int handle_request(struct pcmcia_bus_socket *s, event_t event) { return CS_SUCCESS; }
+#endif