[PATCH] pcmcia: socket callbacks now use "struct pcmcia_socket"
Dominik Brodowski
linux at brodo.de
Sat May 17 23:16:03 BST 2003
Passing a "socket number" between the core and the socket drivers is
awful. Change it to "struct pcmcia_socket" (which will be filled with
more life later).
drivers/pcmcia/bulkmem.c | 6 +++---
drivers/pcmcia/cistpl.c | 4 ++--
drivers/pcmcia/cs.c | 30 ++++++++++++++----------------
drivers/pcmcia/cs_internal.h | 3 +--
drivers/pcmcia/i82092.c | 36 +++++++++++++++++++++++-------------
drivers/pcmcia/i82092aa.h | 20 ++++++++++----------
drivers/pcmcia/i82365.c | 34 +++++++++++++++++++++++-----------
drivers/pcmcia/pci_socket.c | 40 ++++++++++++++++++++--------------------
drivers/pcmcia/rsrc_mgr.c | 2 +-
drivers/pcmcia/tcic.c | 35 ++++++++++++++++++-----------------
include/pcmcia/ss.h | 22 ++++++++++++----------
11 files changed, 127 insertions(+), 105 deletions(-)
diff -ruN linux-original/drivers/pcmcia/bulkmem.c linux/drivers/pcmcia/bulkmem.c
--- linux-original/drivers/pcmcia/bulkmem.c 2003-05-17 20:57:56.000000000 +0200
+++ linux/drivers/pcmcia/bulkmem.c 2003-05-17 21:39:27.000000000 +0200
@@ -259,7 +259,7 @@
win->ctl.flags |= MAP_ATTRIB;
win->ctl.speed = req->AccessSpeed;
win->ctl.card_start = req->CardOffset;
- win->sock->ss_entry->set_mem_map(win->sock->sock, &win->ctl);
+ win->sock->sock->ops->set_mem_map(win->sock->sock, &win->ctl);
return CS_SUCCESS;
}
@@ -272,7 +272,7 @@
return CS_BAD_VPP;
s = SOCKET(handle);
s->socket.Vpp = req->Vpp1;
- if (s->ss_entry->set_socket(s->sock, &s->socket))
+ if (s->sock->ops->set_socket(s->sock, &s->socket))
return CS_BAD_VPP;
return CS_SUCCESS;
}
@@ -287,7 +287,7 @@
s->socket.csc_mask |= SS_READY;
else
s->socket.csc_mask &= ~SS_READY;
- if (s->ss_entry->set_socket(s->sock, &s->socket))
+ if (s->sock->ops->set_socket(s->sock, &s->socket))
return CS_GENERAL_FAILURE;
return CS_SUCCESS;
}
diff -ruN linux-original/drivers/pcmcia/cistpl.c linux/drivers/pcmcia/cistpl.c
--- linux-original/drivers/pcmcia/cistpl.c 2003-05-17 18:27:21.000000000 +0200
+++ linux/drivers/pcmcia/cistpl.c 2003-05-17 21:39:27.000000000 +0200
@@ -86,7 +86,7 @@
{
if (s->cis_mem.sys_start != 0) {
s->cis_mem.flags &= ~MAP_ACTIVE;
- s->ss_entry->set_mem_map(s->sock, &s->cis_mem);
+ s->sock->ops->set_mem_map(s->sock, &s->cis_mem);
if (!(s->cap.features & SS_CAP_STATIC_MAP))
release_mem_region(s->cis_mem.sys_start, s->cap.map_size);
iounmap(s->cis_virt);
@@ -119,7 +119,7 @@
}
mem->card_start = card_offset;
mem->flags = flags;
- s->ss_entry->set_mem_map(s->sock, mem);
+ s->sock->ops->set_mem_map(s->sock, mem);
if (s->cap.features & SS_CAP_STATIC_MAP) {
if (s->cis_virt)
iounmap(s->cis_virt);
diff -ruN linux-original/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c
--- linux-original/drivers/pcmcia/cs.c 2003-05-17 22:03:15.000000000 +0200
+++ linux/drivers/pcmcia/cs.c 2003-05-17 21:39:27.000000000 +0200
@@ -238,44 +238,44 @@
{
int error;
- if (handler && !try_module_get(s->ss_entry->owner))
+ if (handler && !try_module_get(s->sock->ops->owner))
return -ENODEV;
- error = s->ss_entry->register_callback(s->sock, handler, info);
+ error = s->sock->ops->register_callback(s->sock, handler, info);
if (!handler)
- module_put(s->ss_entry->owner);
+ module_put(s->sock->ops->owner);
return error;
}
static int get_socket_status(socket_info_t *s, int *val)
{
- return s->ss_entry->get_status(s->sock, val);
+ return s->sock->ops->get_status(s->sock, val);
}
static int set_socket(socket_info_t *s, socket_state_t *state)
{
- return s->ss_entry->set_socket(s->sock, state);
+ return s->sock->ops->set_socket(s->sock, state);
}
static int set_io_map(socket_info_t *s, struct pccard_io_map *io)
{
- return s->ss_entry->set_io_map(s->sock, io);
+ return s->sock->ops->set_io_map(s->sock, io);
}
static int set_mem_map(socket_info_t *s, struct pccard_mem_map *mem)
{
- return s->ss_entry->set_mem_map(s->sock, mem);
+ return s->sock->ops->set_mem_map(s->sock, mem);
}
static int suspend_socket(socket_info_t *s)
{
s->socket = dead_socket;
- return s->ss_entry->suspend(s->sock);
+ return s->sock->ops->suspend(s->sock);
}
static int init_socket(socket_info_t *s)
{
s->socket = dead_socket;
- return s->ss_entry->init(s->sock);
+ return s->sock->ops->init(s->sock);
}
/*====================================================================*/
@@ -385,8 +385,7 @@
int ret;
s = (socket_info_t *) socket->s_info;
/* socket initialization */
- s->ss_entry = socket->ops;
- s->sock = socket->socket_no;
+ s->sock = socket;
/* base address = 0, map = 0 */
s->cis_mem.flags = 0;
@@ -396,7 +395,7 @@
spin_lock_init(&s->lock);
init_socket(s);
- s->ss_entry->inquire_socket(s->sock, &s->cap);
+ socket->ops->inquire_socket(socket, &s->cap);
init_completion(&s->thread_done);
init_waitqueue_head(&s->thread_wait);
@@ -414,10 +413,10 @@
#ifdef CONFIG_PROC_FS
if (proc_pccard) {
char name[3];
- sprintf(name, "%02d", s->sock);
+ sprintf(name, "%02d", socket->socket_no);
s->proc = proc_mkdir(name, proc_pccard);
if (s->proc)
- s->ss_entry->proc_setup(s->sock, s->proc);
+ socket->ops->proc_setup(socket, s->proc);
#ifdef PCMCIA_DEBUG
if (s->proc)
create_proc_read_entry("clients", 0, s->proc,
@@ -440,7 +439,7 @@
#ifdef CONFIG_PROC_FS
if (proc_pccard) {
char name[3];
- sprintf(name, "%02d", s->sock);
+ sprintf(name, "%02d", socket->socket_no);
#ifdef PCMCIA_DEBUG
remove_proc_entry("clients", s->proc);
#endif
@@ -459,7 +458,6 @@
s->clients = s->clients->next;
kfree(client);
}
- s->ss_entry = NULL;
}
diff -ruN linux-original/drivers/pcmcia/cs_internal.h linux/drivers/pcmcia/cs_internal.h
--- linux-original/drivers/pcmcia/cs_internal.h 2003-05-17 20:57:56.000000000 +0200
+++ linux/drivers/pcmcia/cs_internal.h 2003-05-17 21:39:27.000000000 +0200
@@ -124,8 +124,7 @@
typedef struct socket_info_t {
spinlock_t lock;
- struct pccard_operations * ss_entry;
- u_int sock;
+ struct pcmcia_socket * sock;
socket_state_t socket;
socket_cap_t cap;
u_int state;
diff -ruN linux-original/drivers/pcmcia/i82092.c linux/drivers/pcmcia/i82092.c
--- linux-original/drivers/pcmcia/i82092.c 2003-05-17 22:03:15.000000000 +0200
+++ linux/drivers/pcmcia/i82092.c 2003-05-17 21:49:24.000000000 +0200
@@ -80,6 +80,7 @@
/* The card can do upto 4 sockets, allocate a structure for each of them */
struct socket_info {
+ int number;
int card_state; /* 0 = no socket,
1 = empty socket,
2 = card but not initialized,
@@ -144,6 +145,8 @@
sockets[i].cap.map_size = 0x1000;
sockets[i].cap.irq_mask = 0;
sockets[i].cap.pci_irq = dev->irq;
+
+ sockets[i].number = i;
if (card_present(i)) {
sockets[i].card_state = 3;
@@ -443,7 +446,7 @@
-static int i82092aa_init(unsigned int s)
+static int i82092aa_init(struct pcmcia_socket *sock)
{
int i;
pccard_io_map io = { 0, 0, 0, 0, 1 };
@@ -452,21 +455,21 @@
enter("i82092aa_init");
mem.sys_stop = 0x0fff;
- i82092aa_set_socket(s, &dead_socket);
+ i82092aa_set_socket(sock, &dead_socket);
for (i = 0; i < 2; i++) {
io.map = i;
- i82092aa_set_io_map(s, &io);
+ i82092aa_set_io_map(sock, &io);
}
for (i = 0; i < 5; i++) {
mem.map = i;
- i82092aa_set_mem_map(s, &mem);
+ i82092aa_set_mem_map(sock, &mem);
}
leave("i82092aa_init");
return 0;
}
-static int i82092aa_suspend(unsigned int sock)
+static int i82092aa_suspend(struct pcmcia_socket *sock)
{
int retval;
enter("i82092aa_suspend");
@@ -475,8 +478,9 @@
return retval;
}
-static int i82092aa_register_callback(unsigned int sock, void (*handler)(void *, unsigned int), void * info)
+static int i82092aa_register_callback(struct pcmcia_socket *socket, void (*handler)(void *, unsigned int), void * info)
{
+ unsigned int sock = container_of(socket, struct socket_info, socket)->number;
enter("i82092aa_register_callback");
sockets[sock].handler = handler;
sockets[sock].info = info;
@@ -484,8 +488,9 @@
return 0;
} /* i82092aa_register_callback */
-static int i82092aa_inquire_socket(unsigned int sock, socket_cap_t *cap)
+static int i82092aa_inquire_socket(struct pcmcia_socket *socket, socket_cap_t *cap)
{
+ unsigned int sock = container_of(socket, struct socket_info, socket)->number;
enter("i82092aa_inquire_socket");
*cap = sockets[sock].cap;
leave("i82092aa_inquire_socket");
@@ -493,8 +498,9 @@
} /* i82092aa_inquire_socket */
-static int i82092aa_get_status(unsigned int sock, u_int *value)
+static int i82092aa_get_status(struct pcmcia_socket *socket, u_int *value)
{
+ unsigned int sock = container_of(socket, struct socket_info, socket)->number;
unsigned int status;
enter("i82092aa_get_status");
@@ -535,8 +541,9 @@
}
-static int i82092aa_get_socket(unsigned int sock, socket_state_t *state)
+static int i82092aa_get_socket(struct pcmcia_socket *socket, socket_state_t *state)
{
+ unsigned int sock = container_of(socket, struct socket_info, socket)->number;
unsigned char reg,vcc,vpp;
enter("i82092aa_get_socket");
@@ -606,8 +613,9 @@
return 0;
}
-static int i82092aa_set_socket(unsigned int sock, socket_state_t *state)
+static int i82092aa_set_socket(struct pcmcia_socket *socket, socket_state_t *state)
{
+ unsigned int sock = container_of(socket, struct socket_info, socket)->number;
unsigned char reg;
enter("i82092aa_set_socket");
@@ -702,8 +710,9 @@
return 0;
}
-static int i82092aa_set_io_map(unsigned sock, struct pccard_io_map *io)
+static int i82092aa_set_io_map(struct pcmcia_socket *socket, struct pccard_io_map *io)
{
+ unsigned int sock = container_of(socket, struct socket_info, socket)->number;
unsigned char map, ioctl;
enter("i82092aa_set_io_map");
@@ -745,8 +754,9 @@
return 0;
}
-static int i82092aa_set_mem_map(unsigned sock, struct pccard_mem_map *mem)
+static int i82092aa_set_mem_map(struct pcmcia_socket *socket, struct pccard_mem_map *mem)
{
+ unsigned int sock = container_of(socket, struct socket_info, socket)->number;
unsigned short base, i;
unsigned char map;
@@ -822,7 +832,7 @@
return 0;
}
-static void i82092aa_proc_setup(unsigned int sock, struct proc_dir_entry *base)
+static void i82092aa_proc_setup(struct pcmcia_socket *socket, struct proc_dir_entry *base)
{
}
diff -ruN linux-original/drivers/pcmcia/i82092aa.h linux/drivers/pcmcia/i82092aa.h
--- linux-original/drivers/pcmcia/i82092aa.h 2003-05-17 18:27:21.000000000 +0200
+++ linux/drivers/pcmcia/i82092aa.h 2003-05-17 21:49:24.000000000 +0200
@@ -28,16 +28,16 @@
-static int i82092aa_get_status(unsigned int sock, u_int *value);
-static int i82092aa_get_socket(unsigned int sock, socket_state_t *state);
-static int i82092aa_set_socket(unsigned int sock, socket_state_t *state);
-static int i82092aa_set_io_map(unsigned int sock, struct pccard_io_map *io);
-static int i82092aa_set_mem_map(unsigned int sock, struct pccard_mem_map *mem);
-static int i82092aa_init(unsigned int s);
-static int i82092aa_suspend(unsigned int sock);
-static int i82092aa_register_callback(unsigned int sock, void (*handler)(void *, unsigned int), void * info);
-static int i82092aa_inquire_socket(unsigned int sock, socket_cap_t *cap);
-static void i82092aa_proc_setup(unsigned int sock, struct proc_dir_entry *base);
+static int i82092aa_get_status(struct pcmcia_socket *socket, u_int *value);
+static int i82092aa_get_socket(struct pcmcia_socket *socket, socket_state_t *state);
+static int i82092aa_set_socket(struct pcmcia_socket *socket, socket_state_t *state);
+static int i82092aa_set_io_map(struct pcmcia_socket *socket, struct pccard_io_map *io);
+static int i82092aa_set_mem_map(struct pcmcia_socket *socket, struct pccard_mem_map *mem);
+static int i82092aa_init(struct pcmcia_socket *socket);
+static int i82092aa_suspend(struct pcmcia_socket *socket);
+static int i82092aa_register_callback(struct pcmcia_socket *socket, void (*handler)(void *, unsigned int), void * info);
+static int i82092aa_inquire_socket(struct pcmcia_socket *socket, socket_cap_t *cap);
+static void i82092aa_proc_setup(struct pcmcia_socket *socket, struct proc_dir_entry *base);
#endif
diff -ruN linux-original/drivers/pcmcia/i82365.c linux/drivers/pcmcia/i82365.c
--- linux-original/drivers/pcmcia/i82365.c 2003-05-17 22:03:15.000000000 +0200
+++ linux/drivers/pcmcia/i82365.c 2003-05-17 21:58:55.000000000 +0200
@@ -167,6 +167,7 @@
typedef struct socket_info_t {
u_short type, flags;
struct pcmcia_socket socket;
+ unsigned int number;
socket_cap_t cap;
ioaddr_t ioaddr;
u_short psock;
@@ -1014,8 +1015,9 @@
/*====================================================================*/
-static int pcic_register_callback(unsigned int sock, void (*handler)(void *, unsigned int), void * info)
+static int pcic_register_callback(struct pcmcia_socket *s, void (*handler)(void *, unsigned int), void * info)
{
+ unsigned int sock = container_of(s, struct socket_info_t, socket)->number;
socket[sock].handler = handler;
socket[sock].info = info;
return 0;
@@ -1023,8 +1025,9 @@
/*====================================================================*/
-static int pcic_inquire_socket(unsigned int sock, socket_cap_t *cap)
+static int pcic_inquire_socket(struct pcmcia_socket *s, socket_cap_t *cap)
{
+ unsigned int sock = container_of(s, struct socket_info_t, socket)->number;
*cap = socket[sock].cap;
return 0;
} /* pcic_inquire_socket */
@@ -1371,9 +1374,9 @@
return (p - buf);
}
-static void pcic_proc_setup(unsigned int sock, struct proc_dir_entry *base)
+static void pcic_proc_setup(struct pcmcia_socket *sock, struct proc_dir_entry *base)
{
- socket_info_t *s = &socket[sock];
+ socket_info_t *s = container_of(sock, struct socket_info_t, socket);
if (s->flags & IS_ALIVE)
return;
@@ -1421,8 +1424,10 @@
#endif
-static int pcic_get_status(unsigned int sock, u_int *value)
+static int pcic_get_status(struct pcmcia_socket *s, u_int *value)
{
+ unsigned int sock = container_of(s, struct socket_info_t, socket)->number;
+
if (socket[sock].flags & IS_ALIVE) {
*value = 0;
return -EINVAL;
@@ -1431,39 +1436,45 @@
LOCKED(i365_get_status(sock, value));
}
-static int pcic_get_socket(unsigned int sock, socket_state_t *state)
+static int pcic_get_socket(struct pcmcia_socket *s, socket_state_t *state)
{
+ unsigned int sock = container_of(s, struct socket_info_t, socket)->number;
+
if (socket[sock].flags & IS_ALIVE)
return -EINVAL;
LOCKED(i365_get_socket(sock, state));
}
-static int pcic_set_socket(unsigned int sock, socket_state_t *state)
+static int pcic_set_socket(struct pcmcia_socket *s, socket_state_t *state)
{
+ unsigned int sock = container_of(s, struct socket_info_t, socket)->number;
+
if (socket[sock].flags & IS_ALIVE)
return -EINVAL;
LOCKED(i365_set_socket(sock, state));
}
-static int pcic_set_io_map(unsigned int sock, struct pccard_io_map *io)
+static int pcic_set_io_map(struct pcmcia_socket *s, struct pccard_io_map *io)
{
+ unsigned int sock = container_of(s, struct socket_info_t, socket)->number;
if (socket[sock].flags & IS_ALIVE)
return -EINVAL;
LOCKED(i365_set_io_map(sock, io));
}
-static int pcic_set_mem_map(unsigned int sock, struct pccard_mem_map *mem)
+static int pcic_set_mem_map(struct pcmcia_socket *s, struct pccard_mem_map *mem)
{
+ unsigned int sock = container_of(s, struct socket_info_t, socket)->number;
if (socket[sock].flags & IS_ALIVE)
return -EINVAL;
LOCKED(i365_set_mem_map(sock, mem));
}
-static int pcic_init(unsigned int s)
+static int pcic_init(struct pcmcia_socket *s)
{
int i;
pccard_io_map io = { 0, 0, 0, 0, 1 };
@@ -1482,7 +1493,7 @@
return 0;
}
-static int pcic_suspend(unsigned int sock)
+static int pcic_suspend(struct pcmcia_socket *sock)
{
return pcic_set_socket(sock, &dead_socket);
}
@@ -1558,6 +1569,7 @@
for (i = 0; i < sockets; i++) {
socket[i].socket.dev.dev = &i82365_device.dev;
socket[i].socket.ops = &pcic_operations;
+ socket[i].number = i;
ret = pcmcia_register_socket(&socket[i].socket);
if (ret && i--) {
for (; i>= 0; i--)
diff -ruN linux-original/drivers/pcmcia/pci_socket.c linux/drivers/pcmcia/pci_socket.c
--- linux-original/drivers/pcmcia/pci_socket.c 2003-05-17 22:03:15.000000000 +0200
+++ linux/drivers/pcmcia/pci_socket.c 2003-05-17 21:43:27.000000000 +0200
@@ -38,44 +38,44 @@
#define MAX_SOCKETS (8)
static pci_socket_t pci_socket_array[MAX_SOCKETS];
-static int pci_init_socket(unsigned int sock)
+static int pci_init_socket(struct pcmcia_socket *sock)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->init)
return socket->op->init(socket);
return -EINVAL;
}
-static int pci_suspend_socket(unsigned int sock)
+static int pci_suspend_socket(struct pcmcia_socket *sock)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->suspend)
return socket->op->suspend(socket);
return -EINVAL;
}
-static int pci_register_callback(unsigned int sock, void (*handler)(void *, unsigned int), void * info)
+static int pci_register_callback(struct pcmcia_socket *sock, void (*handler)(void *, unsigned int), void * info)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
socket->handler = handler;
socket->info = info;
return 0;
}
-static int pci_inquire_socket(unsigned int sock, socket_cap_t *cap)
+static int pci_inquire_socket(struct pcmcia_socket *sock, socket_cap_t *cap)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
*cap = socket->cap;
return 0;
}
-static int pci_get_status(unsigned int sock, unsigned int *value)
+static int pci_get_status(struct pcmcia_socket *sock, unsigned int *value)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->get_status)
return socket->op->get_status(socket, value);
@@ -83,45 +83,45 @@
return -EINVAL;
}
-static int pci_get_socket(unsigned int sock, socket_state_t *state)
+static int pci_get_socket(struct pcmcia_socket *sock, socket_state_t *state)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->get_socket)
return socket->op->get_socket(socket, state);
return -EINVAL;
}
-static int pci_set_socket(unsigned int sock, socket_state_t *state)
+static int pci_set_socket(struct pcmcia_socket *sock, socket_state_t *state)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->set_socket)
return socket->op->set_socket(socket, state);
return -EINVAL;
}
-static int pci_set_io_map(unsigned int sock, struct pccard_io_map *io)
+static int pci_set_io_map(struct pcmcia_socket *sock, struct pccard_io_map *io)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->set_io_map)
return socket->op->set_io_map(socket, io);
return -EINVAL;
}
-static int pci_set_mem_map(unsigned int sock, struct pccard_mem_map *mem)
+static int pci_set_mem_map(struct pcmcia_socket *sock, struct pccard_mem_map *mem)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->set_mem_map)
return socket->op->set_mem_map(socket, mem);
return -EINVAL;
}
-static void pci_proc_setup(unsigned int sock, struct proc_dir_entry *base)
+static void pci_proc_setup(struct pcmcia_socket *sock, struct proc_dir_entry *base)
{
- pci_socket_t *socket = pci_socket_array + sock;
+ pci_socket_t *socket = container_of(sock, struct pci_socket, socket);
if (socket->op && socket->op->proc_setup)
socket->op->proc_setup(socket, base);
diff -ruN linux-original/drivers/pcmcia/rsrc_mgr.c linux/drivers/pcmcia/rsrc_mgr.c
--- linux-original/drivers/pcmcia/rsrc_mgr.c 2003-05-17 20:57:56.000000000 +0200
+++ linux/drivers/pcmcia/rsrc_mgr.c 2003-05-17 21:39:27.000000000 +0200
@@ -372,7 +372,7 @@
s->cis_virt = ioremap(base, s->cap.map_size);
s->cis_mem.card_start = 0;
s->cis_mem.flags = MAP_ACTIVE;
- s->ss_entry->set_mem_map(s->sock, &s->cis_mem);
+ s->sock->ops->set_mem_map(s->sock, &s->cis_mem);
/* Don't bother checking every word... */
a = 0; b = -1;
for (i = 0; i < s->cap.map_size; i += 44) {
diff -ruN linux-original/drivers/pcmcia/tcic.c linux/drivers/pcmcia/tcic.c
--- linux-original/drivers/pcmcia/tcic.c 2003-05-17 22:03:15.000000000 +0200
+++ linux/drivers/pcmcia/tcic.c 2003-05-17 22:02:15.000000000 +0200
@@ -642,18 +642,19 @@
/*====================================================================*/
-static int tcic_register_callback(unsigned int lsock, void (*handler)(void *, unsigned int), void * info)
+static int tcic_register_callback(struct pcmcia_socket *sock, void (*handler)(void *, unsigned int), void * info)
{
- socket_table[lsock].handler = handler;
- socket_table[lsock].info = info;
+ u_short psock = container_of(sock, socket_info_t, socket)->psock;
+ socket_table[psock].handler = handler;
+ socket_table[psock].info = info;
return 0;
} /* tcic_register_callback */
/*====================================================================*/
-static int tcic_get_status(unsigned int lsock, u_int *value)
+static int tcic_get_status(struct pcmcia_socket *sock, u_int *value)
{
- u_short psock = socket_table[lsock].psock;
+ u_short psock = container_of(sock, socket_info_t, socket)->psock;
u_char reg;
tcic_setl(TCIC_ADDR, (psock << TCIC_ADDR_SS_SHFT)
@@ -677,7 +678,7 @@
/*====================================================================*/
-static int tcic_inquire_socket(unsigned int lsock, socket_cap_t *cap)
+static int tcic_inquire_socket(struct pcmcia_socket *sock, socket_cap_t *cap)
{
*cap = tcic_cap;
return 0;
@@ -685,9 +686,9 @@
/*====================================================================*/
-static int tcic_get_socket(unsigned int lsock, socket_state_t *state)
+static int tcic_get_socket(struct pcmcia_socket *sock, socket_state_t *state)
{
- u_short psock = socket_table[lsock].psock;
+ u_short psock = container_of(sock, socket_info_t, socket)->psock;
u_char reg;
u_short scf1, scf2;
@@ -738,9 +739,9 @@
/*====================================================================*/
-static int tcic_set_socket(unsigned int lsock, socket_state_t *state)
+static int tcic_set_socket(struct pcmcia_socket *sock, socket_state_t *state)
{
- u_short psock = socket_table[lsock].psock;
+ u_short psock = container_of(sock, socket_info_t, socket)->psock;
u_char reg;
u_short scf1, scf2;
@@ -813,9 +814,9 @@
/*====================================================================*/
-static int tcic_set_io_map(unsigned int lsock, struct pccard_io_map *io)
+static int tcic_set_io_map(struct pcmcia_socket *sock, struct pccard_io_map *io)
{
- u_short psock = socket_table[lsock].psock;
+ u_short psock = container_of(sock, socket_info_t, socket)->psock;
u_int addr;
u_short base, len, ioctl;
@@ -850,9 +851,9 @@
/*====================================================================*/
-static int tcic_set_mem_map(unsigned int lsock, struct pccard_mem_map *mem)
+static int tcic_set_mem_map(struct pcmcia_socket *sock, struct pccard_mem_map *mem)
{
- u_short psock = socket_table[lsock].psock;
+ u_short psock = container_of(sock, socket_info_t, socket)->psock;
u_short addr, ctl;
u_long base, len, mmap;
@@ -894,11 +895,11 @@
/*====================================================================*/
-static void tcic_proc_setup(unsigned int sock, struct proc_dir_entry *base)
+static void tcic_proc_setup(struct pcmcia_socket *sock, struct proc_dir_entry *base)
{
}
-static int tcic_init(unsigned int s)
+static int tcic_init(struct pcmcia_socket *s)
{
int i;
pccard_io_map io = { 0, 0, 0, 0, 1 };
@@ -917,7 +918,7 @@
return 0;
}
-static int tcic_suspend(unsigned int sock)
+static int tcic_suspend(struct pcmcia_socket *sock)
{
return tcic_set_socket(sock, &dead_socket);
}
diff -ruN linux-original/include/pcmcia/ss.h linux/include/pcmcia/ss.h
--- linux-original/include/pcmcia/ss.h 2003-05-17 22:03:15.000000000 +0200
+++ linux/include/pcmcia/ss.h 2003-05-17 21:40:33.000000000 +0200
@@ -124,18 +124,20 @@
/*
* Socket operations.
*/
+struct pcmcia_socket;
+
struct pccard_operations {
struct module *owner;
- int (*init)(unsigned int sock);
- int (*suspend)(unsigned int sock);
- int (*register_callback)(unsigned int sock, void (*handler)(void *, unsigned int), void * info);
- int (*inquire_socket)(unsigned int sock, socket_cap_t *cap);
- int (*get_status)(unsigned int sock, u_int *value);
- int (*get_socket)(unsigned int sock, socket_state_t *state);
- int (*set_socket)(unsigned int sock, socket_state_t *state);
- int (*set_io_map)(unsigned int sock, struct pccard_io_map *io);
- int (*set_mem_map)(unsigned int sock, struct pccard_mem_map *mem);
- void (*proc_setup)(unsigned int sock, struct proc_dir_entry *base);
+ int (*init)(struct pcmcia_socket *sock);
+ int (*suspend)(struct pcmcia_socket *sock);
+ int (*register_callback)(struct pcmcia_socket *sock, void (*handler)(void *, unsigned int), void * info);
+ int (*inquire_socket)(struct pcmcia_socket *sock, socket_cap_t *cap);
+ int (*get_status)(struct pcmcia_socket *sock, u_int *value);
+ int (*get_socket)(struct pcmcia_socket *sock, socket_state_t *state);
+ int (*set_socket)(struct pcmcia_socket *sock, socket_state_t *state);
+ int (*set_io_map)(struct pcmcia_socket *sock, struct pccard_io_map *io);
+ int (*set_mem_map)(struct pcmcia_socket *sock, struct pccard_mem_map *mem);
+ void (*proc_setup)(struct pcmcia_socket *sock, struct proc_dir_entry *base);
};
/*
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.infradead.org/pipermail/linux-pcmcia/attachments/20030517/d1eabde5/attachment.bin
More information about the linux-pcmcia
mailing list