Lines Matching full:link
45 static int pdacf_config(struct pcmcia_device *link);
48 static void pdacf_release(struct pcmcia_device *link) in pdacf_release() argument
50 free_irq(link->irq, link->priv); in pdacf_release()
51 pcmcia_disable_device(link); in pdacf_release()
59 struct pcmcia_device *link = pdacf->p_dev; in snd_pdacf_free() local
61 pdacf_release(link); in snd_pdacf_free()
79 static int snd_pdacf_probe(struct pcmcia_device *link) in snd_pdacf_probe() argument
94 dev_err(&link->dev, "pdacf: too many cards found\n"); in snd_pdacf_probe()
101 err = snd_card_new(&link->dev, index[i], id[i], THIS_MODULE, in snd_pdacf_probe()
104 dev_err(&link->dev, "pdacf: cannot create a card instance\n"); in snd_pdacf_probe()
124 pdacf->p_dev = link; in snd_pdacf_probe()
125 link->priv = pdacf; in snd_pdacf_probe()
127 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO; in snd_pdacf_probe()
128 link->resource[0]->end = 16; in snd_pdacf_probe()
130 link->config_flags = CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ; in snd_pdacf_probe()
131 link->config_index = 1; in snd_pdacf_probe()
132 link->config_regs = PRESENT_OPTION; in snd_pdacf_probe()
134 return pdacf_config(link); in snd_pdacf_probe()
183 static void snd_pdacf_detach(struct pcmcia_device *link) in snd_pdacf_detach() argument
185 struct snd_pdacf *chip = link->priv; in snd_pdacf_detach()
198 static int pdacf_config(struct pcmcia_device *link) in pdacf_config() argument
200 struct snd_pdacf *pdacf = link->priv; in pdacf_config()
203 link->config_index = 0x5; in pdacf_config()
204 link->config_flags |= CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ; in pdacf_config()
206 ret = pcmcia_request_io(link); in pdacf_config()
210 ret = request_threaded_irq(link->irq, pdacf_interrupt, in pdacf_config()
212 IRQF_SHARED, link->devname, link->priv); in pdacf_config()
216 ret = pcmcia_enable_device(link); in pdacf_config()
220 if (snd_pdacf_assign_resources(pdacf, link->resource[0]->start, in pdacf_config()
221 link->irq) < 0) in pdacf_config()
224 pdacf->card->sync_irq = link->irq; in pdacf_config()
228 free_irq(link->irq, link->priv); in pdacf_config()
230 pcmcia_disable_device(link); in pdacf_config()
236 static int pdacf_suspend(struct pcmcia_device *link) in pdacf_suspend() argument
238 struct snd_pdacf *chip = link->priv; in pdacf_suspend()
246 static int pdacf_resume(struct pcmcia_device *link) in pdacf_resume() argument
248 struct snd_pdacf *chip = link->priv; in pdacf_resume()
250 if (pcmcia_dev_present(link)) { in pdacf_resume()