aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/cx25821/cx25821-audio-upstream.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/cx25821/cx25821-audio-upstream.c')
-rw-r--r--drivers/staging/cx25821/cx25821-audio-upstream.c146
1 files changed, 74 insertions, 72 deletions
diff --git a/drivers/staging/cx25821/cx25821-audio-upstream.c b/drivers/staging/cx25821/cx25821-audio-upstream.c
index 4c7d21e3d54..eb39d13f7d7 100644
--- a/drivers/staging/cx25821/cx25821-audio-upstream.c
+++ b/drivers/staging/cx25821/cx25821-audio-upstream.c
@@ -33,7 +33,7 @@
33#include <linux/fcntl.h> 33#include <linux/fcntl.h>
34#include <linux/delay.h> 34#include <linux/delay.h>
35#include <linux/slab.h> 35#include <linux/slab.h>
36#include <asm/uaccess.h> 36#include <linux/uaccess.h>
37 37
38MODULE_DESCRIPTION("v4l2 driver module for cx25821 based TV cards"); 38MODULE_DESCRIPTION("v4l2 driver module for cx25821 based TV cards");
39MODULE_AUTHOR("Hiep Huynh <hiep.huynh@conexant.com>"); 39MODULE_AUTHOR("Hiep Huynh <hiep.huynh@conexant.com>");
@@ -62,9 +62,8 @@ int cx25821_sram_channel_setup_upstream_audio(struct cx25821_dev *dev,
62 cdt = ch->cdt; 62 cdt = ch->cdt;
63 lines = ch->fifo_size / bpl; 63 lines = ch->fifo_size / bpl;
64 64
65 if (lines > 3) { 65 if (lines > 3)
66 lines = 3; 66 lines = 3;
67 }
68 67
69 BUG_ON(lines < 2); 68 BUG_ON(lines < 2);
70 69
@@ -84,7 +83,7 @@ int cx25821_sram_channel_setup_upstream_audio(struct cx25821_dev *dev,
84 cx_write(ch->cmds_start + 12, AUDIO_CDT_SIZE_QW); 83 cx_write(ch->cmds_start + 12, AUDIO_CDT_SIZE_QW);
85 cx_write(ch->cmds_start + 16, ch->ctrl_start); 84 cx_write(ch->cmds_start + 16, ch->ctrl_start);
86 85
87 //IQ size 86 /* IQ size */
88 cx_write(ch->cmds_start + 20, AUDIO_IQ_SIZE_DW); 87 cx_write(ch->cmds_start + 20, AUDIO_IQ_SIZE_DW);
89 88
90 for (i = 24; i < 80; i += 4) 89 for (i = 24; i < 80; i += 4)
@@ -100,7 +99,7 @@ int cx25821_sram_channel_setup_upstream_audio(struct cx25821_dev *dev,
100} 99}
101 100
102static __le32 *cx25821_risc_field_upstream_audio(struct cx25821_dev *dev, 101static __le32 *cx25821_risc_field_upstream_audio(struct cx25821_dev *dev,
103 __le32 * rp, 102 __le32 *rp,
104 dma_addr_t databuf_phys_addr, 103 dma_addr_t databuf_phys_addr,
105 unsigned int bpl, 104 unsigned int bpl,
106 int fifo_enable) 105 int fifo_enable)
@@ -116,8 +115,10 @@ static __le32 *cx25821_risc_field_upstream_audio(struct cx25821_dev *dev,
116 *(rp++) = cpu_to_le32(databuf_phys_addr + offset); 115 *(rp++) = cpu_to_le32(databuf_phys_addr + offset);
117 *(rp++) = cpu_to_le32(0); /* bits 63-32 */ 116 *(rp++) = cpu_to_le32(0); /* bits 63-32 */
118 117
119 // Check if we need to enable the FIFO after the first 3 lines 118 /* Check if we need to enable the FIFO
120 // For the upstream audio channel, the risc engine will enable the FIFO. 119 * after the first 3 lines.
120 * For the upstream audio channel,
121 * the risc engine will enable the FIFO */
121 if (fifo_enable && line == 2) { 122 if (fifo_enable && line == 2) {
122 *(rp++) = RISC_WRITECR; 123 *(rp++) = RISC_WRITECR;
123 *(rp++) = sram_ch->dma_ctl; 124 *(rp++) = sram_ch->dma_ctl;
@@ -160,7 +161,7 @@ int cx25821_risc_buffer_upstream_audio(struct cx25821_dev *dev,
160 risc_flag = RISC_CNT_INC; 161 risc_flag = RISC_CNT_INC;
161 } 162 }
162 163
163 //Calculate physical jump address 164 /* Calculate physical jump address */
164 if ((frame + 1) == NUM_AUDIO_FRAMES) { 165 if ((frame + 1) == NUM_AUDIO_FRAMES) {
165 risc_phys_jump_addr = 166 risc_phys_jump_addr =
166 dev->_risc_phys_start_addr + 167 dev->_risc_phys_start_addr +
@@ -179,17 +180,17 @@ int cx25821_risc_buffer_upstream_audio(struct cx25821_dev *dev,
179 fifo_enable); 180 fifo_enable);
180 181
181 if (USE_RISC_NOOP_AUDIO) { 182 if (USE_RISC_NOOP_AUDIO) {
182 for (i = 0; i < NUM_NO_OPS; i++) { 183 for (i = 0; i < NUM_NO_OPS; i++)
183 *(rp++) = cpu_to_le32(RISC_NOOP); 184 *(rp++) = cpu_to_le32(RISC_NOOP);
184 }
185 } 185 }
186 186
187 // Loop to (Nth)FrameRISC or to Start of Risc program & generate IRQ 187 /* Loop to (Nth)FrameRISC or to Start of Risc program &
188 * generate IRQ */
188 *(rp++) = cpu_to_le32(RISC_JUMP | RISC_IRQ1 | risc_flag); 189 *(rp++) = cpu_to_le32(RISC_JUMP | RISC_IRQ1 | risc_flag);
189 *(rp++) = cpu_to_le32(risc_phys_jump_addr); 190 *(rp++) = cpu_to_le32(risc_phys_jump_addr);
190 *(rp++) = cpu_to_le32(0); 191 *(rp++) = cpu_to_le32(0);
191 192
192 //Recalculate virtual address based on frame index 193 /* Recalculate virtual address based on frame index */
193 rp = dev->_risc_virt_addr + RISC_SYNC_INSTRUCTION_SIZE / 4 + 194 rp = dev->_risc_virt_addr + RISC_SYNC_INSTRUCTION_SIZE / 4 +
194 (AUDIO_RISC_DMA_BUF_SIZE * (frame + 1) / 4); 195 (AUDIO_RISC_DMA_BUF_SIZE * (frame + 1) / 4);
195 } 196 }
@@ -220,19 +221,19 @@ void cx25821_stop_upstream_audio(struct cx25821_dev *dev)
220 u32 tmp = 0; 221 u32 tmp = 0;
221 222
222 if (!dev->_audio_is_running) { 223 if (!dev->_audio_is_running) {
223 printk 224 printk(KERN_DEBUG
224 ("cx25821: No audio file is currently running so return!\n"); 225 "cx25821: No audio file is currently running so return!\n");
225 return; 226 return;
226 } 227 }
227 //Disable RISC interrupts 228 /* Disable RISC interrupts */
228 cx_write(sram_ch->int_msk, 0); 229 cx_write(sram_ch->int_msk, 0);
229 230
230 //Turn OFF risc and fifo enable in AUD_DMA_CNTRL 231 /* Turn OFF risc and fifo enable in AUD_DMA_CNTRL */
231 tmp = cx_read(sram_ch->dma_ctl); 232 tmp = cx_read(sram_ch->dma_ctl);
232 cx_write(sram_ch->dma_ctl, 233 cx_write(sram_ch->dma_ctl,
233 tmp & ~(sram_ch->fld_aud_fifo_en | sram_ch->fld_aud_risc_en)); 234 tmp & ~(sram_ch->fld_aud_fifo_en | sram_ch->fld_aud_risc_en));
234 235
235 //Clear data buffer memory 236 /* Clear data buffer memory */
236 if (dev->_audiodata_buf_virt_addr) 237 if (dev->_audiodata_buf_virt_addr)
237 memset(dev->_audiodata_buf_virt_addr, 0, 238 memset(dev->_audiodata_buf_virt_addr, 0,
238 dev->_audiodata_buf_size); 239 dev->_audiodata_buf_size);
@@ -253,9 +254,8 @@ void cx25821_stop_upstream_audio(struct cx25821_dev *dev)
253 254
254void cx25821_free_mem_upstream_audio(struct cx25821_dev *dev) 255void cx25821_free_mem_upstream_audio(struct cx25821_dev *dev)
255{ 256{
256 if (dev->_audio_is_running) { 257 if (dev->_audio_is_running)
257 cx25821_stop_upstream_audio(dev); 258 cx25821_stop_upstream_audio(dev);
258 }
259 259
260 cx25821_free_memory_audio(dev); 260 cx25821_free_memory_audio(dev);
261} 261}
@@ -282,7 +282,7 @@ int cx25821_get_audio_data(struct cx25821_dev *dev,
282 282
283 if (IS_ERR(myfile)) { 283 if (IS_ERR(myfile)) {
284 const int open_errno = -PTR_ERR(myfile); 284 const int open_errno = -PTR_ERR(myfile);
285 printk("%s(): ERROR opening file(%s) with errno = %d! \n", 285 printk(KERN_ERR "%s(): ERROR opening file(%s) with errno = %d!\n",
286 __func__, dev->_audiofilename, open_errno); 286 __func__, dev->_audiofilename, open_errno);
287 return PTR_ERR(myfile); 287 return PTR_ERR(myfile);
288 } else { 288 } else {
@@ -294,7 +294,7 @@ int cx25821_get_audio_data(struct cx25821_dev *dev,
294 } 294 }
295 295
296 if (!myfile->f_op->read) { 296 if (!myfile->f_op->read) {
297 printk("%s: File has no READ operations registered! \n", 297 printk("%s: File has no READ operations registered!\n",
298 __func__); 298 __func__);
299 filp_close(myfile, NULL); 299 filp_close(myfile, NULL);
300 return -EIO; 300 return -EIO;
@@ -347,7 +347,7 @@ static void cx25821_audioups_handler(struct work_struct *work)
347 container_of(work, struct cx25821_dev, _audio_work_entry); 347 container_of(work, struct cx25821_dev, _audio_work_entry);
348 348
349 if (!dev) { 349 if (!dev) {
350 printk("ERROR %s(): since container_of(work_struct) FAILED! \n", 350 printk(KERN_ERR "ERROR %s(): since container_of(work_struct) FAILED!\n",
351 __func__); 351 __func__);
352 return; 352 return;
353 } 353 }
@@ -373,19 +373,19 @@ int cx25821_openfile_audio(struct cx25821_dev *dev,
373 373
374 if (IS_ERR(myfile)) { 374 if (IS_ERR(myfile)) {
375 const int open_errno = -PTR_ERR(myfile); 375 const int open_errno = -PTR_ERR(myfile);
376 printk("%s(): ERROR opening file(%s) with errno = %d! \n", 376 printk(KERN_ERR "%s(): ERROR opening file(%s) with errno = %d!\n",
377 __func__, dev->_audiofilename, open_errno); 377 __func__, dev->_audiofilename, open_errno);
378 return PTR_ERR(myfile); 378 return PTR_ERR(myfile);
379 } else { 379 } else {
380 if (!(myfile->f_op)) { 380 if (!(myfile->f_op)) {
381 printk("%s: File has no file operations registered! \n", 381 printk("%s: File has no file operations registered!\n",
382 __func__); 382 __func__);
383 filp_close(myfile, NULL); 383 filp_close(myfile, NULL);
384 return -EIO; 384 return -EIO;
385 } 385 }
386 386
387 if (!myfile->f_op->read) { 387 if (!myfile->f_op->read) {
388 printk("%s: File has no READ operations registered! \n", 388 printk("%s: File has no READ operations registered!\n",
389 __func__); 389 __func__);
390 filp_close(myfile, NULL); 390 filp_close(myfile, NULL);
391 return -EIO; 391 return -EIO;
@@ -421,13 +421,11 @@ int cx25821_openfile_audio(struct cx25821_dev *dev,
421 } 421 }
422 } 422 }
423 423
424 if (i > 0) { 424 if (i > 0)
425 dev->_audioframe_count++; 425 dev->_audioframe_count++;
426 }
427 426
428 if (vfs_read_retval < line_size) { 427 if (vfs_read_retval < line_size)
429 break; 428 break;
430 }
431 } 429 }
432 430
433 dev->_audiofile_status = 431 dev->_audiofile_status =
@@ -460,14 +458,14 @@ static int cx25821_audio_upstream_buffer_prepare(struct cx25821_dev *dev,
460 dev->_audiorisc_size = dev->audio_upstream_riscbuf_size; 458 dev->_audiorisc_size = dev->audio_upstream_riscbuf_size;
461 459
462 if (!dev->_risc_virt_addr) { 460 if (!dev->_risc_virt_addr) {
463 printk 461 printk(KERN_DEBUG
464 ("cx25821 ERROR: pci_alloc_consistent() FAILED to allocate memory for RISC program! Returning.\n"); 462 "cx25821 ERROR: pci_alloc_consistent() FAILED to allocate memory for RISC program! Returning.\n");
465 return -ENOMEM; 463 return -ENOMEM;
466 } 464 }
467 //Clear out memory at address 465 /* Clear out memory at address */
468 memset(dev->_risc_virt_addr, 0, dev->_audiorisc_size); 466 memset(dev->_risc_virt_addr, 0, dev->_audiorisc_size);
469 467
470 //For Audio Data buffer allocation 468 /* For Audio Data buffer allocation */
471 dev->_audiodata_buf_virt_addr = 469 dev->_audiodata_buf_virt_addr =
472 pci_alloc_consistent(dev->pci, dev->audio_upstream_databuf_size, 470 pci_alloc_consistent(dev->pci, dev->audio_upstream_databuf_size,
473 &data_dma_addr); 471 &data_dma_addr);
@@ -475,30 +473,30 @@ static int cx25821_audio_upstream_buffer_prepare(struct cx25821_dev *dev,
475 dev->_audiodata_buf_size = dev->audio_upstream_databuf_size; 473 dev->_audiodata_buf_size = dev->audio_upstream_databuf_size;
476 474
477 if (!dev->_audiodata_buf_virt_addr) { 475 if (!dev->_audiodata_buf_virt_addr) {
478 printk 476 printk(KERN_DEBUG
479 ("cx25821 ERROR: pci_alloc_consistent() FAILED to allocate memory for data buffer! Returning. \n"); 477 "cx25821 ERROR: pci_alloc_consistent() FAILED to allocate memory for data buffer! Returning.\n");
480 return -ENOMEM; 478 return -ENOMEM;
481 } 479 }
482 //Clear out memory at address 480 /* Clear out memory at address */
483 memset(dev->_audiodata_buf_virt_addr, 0, dev->_audiodata_buf_size); 481 memset(dev->_audiodata_buf_virt_addr, 0, dev->_audiodata_buf_size);
484 482
485 ret = cx25821_openfile_audio(dev, sram_ch); 483 ret = cx25821_openfile_audio(dev, sram_ch);
486 if (ret < 0) 484 if (ret < 0)
487 return ret; 485 return ret;
488 486
489 //Creating RISC programs 487 /* Creating RISC programs */
490 ret = 488 ret =
491 cx25821_risc_buffer_upstream_audio(dev, dev->pci, bpl, 489 cx25821_risc_buffer_upstream_audio(dev, dev->pci, bpl,
492 dev->_audio_lines_count); 490 dev->_audio_lines_count);
493 if (ret < 0) { 491 if (ret < 0) {
494 printk(KERN_DEBUG 492 printk(KERN_DEBUG
495 "cx25821 ERROR creating audio upstream RISC programs! \n"); 493 "cx25821 ERROR creating audio upstream RISC programs!\n");
496 goto error; 494 goto error;
497 } 495 }
498 496
499 return 0; 497 return 0;
500 498
501 error: 499error:
502 return ret; 500 return ret;
503} 501}
504 502
@@ -512,22 +510,22 @@ int cx25821_audio_upstream_irq(struct cx25821_dev *dev, int chan_num,
512 __le32 *rp; 510 __le32 *rp;
513 511
514 if (status & FLD_AUD_SRC_RISCI1) { 512 if (status & FLD_AUD_SRC_RISCI1) {
515 //Get interrupt_index of the program that interrupted 513 /* Get interrupt_index of the program that interrupted */
516 u32 prog_cnt = cx_read(channel->gpcnt); 514 u32 prog_cnt = cx_read(channel->gpcnt);
517 515
518 //Since we've identified our IRQ, clear our bits from the interrupt mask and interrupt status registers 516 /* Since we've identified our IRQ, clear our bits from the
517 * interrupt mask and interrupt status registers */
519 cx_write(channel->int_msk, 0); 518 cx_write(channel->int_msk, 0);
520 cx_write(channel->int_stat, cx_read(channel->int_stat)); 519 cx_write(channel->int_stat, cx_read(channel->int_stat));
521 520
522 spin_lock(&dev->slock); 521 spin_lock(&dev->slock);
523 522
524 while (prog_cnt != dev->_last_index_irq) { 523 while (prog_cnt != dev->_last_index_irq) {
525 //Update _last_index_irq 524 /* Update _last_index_irq */
526 if (dev->_last_index_irq < (NUMBER_OF_PROGRAMS - 1)) { 525 if (dev->_last_index_irq < (NUMBER_OF_PROGRAMS - 1))
527 dev->_last_index_irq++; 526 dev->_last_index_irq++;
528 } else { 527 else
529 dev->_last_index_irq = 0; 528 dev->_last_index_irq = 0;
530 }
531 529
532 dev->_audioframe_index = dev->_last_index_irq; 530 dev->_audioframe_index = dev->_last_index_irq;
533 531
@@ -559,7 +557,7 @@ int cx25821_audio_upstream_irq(struct cx25821_dev *dev, int chan_num,
559 cpu_to_le32(RISC_NOOP); 557 cpu_to_le32(RISC_NOOP);
560 } 558 }
561 } 559 }
562 // Jump to 2nd Audio Frame 560 /* Jump to 2nd Audio Frame */
563 *(rp++) = 561 *(rp++) =
564 cpu_to_le32(RISC_JUMP | RISC_IRQ1 | 562 cpu_to_le32(RISC_JUMP | RISC_IRQ1 |
565 RISC_CNT_RESET); 563 RISC_CNT_RESET);
@@ -582,7 +580,8 @@ int cx25821_audio_upstream_irq(struct cx25821_dev *dev, int chan_num,
582 printk("%s: Audio Received OpCode Error Interrupt!\n", 580 printk("%s: Audio Received OpCode Error Interrupt!\n",
583 __func__); 581 __func__);
584 582
585 // Read and write back the interrupt status register to clear our bits 583 /* Read and write back the interrupt status register to clear
584 * our bits */
586 cx_write(channel->int_stat, cx_read(channel->int_stat)); 585 cx_write(channel->int_stat, cx_read(channel->int_stat));
587 } 586 }
588 587
@@ -591,7 +590,7 @@ int cx25821_audio_upstream_irq(struct cx25821_dev *dev, int chan_num,
591 dev->_audioframe_count); 590 dev->_audioframe_count);
592 return -1; 591 return -1;
593 } 592 }
594 //ElSE, set the interrupt mask register, re-enable irq. 593 /* ElSE, set the interrupt mask register, re-enable irq. */
595 int_msk_tmp = cx_read(channel->int_msk); 594 int_msk_tmp = cx_read(channel->int_msk);
596 cx_write(channel->int_msk, int_msk_tmp |= _intr_msk); 595 cx_write(channel->int_msk, int_msk_tmp |= _intr_msk);
597 596
@@ -613,7 +612,7 @@ static irqreturn_t cx25821_upstream_irq_audio(int irq, void *dev_id)
613 msk_stat = cx_read(sram_ch->int_mstat); 612 msk_stat = cx_read(sram_ch->int_mstat);
614 audio_status = cx_read(sram_ch->int_stat); 613 audio_status = cx_read(sram_ch->int_stat);
615 614
616 // Only deal with our interrupt 615 /* Only deal with our interrupt */
617 if (audio_status) { 616 if (audio_status) {
618 handled = 617 handled =
619 cx25821_audio_upstream_irq(dev, 618 cx25821_audio_upstream_irq(dev,
@@ -622,11 +621,10 @@ static irqreturn_t cx25821_upstream_irq_audio(int irq, void *dev_id)
622 audio_status); 621 audio_status);
623 } 622 }
624 623
625 if (handled < 0) { 624 if (handled < 0)
626 cx25821_stop_upstream_audio(dev); 625 cx25821_stop_upstream_audio(dev);
627 } else { 626 else
628 handled += handled; 627 handled += handled;
629 }
630 628
631 return IRQ_RETVAL(handled); 629 return IRQ_RETVAL(handled);
632} 630}
@@ -638,13 +636,14 @@ static void cx25821_wait_fifo_enable(struct cx25821_dev *dev,
638 u32 tmp; 636 u32 tmp;
639 637
640 do { 638 do {
641 //Wait 10 microsecond before checking to see if the FIFO is turned ON. 639 /* Wait 10 microsecond before checking to see if the FIFO is
640 * turned ON. */
642 udelay(10); 641 udelay(10);
643 642
644 tmp = cx_read(sram_ch->dma_ctl); 643 tmp = cx_read(sram_ch->dma_ctl);
645 644
646 if (count++ > 1000) //10 millisecond timeout 645 /* 10 millisecond timeout */
647 { 646 if (count++ > 1000) {
648 printk 647 printk
649 ("cx25821 ERROR: %s() fifo is NOT turned on. Timeout!\n", 648 ("cx25821 ERROR: %s() fifo is NOT turned on. Timeout!\n",
650 __func__); 649 __func__);
@@ -661,31 +660,34 @@ int cx25821_start_audio_dma_upstream(struct cx25821_dev *dev,
661 u32 tmp = 0; 660 u32 tmp = 0;
662 int err = 0; 661 int err = 0;
663 662
664 // Set the physical start address of the RISC program in the initial program counter(IPC) member of the CMDS. 663 /* Set the physical start address of the RISC program in the initial
664 * program counter(IPC) member of the CMDS. */
665 cx_write(sram_ch->cmds_start + 0, dev->_risc_phys_addr); 665 cx_write(sram_ch->cmds_start + 0, dev->_risc_phys_addr);
666 cx_write(sram_ch->cmds_start + 4, 0); /* Risc IPC High 64 bits 63-32 */ 666 /* Risc IPC High 64 bits 63-32 */
667 cx_write(sram_ch->cmds_start + 4, 0);
667 668
668 /* reset counter */ 669 /* reset counter */
669 cx_write(sram_ch->gpcnt_ctl, 3); 670 cx_write(sram_ch->gpcnt_ctl, 3);
670 671
671 //Set the line length (It looks like we do not need to set the line length) 672 /* Set the line length (It looks like we do not need to set the
673 * line length) */
672 cx_write(sram_ch->aud_length, AUDIO_LINE_SIZE & FLD_AUD_DST_LN_LNGTH); 674 cx_write(sram_ch->aud_length, AUDIO_LINE_SIZE & FLD_AUD_DST_LN_LNGTH);
673 675
674 //Set the input mode to 16-bit 676 /* Set the input mode to 16-bit */
675 tmp = cx_read(sram_ch->aud_cfg); 677 tmp = cx_read(sram_ch->aud_cfg);
676 tmp |= 678 tmp |=
677 FLD_AUD_SRC_ENABLE | FLD_AUD_DST_PK_MODE | FLD_AUD_CLK_ENABLE | 679 FLD_AUD_SRC_ENABLE | FLD_AUD_DST_PK_MODE | FLD_AUD_CLK_ENABLE |
678 FLD_AUD_MASTER_MODE | FLD_AUD_CLK_SELECT_PLL_D | FLD_AUD_SONY_MODE; 680 FLD_AUD_MASTER_MODE | FLD_AUD_CLK_SELECT_PLL_D | FLD_AUD_SONY_MODE;
679 cx_write(sram_ch->aud_cfg, tmp); 681 cx_write(sram_ch->aud_cfg, tmp);
680 682
681 // Read and write back the interrupt status register to clear it 683 /* Read and write back the interrupt status register to clear it */
682 tmp = cx_read(sram_ch->int_stat); 684 tmp = cx_read(sram_ch->int_stat);
683 cx_write(sram_ch->int_stat, tmp); 685 cx_write(sram_ch->int_stat, tmp);
684 686
685 // Clear our bits from the interrupt status register. 687 /* Clear our bits from the interrupt status register. */
686 cx_write(sram_ch->int_stat, _intr_msk); 688 cx_write(sram_ch->int_stat, _intr_msk);
687 689
688 //Set the interrupt mask register, enable irq. 690 /* Set the interrupt mask register, enable irq. */
689 cx_set(PCI_INT_MSK, cx_read(PCI_INT_MSK) | (1 << sram_ch->irq_bit)); 691 cx_set(PCI_INT_MSK, cx_read(PCI_INT_MSK) | (1 << sram_ch->irq_bit));
690 tmp = cx_read(sram_ch->int_msk); 692 tmp = cx_read(sram_ch->int_msk);
691 cx_write(sram_ch->int_msk, tmp |= _intr_msk); 693 cx_write(sram_ch->int_msk, tmp |= _intr_msk);
@@ -699,19 +701,19 @@ int cx25821_start_audio_dma_upstream(struct cx25821_dev *dev,
699 goto fail_irq; 701 goto fail_irq;
700 } 702 }
701 703
702 // Start the DMA engine 704 /* Start the DMA engine */
703 tmp = cx_read(sram_ch->dma_ctl); 705 tmp = cx_read(sram_ch->dma_ctl);
704 cx_set(sram_ch->dma_ctl, tmp | sram_ch->fld_aud_risc_en); 706 cx_set(sram_ch->dma_ctl, tmp | sram_ch->fld_aud_risc_en);
705 707
706 dev->_audio_is_running = 1; 708 dev->_audio_is_running = 1;
707 dev->_is_first_audio_frame = 1; 709 dev->_is_first_audio_frame = 1;
708 710
709 // The fifo_en bit turns on by the first Risc program 711 /* The fifo_en bit turns on by the first Risc program */
710 cx25821_wait_fifo_enable(dev, sram_ch); 712 cx25821_wait_fifo_enable(dev, sram_ch);
711 713
712 return 0; 714 return 0;
713 715
714 fail_irq: 716fail_irq:
715 cx25821_dev_unregister(dev); 717 cx25821_dev_unregister(dev);
716 return err; 718 return err;
717} 719}
@@ -731,14 +733,14 @@ int cx25821_audio_upstream_init(struct cx25821_dev *dev, int channel_select)
731 dev->_audio_upstream_channel_select = channel_select; 733 dev->_audio_upstream_channel_select = channel_select;
732 sram_ch = &dev->sram_channels[channel_select]; 734 sram_ch = &dev->sram_channels[channel_select];
733 735
734 //Work queue 736 /* Work queue */
735 INIT_WORK(&dev->_audio_work_entry, cx25821_audioups_handler); 737 INIT_WORK(&dev->_audio_work_entry, cx25821_audioups_handler);
736 dev->_irq_audio_queues = 738 dev->_irq_audio_queues =
737 create_singlethread_workqueue("cx25821_audioworkqueue"); 739 create_singlethread_workqueue("cx25821_audioworkqueue");
738 740
739 if (!dev->_irq_audio_queues) { 741 if (!dev->_irq_audio_queues) {
740 printk 742 printk(KERN_DEBUG
741 ("cx25821 ERROR: create_singlethread_workqueue() for Audio FAILED!\n"); 743 "cx25821 ERROR: create_singlethread_workqueue() for Audio FAILED!\n");
742 return -ENOMEM; 744 return -ENOMEM;
743 } 745 }
744 746
@@ -759,7 +761,7 @@ int cx25821_audio_upstream_init(struct cx25821_dev *dev, int channel_select)
759 memcpy(dev->_audiofilename, dev->input_audiofilename, 761 memcpy(dev->_audiofilename, dev->input_audiofilename,
760 str_length + 1); 762 str_length + 1);
761 763
762 //Default if filename is empty string 764 /* Default if filename is empty string */
763 if (strcmp(dev->input_audiofilename, "") == 0) { 765 if (strcmp(dev->input_audiofilename, "") == 0) {
764 dev->_audiofilename = "/root/audioGOOD.wav"; 766 dev->_audiofilename = "/root/audioGOOD.wav";
765 } 767 }
@@ -782,7 +784,7 @@ int cx25821_audio_upstream_init(struct cx25821_dev *dev, int channel_select)
782 RISC_SYNC_INSTRUCTION_SIZE; 784 RISC_SYNC_INSTRUCTION_SIZE;
783 dev->audio_upstream_databuf_size = AUDIO_DATA_BUF_SZ * NUM_AUDIO_PROGS; 785 dev->audio_upstream_databuf_size = AUDIO_DATA_BUF_SZ * NUM_AUDIO_PROGS;
784 786
785 //Allocating buffers and prepare RISC program 787 /* Allocating buffers and prepare RISC program */
786 retval = 788 retval =
787 cx25821_audio_upstream_buffer_prepare(dev, sram_ch, _line_size); 789 cx25821_audio_upstream_buffer_prepare(dev, sram_ch, _line_size);
788 if (retval < 0) { 790 if (retval < 0) {
@@ -791,12 +793,12 @@ int cx25821_audio_upstream_init(struct cx25821_dev *dev, int channel_select)
791 dev->name); 793 dev->name);
792 goto error; 794 goto error;
793 } 795 }
794 //Start RISC engine 796 /* Start RISC engine */
795 cx25821_start_audio_dma_upstream(dev, sram_ch); 797 cx25821_start_audio_dma_upstream(dev, sram_ch);
796 798
797 return 0; 799 return 0;
798 800
799 error: 801error:
800 cx25821_dev_unregister(dev); 802 cx25821_dev_unregister(dev);
801 803
802 return err; 804 return err;