* Re: [CFT] 1/6 (2) kill get_*_map
2003-03-12 20:56 [CFT] PCMCIA patches Russell King
@ 2003-03-12 20:58 ` Russell King
2003-03-12 20:59 ` [CFT] 2/6 (3): Remove bus_* abstractions Russell King
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Russell King @ 2003-03-12 20:58 UTC (permalink / raw)
To: Linux Kernel List
pcmcia-2.diff
get_io_map and get_mem_map PCMCIA socket methods are never called
by the PCMCIA core code. They are therefore dead code, and can be
removed.
diff -ur orig/drivers/pcmcia/hd64465_ss.c linux/drivers/pcmcia/hd64465_ss.c
--- orig/drivers/pcmcia/hd64465_ss.c Tue Feb 25 10:57:49 2003
+++ linux/drivers/pcmcia/hd64465_ss.c Sat Mar 1 19:23:14 2003
@@ -599,21 +599,6 @@
/*============================================================*/
-static int hs_get_io_map(unsigned int sock, struct pccard_io_map *io)
-{
- hs_socket_t *sp = &hs_sockets[sock];
- int map = io->map;
-
- DPRINTK("hs_get_io_map(%d, %d)\n", sock, map);
- if (map >= MAX_IO_WIN)
- return -EINVAL;
-
- *io = sp->io_maps[map];
- return 0;
-}
-
-/*============================================================*/
-
static int hs_set_io_map(unsigned int sock, struct pccard_io_map *io)
{
hs_socket_t *sp = &hs_sockets[sock];
@@ -696,21 +681,6 @@
/*============================================================*/
-static int hs_get_mem_map(unsigned int sock, struct pccard_mem_map *mem)
-{
- hs_socket_t *sp = &hs_sockets[sock];
- int map = mem->map;
-
- DPRINTK("hs_get_mem_map(%d, %d)\n", sock, map);
- if (map >= MAX_WIN)
- return -EINVAL;
-
- *mem = sp->mem_maps[map];
- return 0;
-}
-
-/*============================================================*/
-
static int hs_set_mem_map(unsigned int sock, struct pccard_mem_map *mem)
{
hs_socket_t *sp = &hs_sockets[sock];
@@ -894,9 +864,7 @@
.get_status = hs_get_status,
.get_socket = hs_get_socket,
.set_socket = hs_set_socket,
- .get_io_map = hs_get_io_map,
.set_io_map = hs_set_io_map,
- .get_mem_map = hs_get_mem_map,
.set_mem_map = hs_set_mem_map,
.proc_setup = hs_proc_setup,
};
diff -ur orig/drivers/pcmcia/i82092.c linux/drivers/pcmcia/i82092.c
--- orig/drivers/pcmcia/i82092.c Tue Feb 25 10:57:49 2003
+++ linux/drivers/pcmcia/i82092.c Sat Mar 1 19:23:15 2003
@@ -63,9 +63,7 @@
.get_status = i82092aa_get_status,
.get_socket = i82092aa_get_socket,
.set_socket = i82092aa_set_socket,
- .get_io_map = i82092aa_get_io_map,
.set_io_map = i82092aa_set_io_map,
- .get_mem_map = i82092aa_get_mem_map,
.set_mem_map = i82092aa_set_mem_map,
.proc_setup = i82092aa_proc_setup,
};
@@ -688,34 +686,6 @@
return 0;
}
-static int i82092aa_get_io_map(unsigned int sock, struct pccard_io_map *io)
-{
- unsigned char map, ioctl, addr;
-
- enter("i82092aa_get_io_map");
- map = io->map;
- if (map > 1) {
- leave("i82092aa_get_io_map with -EINVAL");
- return -EINVAL;
- }
-
- /* FIXME: How does this fit in with the PCI resource (re)allocation */
- io->start = indirect_read16(sock, I365_IO(map)+I365_W_START);
- io->stop = indirect_read16(sock, I365_IO(map)+I365_W_START);
-
- ioctl = indirect_read(sock,I365_IOCTL); /* IOCREG: I/O Control Register */
- addr = indirect_read(sock,I365_ADDRWIN); /* */
-
- io->speed = to_ns(ioctl & I365_IOCTL_WAIT(map)) ? 1 : 0; /* check this out later */
- io->flags = 0;
-
- if (addr & I365_IOCTL_16BIT(map))
- io->flags |= MAP_AUTOSZ;
-
- leave("i82092aa_get_io_map");
- return 0;
-}
-
static int i82092aa_set_io_map(unsigned sock, struct pccard_io_map *io)
{
unsigned char map, ioctl;
@@ -757,64 +727,6 @@
leave("i82092aa_set_io_map");
return 0;
-}
-
-static int i82092aa_get_mem_map(unsigned sock, struct pccard_mem_map *mem)
-{
- unsigned short base, i;
- unsigned char map, addr;
-
- enter("i82092aa_get_mem_map");
-
- mem->flags = 0;
- mem->speed = 0;
- map = mem->map;
- if (map > 4) {
- leave("i82092aa_get_mem_map: -EINVAL");
- return -EINVAL;
- }
-
- addr = indirect_read(sock, I365_ADDRWIN);
-
- if (addr & I365_ENA_MEM(map))
- mem->flags |= MAP_ACTIVE; /* yes this mapping is active */
-
- base = I365_MEM(map);
-
- /* Find the start address - this register also has mapping info */
-
- i = indirect_read16(sock,base+I365_W_START);
- if (i & I365_MEM_16BIT)
- mem->flags |= MAP_16BIT;
- if (i & I365_MEM_0WS)
- mem->flags |= MAP_0WS;
-
- mem->sys_start = ((unsigned long)(i & 0x0fff) << 12);
-
- /* Find the end address - this register also has speed info */
- i = indirect_read16(sock,base+I365_W_STOP);
- if (i & I365_MEM_WS0)
- mem->speed = 1;
- if (i & I365_MEM_WS1)
- mem->speed += 2;
- mem->speed = to_ns(mem->speed);
- mem->sys_stop = ( (unsigned long)(i & 0x0fff) << 12) + 0x0fff;
-
- /* Find the card start address, also some more MAP attributes */
-
- i = indirect_read16(sock, base+I365_W_OFF);
- if (i & I365_MEM_WRPROT)
- mem->flags |= MAP_WRPROT;
- if (i & I365_MEM_REG)
- mem->flags |= MAP_ATTRIB;
- mem->card_start = ( (unsigned long)(i & 0x3fff)<12) + mem->sys_start;
- mem->card_start &= 0x3ffffff;
-
- printk("Card %i is from %lx to %lx \n",sock,mem->sys_start,mem->sys_stop);
-
- leave("i82092aa_get_mem_map");
- return 0;
-
}
static int i82092aa_set_mem_map(unsigned sock, struct pccard_mem_map *mem)
diff -ur orig/drivers/pcmcia/i82092aa.h linux/drivers/pcmcia/i82092aa.h
--- orig/drivers/pcmcia/i82092aa.h Fri Nov 16 10:10:05 2001
+++ linux/drivers/pcmcia/i82092aa.h Sat Mar 1 19:23:15 2003
@@ -29,9 +29,7 @@
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_get_io_map(unsigned int sock, struct pccard_io_map *io);
static int i82092aa_set_io_map(unsigned int sock, struct pccard_io_map *io);
-static int i82092aa_get_mem_map(unsigned int sock, struct pccard_mem_map *mem);
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);
diff -ur orig/drivers/pcmcia/i82365.c linux/drivers/pcmcia/i82365.c
--- orig/drivers/pcmcia/i82365.c Tue Feb 25 10:57:49 2003
+++ linux/drivers/pcmcia/i82365.c Sat Mar 1 19:23:15 2003
@@ -1250,29 +1250,6 @@
/*====================================================================*/
-static int i365_get_io_map(u_short sock, struct pccard_io_map *io)
-{
- u_char map, ioctl, addr;
-
- map = io->map;
- if (map > 1) return -EINVAL;
- io->start = i365_get_pair(sock, I365_IO(map)+I365_W_START);
- io->stop = i365_get_pair(sock, I365_IO(map)+I365_W_STOP);
- ioctl = i365_get(sock, I365_IOCTL);
- addr = i365_get(sock, I365_ADDRWIN);
- io->speed = to_ns(ioctl & I365_IOCTL_WAIT(map)) ? 1 : 0;
- io->flags = (addr & I365_ENA_IO(map)) ? MAP_ACTIVE : 0;
- io->flags |= (ioctl & I365_IOCTL_0WS(map)) ? MAP_0WS : 0;
- io->flags |= (ioctl & I365_IOCTL_16BIT(map)) ? MAP_16BIT : 0;
- io->flags |= (ioctl & I365_IOCTL_IOCS16(map)) ? MAP_AUTOSZ : 0;
- DEBUG(1, "i82365: GetIOMap(%d, %d) = %#2.2x, %d ns, "
- "%#4.4x-%#4.4x\n", sock, map, io->flags, io->speed,
- io->start, io->stop);
- return 0;
-} /* i365_get_io_map */
-
-/*====================================================================*/
-
static int i365_set_io_map(u_short sock, struct pccard_io_map *io)
{
u_char map, ioctl;
@@ -1302,42 +1279,6 @@
/*====================================================================*/
-static int i365_get_mem_map(u_short sock, struct pccard_mem_map *mem)
-{
- u_short base, i;
- u_char map, addr;
-
- map = mem->map;
- if (map > 4) return -EINVAL;
- addr = i365_get(sock, I365_ADDRWIN);
- mem->flags = (addr & I365_ENA_MEM(map)) ? MAP_ACTIVE : 0;
- base = I365_MEM(map);
-
- i = i365_get_pair(sock, base+I365_W_START);
- mem->flags |= (i & I365_MEM_16BIT) ? MAP_16BIT : 0;
- mem->flags |= (i & I365_MEM_0WS) ? MAP_0WS : 0;
- mem->sys_start = ((u_long)(i & 0x0fff) << 12);
-
- i = i365_get_pair(sock, base+I365_W_STOP);
- mem->speed = (i & I365_MEM_WS0) ? 1 : 0;
- mem->speed += (i & I365_MEM_WS1) ? 2 : 0;
- mem->speed = to_ns(mem->speed);
- mem->sys_stop = ((u_long)(i & 0x0fff) << 12) + 0x0fff;
-
- i = i365_get_pair(sock, base+I365_W_OFF);
- mem->flags |= (i & I365_MEM_WRPROT) ? MAP_WRPROT : 0;
- mem->flags |= (i & I365_MEM_REG) ? MAP_ATTRIB : 0;
- mem->card_start = ((u_int)(i & 0x3fff) << 12) + mem->sys_start;
- mem->card_start &= 0x3ffffff;
-
- DEBUG(1, "i82365: GetMemMap(%d, %d) = %#2.2x, %d ns, %#5.5lx-%#5."
- "5lx, %#5.5x\n", sock, mem->map, mem->flags, mem->speed,
- mem->sys_start, mem->sys_stop, mem->card_start);
- return 0;
-} /* i365_get_mem_map */
-
-/*====================================================================*/
-
static int i365_set_mem_map(u_short sock, struct pccard_mem_map *mem)
{
u_short base, i;
@@ -1506,14 +1447,6 @@
LOCKED(i365_set_socket(sock, state));
}
-static int pcic_get_io_map(unsigned int sock, struct pccard_io_map *io)
-{
- if (socket[sock].flags & IS_ALIVE)
- return -EINVAL;
-
- LOCKED(i365_get_io_map(sock, io));
-}
-
static int pcic_set_io_map(unsigned int sock, struct pccard_io_map *io)
{
if (socket[sock].flags & IS_ALIVE)
@@ -1522,14 +1455,6 @@
LOCKED(i365_set_io_map(sock, io));
}
-static int pcic_get_mem_map(unsigned int sock, struct pccard_mem_map *mem)
-{
- if (socket[sock].flags & IS_ALIVE)
- return -EINVAL;
-
- LOCKED(i365_get_mem_map(sock, mem));
-}
-
static int pcic_set_mem_map(unsigned int sock, struct pccard_mem_map *mem)
{
if (socket[sock].flags & IS_ALIVE)
@@ -1571,9 +1496,7 @@
.get_status = pcic_get_status,
.get_socket = pcic_get_socket,
.set_socket = pcic_set_socket,
- .get_io_map = pcic_get_io_map,
.set_io_map = pcic_set_io_map,
- .get_mem_map = pcic_get_mem_map,
.set_mem_map = pcic_set_mem_map,
.proc_setup = pcic_proc_setup,
};
diff -ur orig/drivers/pcmcia/pci_socket.c linux/drivers/pcmcia/pci_socket.c
--- orig/drivers/pcmcia/pci_socket.c Tue Feb 25 10:57:49 2003
+++ linux/drivers/pcmcia/pci_socket.c Sat Mar 1 19:23:15 2003
@@ -105,15 +105,6 @@
return -EINVAL;
}
-static int pci_get_io_map(unsigned int sock, struct pccard_io_map *io)
-{
- pci_socket_t *socket = pci_socket_array + sock;
-
- if (socket->op && socket->op->get_io_map)
- return socket->op->get_io_map(socket, io);
- return -EINVAL;
-}
-
static int pci_set_io_map(unsigned int sock, struct pccard_io_map *io)
{
pci_socket_t *socket = pci_socket_array + sock;
@@ -123,15 +114,6 @@
return -EINVAL;
}
-static int pci_get_mem_map(unsigned int sock, struct pccard_mem_map *mem)
-{
- pci_socket_t *socket = pci_socket_array + sock;
-
- if (socket->op && socket->op->get_mem_map)
- return socket->op->get_mem_map(socket, mem);
- return -EINVAL;
-}
-
static int pci_set_mem_map(unsigned int sock, struct pccard_mem_map *mem)
{
pci_socket_t *socket = pci_socket_array + sock;
@@ -158,9 +140,7 @@
.get_status = pci_get_status,
.get_socket = pci_get_socket,
.set_socket = pci_set_socket,
- .get_io_map = pci_get_io_map,
.set_io_map = pci_set_io_map,
- .get_mem_map = pci_get_mem_map,
.set_mem_map = pci_set_mem_map,
.proc_setup = pci_proc_setup,
};
diff -ur orig/drivers/pcmcia/pci_socket.h linux/drivers/pcmcia/pci_socket.h
--- orig/drivers/pcmcia/pci_socket.h Tue Feb 25 10:57:49 2003
+++ linux/drivers/pcmcia/pci_socket.h Sat Mar 1 19:23:15 2003
@@ -37,9 +37,7 @@
int (*get_status)(struct pci_socket *, unsigned int *);
int (*get_socket)(struct pci_socket *, socket_state_t *);
int (*set_socket)(struct pci_socket *, socket_state_t *);
- int (*get_io_map)(struct pci_socket *, struct pccard_io_map *);
int (*set_io_map)(struct pci_socket *, struct pccard_io_map *);
- int (*get_mem_map)(struct pci_socket *, struct pccard_mem_map *);
int (*set_mem_map)(struct pci_socket *, struct pccard_mem_map *);
void (*proc_setup)(struct pci_socket *, struct proc_dir_entry *base);
};
diff -ur orig/drivers/pcmcia/ricoh.h linux/drivers/pcmcia/ricoh.h
--- orig/drivers/pcmcia/ricoh.h Wed Nov 13 16:53:30 2002
+++ linux/drivers/pcmcia/ricoh.h Sat Mar 1 19:23:15 2003
@@ -170,9 +170,7 @@
yenta_get_status,
yenta_get_socket,
yenta_set_socket,
- yenta_get_io_map,
yenta_set_io_map,
- yenta_get_mem_map,
yenta_set_mem_map,
yenta_proc_setup
};
diff -ur orig/drivers/pcmcia/sa1100_generic.c linux/drivers/pcmcia/sa1100_generic.c
--- orig/drivers/pcmcia/sa1100_generic.c Tue Feb 25 10:57:49 2003
+++ linux/drivers/pcmcia/sa1100_generic.c Sat Mar 1 20:18:02 2003
@@ -567,31 +567,6 @@
} /* sa1100_pcmcia_set_socket() */
-/* sa1100_pcmcia_get_io_map()
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^
- * Implements the get_io_map() operation for the in-kernel PCMCIA
- * service (formerly SS_GetIOMap in Card Services). Just returns an
- * I/O map descriptor which was assigned earlier by a set_io_map().
- *
- * Returns: 0 on success, -1 if the map index was out of range
- */
-static int
-sa1100_pcmcia_get_io_map(unsigned int sock, struct pccard_io_map *map)
-{
- struct sa1100_pcmcia_socket *skt = PCMCIA_SOCKET(sock);
- int ret = -1;
-
- DEBUG(2, "%s() for sock %u\n", __FUNCTION__, sock);
-
- if (map->map < MAX_IO_WIN) {
- *map = skt->io_map[map->map];
- ret = 0;
- }
-
- return ret;
-}
-
-
/* sa1100_pcmcia_set_io_map()
* ^^^^^^^^^^^^^^^^^^^^^^^^^^
* Implements the set_io_map() operation for the in-kernel PCMCIA
@@ -646,32 +621,6 @@
} /* sa1100_pcmcia_set_io_map() */
-/* sa1100_pcmcia_get_mem_map()
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- * Implements the get_mem_map() operation for the in-kernel PCMCIA
- * service (formerly SS_GetMemMap in Card Services). Just returns a
- * memory map descriptor which was assigned earlier by a
- * set_mem_map() request.
- *
- * Returns: 0 on success, -1 if the map index was out of range
- */
-static int
-sa1100_pcmcia_get_mem_map(unsigned int sock, struct pccard_mem_map *map)
-{
- struct sa1100_pcmcia_socket *skt = PCMCIA_SOCKET(sock);
- int ret = -1;
-
- DEBUG(2, "%s() for sock %u\n", __FUNCTION__, sock);
-
- if (map->map < MAX_WIN) {
- *map = skt->pc_mem_map[map->map];
- ret = 0;
- }
-
- return ret;
-}
-
-
/* sa1100_pcmcia_set_mem_map()
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Implements the set_mem_map() operation for the in-kernel PCMCIA
@@ -841,9 +790,7 @@
.get_status = sa1100_pcmcia_get_status,
.get_socket = sa1100_pcmcia_get_socket,
.set_socket = sa1100_pcmcia_set_socket,
- .get_io_map = sa1100_pcmcia_get_io_map,
.set_io_map = sa1100_pcmcia_set_io_map,
- .get_mem_map = sa1100_pcmcia_get_mem_map,
.set_mem_map = sa1100_pcmcia_set_mem_map,
#ifdef CONFIG_PROC_FS
.proc_setup = sa1100_pcmcia_proc_setup
diff -ur orig/drivers/pcmcia/tcic.c linux/drivers/pcmcia/tcic.c
--- orig/drivers/pcmcia/tcic.c Tue Feb 25 10:57:49 2003
+++ linux/drivers/pcmcia/tcic.c Sat Mar 1 19:23:15 2003
@@ -805,44 +805,6 @@
/*====================================================================*/
-static int tcic_get_io_map(unsigned int lsock, struct pccard_io_map *io)
-{
- u_short psock = socket_table[lsock].psock;
- u_short base, ioctl;
- u_int addr;
-
- if (io->map > 1) return -EINVAL;
- tcic_setw(TCIC_ADDR+2, TCIC_ADR2_INDREG | (psock << TCIC_SS_SHFT));
- addr = TCIC_IWIN(psock, io->map);
- tcic_setw(TCIC_ADDR, addr + TCIC_IBASE_X);
- base = tcic_getw(TCIC_DATA);
- tcic_setw(TCIC_ADDR, addr + TCIC_ICTL_X);
- ioctl = tcic_getw(TCIC_DATA);
-
- if (ioctl & TCIC_ICTL_TINY)
- io->start = io->stop = base;
- else {
- io->start = base & (base-1);
- io->stop = io->start + (base ^ (base-1));
- }
- io->speed = to_ns(ioctl & TCIC_ICTL_WSCNT_MASK);
- io->flags = (ioctl & TCIC_ICTL_ENA) ? MAP_ACTIVE : 0;
- switch (ioctl & TCIC_ICTL_BW_MASK) {
- case TCIC_ICTL_BW_DYN:
- io->flags |= MAP_AUTOSZ; break;
- case TCIC_ICTL_BW_16:
- io->flags |= MAP_16BIT; break;
- default:
- break;
- }
- DEBUG(1, "tcic: GetIOMap(%d, %d) = %#2.2x, %d ns, "
- "%#4.4x-%#4.4x\n", lsock, io->map, io->flags,
- io->speed, io->start, io->stop);
- return 0;
-} /* tcic_get_io_map */
-
-/*====================================================================*/
-
static int tcic_set_io_map(unsigned int lsock, struct pccard_io_map *io)
{
u_short psock = socket_table[lsock].psock;
@@ -880,51 +842,6 @@
/*====================================================================*/
-static int tcic_get_mem_map(unsigned int lsock, struct pccard_mem_map *mem)
-{
- u_short psock = socket_table[lsock].psock;
- u_short addr, ctl;
- u_long base, mmap;
-
- if (mem->map > 3) return -EINVAL;
- tcic_setw(TCIC_ADDR+2, TCIC_ADR2_INDREG | (psock << TCIC_SS_SHFT));
- addr = TCIC_MWIN(psock, mem->map);
-
- tcic_setw(TCIC_ADDR, addr + TCIC_MBASE_X);
- base = tcic_getw(TCIC_DATA);
- if (base & TCIC_MBASE_4K_BIT) {
- mem->sys_start = base & TCIC_MBASE_HA_MASK;
- mem->sys_stop = mem->sys_start;
- } else {
- base &= TCIC_MBASE_HA_MASK;
- mem->sys_start = (base & (base-1));
- mem->sys_stop = mem->sys_start + (base ^ (base-1));
- }
- mem->sys_start = mem->sys_start << TCIC_MBASE_HA_SHFT;
- mem->sys_stop = (mem->sys_stop << TCIC_MBASE_HA_SHFT) + 0x0fff;
-
- tcic_setw(TCIC_ADDR, addr + TCIC_MMAP_X);
- mmap = tcic_getw(TCIC_DATA);
- mem->flags = (mmap & TCIC_MMAP_REG) ? MAP_ATTRIB : 0;
- mmap &= TCIC_MMAP_CA_MASK;
- mem->card_start = mem->sys_start + (mmap << TCIC_MMAP_CA_SHFT);
- mem->card_start &= 0x3ffffff;
-
- tcic_setw(TCIC_ADDR, addr + TCIC_MCTL_X);
- ctl = tcic_getw(TCIC_DATA);
- mem->flags |= (ctl & TCIC_MCTL_ENA) ? MAP_ACTIVE : 0;
- mem->flags |= (ctl & TCIC_MCTL_B8) ? 0 : MAP_16BIT;
- mem->flags |= (ctl & TCIC_MCTL_WP) ? MAP_WRPROT : 0;
- mem->speed = to_ns(ctl & TCIC_MCTL_WSCNT_MASK);
-
- DEBUG(1, "tcic: GetMemMap(%d, %d) = %#2.2x, %d ns, "
- "%#5.5lx-%#5.5lx, %#5.5x\n", lsock, mem->map, mem->flags,
- mem->speed, mem->sys_start, mem->sys_stop, mem->card_start);
- return 0;
-} /* tcic_get_mem_map */
-
-/*====================================================================*/
-
static int tcic_set_mem_map(unsigned int lsock, struct pccard_mem_map *mem)
{
u_short psock = socket_table[lsock].psock;
@@ -1006,9 +923,7 @@
.get_status = tcic_get_status,
.get_socket = tcic_get_socket,
.set_socket = tcic_set_socket,
- .get_io_map = tcic_get_io_map,
.set_io_map = tcic_set_io_map,
- .get_mem_map = tcic_get_mem_map,
.set_mem_map = tcic_set_mem_map,
.proc_setup = tcic_proc_setup,
};
diff -ur orig/drivers/pcmcia/ti113x.h linux/drivers/pcmcia/ti113x.h
--- orig/drivers/pcmcia/ti113x.h Wed Nov 13 16:53:30 2002
+++ linux/drivers/pcmcia/ti113x.h Sat Mar 1 19:23:15 2003
@@ -185,9 +185,7 @@
yenta_get_status,
yenta_get_socket,
yenta_set_socket,
- yenta_get_io_map,
yenta_set_io_map,
- yenta_get_mem_map,
yenta_set_mem_map,
yenta_proc_setup
};
@@ -230,9 +228,7 @@
yenta_get_status,
yenta_get_socket,
yenta_set_socket,
- yenta_get_io_map,
yenta_set_io_map,
- yenta_get_mem_map,
yenta_set_mem_map,
yenta_proc_setup
};
@@ -272,9 +268,7 @@
yenta_get_status,
yenta_get_socket,
yenta_set_socket,
- yenta_get_io_map,
yenta_set_io_map,
- yenta_get_mem_map,
yenta_set_mem_map,
yenta_proc_setup
};
diff -ur orig/drivers/pcmcia/yenta.c linux/drivers/pcmcia/yenta.c
--- orig/drivers/pcmcia/yenta.c Fri Feb 21 19:48:51 2003
+++ linux/drivers/pcmcia/yenta.c Sat Mar 1 19:23:15 2003
@@ -27,7 +27,7 @@
#include "i82365.h"
#if 0
-#define DEBUG(x,args...) printk(__FUNCTION__ ": " x,##args)
+#define DEBUG(x,args...) printk("%s: " x, __FUNCTION__, ##args)
#else
#define DEBUG(x,args...)
#endif
@@ -300,29 +300,6 @@
return 0;
}
-static int yenta_get_io_map(pci_socket_t *socket, struct pccard_io_map *io)
-{
- int map;
- unsigned char ioctl, addr;
-
- map = io->map;
- if (map > 1)
- return -EINVAL;
-
- io->start = exca_readw(socket, I365_IO(map)+I365_W_START);
- io->stop = exca_readw(socket, I365_IO(map)+I365_W_STOP);
-
- ioctl = exca_readb(socket, I365_IOCTL);
- addr = exca_readb(socket, I365_ADDRWIN);
- io->speed = to_ns(ioctl & I365_IOCTL_WAIT(map)) ? 1 : 0;
- io->flags = (addr & I365_ENA_IO(map)) ? MAP_ACTIVE : 0;
- io->flags |= (ioctl & I365_IOCTL_0WS(map)) ? MAP_0WS : 0;
- io->flags |= (ioctl & I365_IOCTL_16BIT(map)) ? MAP_16BIT : 0;
- io->flags |= (ioctl & I365_IOCTL_IOCS16(map)) ? MAP_AUTOSZ : 0;
-
- return 0;
-}
-
static int yenta_set_io_map(pci_socket_t *socket, struct pccard_io_map *io)
{
int map;
@@ -356,41 +333,6 @@
return 0;
}
-static int yenta_get_mem_map(pci_socket_t *socket, struct pccard_mem_map *mem)
-{
- int map;
- unsigned char addr;
- unsigned int start, stop, page, offset;
-
- map = mem->map;
- if (map > 4)
- return -EINVAL;
-
- addr = exca_readb(socket, I365_ADDRWIN);
- mem->flags = (addr & I365_ENA_MEM(map)) ? MAP_ACTIVE : 0;
-
- start = exca_readw(socket, I365_MEM(map) + I365_W_START);
- mem->flags |= (start & I365_MEM_16BIT) ? MAP_16BIT : 0;
- mem->flags |= (start & I365_MEM_0WS) ? MAP_0WS : 0;
- start = (start & 0x0fff) << 12;
-
- stop = exca_readw(socket, I365_MEM(map) + I365_W_STOP);
- mem->speed = to_ns(stop >> 14);
- stop = ((stop & 0x0fff) << 12) + 0x0fff;
-
- offset = exca_readw(socket, I365_MEM(map) + I365_W_OFF);
- mem->flags |= (offset & I365_MEM_WRPROT) ? MAP_WRPROT : 0;
- mem->flags |= (offset & I365_MEM_REG) ? MAP_ATTRIB : 0;
- offset = ((offset & 0x3fff) << 12) + start;
- mem->card_start = offset & 0x3ffffff;
-
- page = exca_readb(socket, CB_MEM_PAGE(map)) << 24;
- mem->sys_start = start + page;
- mem->sys_stop = start + page;
-
- return 0;
-}
-
static int yenta_set_mem_map(pci_socket_t *socket, struct pccard_mem_map *mem)
{
int map;
@@ -935,9 +877,7 @@
yenta_get_status,
yenta_get_socket,
yenta_set_socket,
- yenta_get_io_map,
yenta_set_io_map,
- yenta_get_mem_map,
yenta_set_mem_map,
yenta_proc_setup
};
diff -ur orig/include/pcmcia/ss.h linux/include/pcmcia/ss.h
--- orig/include/pcmcia/ss.h Tue Feb 25 10:57:59 2003
+++ linux/include/pcmcia/ss.h Sat Mar 1 19:21:55 2003
@@ -134,9 +134,7 @@
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 (*get_io_map)(unsigned int sock, struct pccard_io_map *io);
int (*set_io_map)(unsigned int sock, struct pccard_io_map *io);
- int (*get_mem_map)(unsigned int sock, struct pccard_mem_map *mem);
int (*set_mem_map)(unsigned int sock, struct pccard_mem_map *mem);
void (*proc_setup)(unsigned int sock, struct proc_dir_entry *base);
};
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [CFT] 2/6 (3): Remove bus_* abstractions
2003-03-12 20:56 [CFT] PCMCIA patches Russell King
2003-03-12 20:58 ` [CFT] 1/6 (2) kill get_*_map Russell King
@ 2003-03-12 20:59 ` Russell King
2003-03-12 21:00 ` [CFT] 3/6 (4): add SOCKET_CARDBUS_CONFIG flag Russell King
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Russell King @ 2003-03-12 20:59 UTC (permalink / raw)
To: Linux Kernel List
pcmcia-3.diff
Remove the bus_* abstractions; they are unused.
diff -ur orig/drivers/pcmcia/cistpl.c linux/drivers/pcmcia/cistpl.c
--- orig/drivers/pcmcia/cistpl.c Wed Feb 26 01:04:40 2003
+++ linux/drivers/pcmcia/cistpl.c Sat Mar 1 19:07:24 2003
@@ -49,7 +49,6 @@
#include <asm/byteorder.h>
#include <pcmcia/cs_types.h>
-#include <pcmcia/bus_ops.h>
#include <pcmcia/ss.h>
#include <pcmcia/cs.h>
#include <pcmcia/bulkmem.h>
@@ -103,9 +102,8 @@
s->ss_entry->set_mem_map(s->sock, mem);
if (s->cap.features & SS_CAP_STATIC_MAP) {
if (s->cis_virt)
- bus_iounmap(s->cap.bus, s->cis_virt);
- s->cis_virt = bus_ioremap(s->cap.bus, mem->sys_start,
- s->cap.map_size);
+ iounmap(s->cis_virt);
+ s->cis_virt = ioremap(mem->sys_start, s->cap.map_size);
}
}
@@ -130,13 +128,13 @@
mem->card_start = 0; mem->flags = MAP_ACTIVE;
set_cis_map(s, mem);
sys = s->cis_virt;
- bus_writeb(s->cap.bus, flags, sys+CISREG_ICTRL0);
- bus_writeb(s->cap.bus, addr & 0xff, sys+CISREG_IADDR0);
- bus_writeb(s->cap.bus, (addr>>8) & 0xff, sys+CISREG_IADDR1);
- bus_writeb(s->cap.bus, (addr>>16) & 0xff, sys+CISREG_IADDR2);
- bus_writeb(s->cap.bus, (addr>>24) & 0xff, sys+CISREG_IADDR3);
+ writeb(flags, sys+CISREG_ICTRL0);
+ writeb(addr & 0xff, sys+CISREG_IADDR0);
+ writeb((addr>>8) & 0xff, sys+CISREG_IADDR1);
+ writeb((addr>>16) & 0xff, sys+CISREG_IADDR2);
+ writeb((addr>>24) & 0xff, sys+CISREG_IADDR3);
for ( ; len > 0; len--, buf++)
- *buf = bus_readb(s->cap.bus, sys+CISREG_IDATA0);
+ *buf = readb(sys+CISREG_IDATA0);
} else {
u_int inc = 1;
if (attr) { mem->flags |= MAP_ATTRIB; inc++; addr *= 2; }
@@ -147,7 +145,7 @@
sys = s->cis_virt + (addr & (s->cap.map_size-1));
for ( ; len > 0; len--, buf++, sys += inc) {
if (sys == s->cis_virt+s->cap.map_size) break;
- *buf = bus_readb(s->cap.bus, sys);
+ *buf = readb(sys);
}
mem->card_start += s->cap.map_size;
addr = 0;
@@ -177,13 +175,13 @@
mem->card_start = 0; mem->flags = MAP_ACTIVE;
set_cis_map(s, mem);
sys = s->cis_virt;
- bus_writeb(s->cap.bus, flags, sys+CISREG_ICTRL0);
- bus_writeb(s->cap.bus, addr & 0xff, sys+CISREG_IADDR0);
- bus_writeb(s->cap.bus, (addr>>8) & 0xff, sys+CISREG_IADDR1);
- bus_writeb(s->cap.bus, (addr>>16) & 0xff, sys+CISREG_IADDR2);
- bus_writeb(s->cap.bus, (addr>>24) & 0xff, sys+CISREG_IADDR3);
+ writeb(flags, sys+CISREG_ICTRL0);
+ writeb(addr & 0xff, sys+CISREG_IADDR0);
+ writeb((addr>>8) & 0xff, sys+CISREG_IADDR1);
+ writeb((addr>>16) & 0xff, sys+CISREG_IADDR2);
+ writeb((addr>>24) & 0xff, sys+CISREG_IADDR3);
for ( ; len > 0; len--, buf++)
- bus_writeb(s->cap.bus, *buf, sys+CISREG_IDATA0);
+ writeb(*buf, sys+CISREG_IDATA0);
} else {
int inc = 1;
if (attr & IS_ATTR) { mem->flags |= MAP_ATTRIB; inc++; addr *= 2; }
@@ -193,7 +191,7 @@
sys = s->cis_virt + (addr & (s->cap.map_size-1));
for ( ; len > 0; len--, buf++, sys += inc) {
if (sys == s->cis_virt+s->cap.map_size) break;
- bus_writeb(s->cap.bus, *buf, sys);
+ writeb(*buf, sys);
}
mem->card_start += s->cap.map_size;
addr = 0;
@@ -218,18 +216,19 @@
int ret;
vs->cis_mem.sys_start = base;
vs->cis_mem.sys_stop = base+vs->cap.map_size-1;
- vs->cis_virt = bus_ioremap(vs->cap.bus, base, vs->cap.map_size);
+ vs->cis_virt = ioremap(base, vs->cap.map_size);
ret = pcmcia_validate_cis(vs->clients, &info1);
/* invalidate mapping and CIS cache */
- bus_iounmap(vs->cap.bus, vs->cis_virt); vs->cis_used = 0;
+ iounmap(vs->cis_virt);
+ vs->cis_used = 0;
if ((ret != 0) || (info1.Chains == 0))
return 0;
vs->cis_mem.sys_start = base+vs->cap.map_size;
vs->cis_mem.sys_stop = base+2*vs->cap.map_size-1;
- vs->cis_virt = bus_ioremap(vs->cap.bus, base+vs->cap.map_size,
- vs->cap.map_size);
+ vs->cis_virt = ioremap(base+vs->cap.map_size, vs->cap.map_size);
ret = pcmcia_validate_cis(vs->clients, &info2);
- bus_iounmap(vs->cap.bus, vs->cis_virt); vs->cis_used = 0;
+ iounmap(vs->cis_virt);
+ vs->cis_used = 0;
return ((ret == 0) && (info1.Chains == info2.Chains));
}
@@ -239,17 +238,17 @@
int i, a, b, d;
vs->cis_mem.sys_start = base;
vs->cis_mem.sys_stop = base+vs->cap.map_size-1;
- vs->cis_virt = bus_ioremap(vs->cap.bus, base, vs->cap.map_size);
+ vs->cis_virt = ioremap(base, vs->cap.map_size);
vs->cis_mem.card_start = 0;
vs->cis_mem.flags = MAP_ACTIVE;
vs->ss_entry->set_mem_map(vs->sock, &vs->cis_mem);
/* Don't bother checking every word... */
a = 0; b = -1;
for (i = 0; i < vs->cap.map_size; i += 44) {
- d = bus_readl(vs->cap.bus, vs->cis_virt+i);
+ d = readl(vs->cis_virt+i);
a += d; b &= d;
}
- bus_iounmap(vs->cap.bus, vs->cis_virt);
+ iounmap(vs->cis_virt);
return (b == -1) ? -1 : (a>>1);
}
@@ -274,8 +273,7 @@
return -1;
}
s->cis_mem.sys_stop = s->cis_mem.sys_start+s->cap.map_size-1;
- s->cis_virt = bus_ioremap(s->cap.bus, s->cis_mem.sys_start,
- s->cap.map_size);
+ s->cis_virt = ioremap(s->cis_mem.sys_start, s->cap.map_size);
}
return 0;
}
@@ -287,7 +285,7 @@
s->ss_entry->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);
- bus_iounmap(s->cap.bus, s->cis_virt);
+ iounmap(s->cis_virt);
s->cis_mem.sys_start = 0;
s->cis_virt = NULL;
}
diff -ur orig/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c
--- orig/drivers/pcmcia/cs.c Wed Feb 26 01:04:40 2003
+++ linux/drivers/pcmcia/cs.c Sat Mar 1 19:20:22 2003
@@ -59,7 +59,6 @@
#include <pcmcia/bulkmem.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/cisreg.h>
-#include <pcmcia/bus_ops.h>
#include "cs_internal.h"
#ifdef CONFIG_PCI
@@ -1469,7 +1468,6 @@
client->event_handler = req->event_handler;
client->event_callback_args = req->event_callback_args;
client->event_callback_args.client_handle = client;
- client->event_callback_args.bus = s->cap.bus;
if (s->state & SOCKET_CARDBUS)
client->state |= CLIENT_CARDBUS;
@@ -1618,7 +1616,7 @@
}
if (req->Attributes & IRQ_HANDLE_PRESENT) {
- bus_free_irq(s->cap.bus, req->AssignedIRQ, req->Instance);
+ free_irq(req->AssignedIRQ, req->Instance);
}
#ifdef CONFIG_ISA
@@ -1913,7 +1911,7 @@
if (ret != 0) return ret;
if (req->Attributes & IRQ_HANDLE_PRESENT) {
- if (bus_request_irq(s->cap.bus, irq, req->Handler,
+ if (request_irq(irq, req->Handler,
((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) ||
(s->functions > 1) ||
(irq == s->cap.pci_irq)) ? SA_SHIRQ : 0,
diff -ur orig/drivers/pcmcia/sa1100_generic.c linux/drivers/pcmcia/sa1100_generic.c
--- orig/drivers/pcmcia/sa1100_generic.c Thu Mar 2 10:00:13 2006
+++ linux/drivers/pcmcia/sa1100_generic.c Thu Mar 2 10:00:24 2006
@@ -52,7 +52,6 @@
#include <pcmcia/cs_types.h>
#include <pcmcia/cs.h>
#include <pcmcia/ss.h>
-#include <pcmcia/bus_ops.h>
#include <asm/hardware.h>
#include <asm/io.h>
diff -ur orig/drivers/pcmcia/yenta.c linux/drivers/pcmcia/yenta.c
--- orig/drivers/pcmcia/yenta.c Sun Mar 2 00:20:43 2003
+++ linux/drivers/pcmcia/yenta.c Sat Mar 1 19:23:15 2003
@@ -514,7 +514,6 @@
socket->cap.pci_irq = socket->cb_irq;
socket->cap.irq_mask = yenta_probe_irq(socket, isa_irq_mask);
socket->cap.cb_dev = socket->dev;
- socket->cap.bus = NULL;
printk("Yenta IRQ list %04x, PCI irq%d\n", socket->cap.irq_mask, socket->cb_irq);
}
diff -ur orig/include/pcmcia/bus_ops.h linux/include/pcmcia/bus_ops.h
--- orig/include/pcmcia/bus_ops.h Thu Feb 22 11:25:48 2001
+++ linux/include/pcmcia/bus_ops.h Sat Mar 1 15:46:05 2003
@@ -1,152 +1,2 @@
-/*
- * bus_ops.h 1.10 2000/06/12 21:55:41
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in which
- * case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_BUS_OPS_H
-#define _LINUX_BUS_OPS_H
-
-#include <linux/config.h>
-
-#ifdef CONFIG_VIRTUAL_BUS
-
-typedef struct bus_operations {
- void *priv;
- u32 (*b_in)(void *bus, u32 port, s32 sz);
- void (*b_ins)(void *bus, u32 port, void *buf,
- u32 count, s32 sz);
- void (*b_out)(void *bus, u32 val, u32 port, s32 sz);
- void (*b_outs)(void *bus, u32 port, void *buf,
- u32 count, s32 sz);
- void *(*b_ioremap)(void *bus, u_long ofs, u_long sz);
- void (*b_iounmap)(void *bus, void *addr);
- u32 (*b_read)(void *bus, void *addr, s32 sz);
- void (*b_write)(void *bus, u32 val, void *addr, s32 sz);
- void (*b_copy_from)(void *bus, void *d, void *s, u32 count);
- void (*b_copy_to)(void *bus, void *d, void *s, u32 count);
- int (*b_request_irq)(void *bus, u_int irq,
- void (*handler)(int, void *,
- struct pt_regs *),
- u_long flags, const char *device,
- void *dev_id);
- void (*b_free_irq)(void *bus, u_int irq, void *dev_id);
-} bus_operations;
-
-#define bus_inb(b,p) (b)->b_in((b),(p),0)
-#define bus_inw(b,p) (b)->b_in((b),(p),1)
-#define bus_inl(b,p) (b)->b_in((b),(p),2)
-#define bus_inw_ns(b,p) (b)->b_in((b),(p),-1)
-#define bus_inl_ns(b,p) (b)->b_in((b),(p),-2)
-
-#define bus_insb(b,p,a,c) (b)->b_ins((b),(p),(a),(c),0)
-#define bus_insw(b,p,a,c) (b)->b_ins((b),(p),(a),(c),1)
-#define bus_insl(b,p,a,c) (b)->b_ins((b),(p),(a),(c),2)
-#define bus_insw_ns(b,p,a,c) (b)->b_ins((b),(p),(a),(c),-1)
-#define bus_insl_ns(b,p,a,c) (b)->b_ins((b),(p),(a),(c),-2)
-
-#define bus_outb(b,v,p) (b)->b_out((b),(v),(p),0)
-#define bus_outw(b,v,p) (b)->b_out((b),(v),(p),1)
-#define bus_outl(b,v,p) (b)->b_out((b),(v),(p),2)
-#define bus_outw_ns(b,v,p) (b)->b_out((b),(v),(p),-1)
-#define bus_outl_ns(b,v,p) (b)->b_out((b),(v),(p),-2)
-
-#define bus_outsb(b,p,a,c) (b)->b_outs((b),(p),(a),(c),0)
-#define bus_outsw(b,p,a,c) (b)->b_outs((b),(p),(a),(c),1)
-#define bus_outsl(b,p,a,c) (b)->b_outs((b),(p),(a),(c),2)
-#define bus_outsw_ns(b,p,a,c) (b)->b_outs((b),(p),(a),(c),-1)
-#define bus_outsl_ns(b,p,a,c) (b)->b_outs((b),(p),(a),(c),-2)
-
-#define bus_readb(b,a) (b)->b_read((b),(a),0)
-#define bus_readw(b,a) (b)->b_read((b),(a),1)
-#define bus_readl(b,a) (b)->b_read((b),(a),2)
-#define bus_readw_ns(b,a) (b)->b_read((b),(a),-1)
-#define bus_readl_ns(b,a) (b)->b_read((b),(a),-2)
-
-#define bus_writeb(b,v,a) (b)->b_write((b),(v),(a),0)
-#define bus_writew(b,v,a) (b)->b_write((b),(v),(a),1)
-#define bus_writel(b,v,a) (b)->b_write((b),(v),(a),2)
-#define bus_writew_ns(b,v,a) (b)->b_write((b),(v),(a),-1)
-#define bus_writel_ns(b,v,a) (b)->b_write((b),(v),(a),-2)
-
-#define bus_ioremap(b,s,n) (b)->b_ioremap((b),(s),(n))
-#define bus_iounmap(b,a) (b)->b_iounmap((b),(a))
-#define bus_memcpy_fromio(b,d,s,n) (b)->b_copy_from((b),(d),(s),(n))
-#define bus_memcpy_toio(b,d,s,n) (b)->b_copy_to((b),(d),(s),(n))
-
-#define bus_request_irq(b,i,h,f,n,d) \
- (b)->b_request_irq((b),(i),(h),(f),(n),(d))
-#define bus_free_irq(b,i,d) (b)->b_free_irq((b),(i),(d))
-
-#else
-
-#define bus_inb(b,p) inb(p)
-#define bus_inw(b,p) inw(p)
-#define bus_inl(b,p) inl(p)
-#define bus_inw_ns(b,p) inw_ns(p)
-#define bus_inl_ns(b,p) inl_ns(p)
-
-#define bus_insb(b,p,a,c) insb(p,a,c)
-#define bus_insw(b,p,a,c) insw(p,a,c)
-#define bus_insl(b,p,a,c) insl(p,a,c)
-#define bus_insw_ns(b,p,a,c) insw_ns(p,a,c)
-#define bus_insl_ns(b,p,a,c) insl_ns(p,a,c)
-
-#define bus_outb(b,v,p) outb(b,v,p)
-#define bus_outw(b,v,p) outw(b,v,p)
-#define bus_outl(b,v,p) outl(b,v,p)
-#define bus_outw_ns(b,v,p) outw_ns(b,v,p)
-#define bus_outl_ns(b,v,p) outl_ns(b,v,p)
-
-#define bus_outsb(b,p,a,c) outsb(p,a,c)
-#define bus_outsw(b,p,a,c) outsw(p,a,c)
-#define bus_outsl(b,p,a,c) outsl(p,a,c)
-#define bus_outsw_ns(b,p,a,c) outsw_ns(p,a,c)
-#define bus_outsl_ns(b,p,a,c) outsl_ns(p,a,c)
-
-#define bus_readb(b,a) readb(a)
-#define bus_readw(b,a) readw(a)
-#define bus_readl(b,a) readl(a)
-#define bus_readw_ns(b,a) readw_ns(a)
-#define bus_readl_ns(b,a) readl_ns(a)
-
-#define bus_writeb(b,v,a) writeb(v,a)
-#define bus_writew(b,v,a) writew(v,a)
-#define bus_writel(b,v,a) writel(v,a)
-#define bus_writew_ns(b,v,a) writew_ns(v,a)
-#define bus_writel_ns(b,v,a) writel_ns(v,a)
-
-#define bus_ioremap(b,s,n) ioremap(s,n)
-#define bus_iounmap(b,a) iounmap(a)
-#define bus_memcpy_fromio(b,d,s,n) memcpy_fromio(d,s,n)
-#define bus_memcpy_toio(b,d,s,n) memcpy_toio(d,s,n)
-
-#define bus_request_irq(b,i,h,f,n,d) request_irq((i),(h),(f),(n),(d))
-#define bus_free_irq(b,i,d) free_irq((i),(d))
-
-#endif /* CONFIG_VIRTUAL_BUS */
-
-#endif /* _LINUX_BUS_OPS_H */
+/* now empty */
+#warning please remove the reference to this file
diff -ur orig/include/pcmcia/cs.h linux/include/pcmcia/cs.h
--- orig/include/pcmcia/cs.h Thu Feb 22 11:25:48 2001
+++ linux/include/pcmcia/cs.h Sat Mar 1 13:09:31 2003
@@ -98,7 +98,6 @@
void *buffer;
void *misc;
void *client_data;
- struct bus_operations *bus;
} event_callback_args_t;
/* for GetConfigurationInfo */
diff -ur orig/include/pcmcia/ss.h linux/include/pcmcia/ss.h
--- orig/include/pcmcia/ss.h Tue Feb 25 10:57:59 2003
+++ linux/include/pcmcia/ss.h Sat Mar 1 19:21:55 2003
@@ -58,7 +58,6 @@
ioaddr_t io_offset;
u_char pci_irq;
struct pci_dev *cb_dev;
- struct bus_operations *bus;
} socket_cap_t;
/* InquireSocket capabilities */
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [CFT] 3/6 (4): add SOCKET_CARDBUS_CONFIG flag
2003-03-12 20:56 [CFT] PCMCIA patches Russell King
2003-03-12 20:58 ` [CFT] 1/6 (2) kill get_*_map Russell King
2003-03-12 20:59 ` [CFT] 2/6 (3): Remove bus_* abstractions Russell King
@ 2003-03-12 21:00 ` Russell King
2003-03-12 21:01 ` [CFT] 4/6 (5): Add some locking to rsrc_mgr.c Russell King
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Russell King @ 2003-03-12 21:00 UTC (permalink / raw)
To: Linux Kernel List
pcmcia-4.diff
Cardbus uses socket->cb_config to detect when the cardbus card has
been initialised. Since cb_config will eventually die, we need a
solution - introduce the SOCKET_CARDBUS_CONFIG flag, which is set
once we have initialised the cardbus socket.
diff -ur orig/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c
--- orig/drivers/pcmcia/cs.c Sun Mar 2 16:25:15 2003
+++ linux/drivers/pcmcia/cs.c Sat Mar 1 19:20:22 2003
@@ -621,8 +621,10 @@
send_event(s, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW);
} else if (s->state & SOCKET_SETUP_PENDING) {
#ifdef CONFIG_CARDBUS
- if (s->state & SOCKET_CARDBUS)
+ if (s->state & SOCKET_CARDBUS) {
cb_alloc(s);
+ s->state |= SOCKET_CARDBUS_CONFIG;
+ }
#endif
send_event(s, CS_EVENT_CARD_INSERTION, CS_EVENT_PRI_LOW);
s->state &= ~SOCKET_SETUP_PENDING;
@@ -1072,7 +1074,7 @@
config->Vcc = s->socket.Vcc;
config->Vpp1 = config->Vpp2 = s->socket.Vpp;
config->Option = s->cap.cb_dev->subordinate->number;
- if (s->cb_config) {
+ if (s->state & SOCKET_CARDBUS_CONFIG) {
config->Attributes = CONF_VALID_CLIENT;
config->IntType = INT_CARDBUS;
config->AssignedIRQ = s->irq.AssignedIRQ;
diff -ur orig/drivers/pcmcia/cs_internal.h linux/drivers/pcmcia/cs_internal.h
--- orig/drivers/pcmcia/cs_internal.h Sat Mar 1 20:27:30 2003
+++ linux/drivers/pcmcia/cs_internal.h Sat Mar 1 19:19:50 2003
@@ -176,6 +176,7 @@
#define SOCKET_IO_REQ(i) (0x1000<<(i))
#define SOCKET_REGION_INFO 0x4000
#define SOCKET_CARDBUS 0x8000
+#define SOCKET_CARDBUS_CONFIG 0x10000
#define CHECK_HANDLE(h) \
(((h) == NULL) || ((h)->client_magic != CLIENT_MAGIC))
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [CFT] 4/6 (5): Add some locking to rsrc_mgr.c
2003-03-12 20:56 [CFT] PCMCIA patches Russell King
` (2 preceding siblings ...)
2003-03-12 21:00 ` [CFT] 3/6 (4): add SOCKET_CARDBUS_CONFIG flag Russell King
@ 2003-03-12 21:01 ` Russell King
2003-03-12 21:02 ` [CFT] 5/6 (6): Introduce CONFIG_PCMCIA_PROBE Russell King
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Russell King @ 2003-03-12 21:01 UTC (permalink / raw)
To: Linux Kernel List
pcmcia-5.diff
Add an element of locking to the resource manager - don't allow
the PCMCIA resource lists to be changed while the pcmcia code is
scanning them.
diff -ur orig/drivers/pcmcia/rsrc_mgr.c linux/drivers/pcmcia/rsrc_mgr.c
--- orig/drivers/pcmcia/rsrc_mgr.c Mon Nov 18 09:52:12 2002
+++ linux/drivers/pcmcia/rsrc_mgr.c Sat Mar 1 19:09:21 2003
@@ -85,6 +85,8 @@
/* IO port resource database */
static resource_map_t io_db = { 0, 0, &io_db };
+static DECLARE_MUTEX(rsrc_sem);
+
#ifdef CONFIG_ISA
typedef struct irq_info_t {
@@ -403,16 +405,20 @@
static u_char order[] = { 0xd0, 0xe0, 0xc0, 0xf0 };
static int hi = 0, lo = 0;
u_long b, i, ok = 0;
-
- if (!probe_mem) return;
+
+ if (!probe_mem)
+ return;
+
+ down(&rsrc_sem);
/* We do up to four passes through the list */
if (!force_low) {
if (hi++ || (inv_probe(is_valid, do_cksum, mem_db.next, s) > 0))
- return;
+ goto out;
printk(KERN_NOTICE "cs: warning: no high memory space "
"available!\n");
}
- if (lo++) return;
+ if (lo++)
+ goto out;
for (m = mem_db.next; m != &mem_db; m = n) {
n = m->next;
/* Only probe < 1 MB */
@@ -432,6 +438,8 @@
}
}
}
+ out:
+ up(&rsrc_sem);
}
#else /* CONFIG_ISA */
@@ -442,11 +450,13 @@
resource_map_t *m;
static int done = 0;
- if (!probe_mem || done++)
- return;
- for (m = mem_db.next; m != &mem_db; m = m->next)
- if (do_mem_probe(m->base, m->num, is_valid, do_cksum, s))
- return;
+ if (probe_mem && done++ == 0) {
+ down(&rsrc_sem);
+ for (m = mem_db.next; m != &mem_db; m = m->next)
+ if (do_mem_probe(m->base, m->num, is_valid, do_cksum, s))
+ break;
+ up(&rsrc_sem);
+ }
}
#endif /* CONFIG_ISA */
@@ -469,7 +479,9 @@
{
ioaddr_t try;
resource_map_t *m;
-
+ int ret = -1;
+
+ down(&rsrc_sem);
for (m = io_db.next; m != &io_db; m = m->next) {
try = (m->base & ~(align-1)) + *base;
for (try = (try >= m->base) ? try : try+align;
@@ -477,12 +489,16 @@
try += align) {
if (request_io_resource(try, num, name, s->cap.cb_dev) == 0) {
*base = try;
- return 0;
+ ret = 0;
+ goto out;
}
- if (!align) break;
+ if (!align)
+ break;
}
}
- return -1;
+ out:
+ up(&rsrc_sem);
+ return ret;
}
int find_mem_region(u_long *base, u_long num, u_long align,
@@ -490,26 +506,35 @@
{
u_long try;
resource_map_t *m;
+ int ret = -1;
+ down(&rsrc_sem);
while (1) {
for (m = mem_db.next; m != &mem_db; m = m->next) {
/* first pass >1MB, second pass <1MB */
- if ((force_low != 0) ^ (m->base < 0x100000)) continue;
+ if ((force_low != 0) ^ (m->base < 0x100000))
+ continue;
+
try = (m->base & ~(align-1)) + *base;
for (try = (try >= m->base) ? try : try+align;
(try >= m->base) && (try+num <= m->base+m->num);
try += align) {
if (request_mem_resource(try, num, name, s->cap.cb_dev) == 0) {
*base = try;
- return 0;
+ ret = 0;
+ goto out;
}
- if (!align) break;
+ if (!align)
+ break;
}
}
- if (force_low) break;
+ if (force_low)
+ break;
force_low++;
}
- return -1;
+ out:
+ up(&rsrc_sem);
+ return ret;
}
/*======================================================================
@@ -534,53 +559,75 @@
int try_irq(u_int Attributes, int irq, int specific)
{
irq_info_t *info = &irq_table[irq];
+ int ret = 0;
+
+ down(&rsrc_sem);
if (info->Attributes & RES_ALLOCATED) {
switch (Attributes & IRQ_TYPE) {
case IRQ_TYPE_EXCLUSIVE:
- return CS_IN_USE;
+ ret = CS_IN_USE;
+ break;
case IRQ_TYPE_TIME:
if ((info->Attributes & RES_IRQ_TYPE)
- != RES_IRQ_TYPE_TIME)
- return CS_IN_USE;
- if (Attributes & IRQ_FIRST_SHARED)
- return CS_BAD_ATTRIBUTE;
+ != RES_IRQ_TYPE_TIME) {
+ ret = CS_IN_USE;
+ break;
+ }
+ if (Attributes & IRQ_FIRST_SHARED) {
+ ret = CS_BAD_ATTRIBUTE;
+ break;
+ }
info->Attributes |= RES_IRQ_TYPE_TIME | RES_ALLOCATED;
info->time_share++;
break;
case IRQ_TYPE_DYNAMIC_SHARING:
if ((info->Attributes & RES_IRQ_TYPE)
- != RES_IRQ_TYPE_DYNAMIC)
- return CS_IN_USE;
- if (Attributes & IRQ_FIRST_SHARED)
- return CS_BAD_ATTRIBUTE;
+ != RES_IRQ_TYPE_DYNAMIC) {
+ ret = CS_IN_USE;
+ break;
+ }
+ if (Attributes & IRQ_FIRST_SHARED) {
+ ret = CS_BAD_ATTRIBUTE;
+ break;
+ }
info->Attributes |= RES_IRQ_TYPE_DYNAMIC | RES_ALLOCATED;
info->dyn_share++;
break;
}
} else {
- if ((info->Attributes & RES_RESERVED) && !specific)
- return CS_IN_USE;
- if (check_irq(irq) != 0)
- return CS_IN_USE;
+ if ((info->Attributes & RES_RESERVED) && !specific) {
+ ret = CS_IN_USE;
+ goto out;
+ }
+ if (check_irq(irq) != 0) {
+ ret = CS_IN_USE;
+ goto out;
+ }
switch (Attributes & IRQ_TYPE) {
case IRQ_TYPE_EXCLUSIVE:
info->Attributes |= RES_ALLOCATED;
break;
case IRQ_TYPE_TIME:
- if (!(Attributes & IRQ_FIRST_SHARED))
- return CS_BAD_ATTRIBUTE;
+ if (!(Attributes & IRQ_FIRST_SHARED)) {
+ ret = CS_BAD_ATTRIBUTE;
+ break;
+ }
info->Attributes |= RES_IRQ_TYPE_TIME | RES_ALLOCATED;
info->time_share = 1;
break;
case IRQ_TYPE_DYNAMIC_SHARING:
- if (!(Attributes & IRQ_FIRST_SHARED))
- return CS_BAD_ATTRIBUTE;
+ if (!(Attributes & IRQ_FIRST_SHARED)) {
+ ret = CS_BAD_ATTRIBUTE;
+ break;
+ }
info->Attributes |= RES_IRQ_TYPE_DYNAMIC | RES_ALLOCATED;
info->dyn_share = 1;
break;
}
}
- return 0;
+ out:
+ up(&rsrc_sem);
+ return ret;
}
#endif
@@ -594,6 +641,7 @@
irq_info_t *info;
info = &irq_table[irq];
+ down(&rsrc_sem);
switch (Attributes & IRQ_TYPE) {
case IRQ_TYPE_EXCLUSIVE:
info->Attributes &= RES_RESERVED;
@@ -609,6 +657,7 @@
info->Attributes &= RES_RESERVED;
break;
}
+ up(&rsrc_sem);
}
#endif
@@ -631,6 +680,8 @@
return CS_BAD_SIZE;
ret = CS_SUCCESS;
+
+ down(&rsrc_sem);
switch (adj->Action) {
case ADD_MANAGED_RESOURCE:
ret = add_interval(&mem_db, base, num);
@@ -649,6 +700,7 @@
default:
ret = CS_UNSUPPORTED_FUNCTION;
}
+ up(&rsrc_sem);
return ret;
}
@@ -657,7 +709,7 @@
static int adjust_io(adjust_t *adj)
{
- int base, num;
+ int base, num, ret = CS_SUCCESS;
base = adj->resource.io.BasePort;
num = adj->resource.io.NumPorts;
@@ -666,10 +718,13 @@
if ((num <= 0) || (base+num > 0x10000) || (base+num <= base))
return CS_BAD_SIZE;
+ down(&rsrc_sem);
switch (adj->Action) {
case ADD_MANAGED_RESOURCE:
- if (add_interval(&io_db, base, num) != 0)
- return CS_IN_USE;
+ if (add_interval(&io_db, base, num) != 0) {
+ ret = CS_IN_USE;
+ break;
+ }
#ifdef CONFIG_ISA
if (probe_io)
do_io_probe(base, num);
@@ -679,17 +734,19 @@
sub_interval(&io_db, base, num);
break;
default:
- return CS_UNSUPPORTED_FUNCTION;
+ ret = CS_UNSUPPORTED_FUNCTION;
break;
}
+ up(&rsrc_sem);
- return CS_SUCCESS;
+ return ret;
}
/*====================================================================*/
static int adjust_irq(adjust_t *adj)
{
+ int ret = CS_SUCCESS;
#ifdef CONFIG_ISA
int irq;
irq_info_t *info;
@@ -698,33 +755,41 @@
if ((irq < 0) || (irq > 15))
return CS_BAD_IRQ;
info = &irq_table[irq];
-
+
+ down(&rsrc_sem);
switch (adj->Action) {
case ADD_MANAGED_RESOURCE:
if (info->Attributes & RES_REMOVED)
info->Attributes &= ~(RES_REMOVED|RES_ALLOCATED);
else
- if (adj->Attributes & RES_ALLOCATED)
- return CS_IN_USE;
+ if (adj->Attributes & RES_ALLOCATED) {
+ ret = CS_IN_USE;
+ break;
+ }
if (adj->Attributes & RES_RESERVED)
info->Attributes |= RES_RESERVED;
else
info->Attributes &= ~RES_RESERVED;
break;
case REMOVE_MANAGED_RESOURCE:
- if (info->Attributes & RES_REMOVED)
- return 0;
- if (info->Attributes & RES_ALLOCATED)
- return CS_IN_USE;
+ if (info->Attributes & RES_REMOVED) {
+ ret = 0;
+ break;
+ }
+ if (info->Attributes & RES_ALLOCATED) {
+ ret = CS_IN_USE;
+ break;
+ }
info->Attributes |= RES_ALLOCATED|RES_REMOVED;
info->Attributes &= ~RES_RESERVED;
break;
default:
- return CS_UNSUPPORTED_FUNCTION;
+ ret = CS_UNSUPPORTED_FUNCTION;
break;
}
+ up(&rsrc_sem);
#endif
- return CS_SUCCESS;
+ return ret;
}
/*====================================================================*/
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [CFT] 5/6 (6): Introduce CONFIG_PCMCIA_PROBE
2003-03-12 20:56 [CFT] PCMCIA patches Russell King
` (3 preceding siblings ...)
2003-03-12 21:01 ` [CFT] 4/6 (5): Add some locking to rsrc_mgr.c Russell King
@ 2003-03-12 21:02 ` Russell King
2003-03-12 21:03 ` [CFT] 6/6 (7): Remove support for old cardbus clients Russell King
2003-03-24 11:30 ` [CFT] PCMCIA patches Paul Mackerras
6 siblings, 0 replies; 9+ messages in thread
From: Russell King @ 2003-03-12 21:02 UTC (permalink / raw)
To: Linux Kernel List
pcmcia-6.diff
Remove the dependence of the PCMCIA layer on CONFIG_ISA - introduce
CONFIG_PCMCIA_PROBE to determine whether we need the resource
handling code. This prevents oopsen on SA11x0 and similar platforms
which use statically mapped, non-windowed sockets.
diff -ur orig/drivers/pcmcia/Kconfig linux/drivers/pcmcia/Kconfig
--- orig/drivers/pcmcia/Kconfig Tue Feb 11 16:10:23 2003
+++ linux/drivers/pcmcia/Kconfig Mon Feb 10 23:30:30 2003
@@ -86,6 +86,10 @@
config PCMCIA_SA1111
tristate "SA1111 support"
depends on PCMCIA_SA1100 && SA1111
+
+config PCMCIA_PROBE
+ bool
+ default y if ISA && !ARCH_SA1100 && !ARCH_CLPS711X
endmenu
diff -ur orig/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c
--- orig/drivers/pcmcia/cs.c Sun Mar 2 17:05:18 2003
+++ linux/drivers/pcmcia/cs.c Sun Mar 2 17:45:53 2003
@@ -1621,7 +1621,7 @@
free_irq(req->AssignedIRQ, req->Instance);
}
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
if (req->AssignedIRQ != s->cap.pci_irq)
undo_irq(req->Attributes, req->AssignedIRQ);
#endif
@@ -1883,7 +1883,7 @@
if (!s->cap.irq_mask) {
irq = s->cap.pci_irq;
ret = (irq) ? 0 : CS_IN_USE;
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
} else if (s->irq.AssignedIRQ != 0) {
/* If the interrupt is already assigned, it must match */
irq = s->irq.AssignedIRQ;
diff -ur orig/drivers/pcmcia/rsrc_mgr.c linux/drivers/pcmcia/rsrc_mgr.c
--- orig/drivers/pcmcia/rsrc_mgr.c Sun Mar 2 17:34:55 2003
+++ linux/drivers/pcmcia/rsrc_mgr.c Sat Mar 1 19:09:21 2003
@@ -62,7 +62,7 @@
#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
INT_MODULE_PARM(probe_mem, 1); /* memory probe? */
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
INT_MODULE_PARM(probe_io, 1); /* IO port probe? */
INT_MODULE_PARM(mem_limit, 0x10000);
#endif
@@ -87,7 +87,7 @@
static DECLARE_MUTEX(rsrc_sem);
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
typedef struct irq_info_t {
u_int Attributes;
@@ -273,7 +273,7 @@
======================================================================*/
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
static void do_io_probe(ioaddr_t base, ioaddr_t num)
{
@@ -378,7 +378,7 @@
return (num - bad);
}
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
static u_long inv_probe(int (*is_valid)(u_long),
int (*do_cksum)(u_long),
@@ -442,7 +442,7 @@
up(&rsrc_sem);
}
-#else /* CONFIG_ISA */
+#else /* CONFIG_PCMCIA_PROBE */
void validate_mem(int (*is_valid)(u_long), int (*do_cksum)(u_long),
int force_low, socket_info_t *s)
@@ -459,7 +459,7 @@
}
}
-#endif /* CONFIG_ISA */
+#endif /* CONFIG_PCMCIA_PROBE */
/*======================================================================
@@ -545,7 +545,7 @@
======================================================================*/
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
static void fake_irq(int i, void *d, struct pt_regs *r) { }
static inline int check_irq(int irq)
@@ -634,7 +634,7 @@
/*====================================================================*/
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
void undo_irq(u_int Attributes, int irq)
{
@@ -725,7 +725,7 @@
ret = CS_IN_USE;
break;
}
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
if (probe_io)
do_io_probe(base, num);
#endif
@@ -747,7 +747,7 @@
static int adjust_irq(adjust_t *adj)
{
int ret = CS_SUCCESS;
-#ifdef CONFIG_ISA
+#ifdef CONFIG_PCMCIA_PROBE
int irq;
irq_info_t *info;
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [CFT] 6/6 (7): Remove support for old cardbus clients
2003-03-12 20:56 [CFT] PCMCIA patches Russell King
` (4 preceding siblings ...)
2003-03-12 21:02 ` [CFT] 5/6 (6): Introduce CONFIG_PCMCIA_PROBE Russell King
@ 2003-03-12 21:03 ` Russell King
2003-03-24 11:30 ` [CFT] PCMCIA patches Paul Mackerras
6 siblings, 0 replies; 9+ messages in thread
From: Russell King @ 2003-03-12 21:03 UTC (permalink / raw)
To: Linux Kernel List
pcmcia-7.diff
Remove support for the old PCMCIA cardbus clients - all cardbus
drivers should be converted to be full-class PCI citizens.
diff -ur orig/drivers/pcmcia/cardbus.c linux/drivers/pcmcia/cardbus.c
--- orig/drivers/pcmcia/cardbus.c Wed Mar 12 20:25:03 2003
+++ linux/drivers/pcmcia/cardbus.c Wed Mar 12 20:28:14 2003
@@ -326,66 +326,4 @@
kfree(c);
printk(KERN_INFO "cs: cb_free(bus %d)\n", s->cap.cb_dev->subordinate->number);
}
-}
-
-/*=====================================================================
-
- cb_enable() has the job of configuring a socket for a Cardbus
- card, and initializing the card's PCI configuration registers.
-
- It first sets up the Cardbus bridge windows, for IO and memory
- accesses. Then, it initializes each card function's base address
- registers, interrupt line register, and command register.
-
- It is called as part of the RequestConfiguration card service.
- It should be called after a previous call to cb_config() (via the
- RequestIO service).
-
-======================================================================*/
-
-void cb_enable(socket_info_t * s)
-{
- struct pci_dev *dev;
- u_char i;
-
- DEBUG(0, "cs: cb_enable(bus %d)\n", s->cap.cb_dev->subordinate->number);
-
- /* Configure bridge */
- cb_release_cis_mem(s);
-
- /* Set up PCI interrupt and command registers */
- for (i = 0; i < s->functions; i++) {
- dev = s->cb_config->dev[i];
- pci_write_config_byte(dev, PCI_COMMAND, PCI_COMMAND_MASTER |
- PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
- pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE,
- L1_CACHE_BYTES / 4);
- }
-
- if (s->irq.AssignedIRQ) {
- for (i = 0; i < s->functions; i++) {
- dev = s->cb_config->dev[i];
- pci_write_config_byte(dev, PCI_INTERRUPT_LINE,
- s->irq.AssignedIRQ);
- }
- s->socket.io_irq = s->irq.AssignedIRQ;
- s->ss_entry->set_socket(s->sock, &s->socket);
- }
-}
-
-/*======================================================================
-
- cb_disable() unconfigures a Cardbus card previously set up by
- cb_enable().
-
- It is called from the ReleaseConfiguration service.
-
-======================================================================*/
-
-void cb_disable(socket_info_t * s)
-{
- DEBUG(0, "cs: cb_disable(bus %d)\n", s->cap.cb_dev->subordinate->number);
-
- /* Turn off bridge windows */
- cb_release_cis_mem(s);
}
diff -ur orig/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c
--- orig/drivers/pcmcia/cs.c Sun Mar 2 17:05:18 2003
+++ linux/drivers/pcmcia/cs.c Sun Mar 2 17:45:53 2003
@@ -1518,11 +1518,8 @@
s = SOCKET(handle);
#ifdef CONFIG_CARDBUS
- if (handle->state & CLIENT_CARDBUS) {
- cb_disable(s);
- s->lock_count = 0;
+ if (handle->state & CLIENT_CARDBUS)
return CS_SUCCESS;
- }
#endif
if (!(handle->state & CLIENT_STALE)) {
@@ -1674,16 +1671,8 @@
return CS_NO_CARD;
#ifdef CONFIG_CARDBUS
- if (handle->state & CLIENT_CARDBUS) {
- if (!(req->IntType & INT_CARDBUS))
- return CS_UNSUPPORTED_MODE;
- if (s->lock_count != 0)
- return CS_CONFIGURATION_LOCKED;
- cb_enable(s);
- handle->state |= CLIENT_CONFIG_LOCKED;
- s->lock_count++;
- return CS_SUCCESS;
- }
+ if (handle->state & CLIENT_CARDBUS)
+ return CS_UNSUPPORTED_MODE;
#endif
if (req->IntType & INT_CARDBUS)
diff -ur orig/drivers/pcmcia/cs_internal.h linux/drivers/pcmcia/cs_internal.h
--- orig/drivers/pcmcia/cs_internal.h Sun Mar 2 17:05:18 2003
+++ linux/drivers/pcmcia/cs_internal.h Sun Mar 2 17:45:36 2003
@@ -199,8 +199,6 @@
/* In cardbus.c */
int cb_alloc(socket_info_t *s);
void cb_free(socket_info_t *s);
-void cb_enable(socket_info_t *s);
-void cb_disable(socket_info_t *s);
int read_cb_mem(socket_info_t *s, int space, u_int addr, u_int len, void *ptr);
void cb_release_cis_mem(socket_info_t *s);
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [CFT] PCMCIA patches
2003-03-12 20:56 [CFT] PCMCIA patches Russell King
` (5 preceding siblings ...)
2003-03-12 21:03 ` [CFT] 6/6 (7): Remove support for old cardbus clients Russell King
@ 2003-03-24 11:30 ` Paul Mackerras
6 siblings, 0 replies; 9+ messages in thread
From: Paul Mackerras @ 2003-03-24 11:30 UTC (permalink / raw)
To: Russell King; +Cc: Linux Kernel List
Russell King writes:
> I'm about to send a set of 6 PCMCIA patches, which I'd like people to
> test. They're against base current 2.5.64 BK (as of this morning GMT,)
> but they apply with some offset to plain .64.
Just tried them on a G3 powerbook, and it all seems fine. I plugged
in a CF card and a wireless ethernet card (both 16-bit pcmcia) and
they both worked. I don't have any cardbus cards to try.
Paul.
^ permalink raw reply [flat|nested] 9+ messages in thread