[PATCH] pcmcia: default suspend and resume handling
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 <linux@dominikbrodowski.net>
This commit is contained in:
parent
50db3fdbbc
commit
8661bb5b4a
|
@ -1005,28 +1005,6 @@ static void bluecard_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
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[] = {
|
static struct pcmcia_device_id bluecard_ids[] = {
|
||||||
PCMCIA_DEVICE_PROD_ID12("BlueCard", "LSE041", 0xbaf16fbf, 0x657cc15e),
|
PCMCIA_DEVICE_PROD_ID12("BlueCard", "LSE041", 0xbaf16fbf, 0x657cc15e),
|
||||||
PCMCIA_DEVICE_PROD_ID12("BTCFCARD", "LSE139", 0xe3987764, 0x2524b59c),
|
PCMCIA_DEVICE_PROD_ID12("BTCFCARD", "LSE139", 0xe3987764, 0x2524b59c),
|
||||||
|
@ -1043,8 +1021,6 @@ static struct pcmcia_driver bluecard_driver = {
|
||||||
.probe = bluecard_attach,
|
.probe = bluecard_attach,
|
||||||
.remove = bluecard_detach,
|
.remove = bluecard_detach,
|
||||||
.id_table = bluecard_ids,
|
.id_table = bluecard_ids,
|
||||||
.suspend = bluecard_suspend,
|
|
||||||
.resume = bluecard_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init init_bluecard_cs(void)
|
static int __init init_bluecard_cs(void)
|
||||||
|
|
|
@ -842,28 +842,6 @@ static void bt3c_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
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[] = {
|
static struct pcmcia_device_id bt3c_ids[] = {
|
||||||
PCMCIA_DEVICE_PROD_ID13("3COM", "Bluetooth PC Card", 0xefce0a31, 0xd4ce9b02),
|
PCMCIA_DEVICE_PROD_ID13("3COM", "Bluetooth PC Card", 0xefce0a31, 0xd4ce9b02),
|
||||||
|
@ -879,8 +857,6 @@ static struct pcmcia_driver bt3c_driver = {
|
||||||
.probe = bt3c_attach,
|
.probe = bt3c_attach,
|
||||||
.remove = bt3c_detach,
|
.remove = bt3c_detach,
|
||||||
.id_table = bt3c_ids,
|
.id_table = bt3c_ids,
|
||||||
.suspend = bt3c_suspend,
|
|
||||||
.resume = bt3c_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init init_bt3c_cs(void)
|
static int __init init_bt3c_cs(void)
|
||||||
|
|
|
@ -771,29 +771,6 @@ static void btuart_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
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[] = {
|
static struct pcmcia_device_id btuart_ids[] = {
|
||||||
/* don't use this driver. Use serial_cs + hci_uart instead */
|
/* don't use this driver. Use serial_cs + hci_uart instead */
|
||||||
PCMCIA_DEVICE_NULL
|
PCMCIA_DEVICE_NULL
|
||||||
|
@ -808,8 +785,6 @@ static struct pcmcia_driver btuart_driver = {
|
||||||
.probe = btuart_attach,
|
.probe = btuart_attach,
|
||||||
.remove = btuart_detach,
|
.remove = btuart_detach,
|
||||||
.id_table = btuart_ids,
|
.id_table = btuart_ids,
|
||||||
.suspend = btuart_suspend,
|
|
||||||
.resume = btuart_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init init_btuart_cs(void)
|
static int __init init_btuart_cs(void)
|
||||||
|
|
|
@ -723,28 +723,6 @@ static void dtl1_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
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[] = {
|
static struct pcmcia_device_id dtl1_ids[] = {
|
||||||
PCMCIA_DEVICE_PROD_ID12("Nokia Mobile Phones", "DTL-1", 0xe1bfdd64, 0xe168480d),
|
PCMCIA_DEVICE_PROD_ID12("Nokia Mobile Phones", "DTL-1", 0xe1bfdd64, 0xe168480d),
|
||||||
|
@ -762,8 +740,6 @@ static struct pcmcia_driver dtl1_driver = {
|
||||||
.probe = dtl1_attach,
|
.probe = dtl1_attach,
|
||||||
.remove = dtl1_detach,
|
.remove = dtl1_detach,
|
||||||
.id_table = dtl1_ids,
|
.id_table = dtl1_ids,
|
||||||
.suspend = dtl1_suspend,
|
|
||||||
.resume = dtl1_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init init_dtl1_cs(void)
|
static int __init init_dtl1_cs(void)
|
||||||
|
|
|
@ -1870,10 +1870,6 @@ static int cm4000_suspend(struct pcmcia_device *p_dev)
|
||||||
struct cm4000_dev *dev;
|
struct cm4000_dev *dev;
|
||||||
|
|
||||||
dev = link->priv;
|
dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
stop_monitor(dev);
|
stop_monitor(dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1885,11 +1881,6 @@ static int cm4000_resume(struct pcmcia_device *p_dev)
|
||||||
struct cm4000_dev *dev;
|
struct cm4000_dev *dev;
|
||||||
|
|
||||||
dev = link->priv;
|
dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
|
|
||||||
if (link->open)
|
if (link->open)
|
||||||
start_monitor(dev);
|
start_monitor(dev);
|
||||||
|
|
||||||
|
|
|
@ -629,28 +629,6 @@ cs_release:
|
||||||
link->state &= ~DEV_CONFIG_PENDING;
|
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)
|
static void reader_release(dev_link_t *link)
|
||||||
{
|
{
|
||||||
cm4040_reader_release(link->priv);
|
cm4040_reader_release(link->priv);
|
||||||
|
@ -754,8 +732,6 @@ static struct pcmcia_driver reader_driver = {
|
||||||
},
|
},
|
||||||
.probe = reader_attach,
|
.probe = reader_attach,
|
||||||
.remove = reader_detach,
|
.remove = reader_detach,
|
||||||
.suspend = reader_suspend,
|
|
||||||
.resume = reader_resume,
|
|
||||||
.id_table = cm4040_ids,
|
.id_table = cm4040_ids,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -733,10 +733,7 @@ static int mgslpc_suspend(struct pcmcia_device *dev)
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
MGSLPC_INFO *info = link->priv;
|
MGSLPC_INFO *info = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
info->stop = 1;
|
info->stop = 1;
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -746,9 +743,6 @@ static int mgslpc_resume(struct pcmcia_device *dev)
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
MGSLPC_INFO *info = link->priv;
|
MGSLPC_INFO *info = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
info->stop = 0;
|
info->stop = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -373,27 +373,6 @@ void ide_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
pcmcia_disable_device(link->handle);
|
||||||
} /* ide_release */
|
} /* 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*======================================================================
|
/*======================================================================
|
||||||
|
|
||||||
|
@ -456,8 +435,6 @@ static struct pcmcia_driver ide_cs_driver = {
|
||||||
.probe = ide_attach,
|
.probe = ide_attach,
|
||||||
.remove = ide_detach,
|
.remove = ide_detach,
|
||||||
.id_table = ide_ids,
|
.id_table = ide_ids,
|
||||||
.suspend = ide_suspend,
|
|
||||||
.resume = ide_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init init_ide_cs(void)
|
static int __init init_ide_cs(void)
|
||||||
|
|
|
@ -371,42 +371,6 @@ static void avmcs_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
pcmcia_disable_device(link->handle);
|
||||||
} /* avmcs_release */
|
} /* 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[] = {
|
static struct pcmcia_device_id avmcs_ids[] = {
|
||||||
PCMCIA_DEVICE_PROD_ID12("AVM", "ISDN-Controller B1", 0x95d42008, 0x845dc335),
|
PCMCIA_DEVICE_PROD_ID12("AVM", "ISDN-Controller B1", 0x95d42008, 0x845dc335),
|
||||||
|
@ -424,8 +388,6 @@ static struct pcmcia_driver avmcs_driver = {
|
||||||
.probe = avmcs_attach,
|
.probe = avmcs_attach,
|
||||||
.remove = avmcs_detach,
|
.remove = avmcs_detach,
|
||||||
.id_table = avmcs_ids,
|
.id_table = avmcs_ids,
|
||||||
.suspend= avmcs_suspend,
|
|
||||||
.resume = avmcs_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init avmcs_init(void)
|
static int __init avmcs_init(void)
|
||||||
|
|
|
@ -383,28 +383,6 @@ static void avma1cs_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
pcmcia_disable_device(link->handle);
|
||||||
} /* avma1cs_release */
|
} /* 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[] = {
|
static struct pcmcia_device_id avma1cs_ids[] = {
|
||||||
PCMCIA_DEVICE_PROD_ID12("AVM", "ISDN A", 0x95d42008, 0xadc9d4bb),
|
PCMCIA_DEVICE_PROD_ID12("AVM", "ISDN A", 0x95d42008, 0xadc9d4bb),
|
||||||
|
@ -421,10 +399,8 @@ static struct pcmcia_driver avma1cs_driver = {
|
||||||
.probe = avma1cs_attach,
|
.probe = avma1cs_attach,
|
||||||
.remove = avma1cs_detach,
|
.remove = avma1cs_detach,
|
||||||
.id_table = avma1cs_ids,
|
.id_table = avma1cs_ids,
|
||||||
.suspend = avma1cs_suspend,
|
|
||||||
.resume = avma1cs_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*====================================================================*/
|
/*====================================================================*/
|
||||||
|
|
||||||
static int __init init_avma1_cs(void)
|
static int __init init_avma1_cs(void)
|
||||||
|
|
|
@ -389,10 +389,7 @@ static int elsa_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *dev = link->priv;
|
local_info_t *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
dev->busy = 1;
|
dev->busy = 1;
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -402,9 +399,6 @@ static int elsa_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *dev = link->priv;
|
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;
|
dev->busy = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -472,10 +472,7 @@ static int sedlbauer_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *dev = link->priv;
|
local_info_t *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
dev->stop = 1;
|
dev->stop = 1;
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -485,9 +482,6 @@ static int sedlbauer_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *dev = link->priv;
|
local_info_t *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
dev->stop = 0;
|
dev->stop = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -380,10 +380,7 @@ static int teles_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *dev = link->priv;
|
local_info_t *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
dev->busy = 1;
|
dev->busy = 1;
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -393,9 +390,6 @@ static int teles_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *dev = link->priv;
|
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;
|
dev->busy = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -519,12 +519,8 @@ static int tc574_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -534,13 +530,9 @@ static int tc574_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
tc574_reset(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
|
||||||
tc574_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -394,12 +394,8 @@ static int tc589_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -409,13 +405,9 @@ static int tc589_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
tc589_reset(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
|
||||||
tc589_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -464,12 +464,8 @@ static int axnet_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
netif_device_detach(dev);
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -479,14 +475,10 @@ static int axnet_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
axnet_reset_8390(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
AX88190_init(dev, 1);
|
||||||
if (link->open) {
|
netif_device_attach(dev);
|
||||||
axnet_reset_8390(dev);
|
|
||||||
AX88190_init(dev, 1);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -387,13 +387,8 @@ static int com20020_suspend(struct pcmcia_device *p_dev)
|
||||||
com20020_dev_t *info = link->priv;
|
com20020_dev_t *info = link->priv;
|
||||||
struct net_device *dev = info->dev;
|
struct net_device *dev = info->dev;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open) {
|
|
||||||
netif_device_detach(dev);
|
|
||||||
}
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -404,15 +399,11 @@ static int com20020_resume(struct pcmcia_device *p_dev)
|
||||||
com20020_dev_t *info = link->priv;
|
com20020_dev_t *info = link->priv;
|
||||||
struct net_device *dev = info->dev;
|
struct net_device *dev = info->dev;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
int ioaddr = dev->base_addr;
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
struct arcnet_local *lp = dev->priv;
|
||||||
if (link->open) {
|
ARCRESET;
|
||||||
int ioaddr = dev->base_addr;
|
}
|
||||||
struct arcnet_local *lp = dev->priv;
|
|
||||||
ARCRESET;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -683,13 +683,8 @@ static int fmvj18x_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -699,13 +694,9 @@ static int fmvj18x_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
fjn_reset(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
|
||||||
fjn_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -367,12 +367,8 @@ static int ibmtr_suspend(struct pcmcia_device *p_dev)
|
||||||
ibmtr_dev_t *info = link->priv;
|
ibmtr_dev_t *info = link->priv;
|
||||||
struct net_device *dev = info->dev;
|
struct net_device *dev = info->dev;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -383,14 +379,10 @@ static int ibmtr_resume(struct pcmcia_device *p_dev)
|
||||||
ibmtr_dev_t *info = link->priv;
|
ibmtr_dev_t *info = link->priv;
|
||||||
struct net_device *dev = info->dev;
|
struct net_device *dev = info->dev;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
ibmtr_probe(dev); /* really? */
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
}
|
||||||
ibmtr_probe(dev); /* really? */
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -774,13 +774,8 @@ static int nmclan_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -790,13 +785,9 @@ static int nmclan_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
nmclan_reset(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
|
||||||
nmclan_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -756,12 +756,8 @@ static int pcnet_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -771,14 +767,10 @@ static int pcnet_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
pcnet_reset_8390(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
NS8390_init(dev, 1);
|
||||||
if (link->open) {
|
netif_device_attach(dev);
|
||||||
pcnet_reset_8390(dev);
|
|
||||||
NS8390_init(dev, 1);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -874,7 +874,6 @@ static int smc91c92_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
if (link->open)
|
if (link->open)
|
||||||
netif_device_detach(dev);
|
netif_device_detach(dev);
|
||||||
|
@ -891,7 +890,6 @@ static int smc91c92_resume(struct pcmcia_device *p_dev)
|
||||||
struct smc_private *smc = netdev_priv(dev);
|
struct smc_private *smc = netdev_priv(dev);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
if ((smc->manfid == MANFID_MEGAHERTZ) &&
|
if ((smc->manfid == MANFID_MEGAHERTZ) &&
|
||||||
(smc->cardid == PRODID_MEGAHERTZ_EM3288))
|
(smc->cardid == PRODID_MEGAHERTZ_EM3288))
|
||||||
|
|
|
@ -1109,13 +1109,9 @@ static int xirc2ps_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
|
||||||
if (link->open) {
|
|
||||||
netif_device_detach(dev);
|
netif_device_detach(dev);
|
||||||
do_powerdown(dev);
|
do_powerdown(dev);
|
||||||
}
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1126,13 +1122,9 @@ static int xirc2ps_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
do_reset(dev,1);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
|
||||||
do_reset(dev,1);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -437,11 +437,8 @@ static int airo_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *local = link->priv;
|
local_info_t *local = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if (link->state & DEV_CONFIG)
|
||||||
if (link->state & DEV_CONFIG) {
|
|
||||||
netif_device_detach(local->eth_dev);
|
netif_device_detach(local->eth_dev);
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -451,9 +448,7 @@ static int airo_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
local_info_t *local = link->priv;
|
local_info_t *local = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
reset_airo_card(local->eth_dev);
|
reset_airo_card(local->eth_dev);
|
||||||
netif_device_attach(local->eth_dev);
|
netif_device_attach(local->eth_dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -433,11 +433,8 @@ static int atmel_suspend(struct pcmcia_device *dev)
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
local_info_t *local = link->priv;
|
local_info_t *local = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if (link->state & DEV_CONFIG)
|
||||||
if (link->state & DEV_CONFIG) {
|
|
||||||
netif_device_detach(local->eth_dev);
|
netif_device_detach(local->eth_dev);
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -447,9 +444,7 @@ static int atmel_resume(struct pcmcia_device *dev)
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
local_info_t *local = link->priv;
|
local_info_t *local = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
atmel_open(local->eth_dev);
|
atmel_open(local->eth_dev);
|
||||||
netif_device_attach(local->eth_dev);
|
netif_device_attach(local->eth_dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -816,8 +816,6 @@ static int hostap_cs_suspend(struct pcmcia_device *p_dev)
|
||||||
|
|
||||||
PDEBUG(DEBUG_EXTRA, "%s: CS_EVENT_PM_SUSPEND\n", dev_info);
|
PDEBUG(DEBUG_EXTRA, "%s: CS_EVENT_PM_SUSPEND\n", dev_info);
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
struct hostap_interface *iface = netdev_priv(dev);
|
struct hostap_interface *iface = netdev_priv(dev);
|
||||||
if (iface && iface->local)
|
if (iface && iface->local)
|
||||||
|
@ -827,7 +825,6 @@ static int hostap_cs_suspend(struct pcmcia_device *p_dev)
|
||||||
netif_device_detach(dev);
|
netif_device_detach(dev);
|
||||||
}
|
}
|
||||||
prism2_suspend(dev);
|
prism2_suspend(dev);
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -841,14 +838,11 @@ static int hostap_cs_resume(struct pcmcia_device *p_dev)
|
||||||
|
|
||||||
PDEBUG(DEBUG_EXTRA, "%s: CS_EVENT_PM_RESUME\n", dev_info);
|
PDEBUG(DEBUG_EXTRA, "%s: CS_EVENT_PM_RESUME\n", dev_info);
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
struct hostap_interface *iface = netdev_priv(dev);
|
struct hostap_interface *iface = netdev_priv(dev);
|
||||||
if (iface && iface->local)
|
if (iface && iface->local)
|
||||||
dev_open = iface->local->num_dev_open > 0;
|
dev_open = iface->local->num_dev_open > 0;
|
||||||
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
|
|
||||||
prism2_hw_shutdown(dev, 1);
|
prism2_hw_shutdown(dev, 1);
|
||||||
prism2_hw_config(dev, dev_open ? 0 : 1);
|
prism2_hw_config(dev, dev_open ? 0 : 1);
|
||||||
if (dev_open) {
|
if (dev_open) {
|
||||||
|
|
|
@ -884,12 +884,8 @@ static int netwave_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -899,13 +895,9 @@ static int netwave_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
netwave_reset(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
|
||||||
netwave_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -429,7 +429,6 @@ static int orinoco_cs_suspend(struct pcmcia_device *p_dev)
|
||||||
int err = 0;
|
int err = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
/* This is probably racy, but I can't think of
|
/* This is probably racy, but I can't think of
|
||||||
a better way, short of rewriting the PCMCIA
|
a better way, short of rewriting the PCMCIA
|
||||||
|
@ -447,8 +446,6 @@ static int orinoco_cs_suspend(struct pcmcia_device *p_dev)
|
||||||
|
|
||||||
spin_unlock_irqrestore(&priv->lock, flags);
|
spin_unlock_irqrestore(&priv->lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -463,12 +460,7 @@ static int orinoco_cs_resume(struct pcmcia_device *p_dev)
|
||||||
int err = 0;
|
int err = 0;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
/* FIXME: should we double check that this is
|
|
||||||
* the same card as we had before */
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
|
|
||||||
if (! test_bit(0, &card->hard_reset_in_progress)) {
|
if (! test_bit(0, &card->hard_reset_in_progress)) {
|
||||||
err = orinoco_reinit_firmware(dev);
|
err = orinoco_reinit_firmware(dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|
|
@ -868,14 +868,8 @@ static int ray_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->state & DEV_CONFIG) {
|
netif_device_detach(dev);
|
||||||
if (link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -885,14 +879,10 @@ static int ray_resume(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
if (link->state & DEV_CONFIG) {
|
ray_reset(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if (link->open) {
|
}
|
||||||
ray_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -908,7 +908,6 @@ spectrum_cs_suspend(struct pcmcia_device *p_dev)
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
/* Mark the device as stopped, to block IO until later */
|
/* Mark the device as stopped, to block IO until later */
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
spin_lock_irqsave(&priv->lock, flags);
|
spin_lock_irqsave(&priv->lock, flags);
|
||||||
|
@ -922,8 +921,6 @@ spectrum_cs_suspend(struct pcmcia_device *p_dev)
|
||||||
priv->hw_unavailable++;
|
priv->hw_unavailable++;
|
||||||
|
|
||||||
spin_unlock_irqrestore(&priv->lock, flags);
|
spin_unlock_irqrestore(&priv->lock, flags);
|
||||||
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -936,11 +933,7 @@ spectrum_cs_resume(struct pcmcia_device *p_dev)
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
struct orinoco_private *priv = netdev_priv(dev);
|
struct orinoco_private *priv = netdev_priv(dev);
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
/* FIXME: should we double check that this is
|
|
||||||
* the same card as we had before */
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
netif_device_attach(dev);
|
netif_device_attach(dev);
|
||||||
priv->hw_unavailable--;
|
priv->hw_unavailable--;
|
||||||
schedule_work(&priv->reset_work);
|
schedule_work(&priv->reset_work);
|
||||||
|
|
|
@ -4742,19 +4742,12 @@ static int wavelan_suspend(struct pcmcia_device *p_dev)
|
||||||
/* Stop receiving new messages and wait end of transmission */
|
/* Stop receiving new messages and wait end of transmission */
|
||||||
wv_ru_stop(dev);
|
wv_ru_stop(dev);
|
||||||
|
|
||||||
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
|
netif_device_detach(dev);
|
||||||
|
|
||||||
/* Power down the module */
|
/* Power down the module */
|
||||||
hacr_write(dev->base_addr, HACR_DEFAULT & (~HACR_PWR_STAT));
|
hacr_write(dev->base_addr, HACR_DEFAULT & (~HACR_PWR_STAT));
|
||||||
|
|
||||||
/* The card is now suspended */
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
|
|
||||||
if(link->state & DEV_CONFIG)
|
|
||||||
{
|
|
||||||
if(link->open)
|
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4764,14 +4757,9 @@ static int wavelan_resume(struct pcmcia_device *p_dev)
|
||||||
struct net_device * dev = (struct net_device *) link->priv;
|
struct net_device * dev = (struct net_device *) link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
link->state &= ~DEV_SUSPEND;
|
||||||
if(link->state & DEV_CONFIG)
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
{
|
wv_hw_reset(dev);
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
netif_device_attach(dev);
|
||||||
if(link->open) /* If RESET -> True, If RESUME -> False ? */
|
|
||||||
{
|
|
||||||
wv_hw_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -2160,14 +2160,9 @@ static int wl3501_suspend(struct pcmcia_device *p_dev)
|
||||||
dev_link_t *link = dev_to_instance(p_dev);
|
dev_link_t *link = dev_to_instance(p_dev);
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
|
|
||||||
wl3501_pwr_mgmt(dev->priv, WL3501_SUSPEND);
|
wl3501_pwr_mgmt(dev->priv, WL3501_SUSPEND);
|
||||||
if (link->state & DEV_CONFIG) {
|
if ((link->state & DEV_CONFIG) && (link->open))
|
||||||
if (link->open)
|
netif_device_detach(dev);
|
||||||
netif_device_detach(dev);
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2178,12 +2173,9 @@ static int wl3501_resume(struct pcmcia_device *p_dev)
|
||||||
struct net_device *dev = link->priv;
|
struct net_device *dev = link->priv;
|
||||||
|
|
||||||
wl3501_pwr_mgmt(dev->priv, WL3501_RESUME);
|
wl3501_pwr_mgmt(dev->priv, WL3501_RESUME);
|
||||||
if (link->state & DEV_CONFIG) {
|
if ((link->state & DEV_CONFIG) && (link->open)) {
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
wl3501_reset(dev);
|
||||||
if (link->open) {
|
netif_device_attach(dev);
|
||||||
wl3501_reset(dev);
|
|
||||||
netif_device_attach(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -280,27 +280,6 @@ void parport_cs_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
pcmcia_disable_device(link->handle);
|
||||||
} /* parport_cs_release */
|
} /* parport_cs_release */
|
||||||
|
|
||||||
static int parport_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 parport_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 parport_ids[] = {
|
static struct pcmcia_device_id parport_ids[] = {
|
||||||
PCMCIA_DEVICE_FUNC_ID(3),
|
PCMCIA_DEVICE_FUNC_ID(3),
|
||||||
|
@ -317,8 +296,6 @@ static struct pcmcia_driver parport_cs_driver = {
|
||||||
.probe = parport_attach,
|
.probe = parport_attach,
|
||||||
.remove = parport_detach,
|
.remove = parport_detach,
|
||||||
.id_table = parport_ids,
|
.id_table = parport_ids,
|
||||||
.suspend = parport_suspend,
|
|
||||||
.resume = parport_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init init_parport_cs(void)
|
static int __init init_parport_cs(void)
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
* are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
|
* are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* (C) 1999 David A. Hinds
|
* (C) 1999 David A. Hinds
|
||||||
* (C) 2003 - 2005 Dominik Brodowski
|
* (C) 2003 - 2006 Dominik Brodowski
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
@ -1030,12 +1030,22 @@ static int pcmcia_dev_suspend(struct device * dev, pm_message_t state)
|
||||||
{
|
{
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
||||||
struct pcmcia_driver *p_drv = NULL;
|
struct pcmcia_driver *p_drv = NULL;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (dev->driver)
|
if (dev->driver)
|
||||||
p_drv = to_pcmcia_drv(dev->driver);
|
p_drv = to_pcmcia_drv(dev->driver);
|
||||||
|
|
||||||
if (p_drv && p_drv->suspend)
|
if (p_drv && p_drv->suspend) {
|
||||||
return p_drv->suspend(p_dev);
|
ret = p_drv->suspend(p_dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
if (p_dev->instance) {
|
||||||
|
p_dev->instance->state |= DEV_SUSPEND;
|
||||||
|
if ((p_dev->instance->state & DEV_CONFIG) &&
|
||||||
|
!(p_dev->instance->state & DEV_SUSPEND_NORELEASE))
|
||||||
|
pcmcia_release_configuration(p_dev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1045,12 +1055,24 @@ static int pcmcia_dev_resume(struct device * dev)
|
||||||
{
|
{
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
||||||
struct pcmcia_driver *p_drv = NULL;
|
struct pcmcia_driver *p_drv = NULL;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (dev->driver)
|
if (dev->driver)
|
||||||
p_drv = to_pcmcia_drv(dev->driver);
|
p_drv = to_pcmcia_drv(dev->driver);
|
||||||
|
|
||||||
if (p_drv && p_drv->resume)
|
if (p_drv && p_drv->resume) {
|
||||||
|
if (p_dev->instance) {
|
||||||
|
p_dev->instance->state &= ~DEV_SUSPEND;
|
||||||
|
if ((p_dev->instance->state & DEV_CONFIG) &&
|
||||||
|
!(p_dev->instance->state & DEV_SUSPEND_NORELEASE)){
|
||||||
|
ret = pcmcia_request_configuration(p_dev,
|
||||||
|
&p_dev->instance->conf);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
return p_drv->resume(p_dev);
|
return p_drv->resume(p_dev);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -251,27 +251,12 @@ static void aha152x_release_cs(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
pcmcia_disable_device(link->handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int aha152x_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 aha152x_resume(struct pcmcia_device *dev)
|
static int aha152x_resume(struct pcmcia_device *dev)
|
||||||
{
|
{
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
scsi_info_t *info = link->priv;
|
scsi_info_t *info = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
aha152x_host_reset_host(info->host);
|
||||||
if (link->state & DEV_CONFIG) {
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
aha152x_host_reset_host(info->host);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -294,7 +279,6 @@ static struct pcmcia_driver aha152x_cs_driver = {
|
||||||
.probe = aha152x_attach,
|
.probe = aha152x_attach,
|
||||||
.remove = aha152x_detach,
|
.remove = aha152x_detach,
|
||||||
.id_table = aha152x_ids,
|
.id_table = aha152x_ids,
|
||||||
.suspend = aha152x_suspend,
|
|
||||||
.resume = aha152x_resume,
|
.resume = aha152x_resume,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -220,26 +220,12 @@ static void fdomain_release(dev_link_t *link)
|
||||||
|
|
||||||
/*====================================================================*/
|
/*====================================================================*/
|
||||||
|
|
||||||
static int fdomain_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 fdomain_resume(struct pcmcia_device *dev)
|
static int fdomain_resume(struct pcmcia_device *dev)
|
||||||
{
|
{
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
if (link->state & DEV_CONFIG)
|
||||||
if (link->state & DEV_CONFIG) {
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
fdomain_16x0_bus_reset(NULL);
|
fdomain_16x0_bus_reset(NULL);
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -260,7 +246,6 @@ static struct pcmcia_driver fdomain_cs_driver = {
|
||||||
.probe = fdomain_attach,
|
.probe = fdomain_attach,
|
||||||
.remove = fdomain_detach,
|
.remove = fdomain_detach,
|
||||||
.id_table = fdomain_ids,
|
.id_table = fdomain_ids,
|
||||||
.suspend = fdomain_suspend,
|
|
||||||
.resume = fdomain_resume,
|
.resume = fdomain_resume,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1987,8 +1987,6 @@ static int nsp_cs_suspend(struct pcmcia_device *dev)
|
||||||
scsi_info_t *info = link->priv;
|
scsi_info_t *info = link->priv;
|
||||||
nsp_hw_data *data;
|
nsp_hw_data *data;
|
||||||
|
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
|
|
||||||
nsp_dbg(NSP_DEBUG_INIT, "event: suspend");
|
nsp_dbg(NSP_DEBUG_INIT, "event: suspend");
|
||||||
|
|
||||||
if (info->host != NULL) {
|
if (info->host != NULL) {
|
||||||
|
@ -2001,9 +1999,6 @@ static int nsp_cs_suspend(struct pcmcia_device *dev)
|
||||||
|
|
||||||
info->stop = 1;
|
info->stop = 1;
|
||||||
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2015,11 +2010,6 @@ static int nsp_cs_resume(struct pcmcia_device *dev)
|
||||||
|
|
||||||
nsp_dbg(NSP_DEBUG_INIT, "event: resume");
|
nsp_dbg(NSP_DEBUG_INIT, "event: resume");
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
|
|
||||||
info->stop = 0;
|
info->stop = 0;
|
||||||
|
|
||||||
if (info->host != NULL) {
|
if (info->host != NULL) {
|
||||||
|
|
|
@ -311,22 +311,10 @@ static void qlogic_release(dev_link_t *link)
|
||||||
|
|
||||||
/*====================================================================*/
|
/*====================================================================*/
|
||||||
|
|
||||||
static int qlogic_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 qlogic_resume(struct pcmcia_device *dev)
|
static int qlogic_resume(struct pcmcia_device *dev)
|
||||||
{
|
{
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
scsi_info_t *info = link->priv;
|
scsi_info_t *info = link->priv;
|
||||||
|
|
||||||
|
@ -375,7 +363,6 @@ static struct pcmcia_driver qlogic_cs_driver = {
|
||||||
.probe = qlogic_attach,
|
.probe = qlogic_attach,
|
||||||
.remove = qlogic_detach,
|
.remove = qlogic_detach,
|
||||||
.id_table = qlogic_ids,
|
.id_table = qlogic_ids,
|
||||||
.suspend = qlogic_suspend,
|
|
||||||
.resume = qlogic_resume,
|
.resume = qlogic_resume,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -857,26 +857,12 @@ cs_failed:
|
||||||
return;
|
return;
|
||||||
} /* SYM53C500_config */
|
} /* SYM53C500_config */
|
||||||
|
|
||||||
static int sym53c500_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 sym53c500_resume(struct pcmcia_device *dev)
|
static int sym53c500_resume(struct pcmcia_device *dev)
|
||||||
{
|
{
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
struct scsi_info_t *info = link->priv;
|
struct scsi_info_t *info = link->priv;
|
||||||
|
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
|
|
||||||
/* See earlier comment about manufacturer IDs. */
|
/* See earlier comment about manufacturer IDs. */
|
||||||
if ((info->manf_id == MANFID_MACNICA) ||
|
if ((info->manf_id == MANFID_MACNICA) ||
|
||||||
(info->manf_id == MANFID_PIONEER) ||
|
(info->manf_id == MANFID_PIONEER) ||
|
||||||
|
@ -963,7 +949,6 @@ static struct pcmcia_driver sym53c500_cs_driver = {
|
||||||
.probe = SYM53C500_attach,
|
.probe = SYM53C500_attach,
|
||||||
.remove = SYM53C500_detach,
|
.remove = SYM53C500_detach,
|
||||||
.id_table = sym53c500_ids,
|
.id_table = sym53c500_ids,
|
||||||
.suspend = sym53c500_suspend,
|
|
||||||
.resume = sym53c500_resume,
|
.resume = sym53c500_resume,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,6 @@ static void serial_remove(dev_link_t *link)
|
||||||
static int serial_suspend(struct pcmcia_device *dev)
|
static int serial_suspend(struct pcmcia_device *dev)
|
||||||
{
|
{
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
|
|
||||||
if (link->state & DEV_CONFIG) {
|
if (link->state & DEV_CONFIG) {
|
||||||
struct serial_info *info = link->priv;
|
struct serial_info *info = link->priv;
|
||||||
|
@ -160,8 +159,8 @@ static int serial_suspend(struct pcmcia_device *dev)
|
||||||
for (i = 0; i < info->ndev; i++)
|
for (i = 0; i < info->ndev; i++)
|
||||||
serial8250_suspend_port(info->line[i]);
|
serial8250_suspend_port(info->line[i]);
|
||||||
|
|
||||||
if (!info->slave)
|
if (info->slave)
|
||||||
pcmcia_release_configuration(link->handle);
|
link->state &= DEV_SUSPEND_NORELEASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -170,15 +169,11 @@ static int serial_suspend(struct pcmcia_device *dev)
|
||||||
static int serial_resume(struct pcmcia_device *dev)
|
static int serial_resume(struct pcmcia_device *dev)
|
||||||
{
|
{
|
||||||
dev_link_t *link = dev_to_instance(dev);
|
dev_link_t *link = dev_to_instance(dev);
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
|
|
||||||
if (DEV_OK(link)) {
|
if (DEV_OK(link)) {
|
||||||
struct serial_info *info = link->priv;
|
struct serial_info *info = link->priv;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!info->slave)
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
|
|
||||||
for (i = 0; i < info->ndev; i++)
|
for (i = 0; i < info->ndev; i++)
|
||||||
serial8250_resume_port(info->line[i]);
|
serial8250_resume_port(info->line[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -232,28 +232,6 @@ static void ixj_cs_release(dev_link_t *link)
|
||||||
pcmcia_disable_device(link->handle);
|
pcmcia_disable_device(link->handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ixj_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 ixj_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 ixj_ids[] = {
|
static struct pcmcia_device_id ixj_ids[] = {
|
||||||
PCMCIA_DEVICE_MANF_CARD(0x0257, 0x0600),
|
PCMCIA_DEVICE_MANF_CARD(0x0257, 0x0600),
|
||||||
PCMCIA_DEVICE_NULL
|
PCMCIA_DEVICE_NULL
|
||||||
|
@ -268,8 +246,6 @@ static struct pcmcia_driver ixj_driver = {
|
||||||
.probe = ixj_attach,
|
.probe = ixj_attach,
|
||||||
.remove = ixj_detach,
|
.remove = ixj_detach,
|
||||||
.id_table = ixj_ids,
|
.id_table = ixj_ids,
|
||||||
.suspend = ixj_suspend,
|
|
||||||
.resume = ixj_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init ixj_pcmcia_init(void)
|
static int __init ixj_pcmcia_init(void)
|
||||||
|
|
|
@ -293,28 +293,6 @@ cs_failed:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sl811_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 sl811_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 int sl811_cs_attach(struct pcmcia_device *p_dev)
|
static int sl811_cs_attach(struct pcmcia_device *p_dev)
|
||||||
{
|
{
|
||||||
local_info_t *local;
|
local_info_t *local;
|
||||||
|
@ -359,8 +337,6 @@ static struct pcmcia_driver sl811_cs_driver = {
|
||||||
.probe = sl811_cs_attach,
|
.probe = sl811_cs_attach,
|
||||||
.remove = sl811_cs_detach,
|
.remove = sl811_cs_detach,
|
||||||
.id_table = sl811_ids,
|
.id_table = sl811_ids,
|
||||||
.suspend = sl811_suspend,
|
|
||||||
.resume = sl811_resume,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*====================================================================*/
|
/*====================================================================*/
|
||||||
|
|
|
@ -118,8 +118,7 @@ typedef struct dev_link_t {
|
||||||
/* Flags for device state */
|
/* Flags for device state */
|
||||||
#define DEV_PRESENT 0x01
|
#define DEV_PRESENT 0x01
|
||||||
#define DEV_CONFIG 0x02
|
#define DEV_CONFIG 0x02
|
||||||
#define DEV_STALE_CONFIG 0x04 /* release on close */
|
#define DEV_SUSPEND_NORELEASE 0x04
|
||||||
#define DEV_STALE_LINK 0x08 /* detach on release */
|
|
||||||
#define DEV_CONFIG_PENDING 0x10
|
#define DEV_CONFIG_PENDING 0x10
|
||||||
#define DEV_RELEASE_PENDING 0x20
|
#define DEV_RELEASE_PENDING 0x20
|
||||||
#define DEV_SUSPEND 0x40
|
#define DEV_SUSPEND 0x40
|
||||||
|
|
|
@ -284,16 +284,11 @@ static int pdacf_suspend(struct pcmcia_device *dev)
|
||||||
struct snd_pdacf *chip = link->priv;
|
struct snd_pdacf *chip = link->priv;
|
||||||
|
|
||||||
snd_printdd(KERN_DEBUG "SUSPEND\n");
|
snd_printdd(KERN_DEBUG "SUSPEND\n");
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
if (chip) {
|
if (chip) {
|
||||||
snd_printdd(KERN_DEBUG "snd_pdacf_suspend calling\n");
|
snd_printdd(KERN_DEBUG "snd_pdacf_suspend calling\n");
|
||||||
snd_pdacf_suspend(chip, PMSG_SUSPEND);
|
snd_pdacf_suspend(chip, PMSG_SUSPEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
snd_printdd(KERN_DEBUG "RESET_PHYSICAL\n");
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,12 +298,7 @@ static int pdacf_resume(struct pcmcia_device *dev)
|
||||||
struct snd_pdacf *chip = link->priv;
|
struct snd_pdacf *chip = link->priv;
|
||||||
|
|
||||||
snd_printdd(KERN_DEBUG "RESUME\n");
|
snd_printdd(KERN_DEBUG "RESUME\n");
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
|
|
||||||
snd_printdd(KERN_DEBUG "CARD_RESET\n");
|
|
||||||
if (DEV_OK(link)) {
|
if (DEV_OK(link)) {
|
||||||
snd_printdd(KERN_DEBUG "requestconfig...\n");
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
if (chip) {
|
if (chip) {
|
||||||
snd_printdd(KERN_DEBUG "calling snd_pdacf_resume\n");
|
snd_printdd(KERN_DEBUG "calling snd_pdacf_resume\n");
|
||||||
snd_pdacf_resume(chip);
|
snd_pdacf_resume(chip);
|
||||||
|
|
|
@ -284,14 +284,10 @@ static int vxp_suspend(struct pcmcia_device *dev)
|
||||||
struct vx_core *chip = link->priv;
|
struct vx_core *chip = link->priv;
|
||||||
|
|
||||||
snd_printdd(KERN_DEBUG "SUSPEND\n");
|
snd_printdd(KERN_DEBUG "SUSPEND\n");
|
||||||
link->state |= DEV_SUSPEND;
|
|
||||||
if (chip) {
|
if (chip) {
|
||||||
snd_printdd(KERN_DEBUG "snd_vx_suspend calling\n");
|
snd_printdd(KERN_DEBUG "snd_vx_suspend calling\n");
|
||||||
snd_vx_suspend(chip, PMSG_SUSPEND);
|
snd_vx_suspend(chip, PMSG_SUSPEND);
|
||||||
}
|
}
|
||||||
snd_printdd(KERN_DEBUG "RESET_PHYSICAL\n");
|
|
||||||
if (link->state & DEV_CONFIG)
|
|
||||||
pcmcia_release_configuration(link->handle);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -302,13 +298,8 @@ static int vxp_resume(struct pcmcia_device *dev)
|
||||||
struct vx_core *chip = link->priv;
|
struct vx_core *chip = link->priv;
|
||||||
|
|
||||||
snd_printdd(KERN_DEBUG "RESUME\n");
|
snd_printdd(KERN_DEBUG "RESUME\n");
|
||||||
link->state &= ~DEV_SUSPEND;
|
|
||||||
|
|
||||||
snd_printdd(KERN_DEBUG "CARD_RESET\n");
|
|
||||||
if (DEV_OK(link)) {
|
if (DEV_OK(link)) {
|
||||||
//struct snd_vxpocket *vxp = (struct snd_vxpocket *)chip;
|
//struct snd_vxpocket *vxp = (struct snd_vxpocket *)chip;
|
||||||
snd_printdd(KERN_DEBUG "requestconfig...\n");
|
|
||||||
pcmcia_request_configuration(link->handle, &link->conf);
|
|
||||||
if (chip) {
|
if (chip) {
|
||||||
snd_printdd(KERN_DEBUG "calling snd_vx_resume\n");
|
snd_printdd(KERN_DEBUG "calling snd_vx_resume\n");
|
||||||
snd_vx_resume(chip);
|
snd_vx_resume(chip);
|
||||||
|
|
Reference in New Issue