[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>
diff --git a/drivers/pcmcia/ds_internal.h b/drivers/pcmcia/ds_internal.h
new file mode 100644
index 0000000..0de90e5
--- /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