Lines Matching refs:dev
47 int msnd_register(multisound_dev_t *dev) in msnd_register() argument
58 devs[i] = dev; in msnd_register()
63 void msnd_unregister(multisound_dev_t *dev) in msnd_unregister() argument
68 if (devs[i] == dev) in msnd_unregister()
243 static int msnd_wait_TXDE(multisound_dev_t *dev) in msnd_wait_TXDE() argument
245 register unsigned int io = dev->io; in msnd_wait_TXDE()
255 static int msnd_wait_HC0(multisound_dev_t *dev) in msnd_wait_HC0() argument
257 register unsigned int io = dev->io; in msnd_wait_HC0()
267 int msnd_send_dsp_cmd(multisound_dev_t *dev, BYTE cmd) in msnd_send_dsp_cmd() argument
271 spin_lock_irqsave(&dev->lock, flags); in msnd_send_dsp_cmd()
272 if (msnd_wait_HC0(dev) == 0) { in msnd_send_dsp_cmd()
273 msnd_outb(cmd, dev->io + HP_CVR); in msnd_send_dsp_cmd()
274 spin_unlock_irqrestore(&dev->lock, flags); in msnd_send_dsp_cmd()
277 spin_unlock_irqrestore(&dev->lock, flags); in msnd_send_dsp_cmd()
284 int msnd_send_word(multisound_dev_t *dev, unsigned char high, in msnd_send_word() argument
287 register unsigned int io = dev->io; in msnd_send_word()
289 if (msnd_wait_TXDE(dev) == 0) { in msnd_send_word()
301 int msnd_upload_host(multisound_dev_t *dev, char *bin, int len) in msnd_upload_host() argument
311 if (msnd_send_word(dev, bin[i], bin[i + 1], bin[i + 2]) != 0) in msnd_upload_host()
314 msnd_inb(dev->io + HP_RXL); in msnd_upload_host()
315 msnd_inb(dev->io + HP_CVR); in msnd_upload_host()
320 int msnd_enable_irq(multisound_dev_t *dev) in msnd_enable_irq() argument
324 if (dev->irq_ref++) in msnd_enable_irq()
329 spin_lock_irqsave(&dev->lock, flags); in msnd_enable_irq()
330 if (msnd_wait_TXDE(dev) == 0) { in msnd_enable_irq()
331 msnd_outb(msnd_inb(dev->io + HP_ICR) | HPICR_TREQ, dev->io + HP_ICR); in msnd_enable_irq()
332 if (dev->type == msndClassic) in msnd_enable_irq()
333 msnd_outb(dev->irqid, dev->io + HP_IRQM); in msnd_enable_irq()
334 msnd_outb(msnd_inb(dev->io + HP_ICR) & ~HPICR_TREQ, dev->io + HP_ICR); in msnd_enable_irq()
335 msnd_outb(msnd_inb(dev->io + HP_ICR) | HPICR_RREQ, dev->io + HP_ICR); in msnd_enable_irq()
336 enable_irq(dev->irq); in msnd_enable_irq()
337 msnd_init_queue(dev->DSPQ, dev->dspq_data_buff, dev->dspq_buff_size); in msnd_enable_irq()
338 spin_unlock_irqrestore(&dev->lock, flags); in msnd_enable_irq()
341 spin_unlock_irqrestore(&dev->lock, flags); in msnd_enable_irq()
348 int msnd_disable_irq(multisound_dev_t *dev) in msnd_disable_irq() argument
352 if (--dev->irq_ref > 0) in msnd_disable_irq()
355 if (dev->irq_ref < 0) in msnd_disable_irq()
356 printk(KERN_DEBUG LOGNAME ": IRQ ref count is %d\n", dev->irq_ref); in msnd_disable_irq()
360 spin_lock_irqsave(&dev->lock, flags); in msnd_disable_irq()
361 if (msnd_wait_TXDE(dev) == 0) { in msnd_disable_irq()
362 msnd_outb(msnd_inb(dev->io + HP_ICR) & ~HPICR_RREQ, dev->io + HP_ICR); in msnd_disable_irq()
363 if (dev->type == msndClassic) in msnd_disable_irq()
364 msnd_outb(HPIRQ_NONE, dev->io + HP_IRQM); in msnd_disable_irq()
365 disable_irq(dev->irq); in msnd_disable_irq()
366 spin_unlock_irqrestore(&dev->lock, flags); in msnd_disable_irq()
369 spin_unlock_irqrestore(&dev->lock, flags); in msnd_disable_irq()