Lines Matching defs:korg1212

389 MODULE_DESCRIPTION("korg1212");
391 MODULE_SUPPORTED_DEVICE("{{KORG,korg1212}}");
508 static int snd_korg1212_Send1212Command(struct snd_korg1212 *korg1212,
517 if (!korg1212->outDoorbellPtr) {
523 doorbellVal, mailBox0Val, stateName[korg1212->cardState]);
525 writel(mailBox3Val, korg1212->mailbox3Ptr);
526 writel(mailBox2Val, korg1212->mailbox2Ptr);
527 writel(mailBox1Val, korg1212->mailbox1Ptr);
528 writel(mailBox0Val, korg1212->mailbox0Ptr);
529 writel(doorbellVal, korg1212->outDoorbellPtr); // interrupt the card
547 mailBox3Lo = readl(korg1212->mailbox3Ptr);
556 korg1212->cmdRetryCount += retryCount;
567 static void snd_korg1212_SendStop(struct snd_korg1212 *korg1212)
569 if (! korg1212->stop_pending_cnt) {
570 korg1212->sharedBufferPtr->cardCommand = 0xffffffff;
572 korg1212->stop_pending_cnt = HZ;
573 mod_timer(&korg1212->timer, jiffies + 1);
577 static void snd_korg1212_SendStopAndWait(struct snd_korg1212 *korg1212)
580 spin_lock_irqsave(&korg1212->lock, flags);
581 korg1212->dsp_stop_is_processed = 0;
582 snd_korg1212_SendStop(korg1212);
583 spin_unlock_irqrestore(&korg1212->lock, flags);
584 wait_event_timeout(korg1212->wait, korg1212->dsp_stop_is_processed, (HZ * 3) / 2);
590 struct snd_korg1212 *korg1212 = from_timer(korg1212, t, timer);
593 spin_lock_irqsave(&korg1212->lock, flags);
594 if (korg1212->sharedBufferPtr->cardCommand == 0) {
596 korg1212->stop_pending_cnt = 0;
597 korg1212->dsp_stop_is_processed = 1;
598 wake_up(&korg1212->wait);
600 stateName[korg1212->cardState]);
602 if (--korg1212->stop_pending_cnt > 0) {
604 mod_timer(&korg1212->timer, jiffies + 1);
607 korg1212->sharedBufferPtr->cardCommand = 0;
608 korg1212->dsp_stop_is_processed = 1;
609 wake_up(&korg1212->wait);
611 stateName[korg1212->cardState]);
614 spin_unlock_irqrestore(&korg1212->lock, flags);
617 static int snd_korg1212_TurnOnIdleMonitor(struct snd_korg1212 *korg1212)
623 spin_lock_irqsave(&korg1212->lock, flags);
624 korg1212->idleMonitorOn = 1;
625 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
627 spin_unlock_irqrestore(&korg1212->lock, flags);
631 static void snd_korg1212_TurnOffIdleMonitor(struct snd_korg1212 *korg1212)
633 if (korg1212->idleMonitorOn) {
634 snd_korg1212_SendStopAndWait(korg1212);
635 korg1212->idleMonitorOn = 0;
639 static inline void snd_korg1212_setCardState(struct snd_korg1212 * korg1212, enum CardState csState)
641 korg1212->cardState = csState;
644 static int snd_korg1212_OpenCard(struct snd_korg1212 * korg1212)
647 stateName[korg1212->cardState], korg1212->opencnt);
648 mutex_lock(&korg1212->open_mutex);
649 if (korg1212->opencnt++ == 0) {
650 snd_korg1212_TurnOffIdleMonitor(korg1212);
651 snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
654 mutex_unlock(&korg1212->open_mutex);
658 static int snd_korg1212_CloseCard(struct snd_korg1212 * korg1212)
661 stateName[korg1212->cardState], korg1212->opencnt);
663 mutex_lock(&korg1212->open_mutex);
664 if (--(korg1212->opencnt)) {
665 mutex_unlock(&korg1212->open_mutex);
669 if (korg1212->cardState == K1212_STATE_SETUP) {
670 int rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
674 rc, stateName[korg1212->cardState]);
676 mutex_unlock(&korg1212->open_mutex);
679 } else if (korg1212->cardState > K1212_STATE_SETUP) {
680 snd_korg1212_SendStopAndWait(korg1212);
683 if (korg1212->cardState > K1212_STATE_READY) {
684 snd_korg1212_TurnOnIdleMonitor(korg1212);
685 snd_korg1212_setCardState(korg1212, K1212_STATE_READY);
688 mutex_unlock(&korg1212->open_mutex);
693 static int snd_korg1212_SetupForPlay(struct snd_korg1212 * korg1212)
698 stateName[korg1212->cardState], korg1212->setcnt);
700 if (korg1212->setcnt++)
703 snd_korg1212_setCardState(korg1212, K1212_STATE_SETUP);
704 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
708 rc, stateName[korg1212->cardState]);
716 static int snd_korg1212_TriggerPlay(struct snd_korg1212 * korg1212)
721 stateName[korg1212->cardState], korg1212->playcnt);
723 if (korg1212->playcnt++)
726 snd_korg1212_setCardState(korg1212, K1212_STATE_PLAYING);
727 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_TriggerPlay, 0, 0, 0, 0);
730 rc, stateName[korg1212->cardState]);
738 static int snd_korg1212_StopPlay(struct snd_korg1212 * korg1212)
741 stateName[korg1212->cardState], korg1212->playcnt);
743 if (--(korg1212->playcnt))
746 korg1212->setcnt = 0;
748 if (korg1212->cardState != K1212_STATE_ERRORSTOP)
749 snd_korg1212_SendStop(korg1212);
751 snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
755 static void snd_korg1212_EnableCardInterrupts(struct snd_korg1212 * korg1212)
762 korg1212->statusRegPtr);
767 static int snd_korg1212_SetMonitorMode(struct snd_korg1212 *korg1212,
771 stateName[korg1212->cardState]);
775 if (korg1212->cardState != K1212_STATE_MONITOR)
778 snd_korg1212_SendStopAndWait(korg1212);
779 snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
784 if (korg1212->cardState != K1212_STATE_OPEN)
788 snd_korg1212_setCardState(korg1212, K1212_STATE_MONITOR);
789 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
805 static inline int snd_korg1212_use_is_exclusive(struct snd_korg1212 *korg1212)
807 if (korg1212->playback_pid != korg1212->capture_pid &&
808 korg1212->playback_pid >= 0 && korg1212->capture_pid >= 0)
814 static int snd_korg1212_SetRate(struct snd_korg1212 *korg1212, int rate)
828 if (!snd_korg1212_use_is_exclusive (korg1212))
833 parm = s44[korg1212->clkSource];
837 parm = s48[korg1212->clkSource];
844 korg1212->clkSrcRate = parm;
845 korg1212->clkRate = rate;
848 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SetClockSourceRate,
849 ClockSourceSelector[korg1212->clkSrcRate],
853 rc, stateName[korg1212->cardState]);
858 static int snd_korg1212_SetClockSource(struct snd_korg1212 *korg1212, int source)
864 korg1212->clkSource = source;
866 snd_korg1212_SetRate(korg1212, korg1212->clkRate);
871 static void snd_korg1212_DisableCardInterrupts(struct snd_korg1212 *korg1212)
873 writel(0, korg1212->statusRegPtr);
876 static int snd_korg1212_WriteADCSensitivity(struct snd_korg1212 *korg1212)
889 stateName[korg1212->cardState]);
901 if (korg1212->cardState == K1212_STATE_MONITOR || korg1212->idleMonitorOn) {
903 snd_korg1212_SendStopAndWait(korg1212);
907 spin_lock_irqsave(&korg1212->lock, flags);
913 writel(0, korg1212->mailbox3Ptr);
920 switch (korg1212->clkSrcRate) {
940 sensVals.l.v.leftChanVal = korg1212->leftADCInSens;
941 sensVals.r.v.rightChanVal = korg1212->rightADCInSens;
954 writew(controlValue, korg1212->sensRegPtr); // load/shift goes low
971 writew(controlValue, korg1212->sensRegPtr); // clock goes low
974 writew(controlValue, korg1212->sensRegPtr); // clock goes high
985 writew(controlValue, korg1212->sensRegPtr); // load shift goes high - clk low
991 writew(controlValue, korg1212->sensRegPtr); // set/clear data bit
994 writew(controlValue, korg1212->sensRegPtr); // clock goes high
997 writew(controlValue, korg1212->sensRegPtr); // clock goes low
1009 int rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
1013 rc, stateName[korg1212->cardState]);
1016 spin_unlock_irqrestore(&korg1212->lock, flags);
1021 static void snd_korg1212_OnDSPDownloadComplete(struct snd_korg1212 *korg1212)
1026 stateName[korg1212->cardState]);
1031 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_BootFromDSPPage4, 0, 0, 0, 0);
1035 rc, stateName[korg1212->cardState]);
1041 rc = snd_korg1212_Send1212Command(korg1212,
1043 LowerWordSwap(korg1212->PlayDataPhy),
1044 LowerWordSwap(korg1212->RecDataPhy),
1052 rc, stateName[korg1212->cardState]);
1056 rc = snd_korg1212_Send1212Command(korg1212,
1058 LowerWordSwap(korg1212->VolumeTablePhy),
1059 LowerWordSwap(korg1212->RoutingTablePhy),
1060 LowerWordSwap(korg1212->AdatTimeCodePhy),
1066 rc, stateName[korg1212->cardState]);
1074 korg1212->sharedBufferPtr->volumeData[channel] = k1212MaxVolume;
1075 //korg1212->sharedBufferPtr->routeData[channel] = channel;
1076 korg1212->sharedBufferPtr->routeData[channel] = 8 + (channel & 1);
1079 snd_korg1212_WriteADCSensitivity(korg1212);
1082 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SetClockSourceRate,
1083 ClockSourceSelector[korg1212->clkSrcRate],
1087 rc, stateName[korg1212->cardState]);
1089 rc = snd_korg1212_TurnOnIdleMonitor(korg1212);
1090 snd_korg1212_setCardState(korg1212, K1212_STATE_READY);
1094 rc, stateName[korg1212->cardState]);
1096 snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE);
1102 struct snd_korg1212 *korg1212 = dev_id;
1104 doorbellValue = readl(korg1212->inDoorbellPtr);
1109 spin_lock(&korg1212->lock);
1111 writel(doorbellValue, korg1212->inDoorbellPtr);
1113 korg1212->irqcount++;
1115 korg1212->inIRQ++;
1120 korg1212->irqcount, doorbellValue,
1121 stateName[korg1212->cardState]);
1122 if (korg1212->cardState == K1212_STATE_DSP_IN_PROCESS) {
1123 korg1212->dsp_is_loaded = 1;
1124 wake_up(&korg1212->wait);
1133 korg1212->irqcount, doorbellValue,
1134 stateName[korg1212->cardState]);
1135 snd_printk(KERN_ERR "korg1212: DMA Error\n");
1136 korg1212->errorcnt++;
1137 korg1212->totalerrorcnt++;
1138 korg1212->sharedBufferPtr->cardCommand = 0;
1139 snd_korg1212_setCardState(korg1212, K1212_STATE_ERRORSTOP);
1148 korg1212->irqcount, doorbellValue,
1149 stateName[korg1212->cardState]);
1150 korg1212->sharedBufferPtr->cardCommand = 0;
1155 korg1212->irqcount, doorbellValue,
1156 korg1212->currentBuffer, stateName[korg1212->cardState]);
1157 if ((korg1212->cardState > K1212_STATE_SETUP) || korg1212->idleMonitorOn) {
1158 korg1212->currentBuffer++;
1160 if (korg1212->currentBuffer >= kNumBuffers)
1161 korg1212->currentBuffer = 0;
1163 if (!korg1212->running)
1166 if (korg1212->capture_substream) {
1167 spin_unlock(&korg1212->lock);
1168 snd_pcm_period_elapsed(korg1212->capture_substream);
1169 spin_lock(&korg1212->lock);
1172 if (korg1212->playback_substream) {
1173 spin_unlock(&korg1212->lock);
1174 snd_pcm_period_elapsed(korg1212->playback_substream);
1175 spin_lock(&korg1212->lock);
1181 korg1212->inIRQ--;
1183 spin_unlock(&korg1212->lock);
1188 static int snd_korg1212_downloadDSPCode(struct snd_korg1212 *korg1212)
1193 stateName[korg1212->cardState]);
1198 if (korg1212->cardState >= K1212_STATE_DSP_IN_PROCESS)
1201 snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_IN_PROCESS);
1203 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_StartDSPDownload,
1204 UpperWordSwap(korg1212->dma_dsp.addr),
1208 rc, stateName[korg1212->cardState]);
1210 korg1212->dsp_is_loaded = 0;
1211 wait_event_timeout(korg1212->wait, korg1212->dsp_is_loaded, HZ * CARD_BOOT_TIMEOUT);
1212 if (! korg1212->dsp_is_loaded )
1215 snd_korg1212_OnDSPDownloadComplete(korg1212);
1262 static int snd_korg1212_silence(struct snd_korg1212 *korg1212, int pos, int count, int offset, int size)
1264 struct KorgAudioFrame * dst = korg1212->playDataBufsPtr[0].bufferData + pos;
1274 if ( (void *) dst < (void *) korg1212->playDataBufsPtr ||
1275 (void *) dst > (void *) korg1212->playDataBufsPtr[8].bufferData ) {
1293 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1299 size = korg1212->channels * 2;
1300 src = korg1212->recordDataBufsPtr[0].bufferData + pos;
1308 if ( (void *) src < (void *) korg1212->recordDataBufsPtr ||
1309 (void *) src > (void *) korg1212->recordDataBufsPtr[8].bufferData ) {
1330 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1336 size = korg1212->channels * 2;
1337 dst = korg1212->playDataBufsPtr[0].bufferData + pos;
1347 if ( (void *) dst < (void *) korg1212->playDataBufsPtr ||
1348 (void *) dst > (void *) korg1212->playDataBufsPtr[8].bufferData ) {
1366 struct snd_korg1212 *korg1212 = pcm->private_data;
1369 stateName[korg1212->cardState]);
1371 korg1212->pcm = NULL;
1377 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1381 stateName[korg1212->cardState]);
1383 snd_korg1212_OpenCard(korg1212);
1386 snd_pcm_set_runtime_buffer(substream, &korg1212->dma_play);
1388 spin_lock_irqsave(&korg1212->lock, flags);
1390 korg1212->playback_substream = substream;
1391 korg1212->playback_pid = current->pid;
1392 korg1212->periodsize = K1212_PERIODS;
1393 korg1212->channels = K1212_CHANNELS;
1394 korg1212->errorcnt = 0;
1396 spin_unlock_irqrestore(&korg1212->lock, flags);
1408 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1412 stateName[korg1212->cardState]);
1414 snd_korg1212_OpenCard(korg1212);
1417 snd_pcm_set_runtime_buffer(substream, &korg1212->dma_rec);
1419 spin_lock_irqsave(&korg1212->lock, flags);
1421 korg1212->capture_substream = substream;
1422 korg1212->capture_pid = current->pid;
1423 korg1212->periodsize = K1212_PERIODS;
1424 korg1212->channels = K1212_CHANNELS;
1426 spin_unlock_irqrestore(&korg1212->lock, flags);
1436 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1439 stateName[korg1212->cardState]);
1441 snd_korg1212_silence(korg1212, 0, K1212_MAX_SAMPLES, 0, korg1212->channels * 2);
1443 spin_lock_irqsave(&korg1212->lock, flags);
1445 korg1212->playback_pid = -1;
1446 korg1212->playback_substream = NULL;
1447 korg1212->periodsize = 0;
1449 spin_unlock_irqrestore(&korg1212->lock, flags);
1451 snd_korg1212_CloseCard(korg1212);
1458 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1461 stateName[korg1212->cardState]);
1463 spin_lock_irqsave(&korg1212->lock, flags);
1465 korg1212->capture_pid = -1;
1466 korg1212->capture_substream = NULL;
1467 korg1212->periodsize = 0;
1469 spin_unlock_irqrestore(&korg1212->lock, flags);
1471 snd_korg1212_CloseCard(korg1212);
1496 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1502 stateName[korg1212->cardState]);
1504 spin_lock_irqsave(&korg1212->lock, flags);
1507 this_pid = korg1212->playback_pid;
1508 other_pid = korg1212->capture_pid;
1510 this_pid = korg1212->capture_pid;
1511 other_pid = korg1212->playback_pid;
1521 if ((int)params_rate(params) != korg1212->clkRate) {
1522 spin_unlock_irqrestore(&korg1212->lock, flags);
1527 spin_unlock_irqrestore(&korg1212->lock, flags);
1531 if ((err = snd_korg1212_SetRate(korg1212, params_rate(params))) < 0) {
1532 spin_unlock_irqrestore(&korg1212->lock, flags);
1536 korg1212->channels = params_channels(params);
1537 korg1212->periodsize = K1212_PERIOD_BYTES;
1539 spin_unlock_irqrestore(&korg1212->lock, flags);
1546 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1550 stateName[korg1212->cardState]);
1552 spin_lock_irq(&korg1212->lock);
1555 if (korg1212->stop_pending_cnt > 0) {
1557 stateName[korg1212->cardState]);
1558 spin_unlock_irq(&korg1212->lock);
1561 korg1212->sharedBufferPtr->cardCommand = 0;
1562 del_timer(&korg1212->timer);
1563 korg1212->stop_pending_cnt = 0;
1567 rc = snd_korg1212_SetupForPlay(korg1212);
1569 korg1212->currentBuffer = 0;
1571 spin_unlock_irq(&korg1212->lock);
1579 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1583 stateName[korg1212->cardState], cmd);
1585 spin_lock(&korg1212->lock);
1589 if (korg1212->running) {
1594 korg1212->running++;
1595 rc = snd_korg1212_TriggerPlay(korg1212);
1600 if (!korg1212->running) {
1605 korg1212->running--;
1606 rc = snd_korg1212_StopPlay(korg1212);
1613 spin_unlock(&korg1212->lock);
1619 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1622 pos = korg1212->currentBuffer * kPlayBufferFrames;
1625 stateName[korg1212->cardState], pos);
1632 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1635 pos = korg1212->currentBuffer * kPlayBufferFrames;
1638 stateName[korg1212->cardState], pos);
1664 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1666 return snd_korg1212_silence(korg1212, bytes_to_frames(runtime, pos),
1668 0, korg1212->channels * 2);
1726 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1729 spin_lock_irq(&korg1212->lock);
1731 u->value.integer.value[0] = korg1212->volumePhase[i];
1734 u->value.integer.value[1] = korg1212->volumePhase[i+1];
1736 spin_unlock_irq(&korg1212->lock);
1744 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1748 spin_lock_irq(&korg1212->lock);
1752 korg1212->volumePhase[i] = !!u->value.integer.value[0];
1754 val = korg1212->sharedBufferPtr->volumeData[kcontrol->private_value];
1757 val = abs(val) * (korg1212->volumePhase[i] > 0 ? -1 : 1);
1758 korg1212->sharedBufferPtr->volumeData[i] = val;
1763 korg1212->volumePhase[i+1] = !!u->value.integer.value[1];
1765 val = korg1212->sharedBufferPtr->volumeData[kcontrol->private_value+1];
1768 val = abs(val) * (korg1212->volumePhase[i+1] > 0 ? -1 : 1);
1769 korg1212->sharedBufferPtr->volumeData[i+1] = val;
1774 spin_unlock_irq(&korg1212->lock);
1792 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1795 spin_lock_irq(&korg1212->lock);
1798 u->value.integer.value[0] = abs(korg1212->sharedBufferPtr->volumeData[i]);
1801 u->value.integer.value[1] = abs(korg1212->sharedBufferPtr->volumeData[i+1]);
1803 spin_unlock_irq(&korg1212->lock);
1811 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1816 spin_lock_irq(&korg1212->lock);
1823 abs(korg1212->sharedBufferPtr->volumeData[i])) {
1824 val = korg1212->volumePhase[i] > 0 ? -1 : 1;
1826 korg1212->sharedBufferPtr->volumeData[i] = val;
1834 abs(korg1212->sharedBufferPtr->volumeData[i+1])) {
1835 val = korg1212->volumePhase[i+1] > 0 ? -1 : 1;
1837 korg1212->sharedBufferPtr->volumeData[i+1] = val;
1842 spin_unlock_irq(&korg1212->lock);
1858 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1861 spin_lock_irq(&korg1212->lock);
1864 u->value.enumerated.item[0] = korg1212->sharedBufferPtr->routeData[i];
1867 u->value.enumerated.item[1] = korg1212->sharedBufferPtr->routeData[i+1];
1869 spin_unlock_irq(&korg1212->lock);
1877 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1880 spin_lock_irq(&korg1212->lock);
1886 (unsigned) korg1212->sharedBufferPtr->volumeData[i]) {
1887 korg1212->sharedBufferPtr->routeData[i] = u->value.enumerated.item[0];
1894 (unsigned) korg1212->sharedBufferPtr->volumeData[i+1]) {
1895 korg1212->sharedBufferPtr->routeData[i+1] = u->value.enumerated.item[1];
1900 spin_unlock_irq(&korg1212->lock);
1918 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1920 spin_lock_irq(&korg1212->lock);
1922 u->value.integer.value[0] = korg1212->leftADCInSens;
1923 u->value.integer.value[1] = korg1212->rightADCInSens;
1925 spin_unlock_irq(&korg1212->lock);
1933 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1936 spin_lock_irq(&korg1212->lock);
1940 u->value.integer.value[0] != korg1212->leftADCInSens) {
1941 korg1212->leftADCInSens = u->value.integer.value[0];
1946 u->value.integer.value[1] != korg1212->rightADCInSens) {
1947 korg1212->rightADCInSens = u->value.integer.value[1];
1951 spin_unlock_irq(&korg1212->lock);
1954 snd_korg1212_WriteADCSensitivity(korg1212);
1968 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1970 spin_lock_irq(&korg1212->lock);
1972 ucontrol->value.enumerated.item[0] = korg1212->clkSource;
1974 spin_unlock_irq(&korg1212->lock);
1981 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1986 spin_lock_irq(&korg1212->lock);
1987 change = val != korg1212->clkSource;
1988 snd_korg1212_SetClockSource(korg1212, val);
1989 spin_unlock_irq(&korg1212->lock);
2053 struct snd_korg1212 *korg1212 = entry->private_data;
2055 snd_iprintf(buffer, korg1212->card->longname);
2056 snd_iprintf(buffer, " (index #%d)\n", korg1212->card->number + 1);
2059 snd_iprintf(buffer, " clock mode: %s\n", clockSourceName[korg1212->clkSrcRate] );
2060 snd_iprintf(buffer, " left ADC Sens: %d\n", korg1212->leftADCInSens );
2061 snd_iprintf(buffer, " right ADC Sens: %d\n", korg1212->rightADCInSens );
2066 channelName[korg1212->sharedBufferPtr->routeData[n]],
2067 korg1212->sharedBufferPtr->volumeData[n]);
2069 snd_iprintf(buffer, " ADAT Time Code: %d\n", korg1212->sharedBufferPtr->AdatTimeCode);
2070 snd_iprintf(buffer, " Card State: %s\n", stateName[korg1212->cardState]);
2071 snd_iprintf(buffer, "Idle mon. State: %d\n", korg1212->idleMonitorOn);
2072 snd_iprintf(buffer, "Cmd retry count: %d\n", korg1212->cmdRetryCount);
2073 snd_iprintf(buffer, " Irq count: %ld\n", korg1212->irqcount);
2074 snd_iprintf(buffer, " Error count: %ld\n", korg1212->totalerrorcnt);
2077 static void snd_korg1212_proc_init(struct snd_korg1212 *korg1212)
2079 snd_card_ro_proc_new(korg1212->card, "korg1212", korg1212,
2084 snd_korg1212_free(struct snd_korg1212 *korg1212)
2086 snd_korg1212_TurnOffIdleMonitor(korg1212);
2088 if (korg1212->irq >= 0) {
2089 snd_korg1212_DisableCardInterrupts(korg1212);
2090 free_irq(korg1212->irq, korg1212);
2091 korg1212->irq = -1;
2094 if (korg1212->iobase != NULL) {
2095 iounmap(korg1212->iobase);
2096 korg1212->iobase = NULL;
2099 pci_release_regions(korg1212->pci);
2104 if (korg1212->dma_dsp.area) {
2105 snd_dma_free_pages(&korg1212->dma_dsp);
2106 korg1212->dma_dsp.area = NULL;
2114 if (korg1212->dma_play.area) {
2115 snd_dma_free_pages(&korg1212->dma_play);
2116 korg1212->dma_play.area = NULL;
2119 if (korg1212->dma_rec.area) {
2120 snd_dma_free_pages(&korg1212->dma_rec);
2121 korg1212->dma_rec.area = NULL;
2129 if (korg1212->dma_shared.area) {
2130 snd_dma_free_pages(&korg1212->dma_shared);
2131 korg1212->dma_shared.area = NULL;
2134 pci_disable_device(korg1212->pci);
2135 kfree(korg1212);
2141 struct snd_korg1212 *korg1212 = device->device_data;
2143 return snd_korg1212_free(korg1212);
2155 struct snd_korg1212 * korg1212;
2166 korg1212 = kzalloc(sizeof(*korg1212), GFP_KERNEL);
2167 if (korg1212 == NULL) {
2172 korg1212->card = card;
2173 korg1212->pci = pci;
2175 init_waitqueue_head(&korg1212->wait);
2176 spin_lock_init(&korg1212->lock);
2177 mutex_init(&korg1212->open_mutex);
2178 timer_setup(&korg1212->timer, snd_korg1212_timer_func, 0);
2180 korg1212->irq = -1;
2181 korg1212->clkSource = K1212_CLKIDX_Local;
2182 korg1212->clkRate = 44100;
2183 korg1212->inIRQ = 0;
2184 korg1212->running = 0;
2185 korg1212->opencnt = 0;
2186 korg1212->playcnt = 0;
2187 korg1212->setcnt = 0;
2188 korg1212->totalerrorcnt = 0;
2189 korg1212->playback_pid = -1;
2190 korg1212->capture_pid = -1;
2191 snd_korg1212_setCardState(korg1212, K1212_STATE_UNINITIALIZED);
2192 korg1212->idleMonitorOn = 0;
2193 korg1212->clkSrcRate = K1212_CLKIDX_LocalAt44_1K;
2194 korg1212->leftADCInSens = k1212MaxADCSens;
2195 korg1212->rightADCInSens = k1212MaxADCSens;
2198 korg1212->volumePhase[i] = 0;
2200 if ((err = pci_request_regions(pci, "korg1212")) < 0) {
2201 kfree(korg1212);
2206 korg1212->iomem = pci_resource_start(korg1212->pci, 0);
2207 korg1212->ioport = pci_resource_start(korg1212->pci, 1);
2208 korg1212->iomem2 = pci_resource_start(korg1212->pci, 2);
2210 iomem_size = pci_resource_len(korg1212->pci, 0);
2211 ioport_size = pci_resource_len(korg1212->pci, 1);
2212 iomem2_size = pci_resource_len(korg1212->pci, 2);
2219 korg1212->iomem, iomem_size,
2220 korg1212->ioport, ioport_size,
2221 korg1212->iomem2, iomem2_size,
2222 stateName[korg1212->cardState]);
2224 if ((korg1212->iobase = ioremap(korg1212->iomem, iomem_size)) == NULL) {
2225 snd_printk(KERN_ERR "korg1212: unable to remap memory region 0x%lx-0x%lx\n", korg1212->iomem,
2226 korg1212->iomem + iomem_size - 1);
2227 snd_korg1212_free(korg1212);
2233 KBUILD_MODNAME, korg1212);
2236 snd_printk(KERN_ERR "korg1212: unable to grab IRQ %d\n", pci->irq);
2237 snd_korg1212_free(korg1212);
2241 korg1212->irq = pci->irq;
2242 card->sync_irq = korg1212->irq;
2244 pci_set_master(korg1212->pci);
2246 korg1212->statusRegPtr = (u32 __iomem *) (korg1212->iobase + STATUS_REG_OFFSET);
2247 korg1212->outDoorbellPtr = (u32 __iomem *) (korg1212->iobase + OUT_DOORBELL_OFFSET);
2248 korg1212->inDoorbellPtr = (u32 __iomem *) (korg1212->iobase + IN_DOORBELL_OFFSET);
2249 korg1212->mailbox0Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX0_OFFSET);
2250 korg1212->mailbox1Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX1_OFFSET);
2251 korg1212->mailbox2Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX2_OFFSET);
2252 korg1212->mailbox3Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX3_OFFSET);
2253 korg1212->controlRegPtr = (u32 __iomem *) (korg1212->iobase + PCI_CONTROL_OFFSET);
2254 korg1212->sensRegPtr = (u16 __iomem *) (korg1212->iobase + SENS_CONTROL_OFFSET);
2255 korg1212->idRegPtr = (u32 __iomem *) (korg1212->iobase + DEV_VEND_ID_OFFSET);
2269 korg1212->statusRegPtr,
2270 korg1212->outDoorbellPtr,
2271 korg1212->inDoorbellPtr,
2272 korg1212->mailbox0Ptr,
2273 korg1212->mailbox1Ptr,
2274 korg1212->mailbox2Ptr,
2275 korg1212->mailbox3Ptr,
2276 korg1212->controlRegPtr,
2277 korg1212->sensRegPtr,
2278 korg1212->idRegPtr,
2279 stateName[korg1212->cardState]);
2282 sizeof(struct KorgSharedBuffer), &korg1212->dma_shared) < 0) {
2283 snd_printk(KERN_ERR "korg1212: can not allocate shared buffer memory (%zd bytes)\n", sizeof(struct KorgSharedBuffer));
2284 snd_korg1212_free(korg1212);
2287 korg1212->sharedBufferPtr = (struct KorgSharedBuffer *)korg1212->dma_shared.area;
2288 korg1212->sharedBufferPhy = korg1212->dma_shared.addr;
2290 K1212_DEBUG_PRINTK("K1212_DEBUG: Shared Buffer Area = 0x%p (0x%08lx), %d bytes\n", korg1212->sharedBufferPtr, korg1212->sharedBufferPhy, sizeof(struct KorgSharedBuffer));
2294 korg1212->DataBufsSize = sizeof(struct KorgAudioBuffer) * kNumBuffers;
2297 korg1212->DataBufsSize, &korg1212->dma_play) < 0) {
2298 snd_printk(KERN_ERR "korg1212: can not allocate play data buffer memory (%d bytes)\n", korg1212->DataBufsSize);
2299 snd_korg1212_free(korg1212);
2302 korg1212->playDataBufsPtr = (struct KorgAudioBuffer *)korg1212->dma_play.area;
2303 korg1212->PlayDataPhy = korg1212->dma_play.addr;
2306 korg1212->playDataBufsPtr, korg1212->PlayDataPhy, korg1212->DataBufsSize);
2309 korg1212->DataBufsSize, &korg1212->dma_rec) < 0) {
2310 snd_printk(KERN_ERR "korg1212: can not allocate record data buffer memory (%d bytes)\n", korg1212->DataBufsSize);
2311 snd_korg1212_free(korg1212);
2314 korg1212->recordDataBufsPtr = (struct KorgAudioBuffer *)korg1212->dma_rec.area;
2315 korg1212->RecDataPhy = korg1212->dma_rec.addr;
2318 korg1212->recordDataBufsPtr, korg1212->RecDataPhy, korg1212->DataBufsSize);
2322 korg1212->recordDataBufsPtr = korg1212->sharedBufferPtr->recordDataBufs;
2323 korg1212->playDataBufsPtr = korg1212->sharedBufferPtr->playDataBufs;
2324 korg1212->PlayDataPhy = (u32) &((struct KorgSharedBuffer *) korg1212->sharedBufferPhy)->playDataBufs;
2325 korg1212->RecDataPhy = (u32) &((struct KorgSharedBuffer *) korg1212->sharedBufferPhy)->recordDataBufs;
2329 korg1212->VolumeTablePhy = korg1212->sharedBufferPhy +
2331 korg1212->RoutingTablePhy = korg1212->sharedBufferPhy +
2333 korg1212->AdatTimeCodePhy = korg1212->sharedBufferPhy +
2339 snd_korg1212_free(korg1212);
2344 dsp_code->size, &korg1212->dma_dsp) < 0) {
2345 snd_printk(KERN_ERR "korg1212: cannot allocate dsp code memory (%zd bytes)\n", dsp_code->size);
2346 snd_korg1212_free(korg1212);
2352 korg1212->dma_dsp.area, korg1212->dma_dsp.addr, dsp_code->size,
2353 stateName[korg1212->cardState]);
2355 memcpy(korg1212->dma_dsp.area, dsp_code->data, dsp_code->size);
2359 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_RebootCard, 0, 0, 0, 0);
2362 K1212_DEBUG_PRINTK("K1212_DEBUG: Reboot Card - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);
2364 if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, korg1212, &ops)) < 0) {
2365 snd_korg1212_free(korg1212);
2369 snd_korg1212_EnableCardInterrupts(korg1212);
2373 if (snd_korg1212_downloadDSPCode(korg1212))
2376 K1212_DEBUG_PRINTK("korg1212: dspMemPhy = %08x U[%08x], "
2378 "korg1212: RecDataPhy = %08x L[%08x], "
2380 "korg1212: RoutingTablePhy = %08x L[%08x], "
2382 (int)korg1212->dma_dsp.addr, UpperWordSwap(korg1212->dma_dsp.addr),
2383 korg1212->PlayDataPhy, LowerWordSwap(korg1212->PlayDataPhy),
2384 korg1212->RecDataPhy, LowerWordSwap(korg1212->RecDataPhy),
2385 korg1212->VolumeTablePhy, LowerWordSwap(korg1212->VolumeTablePhy),
2386 korg1212->RoutingTablePhy, LowerWordSwap(korg1212->RoutingTablePhy),
2387 korg1212->AdatTimeCodePhy, LowerWordSwap(korg1212->AdatTimeCodePhy));
2389 if ((err = snd_pcm_new(korg1212->card, "korg1212", 0, 1, 1, &korg1212->pcm)) < 0)
2392 korg1212->pcm->private_data = korg1212;
2393 korg1212->pcm->private_free = snd_korg1212_free_pcm;
2394 strcpy(korg1212->pcm->name, "korg1212");
2396 snd_pcm_set_ops(korg1212->pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_korg1212_playback_ops);
2398 snd_pcm_set_ops(korg1212->pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_korg1212_capture_ops);
2400 korg1212->pcm->info_flags = SNDRV_PCM_INFO_JOINT_DUPLEX;
2403 err = snd_ctl_add(korg1212->card, snd_ctl_new1(&snd_korg1212_controls[i], korg1212));
2408 snd_korg1212_proc_init(korg1212);
2410 * rchip = korg1212;
2424 struct snd_korg1212 *korg1212;
2440 if ((err = snd_korg1212_create(card, pci, &korg1212)) < 0) {
2445 strcpy(card->driver, "korg1212");
2446 strcpy(card->shortname, "korg1212");
2448 korg1212->iomem, korg1212->irq);