• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/sound/oss/

Lines Matching refs:devc

46 #define	DATAPORT   (devc->base)
47 #define COMDPORT (devc->base+1)
48 #define STATPORT (devc->base+1)
50 static int uart401_status(uart401_devc * devc)
55 #define input_avail(devc) (!(uart401_status(devc)&INPUT_AVAIL))
56 #define output_ready(devc) (!(uart401_status(devc)&OUTPUT_READY))
58 static void uart401_cmd(uart401_devc * devc, unsigned char cmd)
63 static int uart401_read(uart401_devc * devc)
68 static void uart401_write(uart401_devc * devc, unsigned char byte)
79 static int reset_uart401(uart401_devc * devc);
80 static void enter_uart_mode(uart401_devc * devc);
82 static void uart401_input_loop(uart401_devc * devc)
86 while (input_avail(devc) && --work_limit)
88 unsigned char c = uart401_read(devc);
91 devc->input_byte = c;
92 else if (devc->opened & OPEN_READ && devc->midi_input_intr)
93 devc->midi_input_intr(devc->my_dev, c);
96 printk(KERN_WARNING "Too much work in interrupt on uart401 (0x%X). UART jabbering ??\n", devc->base);
101 uart401_devc *devc = dev_id;
103 if (devc == NULL)
105 printk(KERN_ERR "uart401: bad devc\n");
109 if (input_avail(devc))
110 uart401_input_loop(devc);
120 uart401_devc *devc = (uart401_devc *) midi_devs[dev]->devc;
122 if (devc->opened)
127 while (input_avail(devc))
128 uart401_read(devc);
130 devc->midi_input_intr = input;
131 devc->opened = mode;
132 enter_uart_mode(devc);
133 devc->disabled = 0;
140 uart401_devc *devc = (uart401_devc *) midi_devs[dev]->devc;
142 reset_uart401(devc);
143 devc->opened = 0;
150 uart401_devc *devc = (uart401_devc *) midi_devs[dev]->devc;
152 if (devc->disabled)
158 spin_lock_irqsave(&devc->lock,flags);
159 if (input_avail(devc))
160 uart401_input_loop(devc);
162 spin_unlock_irqrestore(&devc->lock,flags);
169 for (timeout = 30000; timeout > 0 && !output_ready(devc); timeout--);
171 if (!output_ready(devc))
174 devc->disabled = 1;
175 reset_uart401(devc);
176 enter_uart_mode(devc);
179 uart401_write(devc, midi_byte);
221 static void enter_uart_mode(uart401_devc * devc)
226 spin_lock_irqsave(&devc->lock,flags);
227 for (timeout = 30000; timeout > 0 && !output_ready(devc); timeout--);
229 devc->input_byte = 0;
230 uart401_cmd(devc, UART_MODE_ON);
234 if (devc->input_byte == MPU_ACK)
236 else if (input_avail(devc))
237 if (uart401_read(devc) == MPU_ACK)
240 spin_unlock_irqrestore(&devc->lock,flags);
243 static int reset_uart401(uart401_devc * devc)
255 for (timeout = 30000; timeout > 0 && !output_ready(devc); timeout--);
256 devc->input_byte = 0;
257 uart401_cmd(devc, MPU_RESET);
266 if (devc->input_byte == MPU_ACK) /* Interrupt */
268 else if (input_avail(devc))
270 if (uart401_read(devc) == MPU_ACK)
285 uart401_input_loop(devc); /*
294 uart401_devc *devc;
309 devc = kmalloc(sizeof(uart401_devc), GFP_KERNEL);
310 if (!devc) {
315 devc->base = hw_config->io_base;
316 devc->irq = hw_config->irq;
317 devc->osp = hw_config->osp;
318 devc->midi_input_intr = NULL;
319 devc->opened = 0;
320 devc->input_byte = 0;
321 devc->my_dev = 0;
322 devc->share_irq = 0;
323 spin_lock_init(&devc->lock);
325 spin_lock_irqsave(&devc->lock,flags);
326 ok = reset_uart401(devc);
327 spin_unlock_irqrestore(&devc->lock,flags);
335 if (devc->irq < 0) {
336 devc->share_irq = 1;
337 devc->irq *= -1;
339 devc->share_irq = 0;
341 if (!devc->share_irq)
342 if (request_irq(devc->irq, uart401intr, 0, "MPU-401 UART", devc) < 0) {
343 printk(KERN_WARNING "uart401: Failed to allocate IRQ%d\n", devc->irq);
344 devc->share_irq = 1;
346 devc->my_dev = sound_alloc_mididev();
347 enter_uart_mode(devc);
349 if (devc->my_dev == -1) {
354 midi_devs[devc->my_dev] = kmalloc(sizeof(struct midi_operations), GFP_KERNEL);
355 if (!midi_devs[devc->my_dev]) {
359 memcpy(midi_devs[devc->my_dev], &uart401_operations, sizeof(struct midi_operations));
362 midi_devs[devc->my_dev]->owner = owner;
364 midi_devs[devc->my_dev]->devc = devc;
365 midi_devs[devc->my_dev]->converter = kmalloc(sizeof(struct synth_operations), GFP_KERNEL);
366 if (!midi_devs[devc->my_dev]->converter) {
370 memcpy(midi_devs[devc->my_dev]->converter, &std_midi_synth, sizeof(struct synth_operations));
371 strcpy(midi_devs[devc->my_dev]->info.name, name);
372 midi_devs[devc->my_dev]->converter->id = "UART401";
373 midi_devs[devc->my_dev]->converter->midi_dev = devc->my_dev;
376 midi_devs[devc->my_dev]->converter->owner = owner;
378 hw_config->slots[4] = devc->my_dev;
380 devc->opened = 0;
383 kfree(midi_devs[devc->my_dev]);
385 sound_unload_mididev(devc->my_dev);
387 if (!devc->share_irq)
388 free_irq(devc->irq, devc);
390 kfree(devc);
398 uart401_devc *devc;
407 devc = midi_devs[hw_config->slots[4]]->devc;
408 if (devc == NULL)
411 reset_uart401(devc);
414 if (!devc->share_irq)
415 free_irq(devc->irq, devc);
416 if (devc)
418 kfree(midi_devs[devc->my_dev]->converter);
419 kfree(midi_devs[devc->my_dev]);
420 kfree(devc);
421 devc = NULL;