|
@@ -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 @@ struct cis_cache_entry {
|
|
|
#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 @@ static inline void cs_socket_put(struct pcmcia_socket *skt)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/* 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 @@ extern int cs_debug_level(int);
|
|
|
#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 */
|