Skip to content

Commit

Permalink
[PATCH] pcmcia: default suspend and resume handling
Browse files Browse the repository at this point in the history
In all but one case, the suspend and resume functions of PCMCIA drivers
contain mostly of calls to pcmcia_release_configuration() and
pcmcia_request_configuration(). Therefore, move this code out of the
drivers and into the core.

Signed-off-by: Dominik Brodowski <[email protected]>
  • Loading branch information
Dominik Brodowski committed Mar 31, 2006
1 parent 50db3fd commit 8661bb5
Show file tree
Hide file tree
Showing 45 changed files with 105 additions and 633 deletions.
24 changes: 0 additions & 24 deletions drivers/bluetooth/bluecard_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1005,28 +1005,6 @@ static void bluecard_release(dev_link_t *link)
pcmcia_disable_device(link->handle);
}

static int bluecard_suspend(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int bluecard_resume(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state &= ~DEV_SUSPEND;
if (DEV_OK(link))
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}

static struct pcmcia_device_id bluecard_ids[] = {
PCMCIA_DEVICE_PROD_ID12("BlueCard", "LSE041", 0xbaf16fbf, 0x657cc15e),
PCMCIA_DEVICE_PROD_ID12("BTCFCARD", "LSE139", 0xe3987764, 0x2524b59c),
Expand All @@ -1043,8 +1021,6 @@ static struct pcmcia_driver bluecard_driver = {
.probe = bluecard_attach,
.remove = bluecard_detach,
.id_table = bluecard_ids,
.suspend = bluecard_suspend,
.resume = bluecard_resume,
};

static int __init init_bluecard_cs(void)
Expand Down
24 changes: 0 additions & 24 deletions drivers/bluetooth/bt3c_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -842,28 +842,6 @@ static void bt3c_release(dev_link_t *link)
pcmcia_disable_device(link->handle);
}

static int bt3c_suspend(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int bt3c_resume(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state &= ~DEV_SUSPEND;
if (DEV_OK(link))
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}


static struct pcmcia_device_id bt3c_ids[] = {
PCMCIA_DEVICE_PROD_ID13("3COM", "Bluetooth PC Card", 0xefce0a31, 0xd4ce9b02),
Expand All @@ -879,8 +857,6 @@ static struct pcmcia_driver bt3c_driver = {
.probe = bt3c_attach,
.remove = bt3c_detach,
.id_table = bt3c_ids,
.suspend = bt3c_suspend,
.resume = bt3c_resume,
};

static int __init init_bt3c_cs(void)
Expand Down
25 changes: 0 additions & 25 deletions drivers/bluetooth/btuart_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -771,29 +771,6 @@ static void btuart_release(dev_link_t *link)
pcmcia_disable_device(link->handle);
}

static int btuart_suspend(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int btuart_resume(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state &= ~DEV_SUSPEND;
if (DEV_OK(link))
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}


static struct pcmcia_device_id btuart_ids[] = {
/* don't use this driver. Use serial_cs + hci_uart instead */
PCMCIA_DEVICE_NULL
Expand All @@ -808,8 +785,6 @@ static struct pcmcia_driver btuart_driver = {
.probe = btuart_attach,
.remove = btuart_detach,
.id_table = btuart_ids,
.suspend = btuart_suspend,
.resume = btuart_resume,
};

static int __init init_btuart_cs(void)
Expand Down
24 changes: 0 additions & 24 deletions drivers/bluetooth/dtl1_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -723,28 +723,6 @@ static void dtl1_release(dev_link_t *link)
pcmcia_disable_device(link->handle);
}

static int dtl1_suspend(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int dtl1_resume(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state &= ~DEV_SUSPEND;
if (DEV_OK(link))
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}


static struct pcmcia_device_id dtl1_ids[] = {
PCMCIA_DEVICE_PROD_ID12("Nokia Mobile Phones", "DTL-1", 0xe1bfdd64, 0xe168480d),
Expand All @@ -762,8 +740,6 @@ static struct pcmcia_driver dtl1_driver = {
.probe = dtl1_attach,
.remove = dtl1_detach,
.id_table = dtl1_ids,
.suspend = dtl1_suspend,
.resume = dtl1_resume,
};

static int __init init_dtl1_cs(void)
Expand Down
9 changes: 0 additions & 9 deletions drivers/char/pcmcia/cm4000_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1870,10 +1870,6 @@ static int cm4000_suspend(struct pcmcia_device *p_dev)
struct cm4000_dev *dev;

dev = link->priv;

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);
stop_monitor(dev);

return 0;
Expand All @@ -1885,11 +1881,6 @@ static int cm4000_resume(struct pcmcia_device *p_dev)
struct cm4000_dev *dev;

dev = link->priv;

link->state &= ~DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_request_configuration(link->handle, &link->conf);

if (link->open)
start_monitor(dev);

Expand Down
24 changes: 0 additions & 24 deletions drivers/char/pcmcia/cm4040_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -629,28 +629,6 @@ static void reader_config(dev_link_t *link, int devno)
link->state &= ~DEV_CONFIG_PENDING;
}

static int reader_suspend(struct pcmcia_device *p_dev)
{
dev_link_t *link = dev_to_instance(p_dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int reader_resume(struct pcmcia_device *p_dev)
{
dev_link_t *link = dev_to_instance(p_dev);

link->state &= ~DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}

static void reader_release(dev_link_t *link)
{
cm4040_reader_release(link->priv);
Expand Down Expand Up @@ -754,8 +732,6 @@ static struct pcmcia_driver reader_driver = {
},
.probe = reader_attach,
.remove = reader_detach,
.suspend = reader_suspend,
.resume = reader_resume,
.id_table = cm4040_ids,
};

Expand Down
6 changes: 0 additions & 6 deletions drivers/char/pcmcia/synclink_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -733,10 +733,7 @@ static int mgslpc_suspend(struct pcmcia_device *dev)
dev_link_t *link = dev_to_instance(dev);
MGSLPC_INFO *info = link->priv;

link->state |= DEV_SUSPEND;
info->stop = 1;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}
Expand All @@ -746,9 +743,6 @@ static int mgslpc_resume(struct pcmcia_device *dev)
dev_link_t *link = dev_to_instance(dev);
MGSLPC_INFO *info = link->priv;

link->state &= ~DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_request_configuration(link->handle, &link->conf);
info->stop = 0;

return 0;
Expand Down
23 changes: 0 additions & 23 deletions drivers/ide/legacy/ide-cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -373,27 +373,6 @@ void ide_release(dev_link_t *link)
pcmcia_disable_device(link->handle);
} /* ide_release */

static int ide_suspend(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int ide_resume(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state &= ~DEV_SUSPEND;
if (DEV_OK(link))
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}

/*======================================================================
Expand Down Expand Up @@ -456,8 +435,6 @@ static struct pcmcia_driver ide_cs_driver = {
.probe = ide_attach,
.remove = ide_detach,
.id_table = ide_ids,
.suspend = ide_suspend,
.resume = ide_resume,
};

static int __init init_ide_cs(void)
Expand Down
38 changes: 0 additions & 38 deletions drivers/isdn/hardware/avm/avm_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,42 +371,6 @@ static void avmcs_release(dev_link_t *link)
pcmcia_disable_device(link->handle);
} /* avmcs_release */

static int avmcs_suspend(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int avmcs_resume(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state &= ~DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}

/*======================================================================
The card status event handler. Mostly, this schedules other
stuff to run after an event is received. A CARD_REMOVAL event
also sets some flags to discourage the net drivers from trying
to talk to the card any more.
When a CARD_REMOVAL event is received, we immediately set a flag
to block future accesses to this device. All the functions that
actually access the device should check this flag to make sure
the card is still present.
======================================================================*/


static struct pcmcia_device_id avmcs_ids[] = {
PCMCIA_DEVICE_PROD_ID12("AVM", "ISDN-Controller B1", 0x95d42008, 0x845dc335),
Expand All @@ -424,8 +388,6 @@ static struct pcmcia_driver avmcs_driver = {
.probe = avmcs_attach,
.remove = avmcs_detach,
.id_table = avmcs_ids,
.suspend= avmcs_suspend,
.resume = avmcs_resume,
};

static int __init avmcs_init(void)
Expand Down
26 changes: 1 addition & 25 deletions drivers/isdn/hisax/avma1_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -383,28 +383,6 @@ static void avma1cs_release(dev_link_t *link)
pcmcia_disable_device(link->handle);
} /* avma1cs_release */

static int avma1cs_suspend(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state |= DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}

static int avma1cs_resume(struct pcmcia_device *dev)
{
dev_link_t *link = dev_to_instance(dev);

link->state &= ~DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_request_configuration(link->handle, &link->conf);

return 0;
}


static struct pcmcia_device_id avma1cs_ids[] = {
PCMCIA_DEVICE_PROD_ID12("AVM", "ISDN A", 0x95d42008, 0xadc9d4bb),
Expand All @@ -421,10 +399,8 @@ static struct pcmcia_driver avma1cs_driver = {
.probe = avma1cs_attach,
.remove = avma1cs_detach,
.id_table = avma1cs_ids,
.suspend = avma1cs_suspend,
.resume = avma1cs_resume,
};

/*====================================================================*/

static int __init init_avma1_cs(void)
Expand Down
6 changes: 0 additions & 6 deletions drivers/isdn/hisax/elsa_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -389,10 +389,7 @@ static int elsa_suspend(struct pcmcia_device *p_dev)
dev_link_t *link = dev_to_instance(p_dev);
local_info_t *dev = link->priv;

link->state |= DEV_SUSPEND;
dev->busy = 1;
if (link->state & DEV_CONFIG)
pcmcia_release_configuration(link->handle);

return 0;
}
Expand All @@ -402,9 +399,6 @@ static int elsa_resume(struct pcmcia_device *p_dev)
dev_link_t *link = dev_to_instance(p_dev);
local_info_t *dev = link->priv;

link->state &= ~DEV_SUSPEND;
if (link->state & DEV_CONFIG)
pcmcia_request_configuration(link->handle, &link->conf);
dev->busy = 0;

return 0;
Expand Down
Loading

0 comments on commit 8661bb5

Please sign in to comment.