diff --git a/drivers/pcmcia/cs_internal.h b/drivers/pcmcia/cs_internal.h
index 3fcdf4f..95297c5 100644
--- a/drivers/pcmcia/cs_internal.h
+++ b/drivers/pcmcia/cs_internal.h
@@ -1,5 +1,5 @@
 /*
- * cs_internal.h
+ * cs_internal.h -- definitions internal to the PCMCIA core modules
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -10,6 +10,12 @@
  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
  *
  * (C) 1999		David A. Hinds
+ * (C) 2003 - 2008	Dominik Brodowski
+ *
+ *
+ * This file contains definitions _only_ needed by the PCMCIA core modules.
+ * It must not be included by PCMCIA socket drivers or by PCMCIA device
+ * drivers.
  */
 
 #ifndef _LINUX_CS_INTERNAL_H
@@ -18,29 +24,24 @@
 #include <linux/kref.h>
 
 /* Flags in client state */
-#define CLIENT_CONFIG_LOCKED	0x0001
-#define CLIENT_IRQ_REQ		0x0002
-#define CLIENT_IO_REQ		0x0004
-#define CLIENT_UNBOUND		0x0008
-#define CLIENT_STALE		0x0010
 #define CLIENT_WIN_REQ(i)	(0x1<<(i))
-#define CLIENT_CARDBUS		0x8000
 
 /* Each card function gets one of these guys */
 typedef struct config_t {
 	struct kref	ref;
-    u_int		state;
-    u_int		Attributes;
-    u_int		IntType;
-    u_int		ConfigBase;
-    u_char		Status, Pin, Copy, Option, ExtStatus;
-    u_int		CardValues;
-    io_req_t		io;
-    struct {
-	u_int		Attributes;
-    } irq;
+	unsigned int	state;
+	unsigned int	Attributes;
+	unsigned int	IntType;
+	unsigned int	ConfigBase;
+	unsigned char	Status, Pin, Copy, Option, ExtStatus;
+	unsigned int	CardValues;
+	io_req_t	io;
+	struct {
+		u_int	Attributes;
+	} irq;
 } config_t;
 
+
 struct cis_cache_entry {
 	struct list_head	node;
 	unsigned int		addr;
@@ -59,7 +60,6 @@
 #define SOCKET_INUSE		0x0010
 #define SOCKET_SUSPEND		0x0080
 #define SOCKET_WIN_REQ(i)	(0x0100<<(i))
-#define SOCKET_REGION_INFO	0x4000
 #define SOCKET_CARDBUS		0x8000
 #define SOCKET_CARDBUS_CONFIG	0x10000
 
@@ -83,52 +83,6 @@
 	}
 }
 
-/* In cardbus.c */
-int cb_alloc(struct pcmcia_socket *s);
-void cb_free(struct pcmcia_socket *s);
-int read_cb_mem(struct pcmcia_socket *s, int space, u_int addr, u_int len, void *ptr);
-
-/* In cistpl.c */
-int pcmcia_read_cis_mem(struct pcmcia_socket *s, int attr,
-		 u_int addr, u_int len, void *ptr);
-void pcmcia_write_cis_mem(struct pcmcia_socket *s, int attr,
-		   u_int addr, u_int len, void *ptr);
-void release_cis_mem(struct pcmcia_socket *s);
-void destroy_cis_cache(struct pcmcia_socket *s);
-int verify_cis_cache(struct pcmcia_socket *s);
-int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function, cisdata_t code, void *parse);
-
-/* In rsrc_mgr */
-int pcmcia_validate_mem(struct pcmcia_socket *s);
-struct resource *pcmcia_find_io_region(unsigned long base, int num, unsigned long align,
-		   struct pcmcia_socket *s);
-int pcmcia_adjust_io_region(struct resource *res, unsigned long r_start,
-		     unsigned long r_end, struct pcmcia_socket *s);
-struct resource *pcmcia_find_mem_region(u_long base, u_long num, u_long align,
-		    int low, struct pcmcia_socket *s);
-void release_resource_db(struct pcmcia_socket *s);
-
-/* In socket_sysfs.c */
-extern int pccard_sysfs_add_socket(struct device *dev);
-extern void pccard_sysfs_remove_socket(struct device *dev);
-
-/* In cs.c */
-extern struct rw_semaphore pcmcia_socket_list_rwsem;
-extern struct list_head pcmcia_socket_list;
-int pcmcia_get_window(struct pcmcia_socket *s, window_handle_t *handle, int idx, win_req_t *req);
-int pccard_reset_card(struct pcmcia_socket *skt);
-
-
-struct pcmcia_callback{
-	struct module	*owner;
-	int		(*event) (struct pcmcia_socket *s, event_t event, int priority);
-	void		(*requery) (struct pcmcia_socket *s, int new_cis);
-	int		(*suspend) (struct pcmcia_socket *s);
-	int		(*resume) (struct pcmcia_socket *s);
-};
-
-int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c);
-
 #ifdef CONFIG_PCMCIA_DEBUG
 extern int cs_debug_level(int);
 
