From: Andres Salomon This wraps up drivers/net/wireless. Still remaining: - sound/pcmcia/vx - drivers/{bluetooth,isdn,parport,telephony} - drivers/mtd/maps - drivers/scsi/pcmcia - drivers/char/pcmcia/synclink_cs.c drivers/net/wireless/airo_cs.c | 52 +++++++++++++++++------------------ drivers/net/wireless/atmel_cs.c | 56 +++++++++++++++++++------------------- drivers/net/wireless/netwave_cs.c | 37 ++++++++++++------------- drivers/net/wireless/orinoco_cs.c | 54 +++++++++++++++++------------------- drivers/net/wireless/ray_cs.c | 32 ++++++++++----------- drivers/net/wireless/wl3501_cs.c | 31 ++++++++++----------- 6 files changed, 129 insertions(+), 133 deletions(-) diff -puN drivers/net/wireless/airo_cs.c~remove-CardServices-from-drivers-net-wireless drivers/net/wireless/airo_cs.c --- 25/drivers/net/wireless/airo_cs.c~remove-CardServices-from-drivers-net-wireless 2003-12-23 20:21:58.000000000 -0800 +++ 25-akpm/drivers/net/wireless/airo_cs.c 2003-12-23 20:21:58.000000000 -0800 @@ -233,7 +233,7 @@ static dev_link_t *airo_attach(void) client_reg.event_handler = &airo_event; client_reg.Version = 0x0210; client_reg.event_callback_args.client_data = link; - ret = CardServices(RegisterClient, &link->handle, &client_reg); + ret = pcmcia_register_client(&link->handle, &client_reg); if (ret != 0) { cs_error(link->handle, RegisterClient, ret); airo_detach(link); @@ -277,7 +277,7 @@ static void airo_detach(dev_link_t *link /* Break the link with Card Services */ if (link->handle) - CardServices(DeregisterClient, link->handle); + pcmcia_deregister_client(link->handle); @@ -298,11 +298,8 @@ static void airo_detach(dev_link_t *link ======================================================================*/ -#define CS_CHECK(fn, args...) \ -while ((last_ret=CardServices(last_fn=(fn),args))!=0) goto cs_failed - -#define CFG_CHECK(fn, args...) \ -if (CardServices(fn, args) != 0) goto next_entry +#define CS_CHECK(fn, ret) \ +do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) static void airo_config(dev_link_t *link) { @@ -329,9 +326,9 @@ static void airo_config(dev_link_t *link tuple.TupleData = buf; tuple.TupleDataMax = sizeof(buf); tuple.TupleOffset = 0; - CS_CHECK(GetFirstTuple, handle, &tuple); - CS_CHECK(GetTupleData, handle, &tuple); - CS_CHECK(ParseTuple, handle, &tuple, &parse); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); link->conf.ConfigBase = parse.config.base; link->conf.Present = parse.config.rmask[0]; @@ -351,12 +348,13 @@ static void airo_config(dev_link_t *link will only use the CIS to fill in implementation-defined details. */ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; - CS_CHECK(GetFirstTuple, handle, &tuple); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); while (1) { cistpl_cftable_entry_t dflt = { 0 }; cistpl_cftable_entry_t *cfg = &(parse.cftable_entry); - CFG_CHECK(GetTupleData, handle, &tuple); - CFG_CHECK(ParseTuple, handle, &tuple, &parse); + if (pcmcia_get_tuple_data(handle, &tuple) != 0 || + pcmcia_parse_tuple(handle, &tuple, &parse) != 0) + goto next_entry; if (cfg->flags & CISTPL_CFTABLE_DEFAULT) dflt = *cfg; if (cfg->index == 0) goto next_entry; @@ -405,7 +403,8 @@ static void airo_config(dev_link_t *link } /* This reserves IO space but doesn't actually enable it */ - CFG_CHECK(RequestIO, link->handle, &link->io); + if (pcmcia_request_io(link->handle, &link->io) != 0) + goto next_entry; /* Now set up a common memory window, if needed. There is room @@ -425,16 +424,17 @@ static void airo_config(dev_link_t *link req.Base = mem->win[0].host_addr; req.Size = mem->win[0].len; req.AccessSpeed = 0; - link->win = (window_handle_t)link->handle; - CFG_CHECK(RequestWindow, &link->win, &req); + if (pcmcia_request_window(&link->handle, &req, &link->win) != 0) + goto next_entry; map.Page = 0; map.CardOffset = mem->win[0].card_addr; - CFG_CHECK(MapMemPage, link->win, &map); + if (pcmcia_map_mem_page(link->win, &map) != 0) + goto next_entry; } /* If we got this far, we're cool! */ break; next_entry: - CS_CHECK(GetNextTuple, handle, &tuple); + CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple)); } /* @@ -443,14 +443,14 @@ static void airo_config(dev_link_t *link irq structure is initialized. */ if (link->conf.Attributes & CONF_ENABLE_IRQ) - CS_CHECK(RequestIRQ, link->handle, &link->irq); + CS_CHECK(RequestIRQ, pcmcia_request_irq(link->handle, &link->irq)); /* This actually configures the PCMCIA socket -- setting up the I/O windows and the interrupt mapping, and putting the card and host interface into "Memory and IO" mode. */ - CS_CHECK(RequestConfiguration, link->handle, &link->conf); + CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link->handle, &link->conf)); ((local_info_t*)link->priv)->eth_dev = init_airo_card( link->irq.AssignedIRQ, link->io.BasePort1, 1 ); @@ -526,12 +526,12 @@ static void airo_release(dev_link_t *lin /* Don't bother checking to see if these succeed or not */ if (link->win) - CardServices(ReleaseWindow, link->win); - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_window(link->win); + pcmcia_release_configuration(link->handle); if (link->io.NumPorts1) - CardServices(ReleaseIO, link->handle, &link->io); + pcmcia_release_io(link->handle, &link->io); if (link->irq.AssignedIRQ) - CardServices(ReleaseIRQ, link->handle, &link->irq); + pcmcia_release_irq(link->handle, &link->irq); link->state &= ~DEV_CONFIG; if (link->state & DEV_STALE_CONFIG) @@ -576,7 +576,7 @@ static int airo_event(event_t event, int case CS_EVENT_RESET_PHYSICAL: if (link->state & DEV_CONFIG) { netif_device_detach(local->eth_dev); - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_configuration(link->handle); } break; case CS_EVENT_PM_RESUME: @@ -584,7 +584,7 @@ static int airo_event(event_t event, int /* Fall through... */ case CS_EVENT_CARD_RESET: if (link->state & DEV_CONFIG) { - CardServices(RequestConfiguration, link->handle, &link->conf); + pcmcia_request_configuration(link->handle, &link->conf); reset_airo_card(local->eth_dev); netif_device_attach(local->eth_dev); } diff -puN drivers/net/wireless/atmel_cs.c~remove-CardServices-from-drivers-net-wireless drivers/net/wireless/atmel_cs.c --- 25/drivers/net/wireless/atmel_cs.c~remove-CardServices-from-drivers-net-wireless 2003-12-23 20:21:58.000000000 -0800 +++ 25-akpm/drivers/net/wireless/atmel_cs.c 2003-12-23 20:21:58.000000000 -0800 @@ -246,7 +246,7 @@ static dev_link_t *atmel_attach(void) client_reg.event_handler = &atmel_event; client_reg.Version = 0x0210; client_reg.event_callback_args.client_data = link; - ret = CardServices(RegisterClient, &link->handle, &client_reg); + ret = pcmcia_register_client(&link->handle, &client_reg); if (ret != 0) { cs_error(link->handle, RegisterClient, ret); atmel_detach(link); @@ -282,7 +282,7 @@ static void atmel_detach(dev_link_t *lin /* Break the link with Card Services */ if (link->handle) - CardServices(DeregisterClient, link->handle); + pcmcia_deregister_client(link->handle); /* Unlink device structure, free pieces */ *linkp = link->next; @@ -299,11 +299,8 @@ static void atmel_detach(dev_link_t *lin ======================================================================*/ -#define CS_CHECK(fn, args...) \ -while ((last_ret=CardServices(last_fn=(fn),args))!=0) goto cs_failed - -#define CFG_CHECK(fn, args...) \ -if (CardServices(fn, args) != 0) goto next_entry +#define CS_CHECK(fn, ret) \ +do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) /* Call-back function to interrogate PCMCIA-specific information about the current existance of the card */ @@ -372,11 +369,11 @@ static void atmel_config(dev_link_t *lin tuple.TupleOffset = 0; tuple.DesiredTuple = CISTPL_MANFID; - if (CardServices(GetFirstTuple, handle, &tuple) == 0) { + if (pcmcia_get_first_tuple(handle, &tuple) == 0) { int i; cistpl_manfid_t *manfid; - CS_CHECK(GetTupleData, handle, &tuple); - CS_CHECK(ParseTuple, handle, &tuple, &parse); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); manfid = &(parse.manfid); for (i = 0; i < sizeof(card_table)/sizeof(card_table[0]); i++) { if (!card_table[i].ver1 && @@ -389,11 +386,11 @@ static void atmel_config(dev_link_t *lin } tuple.DesiredTuple = CISTPL_VERS_1; - if (!done && (CardServices(GetFirstTuple, handle, &tuple) == 0)) { + if (!done && (pcmcia_get_first_tuple(handle, &tuple) == 0)) { int i, j, k; cistpl_vers_1_t *ver1; - CS_CHECK(GetTupleData, handle, &tuple); - CS_CHECK(ParseTuple, handle, &tuple, &parse); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); ver1 = &(parse.version_1); for (i = 0; i < sizeof(card_table)/sizeof(card_table[0]); i++) { @@ -429,9 +426,9 @@ static void atmel_config(dev_link_t *lin registers. */ tuple.DesiredTuple = CISTPL_CONFIG; - CS_CHECK(GetFirstTuple, handle, &tuple); - CS_CHECK(GetTupleData, handle, &tuple); - CS_CHECK(ParseTuple, handle, &tuple, &parse); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); link->conf.ConfigBase = parse.config.base; link->conf.Present = parse.config.rmask[0]; @@ -451,12 +448,13 @@ static void atmel_config(dev_link_t *lin will only use the CIS to fill in implementation-defined details. */ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; - CS_CHECK(GetFirstTuple, handle, &tuple); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); while (1) { cistpl_cftable_entry_t dflt = { 0 }; cistpl_cftable_entry_t *cfg = &(parse.cftable_entry); - CFG_CHECK(GetTupleData, handle, &tuple); - CFG_CHECK(ParseTuple, handle, &tuple, &parse); + if (pcmcia_get_tuple_data(handle, &tuple) != 0 || + pcmcia_parse_tuple(handle, &tuple, &parse) != 0) + goto next_entry; if (cfg->flags & CISTPL_CFTABLE_DEFAULT) dflt = *cfg; if (cfg->index == 0) goto next_entry; @@ -505,12 +503,14 @@ static void atmel_config(dev_link_t *lin } /* This reserves IO space but doesn't actually enable it */ - CFG_CHECK(RequestIO, link->handle, &link->io); + if (pcmcia_request_io(link->handle, &link->io) != 0) + goto next_entry; + /* If we got this far, we're cool! */ break; next_entry: - CS_CHECK(GetNextTuple, handle, &tuple); + CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple)); } /* @@ -519,14 +519,14 @@ static void atmel_config(dev_link_t *lin irq structure is initialized. */ if (link->conf.Attributes & CONF_ENABLE_IRQ) - CS_CHECK(RequestIRQ, link->handle, &link->irq); + CS_CHECK(RequestIRQ, pcmcia_request_irq(link->handle, &link->irq)); /* This actually configures the PCMCIA socket -- setting up the I/O windows and the interrupt mapping, and putting the card and host interface into "Memory and IO" mode. */ - CS_CHECK(RequestConfiguration, link->handle, &link->conf); + CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link->handle, &link->conf)); if (link->irq.AssignedIRQ == 0) { printk(KERN_ALERT @@ -602,11 +602,11 @@ static void atmel_release(dev_link_t *li ((local_info_t*)link->priv)->eth_dev = 0; /* Don't bother checking to see if these succeed or not */ - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_configuration(link->handle); if (link->io.NumPorts1) - CardServices(ReleaseIO, link->handle, &link->io); + pcmcia_release_io(link->handle, &link->io); if (link->irq.AssignedIRQ) - CardServices(ReleaseIRQ, link->handle, &link->irq); + pcmcia_release_irq(link->handle, &link->irq); link->state &= ~DEV_CONFIG; } @@ -648,7 +648,7 @@ static int atmel_event(event_t event, in case CS_EVENT_RESET_PHYSICAL: if (link->state & DEV_CONFIG) { netif_device_detach(local->eth_dev); - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_configuration(link->handle); } break; case CS_EVENT_PM_RESUME: @@ -656,7 +656,7 @@ static int atmel_event(event_t event, in /* Fall through... */ case CS_EVENT_CARD_RESET: if (link->state & DEV_CONFIG) { - CardServices(RequestConfiguration, link->handle, &link->conf); + pcmcia_request_configuration(link->handle, &link->conf); reset_atmel_card(local->eth_dev); netif_device_attach(local->eth_dev); } diff -puN drivers/net/wireless/netwave_cs.c~remove-CardServices-from-drivers-net-wireless drivers/net/wireless/netwave_cs.c --- 25/drivers/net/wireless/netwave_cs.c~remove-CardServices-from-drivers-net-wireless 2003-12-23 20:21:58.000000000 -0800 +++ 25-akpm/drivers/net/wireless/netwave_cs.c 2003-12-23 20:21:58.000000000 -0800 @@ -513,7 +513,7 @@ static dev_link_t *netwave_attach(void) client_reg.event_handler = &netwave_event; client_reg.Version = 0x0210; client_reg.event_callback_args.client_data = link; - ret = CardServices(RegisterClient, &link->handle, &client_reg); + ret = pcmcia_register_client(&link->handle, &client_reg); if (ret != 0) { cs_error(link->handle, RegisterClient, ret); netwave_detach(link); @@ -555,7 +555,7 @@ static void netwave_detach(dev_link_t *l /* Break the link with Card Services */ if (link->handle) - CardServices(DeregisterClient, link->handle); + pcmcia_deregister_client(link->handle); /* Locate device structure */ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) @@ -998,8 +998,8 @@ static int netwave_ioctl(struct net_devi * */ -#define CS_CHECK(fn, args...) \ -while ((last_ret=CardServices(last_fn=(fn), args))!=0) goto cs_failed +#define CS_CHECK(fn, ret) \ +do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) static void netwave_pcmcia_config(dev_link_t *link) { client_handle_t handle = link->handle; @@ -1024,9 +1024,9 @@ static void netwave_pcmcia_config(dev_li tuple.TupleDataMax = 64; tuple.TupleOffset = 0; tuple.DesiredTuple = CISTPL_CONFIG; - CS_CHECK(GetFirstTuple, handle, &tuple); - CS_CHECK(GetTupleData, handle, &tuple); - CS_CHECK(ParseTuple, handle, &tuple, &parse); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); link->conf.ConfigBase = parse.config.base; link->conf.Present = parse.config.rmask[0]; @@ -1040,7 +1040,7 @@ static void netwave_pcmcia_config(dev_li */ for (i = j = 0x0; j < 0x400; j += 0x20) { link->io.BasePort1 = j ^ 0x300; - i = CardServices(RequestIO, link->handle, &link->io); + i = pcmcia_request_io(link->handle, &link->io); if (i == CS_SUCCESS) break; } if (i != CS_SUCCESS) { @@ -1052,13 +1052,13 @@ static void netwave_pcmcia_config(dev_li * Now allocate an interrupt line. Note that this does not * actually assign a handler to the interrupt. */ - CS_CHECK(RequestIRQ, handle, &link->irq); + CS_CHECK(RequestIRQ, pcmcia_request_irq(handle, &link->irq)); /* * This actually configures the PCMCIA socket -- setting up * the I/O windows and the interrupt mapping. */ - CS_CHECK(RequestConfiguration, handle, &link->conf); + CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf)); /* * Allocate a 32K memory window. Note that the dev_link_t @@ -1071,10 +1071,9 @@ static void netwave_pcmcia_config(dev_li req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_CM|WIN_ENABLE; req.Base = 0; req.Size = 0x8000; req.AccessSpeed = mem_speed; - link->win = (window_handle_t)link->handle; - CS_CHECK(RequestWindow, &link->win, &req); + CS_CHECK(RequestWindow, pcmcia_request_window(&link->handle, &req, &link->win)); mem.CardOffset = 0x20000; mem.Page = 0; - CS_CHECK(MapMemPage, link->win, &mem); + CS_CHECK(MapMemPage, pcmcia_map_mem_page(link->win, &mem)); /* Store base address of the common window frame */ ramBase = ioremap(req.Base, 0x8000); @@ -1145,11 +1144,11 @@ static void netwave_release(dev_link_t * /* Don't bother checking to see if these succeed or not */ if (link->win) { iounmap(priv->ramBase); - CardServices(ReleaseWindow, link->win); + pcmcia_release_window(link->win); } - CardServices(ReleaseConfiguration, link->handle); - CardServices(ReleaseIO, link->handle, &link->io); - CardServices(ReleaseIRQ, link->handle, &link->irq); + pcmcia_release_configuration(link->handle); + pcmcia_release_io(link->handle, &link->io); + pcmcia_release_irq(link->handle, &link->irq); link->state &= ~DEV_CONFIG; @@ -1201,7 +1200,7 @@ static int netwave_event(event_t event, if (link->state & DEV_CONFIG) { if (link->open) netif_device_detach(dev); - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_configuration(link->handle); } break; case CS_EVENT_PM_RESUME: @@ -1209,7 +1208,7 @@ static int netwave_event(event_t event, /* Fall through... */ case CS_EVENT_CARD_RESET: if (link->state & DEV_CONFIG) { - CardServices(RequestConfiguration, link->handle, &link->conf); + pcmcia_request_configuration(link->handle, &link->conf); if (link->open) { netwave_reset(dev); netif_device_attach(dev); diff -puN drivers/net/wireless/orinoco_cs.c~remove-CardServices-from-drivers-net-wireless drivers/net/wireless/orinoco_cs.c --- 25/drivers/net/wireless/orinoco_cs.c~remove-CardServices-from-drivers-net-wireless 2003-12-23 20:21:58.000000000 -0800 +++ 25-akpm/drivers/net/wireless/orinoco_cs.c 2003-12-23 20:21:58.000000000 -0800 @@ -131,7 +131,7 @@ orinoco_cs_hard_reset(struct orinoco_pri /* We need atomic ops here, because we're not holding the lock */ set_bit(0, &card->hard_reset_in_progress); - err = CardServices(ResetCard, link->handle, NULL); + err = pcmcia_reset_card(link->handle, NULL); if (err) return err; @@ -150,7 +150,7 @@ static void orinoco_cs_error(client_handle_t handle, int func, int ret) { error_info_t err = { func, ret }; - CardServices(ReportError, handle, &err); + pcmcia_report_error(handle, &err); } /* @@ -214,7 +214,7 @@ orinoco_cs_attach(void) client_reg.Version = 0x0210; /* FIXME: what does this mean? */ client_reg.event_callback_args.client_data = link; - ret = CardServices(RegisterClient, &link->handle, &client_reg); + ret = pcmcia_register_client(&link->handle, &client_reg); if (ret != CS_SUCCESS) { orinoco_cs_error(link->handle, RegisterClient, ret); orinoco_cs_detach(link); @@ -250,7 +250,7 @@ orinoco_cs_detach(dev_link_t * link) /* Break the link with Card Services */ if (link->handle) - CardServices(DeregisterClient, link->handle); + pcmcia_deregister_client(link->handle); /* Unlink device structure, and free it */ *linkp = link->next; @@ -269,11 +269,8 @@ orinoco_cs_detach(dev_link_t * link) * device available to the system. */ -#define CS_CHECK(fn, args...) \ - while ((last_ret=CardServices(last_fn=(fn),args))!=0) goto cs_failed - -#define CFG_CHECK(fn, args...) \ - if (CardServices(fn, args) != 0) goto next_entry +#define CS_CHECK(fn, ret) \ +do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) static void orinoco_cs_config(dev_link_t *link) @@ -290,7 +287,7 @@ orinoco_cs_config(dev_link_t *link) tuple_t tuple; cisparse_t parse; - CS_CHECK(ValidateCIS, handle, &info); + CS_CHECK(ValidateCIS, pcmcia_validate_cis(handle, &info)); /* * This reads the card's CONFIG tuple to find its @@ -301,9 +298,9 @@ orinoco_cs_config(dev_link_t *link) tuple.TupleData = buf; tuple.TupleDataMax = sizeof(buf); tuple.TupleOffset = 0; - CS_CHECK(GetFirstTuple, handle, &tuple); - CS_CHECK(GetTupleData, handle, &tuple); - CS_CHECK(ParseTuple, handle, &tuple, &parse); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); link->conf.ConfigBase = parse.config.base; link->conf.Present = parse.config.rmask[0]; @@ -311,7 +308,7 @@ orinoco_cs_config(dev_link_t *link) link->state |= DEV_CONFIG; /* Look up the current Vcc */ - CS_CHECK(GetConfigurationInfo, handle, &conf); + CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf)); link->conf.Vcc = conf.Vcc; /* @@ -329,13 +326,14 @@ orinoco_cs_config(dev_link_t *link) * implementation-defined details. */ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; - CS_CHECK(GetFirstTuple, handle, &tuple); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); while (1) { cistpl_cftable_entry_t *cfg = &(parse.cftable_entry); cistpl_cftable_entry_t dflt = { .index = 0 }; - CFG_CHECK(GetTupleData, handle, &tuple); - CFG_CHECK(ParseTuple, handle, &tuple, &parse); + if (pcmcia_get_tuple_data(handle, &tuple) != 0 || + pcmcia_parse_tuple(handle, &tuple, &parse) != 0) + goto next_entry; if (cfg->flags & CISTPL_CFTABLE_DEFAULT) dflt = *cfg; @@ -400,7 +398,8 @@ orinoco_cs_config(dev_link_t *link) } /* This reserves IO space but doesn't actually enable it */ - CFG_CHECK(RequestIO, link->handle, &link->io); + if (pcmcia_request_io(link->handle, &link->io) != 0) + goto next_entry; } @@ -410,8 +409,8 @@ orinoco_cs_config(dev_link_t *link) next_entry: if (link->io.NumPorts1) - CardServices(ReleaseIO, link->handle, &link->io); - last_ret = CardServices(GetNextTuple, handle, &tuple); + pcmcia_release_io(link->handle, &link->io); + last_ret = pcmcia_get_next_tuple(handle, &tuple); if (last_ret == CS_NO_MORE_ITEMS) { printk(KERN_ERR "GetNextTuple(). No matching CIS configuration, " "maybe you need the ignore_cis_vcc=1 parameter.\n"); @@ -438,7 +437,7 @@ orinoco_cs_config(dev_link_t *link) link->irq.Handler = orinoco_interrupt; link->irq.Instance = dev; - CS_CHECK(RequestIRQ, link->handle, &link->irq); + CS_CHECK(RequestIRQ, pcmcia_request_irq(link->handle, &link->irq)); } /* We initialize the hermes structure before completing PCMCIA @@ -452,7 +451,7 @@ orinoco_cs_config(dev_link_t *link) * the I/O windows and the interrupt mapping, and putting the * card and host interface into "Memory and IO" mode. */ - CS_CHECK(RequestConfiguration, link->handle, &link->conf); + CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link->handle, &link->conf)); /* Ok, we have the configuration, prepare to register the netdev */ dev->base_addr = link->io.BasePort1; @@ -521,11 +520,11 @@ orinoco_cs_release(dev_link_t *link) spin_unlock_irqrestore(&priv->lock, flags); /* Don't bother checking to see if these succeed or not */ - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_configuration(link->handle); if (link->io.NumPorts1) - CardServices(ReleaseIO, link->handle, &link->io); + pcmcia_release_io(link->handle, &link->io); if (link->irq.AssignedIRQ) - CardServices(ReleaseIRQ, link->handle, &link->irq); + pcmcia_release_irq(link->handle, &link->irq); link->state &= ~DEV_CONFIG; } /* orinoco_cs_release */ @@ -587,7 +586,7 @@ orinoco_cs_event(event_t event, int prio spin_unlock_irqrestore(&priv->lock, flags); } - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_configuration(link->handle); } break; @@ -598,8 +597,7 @@ orinoco_cs_event(event_t event, int prio if (link->state & DEV_CONFIG) { /* FIXME: should we double check that this is * the same card as we had before */ - CardServices(RequestConfiguration, link->handle, - &link->conf); + pcmcia_request_configuration(link->handle, &link->conf); if (! test_bit(0, &card->hard_reset_in_progress)) { err = orinoco_reinit_firmware(dev); diff -puN drivers/net/wireless/ray_cs.c~remove-CardServices-from-drivers-net-wireless drivers/net/wireless/ray_cs.c --- 25/drivers/net/wireless/ray_cs.c~remove-CardServices-from-drivers-net-wireless 2003-12-23 20:21:58.000000000 -0800 +++ 25-akpm/drivers/net/wireless/ray_cs.c 2003-12-23 20:21:58.000000000 -0800 @@ -413,7 +413,7 @@ static dev_link_t *ray_attach(void) client_reg.Version = 0x0210; client_reg.event_callback_args.client_data = link; - DEBUG(2,"ray_cs ray_attach calling CardServices(RegisterClient...)\n"); + DEBUG(2,"ray_cs ray_attach calling pcmcia_register_client(...)\n"); init_timer(&local->timer); @@ -479,8 +479,8 @@ static void ray_detach(dev_link_t *link) is received, to configure the PCMCIA socket, and to make the ethernet device available to the system. =============================================================================*/ -#define CS_CHECK(fn, args...) \ -while ((last_ret=fn(args))!=0) goto cs_failed +#define CS_CHECK(fn, ret) \ +do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) #define MAX_TUPLE_SIZE 128 static void ray_config(dev_link_t *link) { @@ -499,23 +499,23 @@ static void ray_config(dev_link_t *link) /* This reads the card's CONFIG tuple to find its configuration regs */ tuple.DesiredTuple = CISTPL_CONFIG; - CS_CHECK(pcmcia_get_first_tuple, handle, &tuple); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); tuple.TupleData = buf; tuple.TupleDataMax = MAX_TUPLE_SIZE; tuple.TupleOffset = 0; - CS_CHECK(pcmcia_get_tuple_data, handle, &tuple); - CS_CHECK(pcmcia_parse_tuple, handle, &tuple, &parse); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); link->conf.ConfigBase = parse.config.base; link->conf.Present = parse.config.rmask[0]; /* Determine card type and firmware version */ buf[0] = buf[MAX_TUPLE_SIZE - 1] = 0; tuple.DesiredTuple = CISTPL_VERS_1; - CS_CHECK(pcmcia_get_first_tuple, handle, &tuple); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); tuple.TupleData = buf; tuple.TupleDataMax = MAX_TUPLE_SIZE; tuple.TupleOffset = 2; - CS_CHECK(pcmcia_get_tuple_data, handle, &tuple); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); for (i=0; ihandle, &link->irq); + CS_CHECK(RequestIRQ, pcmcia_request_irq(link->handle, &link->irq)); dev->irq = link->irq.AssignedIRQ; /* This actually configures the PCMCIA socket -- setting up the I/O windows and the interrupt mapping. */ - CS_CHECK(pcmcia_request_configuration, link->handle, &link->conf); + CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link->handle, &link->conf)); /*** Set up 32k window for shared memory (transmit and control) ************/ req.Attributes = WIN_DATA_WIDTH_8 | WIN_MEMORY_TYPE_CM | WIN_ENABLE | WIN_USE_WAIT; req.Base = 0; req.Size = 0x8000; req.AccessSpeed = ray_mem_speed; - CS_CHECK(pcmcia_request_window, &link->handle, &req, &link->win); + CS_CHECK(RequestWindow, pcmcia_request_window(&link->handle, &req, &link->win)); mem.CardOffset = 0x0000; mem.Page = 0; - CS_CHECK(pcmcia_map_mem_page, link->win, &mem); + CS_CHECK(MapMemPage, pcmcia_map_mem_page(link->win, &mem)); local->sram = (UCHAR *)(ioremap(req.Base,req.Size)); /*** Set up 16k window for shared memory (receive buffer) ***************/ @@ -550,9 +550,9 @@ static void ray_config(dev_link_t *link) req.Base = 0; req.Size = 0x4000; req.AccessSpeed = ray_mem_speed; - CS_CHECK(pcmcia_request_window, &link->handle, &req, &local->rmem_handle); + CS_CHECK(RequestWindow, pcmcia_request_window(&link->handle, &req, &local->rmem_handle)); mem.CardOffset = 0x8000; mem.Page = 0; - CS_CHECK(pcmcia_map_mem_page, local->rmem_handle, &mem); + CS_CHECK(MapMemPage, pcmcia_map_mem_page(local->rmem_handle, &mem)); local->rmem = (UCHAR *)(ioremap(req.Base,req.Size)); /*** Set up window for attribute memory ***********************************/ @@ -560,9 +560,9 @@ static void ray_config(dev_link_t *link) req.Base = 0; req.Size = 0x1000; req.AccessSpeed = ray_mem_speed; - CS_CHECK(pcmcia_request_window, &link->handle, &req, &local->amem_handle); + CS_CHECK(RequestWindow, pcmcia_request_window(&link->handle, &req, &local->amem_handle)); mem.CardOffset = 0x0000; mem.Page = 0; - CS_CHECK(pcmcia_map_mem_page, local->amem_handle, &mem); + CS_CHECK(MapMemPage, pcmcia_map_mem_page(local->amem_handle, &mem)); local->amem = (UCHAR *)(ioremap(req.Base,req.Size)); DEBUG(3,"ray_config sram=%p\n",local->sram); diff -puN drivers/net/wireless/wl3501_cs.c~remove-CardServices-from-drivers-net-wireless drivers/net/wireless/wl3501_cs.c --- 25/drivers/net/wireless/wl3501_cs.c~remove-CardServices-from-drivers-net-wireless 2003-12-23 20:21:58.000000000 -0800 +++ 25-akpm/drivers/net/wireless/wl3501_cs.c 2003-12-23 20:21:58.000000000 -0800 @@ -1574,7 +1574,7 @@ static void wl3501_detach(dev_link_t *li /* Break the link with Card Services */ if (link->handle) - CardServices(DeregisterClient, link->handle); + pcmcia_deregister_client(link->handle); /* Unlink device structure, free pieces */ *linkp = link->next; @@ -2070,7 +2070,7 @@ static dev_link_t *wl3501_attach(void) client_reg.event_handler = wl3501_event; client_reg.Version = 0x0210; client_reg.event_callback_args.client_data = link; - ret = CardServices(RegisterClient, &link->handle, &client_reg); + ret = pcmcia_register_client(&link->handle, &client_reg); if (ret) { cs_error(link->handle, RegisterClient, ret); wl3501_detach(link); @@ -2084,8 +2084,8 @@ out_link: goto out; } -#define CS_CHECK(fn, args...) \ -while ((last_ret = CardServices(last_fn = (fn), args)) != 0) goto cs_failed +#define CS_CHECK(fn, ret) \ +do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) /** * wl3501_config - configure the PCMCIA socket and make eth device available @@ -2108,12 +2108,12 @@ static void wl3501_config(dev_link_t *li /* This reads the card's CONFIG tuple to find its config registers. */ tuple.Attributes = 0; tuple.DesiredTuple = CISTPL_CONFIG; - CS_CHECK(GetFirstTuple, handle, &tuple); + CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); tuple.TupleData = bf; tuple.TupleDataMax = sizeof(bf); tuple.TupleOffset = 0; - CS_CHECK(GetTupleData, handle, &tuple); - CS_CHECK(ParseTuple, handle, &tuple, &parse); + CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); + CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); link->conf.ConfigBase = parse.config.base; link->conf.Present = parse.config.rmask[0]; @@ -2129,7 +2129,7 @@ static void wl3501_config(dev_link_t *li * 0x200-0x2ff, and so on, because this seems safer */ link->io.BasePort1 = j; link->io.BasePort2 = link->io.BasePort1 + 0x10; - i = CardServices(RequestIO, link->handle, &link->io); + i = pcmcia_request_io(link->handle, &link->io); if (i == CS_SUCCESS) break; } @@ -2141,12 +2141,12 @@ static void wl3501_config(dev_link_t *li /* Now allocate an interrupt line. Note that this does not actually * assign a handler to the interrupt. */ - CS_CHECK(RequestIRQ, link->handle, &link->irq); + CS_CHECK(RequestIRQ, pcmcia_request_irq(link->handle, &link->irq)); /* This actually configures the PCMCIA socket -- setting up the I/O * windows and the interrupt mapping. */ - CS_CHECK(RequestConfiguration, link->handle, &link->conf); + CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link->handle, &link->conf)); dev->irq = link->irq.AssignedIRQ; dev->base_addr = link->io.BasePort1; @@ -2236,9 +2236,9 @@ static void wl3501_release(dev_link_t *l } /* Don't bother checking to see if these succeed or not */ - CardServices(ReleaseConfiguration, link->handle); - CardServices(ReleaseIO, link->handle, &link->io); - CardServices(ReleaseIRQ, link->handle, &link->irq); + pcmcia_release_configuration(link->handle); + pcmcia_release_io(link->handle, &link->io); + pcmcia_release_irq(link->handle, &link->irq); link->state &= ~DEV_CONFIG; if (link->state & DEV_STALE_CONFIG) @@ -2288,7 +2288,7 @@ static int wl3501_event(event_t event, i if (link->state & DEV_CONFIG) { if (link->open) netif_device_detach(dev); - CardServices(ReleaseConfiguration, link->handle); + pcmcia_release_configuration(link->handle); } break; case CS_EVENT_PM_RESUME: @@ -2297,8 +2297,7 @@ static int wl3501_event(event_t event, i /* Fall through... */ case CS_EVENT_CARD_RESET: if (link->state & DEV_CONFIG) { - CardServices(RequestConfiguration, link->handle, - &link->conf); + pcmcia_request_configuration(link->handle, &link->conf); if (link->open) { wl3501_reset(dev); netif_device_attach(dev); _