Parent repository is bk://bk.arm.linux.org.uk/linux-2.6-pcmcia James.Bottomley@SteelEye.com|ChangeSet|20040314215032|19484 James.Bottomley diff -Nru a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig --- a/drivers/pcmcia/Kconfig Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/Kconfig Sun Mar 14 14:14:50 2004 @@ -26,6 +26,25 @@ To compile this driver as modules, choose M here: the modules will be called pcmcia_core and ds. +config PCMCIA_DEBUG + bool "Enable PCMCIA debugging" + depends on PCMCIA != n + help + Say Y here to enable PCMCIA subsystem debugging. You + will need to choose the debugging level either via the + kernel command line, or module options depending whether + you build the PCMCIA as modules. + + The kernel command line options are: + pcmcia_core.pc_debug=N + ds.pc_debug=N + sa11xx_core.pc_debug=N + + The module option is called pc_debug=N + + In all the above examples, N is the debugging verbosity + level. + config YENTA tristate "CardBus yenta-compatible bridge support" depends on PCMCIA && PCI diff -Nru a/drivers/pcmcia/Makefile b/drivers/pcmcia/Makefile --- a/drivers/pcmcia/Makefile Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/Makefile Sun Mar 14 14:14:50 2004 @@ -2,6 +2,10 @@ # Makefile for the kernel pcmcia subsystem (c/o David Hinds) # +ifeq ($(CONFIG_PCMCIA_DEBUG),y) +EXTRA_CFLAGS += -DDEBUG +endif + obj-$(CONFIG_PCMCIA) += pcmcia_core.o ds.o obj-$(CONFIG_YENTA) += yenta_socket.o diff -Nru a/drivers/pcmcia/au1000_generic.c b/drivers/pcmcia/au1000_generic.c --- a/drivers/pcmcia/au1000_generic.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/au1000_generic.c Sun Mar 14 14:14:50 2004 @@ -26,6 +26,7 @@ * */ #include +#include #include #include #include @@ -54,8 +55,17 @@ #include #include -#ifdef PCMCIA_DEBUG +#ifdef DEBUG static int pc_debug; + +module_param(pc_debug, int, 0644); + +#define debug(lvl,fmt) do { \ + if (pc_debug > (lvl)) \ + printk(KERN_DEBUG fmt); \ +} while (0) +#else +#define debug(lvl,fmt) do { } while (0) #endif MODULE_LICENSE("GPL"); @@ -209,7 +219,7 @@ */ au1000_pcmcia_poll_event(0); - DEBUG(1, "au1000: initialization complete\n"); + debug(1, "au1000: initialization complete\n"); return 0; } /* au1000_pcmcia_driver_init() */ @@ -228,7 +238,7 @@ if (pcmcia_socket[i].virt_io) iounmap((void *)pcmcia_socket[i].virt_io); } - DEBUG(1, "au1000: shutdown complete\n"); + debug(1, "au1000: shutdown complete\n"); } module_exit(au1000_pcmcia_driver_shutdown); @@ -249,14 +259,14 @@ unsigned int events=0; if(state->detect!=prev_state->detect){ - DEBUG(2, "%s(): card detect value %u\n", + debug(2, "%s(): card detect value %u\n", __FUNCTION__, state->detect); events |= mask&SS_DETECT; } if(state->ready!=prev_state->ready){ - DEBUG(2, "%s(): card ready value %u\n", + debug(2, "%s(): card ready value %u\n", __FUNCTION__, state->ready); events |= mask&((flags&SS_IOCARD)?0:SS_READY); } @@ -429,7 +439,7 @@ *status|=state.vs_Xv?SS_XVCARD:0; - DEBUG(2, "\tstatus: %s%s%s%s%s%s%s%s\n", + debug(2, "\tstatus: %s%s%s%s%s%s%s%s\n", (*status&SS_DETECT)?"DETECT ":"", (*status&SS_READY)?"READY ":"", (*status&SS_BATDEAD)?"BATDEAD ":"", @@ -457,7 +467,7 @@ { struct pcmcia_configure configure; - DEBUG(2, "\tmask: %s%s%s%s%s%s\n\tflags: %s%s%s%s%s%s\n" + debug(2, "\tmask: %s%s%s%s%s%s\n\tflags: %s%s%s%s%s%s\n" "\tVcc %d Vpp %d irq %d\n", (state->csc_mask==0)?"":"", (state->csc_mask&SS_DETECT)?"DETECT ":"", @@ -494,7 +504,7 @@ static int au1000_pcmcia_get_io_map(unsigned int sock, struct pccard_io_map *map) { - DEBUG(1, "au1000_pcmcia_get_io_map: sock %d\n", sock); + debug(1, "au1000_pcmcia_get_io_map: sock %d\n", sock); if(map->map>=MAX_IO_WIN){ printk(KERN_ERR "%s(): map (%d) out of range\n", __FUNCTION__, map->map); @@ -531,7 +541,7 @@ map->start=pcmcia_socket[sock].virt_io; map->stop=map->start+(map->stop-start); pcmcia_socket[sock].io_map[map->map]=*map; - DEBUG(3, "set_io_map %d start %x stop %x\n", + debug(3, "set_io_map %d start %x stop %x\n", map->map, map->start, map->stop); return 0; @@ -595,7 +605,7 @@ map->sys_stop=map->sys_start+(map->sys_stop-start); pcmcia_socket[sock].mem_map[map->map]=*map; spin_unlock_irqrestore(&pcmcia_lock, flags); - DEBUG(3, "set_mem_map %d start %x stop %x card_start %x\n", + debug(3, "set_mem_map %d start %x stop %x card_start %x\n", map->map, map->sys_start, map->sys_stop, map->card_start); return 0; diff -Nru a/drivers/pcmcia/au1000_pb1x00.c b/drivers/pcmcia/au1000_pb1x00.c --- a/drivers/pcmcia/au1000_pb1x00.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/au1000_pb1x00.c Sun Mar 14 14:14:50 2004 @@ -48,6 +48,8 @@ #include #include +#define debug(fmt, arg...) do { } while (0) + #ifdef CONFIG_MIPS_PB1000 #include #define PCMCIA_IRQ AU1000_GPIO_15 @@ -213,7 +215,7 @@ } pcr &= ~PCR_SLOT_0_RST; - DEBUG(KERN_INFO "Vcc %dV Vpp %dV, pcr %x\n", + debug("Vcc %dV Vpp %dV, pcr %x\n", configure->vcc, configure->vpp, pcr); switch(configure->vcc){ case 0: /* Vcc 0 */ @@ -324,7 +326,7 @@ pcr = au_readw(PB1100_MEM_PCMCIA) & ~0xf; - DEBUG(KERN_INFO "Vcc %dV Vpp %dV, pcr %x, reset %d\n", + debug("Vcc %dV Vpp %dV, pcr %x, reset %d\n", configure->vcc, configure->vpp, pcr, configure->reset); diff -Nru a/drivers/pcmcia/bulkmem.c b/drivers/pcmcia/bulkmem.c --- a/drivers/pcmcia/bulkmem.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/bulkmem.c Sun Mar 14 14:14:50 2004 @@ -48,6 +48,8 @@ #include #include "cs_internal.h" +static void retry_erase_list(erase_busy_t *list, u_int cause); + /*====================================================================== This function handles submitting an MTD request, and retrying @@ -108,18 +110,18 @@ ======================================================================*/ -static void insert_queue(erase_busy_t *head, erase_busy_t *entry) +static void insert_queue(struct pcmcia_socket *s, erase_busy_t *head, erase_busy_t *entry) { - DEBUG(2, "cs: adding 0x%p to queue 0x%p\n", entry, head); + cs_dbg(s, 2, "adding 0x%p to queue 0x%p\n", entry, head); entry->next = head; entry->prev = head->prev; head->prev->next = entry; head->prev = entry; } -static void remove_queue(erase_busy_t *entry) +static void remove_queue(struct pcmcia_socket *s, erase_busy_t *entry) { - DEBUG(2, "cs: unqueueing 0x%p\n", entry); + cs_dbg(s, 2, "unqueueing 0x%p\n", entry); entry->next->prev = entry->prev; entry->prev->next = entry->next; } @@ -132,34 +134,35 @@ struct pcmcia_socket *s; int ret; - DEBUG(2, "cs: trying erase request 0x%p...\n", busy); + mtd = erase->Handle->mtd; + s = SOCKET(mtd); + + cs_dbg(s, 2, "trying erase request 0x%p...\n", busy); if (busy->next) - remove_queue(busy); + remove_queue(s, busy); req.Function = MTD_REQ_ERASE | cause; req.TransferLength = erase->Size; req.DestCardOffset = erase->Offset + erase->Handle->info.CardOffset; req.MediaID = erase->Handle->MediaID; - mtd = erase->Handle->mtd; - s = SOCKET(mtd); mtd->event_callback_args.mtdrequest = &req; ret = EVENT(mtd, CS_EVENT_MTD_REQUEST, CS_EVENT_PRI_LOW); if (ret == CS_BUSY) { - DEBUG(2, " Status = %d, requeueing.\n", req.Status); + cs_dbg(s, 2, " Status = %d, requeueing.\n", req.Status); switch (req.Status) { case MTD_WAITREQ: case MTD_WAITPOWER: - insert_queue(&mtd->erase_busy, busy); + insert_queue(s, &mtd->erase_busy, busy); break; case MTD_WAITTIMER: case MTD_WAITRDY: if (req.Status == MTD_WAITRDY) - insert_queue(&s->erase_busy, busy); + insert_queue(s, &s->erase_busy, busy); mod_timer(&busy->timeout, jiffies + req.Timeout*HZ/1000); break; } } else { /* update erase queue status */ - DEBUG(2, " Ret = %d\n", ret); + cs_dbg(s, 2, " Ret = %d\n", ret); switch (ret) { case CS_SUCCESS: erase->State = ERASE_PASSED; break; @@ -183,11 +186,11 @@ } } /* retry_erase */ -void retry_erase_list(erase_busy_t *list, u_int cause) +static void retry_erase_list(erase_busy_t *list, u_int cause) { erase_busy_t tmp = *list; - DEBUG(2, "cs: rescanning erase queue list 0x%p\n", list); + cs_dbg(SOCKET(list->client), 2, "rescanning erase queue list 0x%p\n", list); if (list->next == list) return; /* First, truncate the original list */ @@ -204,8 +207,9 @@ static void handle_erase_timeout(u_long arg) { - DEBUG(0, "cs: erase timeout for entry 0x%lx\n", arg); - retry_erase((erase_busy_t *)arg, MTD_REQ_TIMEOUT); + erase_busy_t *busy = (erase_busy_t *)arg; + cs_dbg(SOCKET(busy->client), 0, "erase timeout for entry 0x%lx\n", arg); + retry_erase(busy, MTD_REQ_TIMEOUT); } static void setup_erase_request(client_handle_t handle, eraseq_entry_t *erase) @@ -333,8 +337,8 @@ cistpl_device_geo_t geo; memory_handle_t r; - DEBUG(1, "cs: setup_regions(0x%p, %d, 0x%p)\n", - handle, attr, list); + cs_dbg(SOCKET(handle), 1, "setup_regions(0x%p, %d, 0x%p)\n", + handle, attr, list); code = (attr) ? CISTPL_DEVICE_A : CISTPL_DEVICE; if (read_tuple(handle, code, &device) != CS_SUCCESS) @@ -342,17 +346,13 @@ code = (attr) ? CISTPL_JEDEC_A : CISTPL_JEDEC_C; has_jedec = (read_tuple(handle, code, &jedec) == CS_SUCCESS); if (has_jedec && (device.ndev != jedec.nid)) { -#ifdef PCMCIA_DEBUG - printk(KERN_DEBUG "cs: Device info does not match JEDEC info.\n"); -#endif + cs_dbg(SOCKET(handle), 0, "Device info does not match JEDEC info.\n"); has_jedec = 0; } code = (attr) ? CISTPL_DEVICE_GEO_A : CISTPL_DEVICE_GEO; has_geo = (read_tuple(handle, code, &geo) == CS_SUCCESS); if (has_geo && (device.ndev != geo.ngeo)) { -#ifdef PCMCIA_DEBUG - printk(KERN_DEBUG "cs: Device info does not match geometry tuple.\n"); -#endif + cs_dbg(SOCKET(handle), 0, "Device info does not match geometry tuple.\n"); has_geo = 0; } @@ -458,7 +458,7 @@ list = s->a_region; else list = s->c_region; - DEBUG(1, "cs: register_mtd(0x%p, '%s', 0x%x)\n", + cs_dbg(s, 1, "register_mtd(0x%p, '%s', 0x%x)\n", handle, handle->dev_info, reg->Offset); while (list) { if (list->info.CardOffset == reg->Offset) break; @@ -548,8 +548,8 @@ } if (region && region->mtd) { *mh = region; - DEBUG(1, "cs: open_memory(0x%p, 0x%x) = 0x%p\n", - handle, open->Offset, region); + cs_dbg(s, 1, "open_memory(0x%p, 0x%x) = 0x%p\n", + handle, open->Offset, region); return CS_SUCCESS; } else return CS_BAD_OFFSET; @@ -565,7 +565,7 @@ int pcmcia_close_memory(memory_handle_t handle) { - DEBUG(1, "cs: close_memory(0x%p)\n", handle); + cs_dbg(SOCKET(handle->mtd), 1, "cs: close_memory(0x%p)\n", handle); if (CHECK_REGION(handle)) return CS_BAD_HANDLE; return CS_SUCCESS; diff -Nru a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c --- a/drivers/pcmcia/cardbus.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/cardbus.c Sun Mar 14 14:14:50 2004 @@ -58,10 +58,6 @@ #include #include "cs_internal.h" -#ifdef PCMCIA_DEBUG -static int pc_debug = PCMCIA_DEBUG; -#endif - /*====================================================================*/ #define FIND_FIRST_BIT(n) ((n) - ((n) & ((n)-1))) @@ -119,7 +115,7 @@ static void cb_release_cis_mem(struct pcmcia_socket * s) { if (s->cb_cis_virt) { - DEBUG(1, "cs: cb_release_cis_mem()\n"); + cs_dbg(s, 1, "cb_release_cis_mem()\n"); iounmap(s->cb_cis_virt); s->cb_cis_virt = NULL; s->cb_cis_res = 0; @@ -160,7 +156,7 @@ struct pci_dev *dev; struct resource *res; - DEBUG(3, "cs: read_cb_mem(%d, %#x, %u)\n", space, addr, len); + cs_dbg(s, 3, "read_cb_mem(%d, %#x, %u)\n", space, addr, len); dev = pci_find_slot(s->cb_dev->subordinate->number, 0); if (!dev) diff -Nru a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c --- a/drivers/pcmcia/cistpl.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/cistpl.c Sun Mar 14 14:14:50 2004 @@ -143,7 +143,7 @@ { u_char *sys, *end, *buf = ptr; - DEBUG(3, "cs: read_cis_mem(%d, %#x, %u)\n", attr, addr, len); + cs_dbg(s, 3, "read_cis_mem(%d, %#x, %u)\n", attr, addr, len); if (attr & IS_INDIRECT) { /* Indirect accesses use a bunch of special registers at fixed @@ -195,7 +195,7 @@ addr = 0; } } - DEBUG(3, "cs: %#2.2x %#2.2x %#2.2x %#2.2x ...\n", + cs_dbg(s, 3, " %#2.2x %#2.2x %#2.2x %#2.2x ...\n", *(u_char *)(ptr+0), *(u_char *)(ptr+1), *(u_char *)(ptr+2), *(u_char *)(ptr+3)); return 0; @@ -206,7 +206,7 @@ { u_char *sys, *end, *buf = ptr; - DEBUG(3, "cs: write_cis_mem(%d, %#x, %u)\n", attr, addr, len); + cs_dbg(s, 3, "write_cis_mem(%d, %#x, %u)\n", attr, addr, len); if (attr & IS_INDIRECT) { /* Indirect accesses use a bunch of special registers at fixed @@ -578,8 +578,7 @@ ofs += link[1] + 2; } if (i == MAX_TUPLES) { - DEBUG(1, "cs: overrun in pcmcia_get_next_tuple for socket %d\n", - handle->Socket); + cs_dbg(s, 1, "cs: overrun in pcmcia_get_next_tuple\n"); return CS_NO_MORE_ITEMS; } diff -Nru a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c --- a/drivers/pcmcia/cs.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/cs.c Sun Mar 14 14:14:50 2004 @@ -32,6 +32,7 @@ ======================================================================*/ #include +#include #include #include #include @@ -110,12 +111,17 @@ /* Access speed for IO windows */ INT_MODULE_PARM(io_speed, 0); /* ns */ -#ifdef PCMCIA_DEBUG -INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); -static const char *version = -"cs.c 1.279 2001/10/13 00:08:28 (David Hinds)"; +#ifdef DEBUG +static int pc_debug; + +module_param(pc_debug, int, 0644); + +int cs_debug_level(int level) +{ + return pc_debug > level; +} #endif - + /*====================================================================*/ socket_state_t dead_socket = { @@ -127,103 +133,6 @@ LIST_HEAD(pcmcia_socket_list); DECLARE_RWSEM(pcmcia_socket_list_rwsem); -/*====================================================================*/ - -/* String tables for error messages */ - -typedef struct lookup_t { - int key; - char *msg; -} lookup_t; - -static const lookup_t error_table[] = { - { CS_SUCCESS, "Operation succeeded" }, - { CS_BAD_ADAPTER, "Bad adapter" }, - { CS_BAD_ATTRIBUTE, "Bad attribute", }, - { CS_BAD_BASE, "Bad base address" }, - { CS_BAD_EDC, "Bad EDC" }, - { CS_BAD_IRQ, "Bad IRQ" }, - { CS_BAD_OFFSET, "Bad offset" }, - { CS_BAD_PAGE, "Bad page number" }, - { CS_READ_FAILURE, "Read failure" }, - { CS_BAD_SIZE, "Bad size" }, - { CS_BAD_SOCKET, "Bad socket" }, - { CS_BAD_TYPE, "Bad type" }, - { CS_BAD_VCC, "Bad Vcc" }, - { CS_BAD_VPP, "Bad Vpp" }, - { CS_BAD_WINDOW, "Bad window" }, - { CS_WRITE_FAILURE, "Write failure" }, - { CS_NO_CARD, "No card present" }, - { CS_UNSUPPORTED_FUNCTION, "Usupported function" }, - { CS_UNSUPPORTED_MODE, "Unsupported mode" }, - { CS_BAD_SPEED, "Bad speed" }, - { CS_BUSY, "Resource busy" }, - { CS_GENERAL_FAILURE, "General failure" }, - { CS_WRITE_PROTECTED, "Write protected" }, - { CS_BAD_ARG_LENGTH, "Bad argument length" }, - { CS_BAD_ARGS, "Bad arguments" }, - { CS_CONFIGURATION_LOCKED, "Configuration locked" }, - { CS_IN_USE, "Resource in use" }, - { CS_NO_MORE_ITEMS, "No more items" }, - { CS_OUT_OF_RESOURCE, "Out of resource" }, - { CS_BAD_HANDLE, "Bad handle" }, - { CS_BAD_TUPLE, "Bad CIS tuple" } -}; -#define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t)) - -static const lookup_t service_table[] = { - { AccessConfigurationRegister, "AccessConfigurationRegister" }, - { AddSocketServices, "AddSocketServices" }, - { AdjustResourceInfo, "AdjustResourceInfo" }, - { CheckEraseQueue, "CheckEraseQueue" }, - { CloseMemory, "CloseMemory" }, - { DeregisterClient, "DeregisterClient" }, - { DeregisterEraseQueue, "DeregisterEraseQueue" }, - { GetCardServicesInfo, "GetCardServicesInfo" }, - { GetClientInfo, "GetClientInfo" }, - { GetConfigurationInfo, "GetConfigurationInfo" }, - { GetEventMask, "GetEventMask" }, - { GetFirstClient, "GetFirstClient" }, - { GetFirstRegion, "GetFirstRegion" }, - { GetFirstTuple, "GetFirstTuple" }, - { GetNextClient, "GetNextClient" }, - { GetNextRegion, "GetNextRegion" }, - { GetNextTuple, "GetNextTuple" }, - { GetStatus, "GetStatus" }, - { GetTupleData, "GetTupleData" }, - { MapMemPage, "MapMemPage" }, - { ModifyConfiguration, "ModifyConfiguration" }, - { ModifyWindow, "ModifyWindow" }, - { OpenMemory, "OpenMemory" }, - { ParseTuple, "ParseTuple" }, - { ReadMemory, "ReadMemory" }, - { RegisterClient, "RegisterClient" }, - { RegisterEraseQueue, "RegisterEraseQueue" }, - { RegisterMTD, "RegisterMTD" }, - { ReleaseConfiguration, "ReleaseConfiguration" }, - { ReleaseIO, "ReleaseIO" }, - { ReleaseIRQ, "ReleaseIRQ" }, - { ReleaseWindow, "ReleaseWindow" }, - { RequestConfiguration, "RequestConfiguration" }, - { RequestIO, "RequestIO" }, - { RequestIRQ, "RequestIRQ" }, - { RequestSocketMask, "RequestSocketMask" }, - { RequestWindow, "RequestWindow" }, - { ResetCard, "ResetCard" }, - { SetEventMask, "SetEventMask" }, - { ValidateCIS, "ValidateCIS" }, - { WriteMemory, "WriteMemory" }, - { BindDevice, "BindDevice" }, - { BindMTD, "BindMTD" }, - { ReportError, "ReportError" }, - { SuspendCard, "SuspendCard" }, - { ResumeCard, "ResumeCard" }, - { EjectCard, "EjectCard" }, - { InsertCard, "InsertCard" }, - { ReplaceCIS, "ReplaceCIS" } -}; -#define SERVICE_COUNT (sizeof(service_table)/sizeof(lookup_t)) - /*==================================================================== @@ -306,7 +215,7 @@ if (!socket || !socket->ops || !socket->dev.dev) return -EINVAL; - DEBUG(0, "cs: pcmcia_register_socket(0x%p)\n", socket->ops); + cs_dbg(socket, 0, "pcmcia_register_socket(0x%p)\n", socket->ops); /* try to obtain a socket number [yes, it gets ugly if we * register more than 2^sizeof(unsigned int) pcmcia @@ -377,7 +286,7 @@ if (!socket) return; - DEBUG(0, "cs: pcmcia_unregister_socket(0x%p)\n", socket->ops); + cs_dbg(socket, 0, "pcmcia_unregister_socket(0x%p)\n", socket->ops); if (socket->thread) { init_completion(&socket->thread_done); @@ -443,10 +352,9 @@ { client_t **c; - DEBUG(1, "cs: shutdown_socket(%p)\n", s); + cs_dbg(s, 1, "shutdown_socket\n"); /* Blank out the socket state */ - s->state &= SOCKET_PRESENT|SOCKET_INUSE; s->socket = dead_socket; s->ops->init(s); s->ops->set_socket(s, &s->socket); @@ -499,8 +407,8 @@ { client_t *client = s->clients; int ret; - DEBUG(1, "cs: send_event(sock %d, event %d, pri %d)\n", - s->sock, event, priority); + cs_dbg(s, 1, "send_event(event %d, pri %d)\n", + event, priority); ret = 0; if (s->state & SOCKET_CARDBUS) return 0; @@ -516,26 +424,14 @@ return ret; } /* send_event */ -static void pcmcia_error(struct pcmcia_socket *skt, const char *fmt, ...) -{ - static char buf[128]; - va_list ap; - int len; - - va_start(ap, fmt); - len = vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - buf[len] = '\0'; - - printk(KERN_ERR "PCMCIA: socket %p: %s", skt, buf); -} - #define cs_to_timeout(cs) (((cs) * HZ + 99) / 100) static void socket_remove_drivers(struct pcmcia_socket *skt) { client_t *client; + cs_dbg(skt, 4, "remove_drivers\n"); + send_event(skt, CS_EVENT_CARD_REMOVAL, CS_EVENT_PRI_HIGH); for (client = skt->clients; client; client = client->next) @@ -545,10 +441,13 @@ static void socket_shutdown(struct pcmcia_socket *skt) { + cs_dbg(skt, 4, "shutdown\n"); + socket_remove_drivers(skt); + skt->state &= SOCKET_INUSE|SOCKET_PRESENT; set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(cs_to_timeout(shutdown_delay)); - skt->state &= ~SOCKET_PRESENT; + skt->state &= SOCKET_INUSE; shutdown_socket(skt); } @@ -556,6 +455,8 @@ { int status, i; + cs_dbg(skt, 4, "reset\n"); + skt->socket.flags |= SS_OUTPUT_ENA | SS_RESET; skt->ops->set_socket(skt, &skt->socket); udelay((long)reset_time); @@ -578,7 +479,7 @@ schedule_timeout(cs_to_timeout(unreset_check)); } - pcmcia_error(skt, "time out after reset.\n"); + cs_err(skt, "time out after reset.\n"); return CS_GENERAL_FAILURE; } @@ -586,6 +487,8 @@ { int status, i; + cs_dbg(skt, 4, "setup\n"); + skt->ops->get_status(skt, &status); if (!(status & SS_DETECT)) return CS_NO_CARD; @@ -606,14 +509,14 @@ } if (status & SS_PENDING) { - pcmcia_error(skt, "voltage interrogation timed out.\n"); + cs_err(skt, "voltage interrogation timed out.\n"); return CS_GENERAL_FAILURE; } if (status & SS_CARDBUS) { skt->state |= SOCKET_CARDBUS; #ifndef CONFIG_CARDBUS - pcmcia_error(skt, "cardbus cards are not supported.\n"); + cs_err(skt, "cardbus cards are not supported.\n"); return CS_BAD_TYPE; #endif } @@ -626,7 +529,7 @@ else if (!(status & SS_XVCARD)) skt->socket.Vcc = skt->socket.Vpp = 50; else { - pcmcia_error(skt, "unsupported voltage key.\n"); + cs_err(skt, "unsupported voltage key.\n"); return CS_BAD_TYPE; } skt->socket.flags = 0; @@ -640,7 +543,7 @@ skt->ops->get_status(skt, &status); if (!(status & SS_POWERON)) { - pcmcia_error(skt, "unable to apply power.\n"); + cs_err(skt, "unable to apply power.\n"); return CS_BAD_TYPE; } @@ -655,6 +558,8 @@ { int ret; + cs_dbg(skt, 4, "insert\n"); + if (!cs_socket_get(skt)) return CS_NO_CARD; @@ -667,6 +572,8 @@ skt->state |= SOCKET_CARDBUS_CONFIG; } #endif + cs_dbg(skt, 4, "insert done\n"); + send_event(skt, CS_EVENT_CARD_INSERTION, CS_EVENT_PRI_LOW); } else { socket_shutdown(skt); @@ -832,6 +739,7 @@ */ void pcmcia_parse_events(struct pcmcia_socket *s, u_int events) { + cs_dbg(s, 4, "parse_events: events %08x\n", events); if (s->thread) { spin_lock(&s->thread_lock); s->thread_events |= events; @@ -857,15 +765,15 @@ align = (*base) ? (lines ? 1<features & SS_CAP_STATIC_MAP) && s->io_offset) { @@ -979,77 +887,6 @@ return CS_SUCCESS; } /* access_configuration_register */ -/*====================================================================== - - Bind_device() associates a device driver with a particular socket. - It is normally called by Driver Services after it has identified - a newly inserted card. An instance of that driver will then be - eligible to register as a client of this socket. - -======================================================================*/ - -int pcmcia_bind_device(bind_req_t *req) -{ - client_t *client; - struct pcmcia_socket *s; - - s = req->Socket; - if (!s) - return CS_BAD_SOCKET; - - client = (client_t *)kmalloc(sizeof(client_t), GFP_KERNEL); - if (!client) return CS_OUT_OF_RESOURCE; - memset(client, '\0', sizeof(client_t)); - client->client_magic = CLIENT_MAGIC; - strlcpy(client->dev_info, (char *)req->dev_info, DEV_NAME_LEN); - client->Socket = s; - client->Function = req->Function; - client->state = CLIENT_UNBOUND; - client->erase_busy.next = &client->erase_busy; - client->erase_busy.prev = &client->erase_busy; - init_waitqueue_head(&client->mtd_req); - client->next = s->clients; - s->clients = client; - DEBUG(1, "cs: bind_device(): client 0x%p, sock %p, dev %s\n", - client, client->Socket, client->dev_info); - return CS_SUCCESS; -} /* bind_device */ - -/*====================================================================== - - Bind_mtd() associates a device driver with a particular memory - region. It is normally called by Driver Services after it has - identified a memory device type. An instance of the corresponding - driver will then be able to register to control this region. - -======================================================================*/ - -int pcmcia_bind_mtd(mtd_bind_t *req) -{ - struct pcmcia_socket *s; - memory_handle_t region; - - s = req->Socket; - if (!s) - return CS_BAD_SOCKET; - - if (req->Attributes & REGION_TYPE_AM) - region = s->a_region; - else - region = s->c_region; - - while (region) { - if (region->info.CardOffset == req->CardOffset) break; - region = region->info.next; - } - if (!region || (region->mtd != NULL)) - return CS_BAD_OFFSET; - strlcpy(region->dev_info, (char *)req->dev_info, DEV_NAME_LEN); - - DEBUG(1, "cs: bind_mtd(): attr 0x%x, offset 0x%x, dev %s\n", - req->Attributes, req->CardOffset, (char *)req->dev_info); - return CS_SUCCESS; -} /* bind_mtd */ /*====================================================================*/ @@ -1061,9 +898,12 @@ u_long flags; int i; - DEBUG(1, "cs: deregister_client(%p)\n", handle); if (CHECK_HANDLE(handle)) return CS_BAD_HANDLE; + + s = SOCKET(handle); + cs_dbg(s, 1, "deregister_client(%p)\n", handle); + if (handle->state & (CLIENT_IRQ_REQ|CLIENT_IO_REQ|CLIENT_CONFIG_LOCKED)) return CS_IN_USE; @@ -1072,7 +912,6 @@ return CS_IN_USE; /* Disconnect all MTD links */ - s = SOCKET(handle); if (handle->mtd_count) { for (region = s->a_region; region; region = region->info.next) if (region->mtd == handle) region->mtd = NULL; @@ -1543,8 +1382,8 @@ memset(s->config, 0, sizeof(config_t) * s->functions); } - DEBUG(1, "cs: register_client(): client 0x%p, sock %p, dev %s\n", - client, client->Socket, client->dev_info); + cs_dbg(s, 1, "register_client(): client 0x%p, dev %s\n", + client, client->dev_info); if (client->EventMask & CS_EVENT_REGISTRATION_COMPLETE) EVENT(client, CS_EVENT_REGISTRATION_COMPLETE, CS_EVENT_PRI_LOW); @@ -2077,8 +1916,8 @@ if (CHECK_HANDLE(handle)) return CS_BAD_HANDLE; - DEBUG(1, "cs: resetting socket %p\n", handle->Socket); skt = SOCKET(handle); + cs_dbg(skt, 1, "resetting socket\n"); down(&skt->skt_sem); do { @@ -2119,15 +1958,11 @@ ======================================================================*/ -int pcmcia_suspend_card(client_handle_t handle, client_req_t *req) +int pcmcia_suspend_card(struct pcmcia_socket *skt) { - struct pcmcia_socket *skt; int ret; - if (CHECK_HANDLE(handle)) - return CS_BAD_HANDLE; - DEBUG(1, "cs: suspending socket %p\n", handle->Socket); - skt = SOCKET(handle); + cs_dbg(skt, 1, "suspending socket\n"); down(&skt->skt_sem); do { @@ -2146,15 +1981,11 @@ return ret; } /* suspend_card */ -int pcmcia_resume_card(client_handle_t handle, client_req_t *req) +int pcmcia_resume_card(struct pcmcia_socket *skt) { - struct pcmcia_socket *skt; int ret; - if (CHECK_HANDLE(handle)) - return CS_BAD_HANDLE; - DEBUG(1, "cs: waking up socket %p\n", handle->Socket); - skt = SOCKET(handle); + cs_dbg(skt, 1, "waking up socket\n"); down(&skt->skt_sem); do { @@ -2179,15 +2010,11 @@ ======================================================================*/ -int pcmcia_eject_card(client_handle_t handle, client_req_t *req) +int pcmcia_eject_card(struct pcmcia_socket *skt) { - struct pcmcia_socket *skt; int ret; - if (CHECK_HANDLE(handle)) - return CS_BAD_HANDLE; - DEBUG(1, "cs: user eject request on socket %p\n", handle->Socket); - skt = SOCKET(handle); + cs_dbg(skt, 1, "user eject request\n"); down(&skt->skt_sem); do { @@ -2208,15 +2035,11 @@ return ret; } /* eject_card */ -int pcmcia_insert_card(client_handle_t handle, client_req_t *req) +int pcmcia_insert_card(struct pcmcia_socket *skt) { - struct pcmcia_socket *skt; int ret; - if (CHECK_HANDLE(handle)) - return CS_BAD_HANDLE; - DEBUG(1, "cs: user insert request on socket %p\n", handle->Socket); - skt = SOCKET(handle); + cs_dbg(skt, 1, "user insert request\n"); down(&skt->skt_sem); do { @@ -2260,35 +2083,6 @@ return CS_SUCCESS; } /* set_event_mask */ -/*====================================================================*/ - -int pcmcia_report_error(client_handle_t handle, error_info_t *err) -{ - int i; - char *serv; - - if (CHECK_HANDLE(handle)) - printk(KERN_NOTICE); - else - printk(KERN_NOTICE "%s: ", handle->dev_info); - - for (i = 0; i < SERVICE_COUNT; i++) - if (service_table[i].key == err->func) break; - if (i < SERVICE_COUNT) - serv = service_table[i].msg; - else - serv = "Unknown service number"; - - for (i = 0; i < ERROR_COUNT; i++) - if (error_table[i].key == err->retcode) break; - if (i < ERROR_COUNT) - printk("%s: %s\n", serv, error_table[i].msg); - else - printk("%s: Unknown error code %#x\n", serv, err->retcode); - - return CS_SUCCESS; -} /* report_error */ - /*====================================================================== OS-specific module glue goes here @@ -2297,8 +2091,6 @@ /* in alpha order */ EXPORT_SYMBOL(pcmcia_access_configuration_register); EXPORT_SYMBOL(pcmcia_adjust_resource_info); -EXPORT_SYMBOL(pcmcia_bind_device); -EXPORT_SYMBOL(pcmcia_bind_mtd); EXPORT_SYMBOL(pcmcia_check_erase_queue); EXPORT_SYMBOL(pcmcia_close_memory); EXPORT_SYMBOL(pcmcia_copy_memory); @@ -2333,7 +2125,6 @@ EXPORT_SYMBOL(pcmcia_release_irq); EXPORT_SYMBOL(pcmcia_release_window); EXPORT_SYMBOL(pcmcia_replace_cis); -EXPORT_SYMBOL(pcmcia_report_error); EXPORT_SYMBOL(pcmcia_request_configuration); EXPORT_SYMBOL(pcmcia_request_io); EXPORT_SYMBOL(pcmcia_request_irq); @@ -2360,7 +2151,6 @@ { printk(KERN_INFO "%s\n", release); printk(KERN_INFO " %s\n", options); - DEBUG(0, "%s\n", version); class_register(&pcmcia_socket_class); return 0; diff -Nru a/drivers/pcmcia/cs_internal.h b/drivers/pcmcia/cs_internal.h --- a/drivers/pcmcia/cs_internal.h Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/cs_internal.h Sun Mar 14 14:14:50 2004 @@ -167,7 +167,6 @@ int read_tuple(client_handle_t handle, cisdata_t code, void *parse); /* In bulkmem.c */ -void retry_erase_list(struct erase_busy_t *list, u_int cause); int get_first_region(client_handle_t handle, region_info_t *rgn); int get_next_region(client_handle_t handle, region_info_t *rgn); int register_mtd(client_handle_t handle, mtd_reg_t *reg); @@ -194,11 +193,22 @@ extern struct rw_semaphore pcmcia_socket_list_rwsem; extern struct list_head pcmcia_socket_list; -#ifdef PCMCIA_DEBUG -extern int pc_debug; -#define DEBUG(n, args...) do { if (pc_debug>(n)) printk(KERN_DEBUG args); } while (0) +#define cs_socket_name(skt) ((skt)->dev.class_id) + +#ifdef DEBUG +extern int cs_debug_level(int); + +#define cs_dbg(skt, lvl, fmt, arg...) do { \ + if (cs_debug_level(lvl)) \ + printk(KERN_DEBUG "cs: %s: " fmt, \ + cs_socket_name(skt) , ## arg); \ +} while (0) + #else -#define DEBUG(n, args...) do { } while (0) +#define cs_dbg(skt, lvl, fmt, arg...) do { } while (0) #endif + +#define cs_err(skt, fmt, arg...) \ + printk(KERN_ERR "cs: %s: " fmt, (skt)->dev.class_id , ## arg) #endif /* _LINUX_CS_INTERNAL_H */ diff -Nru a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c --- a/drivers/pcmcia/ds.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/ds.c Sun Mar 14 14:14:50 2004 @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -53,6 +54,7 @@ #include +#define IN_CARD_SERVICES #include #include #include @@ -61,6 +63,8 @@ #include #include +#include "cs_internal.h" + /*====================================================================*/ /* Module parameters */ @@ -69,13 +73,17 @@ MODULE_DESCRIPTION("PCMCIA Driver Services"); MODULE_LICENSE("Dual MPL/GPL"); -#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i") +#ifdef DEBUG +static int pc_debug; + +module_param(pc_debug, int, 0644); -#ifdef PCMCIA_DEBUG -INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); -#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) +#define ds_dbg(lvl, fmt, arg...) do { \ + if (pc_debug > (lvl)) \ + printk(KERN_DEBUG "ds: " fmt , ## arg); \ +} while (0) #else -#define DEBUG(n, args...) +#define ds_dbg(lvl, fmt, arg...) do { } while (0) #endif /*====================================================================*/ @@ -113,10 +121,10 @@ struct pcmcia_socket *parent; }; -#define SOCKET_PRESENT 0x01 -#define SOCKET_BUSY 0x02 -#define SOCKET_REMOVAL_PENDING 0x10 -#define SOCKET_DEAD 0x80 +#define DS_SOCKET_PRESENT 0x01 +#define DS_SOCKET_BUSY 0x02 +#define DS_SOCKET_REMOVAL_PENDING 0x10 +#define DS_SOCKET_DEAD 0x80 /*====================================================================*/ @@ -129,6 +137,214 @@ /*====================================================================*/ +/* code which was in cs.c before */ + +/*====================================================================== + + Bind_device() associates a device driver with a particular socket. + It is normally called by Driver Services after it has identified + a newly inserted card. An instance of that driver will then be + eligible to register as a client of this socket. + +======================================================================*/ + +static int pcmcia_bind_device(bind_req_t *req) +{ + client_t *client; + struct pcmcia_socket *s; + + s = req->Socket; + if (!s) + return CS_BAD_SOCKET; + + client = (client_t *) kmalloc(sizeof(client_t), GFP_KERNEL); + if (!client) + return CS_OUT_OF_RESOURCE; + memset(client, '\0', sizeof(client_t)); + client->client_magic = CLIENT_MAGIC; + strlcpy(client->dev_info, (char *)req->dev_info, DEV_NAME_LEN); + client->Socket = s; + client->Function = req->Function; + client->state = CLIENT_UNBOUND; + client->erase_busy.next = &client->erase_busy; + client->erase_busy.prev = &client->erase_busy; + init_waitqueue_head(&client->mtd_req); + client->next = s->clients; + s->clients = client; + ds_dbg(1, "%s: bind_device(): client 0x%p, dev %s\n", + cs_socket_name(client->Socket), client, client->dev_info); + return CS_SUCCESS; +} /* bind_device */ + + +/*====================================================================== + + Bind_mtd() associates a device driver with a particular memory + region. It is normally called by Driver Services after it has + identified a memory device type. An instance of the corresponding + driver will then be able to register to control this region. + +======================================================================*/ + +static int pcmcia_bind_mtd(mtd_bind_t *req) +{ + struct pcmcia_socket *s; + memory_handle_t region; + + s = req->Socket; + if (!s) + return CS_BAD_SOCKET; + + if (req->Attributes & REGION_TYPE_AM) + region = s->a_region; + else + region = s->c_region; + + while (region) { + if (region->info.CardOffset == req->CardOffset) + break; + region = region->info.next; + } + if (!region || (region->mtd != NULL)) + return CS_BAD_OFFSET; + strlcpy(region->dev_info, (char *)req->dev_info, DEV_NAME_LEN); + + ds_dbg(1, "%s: bind_mtd: attr 0x%x, offset 0x%x, dev %s\n", + cs_socket_name(s), req->Attributes, req->CardOffset, + (char *)req->dev_info); + return CS_SUCCESS; +} /* bind_mtd */ + + +/* String tables for error messages */ + +typedef struct lookup_t { + int key; + char *msg; +} lookup_t; + +static const lookup_t error_table[] = { + { CS_SUCCESS, "Operation succeeded" }, + { CS_BAD_ADAPTER, "Bad adapter" }, + { CS_BAD_ATTRIBUTE, "Bad attribute", }, + { CS_BAD_BASE, "Bad base address" }, + { CS_BAD_EDC, "Bad EDC" }, + { CS_BAD_IRQ, "Bad IRQ" }, + { CS_BAD_OFFSET, "Bad offset" }, + { CS_BAD_PAGE, "Bad page number" }, + { CS_READ_FAILURE, "Read failure" }, + { CS_BAD_SIZE, "Bad size" }, + { CS_BAD_SOCKET, "Bad socket" }, + { CS_BAD_TYPE, "Bad type" }, + { CS_BAD_VCC, "Bad Vcc" }, + { CS_BAD_VPP, "Bad Vpp" }, + { CS_BAD_WINDOW, "Bad window" }, + { CS_WRITE_FAILURE, "Write failure" }, + { CS_NO_CARD, "No card present" }, + { CS_UNSUPPORTED_FUNCTION, "Usupported function" }, + { CS_UNSUPPORTED_MODE, "Unsupported mode" }, + { CS_BAD_SPEED, "Bad speed" }, + { CS_BUSY, "Resource busy" }, + { CS_GENERAL_FAILURE, "General failure" }, + { CS_WRITE_PROTECTED, "Write protected" }, + { CS_BAD_ARG_LENGTH, "Bad argument length" }, + { CS_BAD_ARGS, "Bad arguments" }, + { CS_CONFIGURATION_LOCKED, "Configuration locked" }, + { CS_IN_USE, "Resource in use" }, + { CS_NO_MORE_ITEMS, "No more items" }, + { CS_OUT_OF_RESOURCE, "Out of resource" }, + { CS_BAD_HANDLE, "Bad handle" }, + { CS_BAD_TUPLE, "Bad CIS tuple" } +}; + + +static const lookup_t service_table[] = { + { AccessConfigurationRegister, "AccessConfigurationRegister" }, + { AddSocketServices, "AddSocketServices" }, + { AdjustResourceInfo, "AdjustResourceInfo" }, + { CheckEraseQueue, "CheckEraseQueue" }, + { CloseMemory, "CloseMemory" }, + { DeregisterClient, "DeregisterClient" }, + { DeregisterEraseQueue, "DeregisterEraseQueue" }, + { GetCardServicesInfo, "GetCardServicesInfo" }, + { GetClientInfo, "GetClientInfo" }, + { GetConfigurationInfo, "GetConfigurationInfo" }, + { GetEventMask, "GetEventMask" }, + { GetFirstClient, "GetFirstClient" }, + { GetFirstRegion, "GetFirstRegion" }, + { GetFirstTuple, "GetFirstTuple" }, + { GetNextClient, "GetNextClient" }, + { GetNextRegion, "GetNextRegion" }, + { GetNextTuple, "GetNextTuple" }, + { GetStatus, "GetStatus" }, + { GetTupleData, "GetTupleData" }, + { MapMemPage, "MapMemPage" }, + { ModifyConfiguration, "ModifyConfiguration" }, + { ModifyWindow, "ModifyWindow" }, + { OpenMemory, "OpenMemory" }, + { ParseTuple, "ParseTuple" }, + { ReadMemory, "ReadMemory" }, + { RegisterClient, "RegisterClient" }, + { RegisterEraseQueue, "RegisterEraseQueue" }, + { RegisterMTD, "RegisterMTD" }, + { ReleaseConfiguration, "ReleaseConfiguration" }, + { ReleaseIO, "ReleaseIO" }, + { ReleaseIRQ, "ReleaseIRQ" }, + { ReleaseWindow, "ReleaseWindow" }, + { RequestConfiguration, "RequestConfiguration" }, + { RequestIO, "RequestIO" }, + { RequestIRQ, "RequestIRQ" }, + { RequestSocketMask, "RequestSocketMask" }, + { RequestWindow, "RequestWindow" }, + { ResetCard, "ResetCard" }, + { SetEventMask, "SetEventMask" }, + { ValidateCIS, "ValidateCIS" }, + { WriteMemory, "WriteMemory" }, + { BindDevice, "BindDevice" }, + { BindMTD, "BindMTD" }, + { ReportError, "ReportError" }, + { SuspendCard, "SuspendCard" }, + { ResumeCard, "ResumeCard" }, + { EjectCard, "EjectCard" }, + { InsertCard, "InsertCard" }, + { ReplaceCIS, "ReplaceCIS" } +}; + + +int pcmcia_report_error(client_handle_t handle, error_info_t *err) +{ + int i; + char *serv; + + if (CHECK_HANDLE(handle)) + printk(KERN_NOTICE); + else + printk(KERN_NOTICE "%s: ", handle->dev_info); + + for (i = 0; i < ARRAY_SIZE(service_table); i++) + if (service_table[i].key == err->func) + break; + if (i < ARRAY_SIZE(service_table)) + serv = service_table[i].msg; + else + serv = "Unknown service number"; + + for (i = 0; i < ARRAY_SIZE(error_table); i++) + if (error_table[i].key == err->retcode) + break; + if (i < ARRAY_SIZE(error_table)) + printk("%s: %s\n", serv, error_table[i].msg); + else + printk("%s: Unknown error code %#x\n", serv, err->retcode); + + return CS_SUCCESS; +} /* report_error */ +EXPORT_SYMBOL(pcmcia_report_error); + +/* end of code which was in cs.c before */ + +/*======================================================================*/ + void cs_error(client_handle_t handle, int func, int ret) { error_info_t err = { func, ret }; @@ -249,12 +465,12 @@ { if (s->req_pending != 0) return CS_IN_USE; - if (s->state & SOCKET_BUSY) + if (s->state & DS_SOCKET_BUSY) s->req_pending = 1; handle_event(s, event); if (wait_event_interruptible(s->request, s->req_pending <= 0)) return CS_IN_USE; - if (s->state & SOCKET_BUSY) + if (s->state & DS_SOCKET_BUSY) return s->req_result; return CS_SUCCESS; } @@ -263,7 +479,7 @@ { struct pcmcia_bus_socket *s = data; handle_event(s, CS_EVENT_CARD_REMOVAL); - s->state &= ~SOCKET_REMOVAL_PENDING; + s->state &= ~DS_SOCKET_REMOVAL_PENDING; } /*====================================================================== @@ -277,22 +493,22 @@ { struct pcmcia_bus_socket *s; - DEBUG(1, "ds: ds_event(0x%06x, %d, 0x%p)\n", + ds_dbg(1, "ds_event(0x%06x, %d, 0x%p)\n", event, priority, args->client_handle); s = args->client_data; switch (event) { case CS_EVENT_CARD_REMOVAL: - s->state &= ~SOCKET_PRESENT; - if (!(s->state & SOCKET_REMOVAL_PENDING)) { - s->state |= SOCKET_REMOVAL_PENDING; + s->state &= ~DS_SOCKET_PRESENT; + if (!(s->state & DS_SOCKET_REMOVAL_PENDING)) { + s->state |= DS_SOCKET_REMOVAL_PENDING; schedule_delayed_work(&s->removal, HZ/10); } break; case CS_EVENT_CARD_INSERTION: - s->state |= SOCKET_PRESENT; + s->state |= DS_SOCKET_PRESENT; handle_event(s, event); break; @@ -353,7 +569,7 @@ if (!s) return -EINVAL; - DEBUG(2, "bind_request(%d, '%s')\n", s->parent->sock, + ds_dbg(2, "bind_request(%d, '%s')\n", s->parent->sock, (char *)bind_info->dev_info); driver = get_pcmcia_driver(&bind_info->dev_info); if (!driver) @@ -484,7 +700,7 @@ { socket_bind_t **b, *c; - DEBUG(2, "unbind_request(%d, '%s')\n", s->parent->sock, + ds_dbg(2, "unbind_request(%d, '%s')\n", s->parent->sock, (char *)bind_info->dev_info); for (b = &s->bind; *b; b = &(*b)->next) if ((strcmp((char *)(*b)->driver->drv.name, @@ -518,17 +734,17 @@ struct pcmcia_bus_socket *s; user_info_t *user; - DEBUG(0, "ds_open(socket %d)\n", i); + ds_dbg(0, "ds_open(socket %d)\n", i); s = pcmcia_get_bus_socket(i); if (!s) return -ENODEV; if ((file->f_flags & O_ACCMODE) != O_RDONLY) { - if (s->state & SOCKET_BUSY) + if (s->state & DS_SOCKET_BUSY) return -EBUSY; else - s->state |= SOCKET_BUSY; + s->state |= DS_SOCKET_BUSY; } user = kmalloc(sizeof(user_info_t), GFP_KERNEL); @@ -540,7 +756,7 @@ s->user = user; file->private_data = user; - if (s->state & SOCKET_PRESENT) + if (s->state & DS_SOCKET_PRESENT) queue_event(user, CS_EVENT_CARD_INSERTION); return 0; } /* ds_open */ @@ -552,7 +768,7 @@ struct pcmcia_bus_socket *s; user_info_t *user, **link; - DEBUG(0, "ds_release(socket %d)\n", iminor(inode)); + ds_dbg(0, "ds_release(socket %d)\n", iminor(inode)); user = file->private_data; if (CHECK_USER(user)) @@ -562,7 +778,7 @@ /* Unlink user data structure */ if ((file->f_flags & O_ACCMODE) != O_RDONLY) { - s->state &= ~SOCKET_BUSY; + s->state &= ~DS_SOCKET_BUSY; s->req_pending = 0; wake_up_interruptible(&s->request); } @@ -588,7 +804,7 @@ user_info_t *user; int ret; - DEBUG(2, "ds_read(socket %d)\n", iminor(inode)); + ds_dbg(2, "ds_read(socket %d)\n", iminor(file->f_dentry->d_inode)); if (count < 4) return -EINVAL; @@ -598,7 +814,7 @@ return -EIO; s = user->socket; - if (s->state & SOCKET_DEAD) + if (s->state & DS_SOCKET_DEAD) return -EIO; ret = wait_event_interruptible(s->queue, !queue_empty(user)); @@ -616,7 +832,7 @@ struct pcmcia_bus_socket *s; user_info_t *user; - DEBUG(2, "ds_write(socket %d)\n", iminor(inode)); + ds_dbg(2, "ds_write(socket %d)\n", iminor(file->f_dentry->d_inode)); if (count != 4) return -EINVAL; @@ -628,7 +844,7 @@ return -EIO; s = user->socket; - if (s->state & SOCKET_DEAD) + if (s->state & DS_SOCKET_DEAD) return -EIO; if (s->req_pending) { @@ -650,7 +866,7 @@ struct pcmcia_bus_socket *s; user_info_t *user; - DEBUG(2, "ds_poll(socket %d)\n", iminor(inode)); + ds_dbg(2, "ds_poll(socket %d)\n", iminor(file->f_dentry->d_inode)); user = file->private_data; if (CHECK_USER(user)) @@ -677,14 +893,14 @@ ds_ioctl_arg_t buf; user_info_t *user; - DEBUG(2, "ds_ioctl(socket %d, %#x, %#lx)\n", iminor(inode), cmd, arg); + ds_dbg(2, "ds_ioctl(socket %d, %#x, %#lx)\n", iminor(inode), cmd, arg); user = file->private_data; if (CHECK_USER(user)) return -EIO; s = user->socket; - if (s->state & SOCKET_DEAD) + if (s->state & DS_SOCKET_DEAD) return -EIO; size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT; @@ -697,14 +913,14 @@ if (cmd & IOC_IN) { err = verify_area(VERIFY_READ, (char *)arg, size); if (err) { - DEBUG(3, "ds_ioctl(): verify_read = %d\n", err); + ds_dbg(3, "ds_ioctl(): verify_read = %d\n", err); return err; } } if (cmd & IOC_OUT) { err = verify_area(VERIFY_WRITE, (char *)arg, size); if (err) { - DEBUG(3, "ds_ioctl(): verify_write = %d\n", err); + ds_dbg(3, "ds_ioctl(): verify_write = %d\n", err); return err; } } @@ -748,16 +964,16 @@ ret = pcmcia_validate_cis(s->handle, &buf.cisinfo); break; case DS_SUSPEND_CARD: - ret = pcmcia_suspend_card(s->handle, NULL); + ret = pcmcia_suspend_card(s->parent); break; case DS_RESUME_CARD: - ret = pcmcia_resume_card(s->handle, NULL); + ret = pcmcia_resume_card(s->parent); break; case DS_EJECT_CARD: - ret = pcmcia_eject_card(s->handle, NULL); + ret = pcmcia_eject_card(s->parent); break; case DS_INSERT_CARD: - ret = pcmcia_insert_card(s->handle, NULL); + ret = pcmcia_insert_card(s->parent); break; case DS_ACCESS_CONFIGURATION_REGISTER: if ((buf.conf_reg.Action == CS_WRITE) && !capable(CAP_SYS_ADMIN)) @@ -806,7 +1022,7 @@ } if ((err == 0) && (ret != CS_SUCCESS)) { - DEBUG(2, "ds_ioctl: ret = %d\n", ret); + ds_dbg(2, "ds_ioctl: ret = %d\n", ret); switch (ret) { case CS_BAD_SOCKET: case CS_NO_CARD: err = -ENODEV; break; @@ -916,7 +1132,7 @@ pcmcia_deregister_client(socket->pcmcia->handle); - socket->pcmcia->state |= SOCKET_DEAD; + socket->pcmcia->state |= DS_SOCKET_DEAD; pcmcia_put_bus_socket(socket->pcmcia); socket->pcmcia = NULL; diff -Nru a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c --- a/drivers/pcmcia/i82365.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/i82365.c Sun Mar 14 14:14:50 2004 @@ -32,6 +32,7 @@ ======================================================================*/ #include +#include #include #include #include @@ -66,14 +67,20 @@ #include "ricoh.h" #include "o2micro.h" -#ifdef PCMCIA_DEBUG -static int pc_debug = PCMCIA_DEBUG; -MODULE_PARM(pc_debug, "i"); -#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) +#ifdef DEBUG static const char *version = "i82365.c 1.265 1999/11/10 18:36:21 (David Hinds)"; + +static int pc_debug; + +module_param(pc_debug, int, 0644); + +#define debug(lvl, fmt, arg...) do { \ + if (pc_debug > (lvl)) \ + printk(KERN_DEBUG "i82365: " fmt , ## arg); \ +} while (0) #else -#define DEBUG(n, args...) do { } while (0) +#define debug(lvl, fmt, arg...) do { } while (0) #endif static irqreturn_t i365_count_irq(int, void *, struct pt_regs *); @@ -496,13 +503,13 @@ { i365_get(irq_sock, I365_CSC); irq_hits++; - DEBUG(2, "-> hit on irq %d\n", irq); + debug(2, "-> hit on irq %d\n", irq); return IRQ_HANDLED; } static u_int __init test_irq(u_short sock, int irq) { - DEBUG(2, " testing ISA irq %d\n", irq); + debug(2, " testing ISA irq %d\n", irq); if (request_irq(irq, i365_count_irq, 0, "scan", i365_count_irq) != 0) return 1; irq_hits = 0; irq_sock = sock; @@ -510,7 +517,7 @@ schedule_timeout(HZ/100); if (irq_hits) { free_irq(irq, i365_count_irq); - DEBUG(2, " spurious hit!\n"); + debug(2, " spurious hit!\n"); return 1; } @@ -523,7 +530,7 @@ /* mask all interrupts */ i365_set(sock, I365_CSCINT, 0); - DEBUG(2, " hits = %d\n", irq_hits); + debug(2, " hits = %d\n", irq_hits); return (irq_hits != 1); } @@ -850,7 +857,7 @@ u_long flags = 0; int handled = 0; - DEBUG(4, "i82365: pcic_interrupt(%d)\n", irq); + debug(4, "pcic_interrupt(%d)\n", irq); for (j = 0; j < 20; j++) { active = 0; @@ -874,7 +881,7 @@ events |= (csc & I365_CSC_READY) ? SS_READY : 0; } ISA_UNLOCK(i, flags); - DEBUG(2, "i82365: socket %d event 0x%02x\n", i, events); + debug(2, "socket %d event 0x%02x\n", i, events); if (events) pcmcia_parse_events(&socket[i].socket, events); @@ -886,7 +893,7 @@ if (j == 20) printk(KERN_NOTICE "i82365: infinite loop in interrupt handler\n"); - DEBUG(4, "i82365: interrupt done\n"); + debug(4, "interrupt done\n"); return IRQ_RETVAL(handled); } /* pcic_interrupt */ @@ -928,7 +935,7 @@ } } - DEBUG(1, "i82365: GetStatus(%d) = %#4.4x\n", sock, *value); + debug(1, "GetStatus(%d) = %#4.4x\n", sock, *value); return 0; } /* i365_get_status */ @@ -998,7 +1005,7 @@ state->csc_mask |= (reg & I365_CSC_READY) ? SS_READY : 0; } - DEBUG(1, "i82365: GetSocket(%d) = flags %#3.3x, Vcc %d, Vpp %d, " + debug(1, "GetSocket(%d) = flags %#3.3x, Vcc %d, Vpp %d, " "io_irq %d, csc_mask %#2.2x\n", sock, state->flags, state->Vcc, state->Vpp, state->io_irq, state->csc_mask); return 0; @@ -1011,7 +1018,7 @@ struct i82365_socket *t = &socket[sock]; u_char reg; - DEBUG(1, "i82365: SetSocket(%d, flags %#3.3x, Vcc %d, Vpp %d, " + debug(1, "SetSocket(%d, flags %#3.3x, Vcc %d, Vpp %d, " "io_irq %d, csc_mask %#2.2x)\n", sock, state->flags, state->Vcc, state->Vpp, state->io_irq, state->csc_mask); @@ -1120,7 +1127,7 @@ { u_char map, ioctl; - DEBUG(1, "i82365: SetIOMap(%d, %d, %#2.2x, %d ns, " + debug(1, "SetIOMap(%d, %d, %#2.2x, %d ns, " "%#4.4x-%#4.4x)\n", sock, io->map, io->flags, io->speed, io->start, io->stop); map = io->map; @@ -1150,7 +1157,7 @@ u_short base, i; u_char map; - DEBUG(1, "i82365: SetMemMap(%d, %d, %#2.2x, %d ns, %#5.5lx-%#5.5" + debug(1, "SetMemMap(%d, %d, %#2.2x, %d ns, %#5.5lx-%#5.5" "lx, %#5.5x)\n", sock, mem->map, mem->flags, mem->speed, mem->sys_start, mem->sys_stop, mem->card_start); diff -Nru a/drivers/pcmcia/sa11xx_core.c b/drivers/pcmcia/sa11xx_core.c --- a/drivers/pcmcia/sa11xx_core.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/sa11xx_core.c Sun Mar 14 14:14:50 2004 @@ -35,6 +35,7 @@ */ #include +#include #include #include #include @@ -54,8 +55,19 @@ #include "sa11xx_core.h" #include "sa1100.h" -#ifdef PCMCIA_DEBUG +#ifdef DEBUG static int pc_debug; + +module_param(pc_debug, int, 0644); + +#define debug(skt, lvl, fmt, arg...) do { \ + if (pc_debug > (lvl)) \ + printk(KERN_DEBUG "skt%u: %s: " fmt, \ + (skt)->nr, __func__ , ## arg); \ +} while (0) + +#else +#define debug(skt, lvl, fmt, arg...) do { } while (0) #endif #define to_sa1100_socket(x) container_of(x, struct sa1100_pcmcia_socket, socket) @@ -133,8 +145,8 @@ local_irq_restore(flags); - DEBUG(4, "%s(): sock %u FAST %X BSM %X BSA %X BSIO %X\n", - __FUNCTION__, skt->nr, MECR_FAST_GET(mecr, skt->nr), + debug(skt, 2, "FAST %X BSM %X BSA %X BSIO %X\n", + MECR_FAST_GET(mecr, skt->nr), MECR_BSM_GET(mecr, skt->nr), MECR_BSA_GET(mecr, skt->nr), MECR_BSIO_GET(mecr, skt->nr)); @@ -221,7 +233,7 @@ { struct sa1100_pcmcia_socket *skt = to_sa1100_socket(sock); - DEBUG(2, "%s(): initializing socket %u\n", __FUNCTION__, skt->nr); + debug(skt, 2, "initializing socket\n"); skt->ops->socket_init(skt); return 0; @@ -242,7 +254,7 @@ struct sa1100_pcmcia_socket *skt = to_sa1100_socket(sock); int ret; - DEBUG(2, "%s(): suspending socket %u\n", __FUNCTION__, skt->nr); + debug(skt, 2, "suspending socket\n"); ret = sa1100_pcmcia_config_skt(skt, &dead_socket); if (ret == 0) @@ -260,7 +272,7 @@ { unsigned int events; - DEBUG(4, "%s(): entering PCMCIA monitoring thread\n", __FUNCTION__); + debug(skt, 4, "entering PCMCIA monitoring thread\n"); do { unsigned int status; @@ -273,7 +285,7 @@ skt->status = status; spin_unlock_irqrestore(&status_lock, flags); - DEBUG(2, "events: %s%s%s%s%s%s\n", + debug(skt, 4, "events: %s%s%s%s%s%s\n", events == 0 ? "" : "", events & SS_DETECT ? "DETECT " : "", events & SS_READY ? "READY " : "", @@ -293,7 +305,7 @@ static void sa1100_pcmcia_poll_event(unsigned long dummy) { struct sa1100_pcmcia_socket *skt = (struct sa1100_pcmcia_socket *)dummy; - DEBUG(4, "%s(): polling for events\n", __FUNCTION__); + debug(skt, 4, "polling for events\n"); mod_timer(&skt->poll_timer, jiffies + SA1100_PCMCIA_POLL_PERIOD); @@ -314,7 +326,7 @@ { struct sa1100_pcmcia_socket *skt = dev; - DEBUG(3, "%s(): servicing IRQ %d\n", __FUNCTION__, irq); + debug(skt, 3, "servicing IRQ %d\n", irq); sa1100_check_status(skt); @@ -363,7 +375,7 @@ { struct sa1100_pcmcia_socket *skt = to_sa1100_socket(sock); - DEBUG(2, "%s() for sock %u\n", __FUNCTION__, skt->nr); + debug(skt, 2, "\n"); *state = skt->cs_state; @@ -385,22 +397,19 @@ { struct sa1100_pcmcia_socket *skt = to_sa1100_socket(sock); - DEBUG(2, "%s() for sock %u\n", __FUNCTION__, skt->nr); - - DEBUG(3, "\tmask: %s%s%s%s%s%s\n\tflags: %s%s%s%s%s%s\n", - (state->csc_mask==0)?"":"", + debug(skt, 2, "mask: %s%s%s%s%s%sflags: %s%s%s%s%s%sVcc %d Vpp %d irq %d\n", + (state->csc_mask==0)?" ":"", (state->csc_mask&SS_DETECT)?"DETECT ":"", (state->csc_mask&SS_READY)?"READY ":"", (state->csc_mask&SS_BATDEAD)?"BATDEAD ":"", (state->csc_mask&SS_BATWARN)?"BATWARN ":"", (state->csc_mask&SS_STSCHG)?"STSCHG ":"", - (state->flags==0)?"":"", + (state->flags==0)?" ":"", (state->flags&SS_PWR_AUTO)?"PWR_AUTO ":"", (state->flags&SS_IOCARD)?"IOCARD ":"", (state->flags&SS_RESET)?"RESET ":"", (state->flags&SS_SPKR_ENA)?"SPKR_ENA ":"", - (state->flags&SS_OUTPUT_ENA)?"OUTPUT_ENA ":""); - DEBUG(3, "\tVcc %d Vpp %d irq %d\n", + (state->flags&SS_OUTPUT_ENA)?"OUTPUT_ENA ":"", state->Vcc, state->Vpp, state->io_irq); return sa1100_pcmcia_config_skt(skt, state); @@ -422,11 +431,9 @@ struct sa1100_pcmcia_socket *skt = to_sa1100_socket(sock); unsigned short speed = map->speed; - DEBUG(2, "%s() for sock %u\n", __FUNCTION__, skt->nr); - - DEBUG(3, "\tmap %u speed %u\n\tstart 0x%08x stop 0x%08x\n", + debug(skt, 2, "map %u speed %u start 0x%08x stop 0x%08x\n", map->map, map->speed, map->start, map->stop); - DEBUG(3, "\tflags: %s%s%s%s%s%s%s%s\n", + debug(skt, 2, "flags: %s%s%s%s%s%s%s%s\n", (map->flags==0)?"":"", (map->flags&MAP_ACTIVE)?"ACTIVE ":"", (map->flags&MAP_16BIT)?"16BIT ":"", @@ -479,11 +486,9 @@ struct resource *res; unsigned short speed = map->speed; - DEBUG(2, "%s() for sock %u\n", __FUNCTION__, skt->nr); - - DEBUG(3, "\tmap %u speed %u card_start %08x\n", + debug(skt, 2, "map %u speed %u card_start %08x\n", map->map, map->speed, map->card_start); - DEBUG(3, "\tflags: %s%s%s%s%s%s%s%s\n", + debug(skt, 2, "flags: %s%s%s%s%s%s%s%s\n", (map->flags==0)?"":"", (map->flags&MAP_ACTIVE)?"ACTIVE ":"", (map->flags&MAP_16BIT)?"16BIT ":"", @@ -920,23 +925,13 @@ switch (val) { case CPUFREQ_PRECHANGE: - if (freqs->new > freqs->old) { - DEBUG(2, "%s(): new frequency %u.%uMHz > %u.%uMHz, " - "pre-updating\n", __FUNCTION__, - freqs->new / 1000, (freqs->new / 100) % 10, - freqs->old / 1000, (freqs->old / 100) % 10); + if (freqs->new > freqs->old) sa1100_pcmcia_update_mecr(freqs->new); - } break; case CPUFREQ_POSTCHANGE: - if (freqs->new < freqs->old) { - DEBUG(2, "%s(): new frequency %u.%uMHz < %u.%uMHz, " - "post-updating\n", __FUNCTION__, - freqs->new / 1000, (freqs->new / 100) % 10, - freqs->old / 1000, (freqs->old / 100) % 10); + if (freqs->new < freqs->old) sa1100_pcmcia_update_mecr(freqs->new); - } break; } diff -Nru a/drivers/pcmcia/tcic.c b/drivers/pcmcia/tcic.c --- a/drivers/pcmcia/tcic.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/tcic.c Sun Mar 14 14:14:50 2004 @@ -32,6 +32,7 @@ ======================================================================*/ #include +#include #include #include #include @@ -55,14 +56,20 @@ #include #include "tcic.h" -#ifdef PCMCIA_DEBUG -static int pc_debug = PCMCIA_DEBUG; +#ifdef DEBUG +static int pc_debug; + +module_param(pc_debug, int, 0644); MODULE_PARM(pc_debug, "i"); static const char *version = "tcic.c 1.111 2000/02/15 04:13:12 (David Hinds)"; -#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) + +#define debug(lvl, fmt, arg...) do { \ + if (pc_debug > (lvl)) \ + printk(KERN_DEBUG "tcic: " fmt , ## arg); \ +} while (0) #else -#define DEBUG(n, args...) +#define debug(lvl, fmt, arg...) do { } while (0) #endif MODULE_AUTHOR("David Hinds "); @@ -133,7 +140,7 @@ to map to irq 11, but is coded as 0 or 1 in the irq registers. */ #define TCIC_IRQ(x) ((x) ? (((x) == 11) ? 1 : (x)) : 15) -#ifdef PCMCIA_DEBUG_X +#ifdef DEBUG_X static u_char tcic_getb(u_char reg) { u_char val = inb(tcic_base+reg); @@ -168,7 +175,7 @@ static void tcic_setl(u_char reg, u_int data) { -#ifdef PCMCIA_DEBUG_X +#ifdef DEBUG_X printk(KERN_DEBUG "tcic_setl(%#x, %#lx)\n", tcic_base+reg, data); #endif outw(data & 0xffff, tcic_base+reg); @@ -573,7 +580,7 @@ } else active = 1; - DEBUG(2, "tcic: tcic_interrupt()\n"); + debug(2, "tcic_interrupt()\n"); for (i = 0; i < sockets; i++) { psock = socket_table[i].psock; @@ -610,13 +617,13 @@ } active = 0; - DEBUG(2, "tcic: interrupt done\n"); + debug(2, "interrupt done\n"); return IRQ_HANDLED; } /* tcic_interrupt */ static void tcic_timer(u_long data) { - DEBUG(2, "tcic: tcic_timer()\n"); + debug(2, "tcic_timer()\n"); tcic_timer_pending = 0; tcic_interrupt(0, NULL, NULL); } /* tcic_timer */ @@ -643,7 +650,7 @@ reg = tcic_getb(TCIC_PWR); if (reg & (TCIC_PWR_VCC(psock)|TCIC_PWR_VPP(psock))) *value |= SS_POWERON; - DEBUG(1, "tcic: GetStatus(%d) = %#2.2x\n", psock, *value); + debug(1, "GetStatus(%d) = %#2.2x\n", psock, *value); return 0; } /* tcic_get_status */ @@ -694,7 +701,7 @@ state->csc_mask |= (scf2 & TCIC_SCF2_MRDY) ? 0 : SS_READY; } - DEBUG(1, "tcic: GetSocket(%d) = flags %#3.3x, Vcc %d, Vpp %d, " + debug(1, "GetSocket(%d) = flags %#3.3x, Vcc %d, Vpp %d, " "io_irq %d, csc_mask %#2.2x\n", psock, state->flags, state->Vcc, state->Vpp, state->io_irq, state->csc_mask); return 0; @@ -708,7 +715,7 @@ u_char reg; u_short scf1, scf2; - DEBUG(1, "tcic: SetSocket(%d, flags %#3.3x, Vcc %d, Vpp %d, " + debug(1, "SetSocket(%d, flags %#3.3x, Vcc %d, Vpp %d, " "io_irq %d, csc_mask %#2.2x)\n", psock, state->flags, state->Vcc, state->Vpp, state->io_irq, state->csc_mask); tcic_setw(TCIC_ADDR+2, (psock << TCIC_SS_SHFT) | TCIC_ADR2_INDREG); @@ -783,7 +790,7 @@ u_int addr; u_short base, len, ioctl; - DEBUG(1, "tcic: SetIOMap(%d, %d, %#2.2x, %d ns, " + debug(1, "SetIOMap(%d, %d, %#2.2x, %d ns, " "%#4.4x-%#4.4x)\n", psock, io->map, io->flags, io->speed, io->start, io->stop); if ((io->map > 1) || (io->start > 0xffff) || (io->stop > 0xffff) || @@ -820,7 +827,7 @@ u_short addr, ctl; u_long base, len, mmap; - DEBUG(1, "tcic: SetMemMap(%d, %d, %#2.2x, %d ns, " + debug(1, "SetMemMap(%d, %d, %#2.2x, %d ns, " "%#5.5lx-%#5.5lx, %#5.5x)\n", psock, mem->map, mem->flags, mem->speed, mem->sys_start, mem->sys_stop, mem->card_start); if ((mem->map > 3) || (mem->card_start > 0x3ffffff) || diff -Nru a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c --- a/drivers/pcmcia/yenta_socket.c Sun Mar 14 14:14:50 2004 +++ b/drivers/pcmcia/yenta_socket.c Sun Mar 14 14:14:50 2004 @@ -30,9 +30,9 @@ #if 0 -#define DEBUG(x,args...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ##args) +#define debug(x,args...) printk(KERN_DEBUG "%s: " x, __func__ , ##args) #else -#define DEBUG(x,args...) +#define debug(x,args...) #endif /* Don't ask.. */ @@ -47,13 +47,13 @@ static inline u32 cb_readl(struct yenta_socket *socket, unsigned reg) { u32 val = readl(socket->base + reg); - DEBUG("%p %04x %08x\n", socket, reg, val); + debug("%p %04x %08x\n", socket, reg, val); return val; } static inline void cb_writel(struct yenta_socket *socket, unsigned reg, u32 val) { - DEBUG("%p %04x %08x\n", socket, reg, val); + debug("%p %04x %08x\n", socket, reg, val); writel(val, socket->base + reg); } @@ -61,7 +61,7 @@ { u8 val; pci_read_config_byte(socket->dev, offset, &val); - DEBUG("%p %04x %02x\n", socket, offset, val); + debug("%p %04x %02x\n", socket, offset, val); return val; } @@ -69,7 +69,7 @@ { u16 val; pci_read_config_word(socket->dev, offset, &val); - DEBUG("%p %04x %04x\n", socket, offset, val); + debug("%p %04x %04x\n", socket, offset, val); return val; } @@ -77,32 +77,32 @@ { u32 val; pci_read_config_dword(socket->dev, offset, &val); - DEBUG("%p %04x %08x\n", socket, offset, val); + debug("%p %04x %08x\n", socket, offset, val); return val; } static inline void config_writeb(struct yenta_socket *socket, unsigned offset, u8 val) { - DEBUG("%p %04x %02x\n", socket, offset, val); + debug("%p %04x %02x\n", socket, offset, val); pci_write_config_byte(socket->dev, offset, val); } static inline void config_writew(struct yenta_socket *socket, unsigned offset, u16 val) { - DEBUG("%p %04x %04x\n", socket, offset, val); + debug("%p %04x %04x\n", socket, offset, val); pci_write_config_word(socket->dev, offset, val); } static inline void config_writel(struct yenta_socket *socket, unsigned offset, u32 val) { - DEBUG("%p %04x %08x\n", socket, offset, val); + debug("%p %04x %08x\n", socket, offset, val); pci_write_config_dword(socket->dev, offset, val); } static inline u8 exca_readb(struct yenta_socket *socket, unsigned reg) { u8 val = readb(socket->base + 0x800 + reg); - DEBUG("%p %04x %02x\n", socket, reg, val); + debug("%p %04x %02x\n", socket, reg, val); return val; } @@ -111,19 +111,19 @@ u16 val; val = readb(socket->base + 0x800 + reg); val |= readb(socket->base + 0x800 + reg + 1) << 8; - DEBUG("%p %04x %04x\n", socket, reg, val); + debug("%p %04x %04x\n", socket, reg, val); return val; } static inline void exca_writeb(struct yenta_socket *socket, unsigned reg, u8 val) { - DEBUG("%p %04x %02x\n", socket, reg, val); + debug("%p %04x %02x\n", socket, reg, val); writeb(val, socket->base + 0x800 + reg); } static void exca_writew(struct yenta_socket *socket, unsigned reg, u16 val) { - DEBUG("%p %04x %04x\n", socket, reg, val); + debug("%p %04x %04x\n", socket, reg, val); writeb(val, socket->base + 0x800 + reg); writeb(val >> 8, socket->base + 0x800 + reg + 1); } diff -Nru a/include/pcmcia/cs.h b/include/pcmcia/cs.h --- a/include/pcmcia/cs.h Sun Mar 14 14:14:50 2004 +++ b/include/pcmcia/cs.h Sun Mar 14 14:14:50 2004 @@ -422,8 +422,6 @@ }; int pcmcia_access_configuration_register(client_handle_t handle, conf_reg_t *reg); -int pcmcia_bind_device(bind_req_t *req); -int pcmcia_bind_mtd(mtd_bind_t *req); int pcmcia_deregister_client(client_handle_t handle); int pcmcia_get_configuration_info(client_handle_t handle, config_info_t *config); int pcmcia_get_card_services_info(servinfo_t *info); @@ -447,10 +445,10 @@ int pcmcia_request_irq(client_handle_t handle, irq_req_t *req); int pcmcia_request_window(client_handle_t *handle, win_req_t *req, window_handle_t *wh); int pcmcia_reset_card(client_handle_t handle, client_req_t *req); -int pcmcia_suspend_card(client_handle_t handle, client_req_t *req); -int pcmcia_resume_card(client_handle_t handle, client_req_t *req); -int pcmcia_eject_card(client_handle_t handle, client_req_t *req); -int pcmcia_insert_card(client_handle_t handle, client_req_t *req); +int pcmcia_suspend_card(struct pcmcia_socket *skt); +int pcmcia_resume_card(struct pcmcia_socket *skt); +int pcmcia_eject_card(struct pcmcia_socket *skt); +int pcmcia_insert_card(struct pcmcia_socket *skt); int pcmcia_set_event_mask(client_handle_t handle, eventmask_t *mask); int pcmcia_report_error(client_handle_t handle, error_info_t *err); struct pci_bus *pcmcia_lookup_bus(client_handle_t handle);