@@ -151,4 +105,76 @@
 #define cs_err(skt, fmt, arg...) \
 	dev_printk(KERN_ERR, &skt->dev, "cs: " fmt, ## arg)
 
+
+/*
+ * Stuff internal to module "pcmcia_core":
+ */
+
+/* cistpl.c */
+int verify_cis_cache(struct pcmcia_socket *s);
+
+/* rsrc_mgr.c */
+void release_resource_db(struct pcmcia_socket *s);
+
+/* socket_sysfs.c */
+extern int pccard_sysfs_add_socket(struct device *dev);
+extern void pccard_sysfs_remove_socket(struct device *dev);
+
+/* cardbus.c */
+int cb_alloc(struct pcmcia_socket *s);
+void cb_free(struct pcmcia_socket *s);
+int read_cb_mem(struct pcmcia_socket *s, int space, u_int addr, u_int len,
+		void *ptr);
+
+
+
+/*
+ * Stuff exported by module "pcmcia_core" to module "pcmcia"
+ */
+
+struct pcmcia_callback{
+	struct module	*owner;
+	int		(*event) (struct pcmcia_socket *s,
+				  event_t event, int priority);
+	void		(*requery) (struct pcmcia_socket *s, int new_cis);
+	int		(*suspend) (struct pcmcia_socket *s);
+	int		(*resume) (struct pcmcia_socket *s);
+};
+
+/* cs.c */
+extern struct rw_semaphore pcmcia_socket_list_rwsem;
+extern struct list_head pcmcia_socket_list;
+int pcmcia_get_window(struct pcmcia_socket *s,
+		      window_handle_t *handle,
+		      int idx,
+		      win_req_t *req);
+int pccard_reset_card(struct pcmcia_socket *skt);
+int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c);
+
+/* cistpl.c */
+int pcmcia_read_cis_mem(struct pcmcia_socket *s, int attr,
+			u_int addr, u_int len, void *ptr);
+void pcmcia_write_cis_mem(struct pcmcia_socket *s, int attr,
+			  u_int addr, u_int len, void *ptr);
+void release_cis_mem(struct pcmcia_socket *s);
+void destroy_cis_cache(struct pcmcia_socket *s);
+int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function,
+		      cisdata_t code, void *parse);
+
+/* rsrc_mgr.c */
+int pcmcia_validate_mem(struct pcmcia_socket *s);
+struct resource *pcmcia_find_io_region(unsigned long base,
+				       int num,
+				       unsigned long align,
+				       struct pcmcia_socket *s);
+int pcmcia_adjust_io_region(struct resource *res,
+			    unsigned long r_start,
+			    unsigned long r_end,
+			    struct pcmcia_socket *s);
+struct resource *pcmcia_find_mem_region(u_long base,
+					u_long num,
+					u_long align,
+					int low,
+					struct pcmcia_socket *s);
+
 #endif /* _LINUX_CS_INTERNAL_H */
