static void avmcs_release(u_long arg)
{
    dev_link_t *link = (dev_link_t *)arg;

    /*
       If the device is currently in use, we won't release until it
       is actually closed.
    */
    if (link->open) {
	link->state |= DEV_STALE_CONFIG;
	return;
    }

    b1pcmcia_delcard(link->io.BasePort1, link->irq.AssignedIRQ);

    /* Unlink the device chain */
    link->dev = NULL;
    
    /* 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);
    link->state &= ~DEV_CONFIG;
    
    if (link->state & DEV_STALE_LINK)
	avmcs_detach(link);
    
} /* avmcs_release */
Esempio n. 2
0
static void avmcs_release(dev_link_t *link)
{
    b1pcmcia_delcard(link->io.BasePort1, link->irq.AssignedIRQ);

    /* Unlink the device chain */
    link->dev = NULL;
    
    /* Don't bother checking to see if these succeed or not */
    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_LINK)
	avmcs_detach(link);
    
} /* avmcs_release */
Esempio n. 3
0
static void avmcs_release(struct pcmcia_device *link)
{
	b1pcmcia_delcard(link->io.BasePort1, link->irq.AssignedIRQ);
	pcmcia_disable_device(link);
} /* avmcs_release */
Esempio n. 4
0
static void avmcs_release(struct pcmcia_device *link)
{
    b1pcmcia_delcard(link->resource[0]->start, link->irq);
    pcmcia_disable_device(link);
} /* avmcs_release */