Lines Matching defs:korg1212

389 MODULE_DESCRIPTION("korg1212");
507 static int snd_korg1212_Send1212Command(struct snd_korg1212 *korg1212,
516 if (!korg1212->outDoorbellPtr) {
522 doorbellVal, mailBox0Val, stateName[korg1212->cardState]);
524 writel(mailBox3Val, korg1212->mailbox3Ptr);
525 writel(mailBox2Val, korg1212->mailbox2Ptr);
526 writel(mailBox1Val, korg1212->mailbox1Ptr);
527 writel(mailBox0Val, korg1212->mailbox0Ptr);
528 writel(doorbellVal, korg1212->outDoorbellPtr); // interrupt the card
546 mailBox3Lo = readl(korg1212->mailbox3Ptr);
555 korg1212->cmdRetryCount += retryCount;
566 static void snd_korg1212_SendStop(struct snd_korg1212 *korg1212)
568 if (! korg1212->stop_pending_cnt) {
569 korg1212->sharedBufferPtr->cardCommand = 0xffffffff;
571 korg1212->stop_pending_cnt = HZ;
572 mod_timer(&korg1212->timer, jiffies + 1);
576 static void snd_korg1212_SendStopAndWait(struct snd_korg1212 *korg1212)
579 spin_lock_irqsave(&korg1212->lock, flags);
580 korg1212->dsp_stop_is_processed = 0;
581 snd_korg1212_SendStop(korg1212);
582 spin_unlock_irqrestore(&korg1212->lock, flags);
583 wait_event_timeout(korg1212->wait, korg1212->dsp_stop_is_processed, (HZ * 3) / 2);
589 struct snd_korg1212 *korg1212 = from_timer(korg1212, t, timer);
592 spin_lock_irqsave(&korg1212->lock, flags);
593 if (korg1212->sharedBufferPtr->cardCommand == 0) {
595 korg1212->stop_pending_cnt = 0;
596 korg1212->dsp_stop_is_processed = 1;
597 wake_up(&korg1212->wait);
599 stateName[korg1212->cardState]);
601 if (--korg1212->stop_pending_cnt > 0) {
603 mod_timer(&korg1212->timer, jiffies + 1);
606 korg1212->sharedBufferPtr->cardCommand = 0;
607 korg1212->dsp_stop_is_processed = 1;
608 wake_up(&korg1212->wait);
610 stateName[korg1212->cardState]);
613 spin_unlock_irqrestore(&korg1212->lock, flags);
616 static int snd_korg1212_TurnOnIdleMonitor(struct snd_korg1212 *korg1212)
622 spin_lock_irqsave(&korg1212->lock, flags);
623 korg1212->idleMonitorOn = 1;
624 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
626 spin_unlock_irqrestore(&korg1212->lock, flags);
630 static void snd_korg1212_TurnOffIdleMonitor(struct snd_korg1212 *korg1212)
632 if (korg1212->idleMonitorOn) {
633 snd_korg1212_SendStopAndWait(korg1212);
634 korg1212->idleMonitorOn = 0;
638 static inline void snd_korg1212_setCardState(struct snd_korg1212 * korg1212, enum CardState csState)
640 korg1212->cardState = csState;
643 static int snd_korg1212_OpenCard(struct snd_korg1212 * korg1212)
646 stateName[korg1212->cardState], korg1212->opencnt);
647 mutex_lock(&korg1212->open_mutex);
648 if (korg1212->opencnt++ == 0) {
649 snd_korg1212_TurnOffIdleMonitor(korg1212);
650 snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
653 mutex_unlock(&korg1212->open_mutex);
657 static int snd_korg1212_CloseCard(struct snd_korg1212 * korg1212)
660 stateName[korg1212->cardState], korg1212->opencnt);
662 mutex_lock(&korg1212->open_mutex);
663 if (--(korg1212->opencnt)) {
664 mutex_unlock(&korg1212->open_mutex);
668 if (korg1212->cardState == K1212_STATE_SETUP) {
669 int rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
673 rc, stateName[korg1212->cardState]);
675 mutex_unlock(&korg1212->open_mutex);
678 } else if (korg1212->cardState > K1212_STATE_SETUP) {
679 snd_korg1212_SendStopAndWait(korg1212);
682 if (korg1212->cardState > K1212_STATE_READY) {
683 snd_korg1212_TurnOnIdleMonitor(korg1212);
684 snd_korg1212_setCardState(korg1212, K1212_STATE_READY);
687 mutex_unlock(&korg1212->open_mutex);
692 static int snd_korg1212_SetupForPlay(struct snd_korg1212 * korg1212)
697 stateName[korg1212->cardState], korg1212->setcnt);
699 if (korg1212->setcnt++)
702 snd_korg1212_setCardState(korg1212, K1212_STATE_SETUP);
703 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
707 rc, stateName[korg1212->cardState]);
715 static int snd_korg1212_TriggerPlay(struct snd_korg1212 * korg1212)
720 stateName[korg1212->cardState], korg1212->playcnt);
722 if (korg1212->playcnt++)
725 snd_korg1212_setCardState(korg1212, K1212_STATE_PLAYING);
726 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_TriggerPlay, 0, 0, 0, 0);
729 rc, stateName[korg1212->cardState]);
737 static int snd_korg1212_StopPlay(struct snd_korg1212 * korg1212)
740 stateName[korg1212->cardState], korg1212->playcnt);
742 if (--(korg1212->playcnt))
745 korg1212->setcnt = 0;
747 if (korg1212->cardState != K1212_STATE_ERRORSTOP)
748 snd_korg1212_SendStop(korg1212);
750 snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
754 static void snd_korg1212_EnableCardInterrupts(struct snd_korg1212 * korg1212)
761 korg1212->statusRegPtr);
766 static int snd_korg1212_SetMonitorMode(struct snd_korg1212 *korg1212,
770 stateName[korg1212->cardState]);
774 if (korg1212->cardState != K1212_STATE_MONITOR)
777 snd_korg1212_SendStopAndWait(korg1212);
778 snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
783 if (korg1212->cardState != K1212_STATE_OPEN)
787 snd_korg1212_setCardState(korg1212, K1212_STATE_MONITOR);
788 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
804 static inline int snd_korg1212_use_is_exclusive(struct snd_korg1212 *korg1212)
806 if (korg1212->playback_pid != korg1212->capture_pid &&
807 korg1212->playback_pid >= 0 && korg1212->capture_pid >= 0)
813 static int snd_korg1212_SetRate(struct snd_korg1212 *korg1212, int rate)
827 if (!snd_korg1212_use_is_exclusive (korg1212))
832 parm = s44[korg1212->clkSource];
836 parm = s48[korg1212->clkSource];
843 korg1212->clkSrcRate = parm;
844 korg1212->clkRate = rate;
847 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SetClockSourceRate,
848 ClockSourceSelector[korg1212->clkSrcRate],
852 rc, stateName[korg1212->cardState]);
857 static int snd_korg1212_SetClockSource(struct snd_korg1212 *korg1212, int source)
863 korg1212->clkSource = source;
865 snd_korg1212_SetRate(korg1212, korg1212->clkRate);
870 static void snd_korg1212_DisableCardInterrupts(struct snd_korg1212 *korg1212)
872 writel(0, korg1212->statusRegPtr);
875 static int snd_korg1212_WriteADCSensitivity(struct snd_korg1212 *korg1212)
888 stateName[korg1212->cardState]);
900 if (korg1212->cardState == K1212_STATE_MONITOR || korg1212->idleMonitorOn) {
902 snd_korg1212_SendStopAndWait(korg1212);
906 spin_lock_irqsave(&korg1212->lock, flags);
912 writel(0, korg1212->mailbox3Ptr);
919 switch (korg1212->clkSrcRate) {
939 sensVals.l.v.leftChanVal = korg1212->leftADCInSens;
940 sensVals.r.v.rightChanVal = korg1212->rightADCInSens;
953 writew(controlValue, korg1212->sensRegPtr); // load/shift goes low
970 writew(controlValue, korg1212->sensRegPtr); // clock goes low
973 writew(controlValue, korg1212->sensRegPtr); // clock goes high
984 writew(controlValue, korg1212->sensRegPtr); // load shift goes high - clk low
990 writew(controlValue, korg1212->sensRegPtr); // set/clear data bit
993 writew(controlValue, korg1212->sensRegPtr); // clock goes high
996 writew(controlValue, korg1212->sensRegPtr); // clock goes low
1008 int rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
1012 rc, stateName[korg1212->cardState]);
1015 spin_unlock_irqrestore(&korg1212->lock, flags);
1020 static void snd_korg1212_OnDSPDownloadComplete(struct snd_korg1212 *korg1212)
1025 stateName[korg1212->cardState]);
1030 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_BootFromDSPPage4, 0, 0, 0, 0);
1034 rc, stateName[korg1212->cardState]);
1040 rc = snd_korg1212_Send1212Command(korg1212,
1042 LowerWordSwap(korg1212->PlayDataPhy),
1043 LowerWordSwap(korg1212->RecDataPhy),
1051 rc, stateName[korg1212->cardState]);
1055 rc = snd_korg1212_Send1212Command(korg1212,
1057 LowerWordSwap(korg1212->VolumeTablePhy),
1058 LowerWordSwap(korg1212->RoutingTablePhy),
1059 LowerWordSwap(korg1212->AdatTimeCodePhy),
1065 rc, stateName[korg1212->cardState]);
1073 korg1212->sharedBufferPtr->volumeData[channel] = k1212MaxVolume;
1074 //korg1212->sharedBufferPtr->routeData[channel] = channel;
1075 korg1212->sharedBufferPtr->routeData[channel] = 8 + (channel & 1);
1078 snd_korg1212_WriteADCSensitivity(korg1212);
1081 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SetClockSourceRate,
1082 ClockSourceSelector[korg1212->clkSrcRate],
1086 rc, stateName[korg1212->cardState]);
1088 rc = snd_korg1212_TurnOnIdleMonitor(korg1212);
1089 snd_korg1212_setCardState(korg1212, K1212_STATE_READY);
1093 rc, stateName[korg1212->cardState]);
1095 snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE);
1101 struct snd_korg1212 *korg1212 = dev_id;
1103 doorbellValue = readl(korg1212->inDoorbellPtr);
1108 spin_lock(&korg1212->lock);
1110 writel(doorbellValue, korg1212->inDoorbellPtr);
1112 korg1212->irqcount++;
1114 korg1212->inIRQ++;
1119 korg1212->irqcount, doorbellValue,
1120 stateName[korg1212->cardState]);
1121 if (korg1212->cardState == K1212_STATE_DSP_IN_PROCESS) {
1122 korg1212->dsp_is_loaded = 1;
1123 wake_up(&korg1212->wait);
1132 korg1212->irqcount, doorbellValue,
1133 stateName[korg1212->cardState]);
1134 snd_printk(KERN_ERR "korg1212: DMA Error\n");
1135 korg1212->errorcnt++;
1136 korg1212->totalerrorcnt++;
1137 korg1212->sharedBufferPtr->cardCommand = 0;
1138 snd_korg1212_setCardState(korg1212, K1212_STATE_ERRORSTOP);
1147 korg1212->irqcount, doorbellValue,
1148 stateName[korg1212->cardState]);
1149 korg1212->sharedBufferPtr->cardCommand = 0;
1154 korg1212->irqcount, doorbellValue,
1155 korg1212->currentBuffer, stateName[korg1212->cardState]);
1156 if ((korg1212->cardState > K1212_STATE_SETUP) || korg1212->idleMonitorOn) {
1157 korg1212->currentBuffer++;
1159 if (korg1212->currentBuffer >= kNumBuffers)
1160 korg1212->currentBuffer = 0;
1162 if (!korg1212->running)
1165 if (korg1212->capture_substream) {
1166 spin_unlock(&korg1212->lock);
1167 snd_pcm_period_elapsed(korg1212->capture_substream);
1168 spin_lock(&korg1212->lock);
1171 if (korg1212->playback_substream) {
1172 spin_unlock(&korg1212->lock);
1173 snd_pcm_period_elapsed(korg1212->playback_substream);
1174 spin_lock(&korg1212->lock);
1180 korg1212->inIRQ--;
1182 spin_unlock(&korg1212->lock);
1187 static int snd_korg1212_downloadDSPCode(struct snd_korg1212 *korg1212)
1192 stateName[korg1212->cardState]);
1197 if (korg1212->cardState >= K1212_STATE_DSP_IN_PROCESS)
1200 snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_IN_PROCESS);
1202 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_StartDSPDownload,
1203 UpperWordSwap(korg1212->dma_dsp->addr),
1207 rc, stateName[korg1212->cardState]);
1209 korg1212->dsp_is_loaded = 0;
1210 wait_event_timeout(korg1212->wait, korg1212->dsp_is_loaded, HZ * CARD_BOOT_TIMEOUT);
1211 if (! korg1212->dsp_is_loaded )
1214 snd_korg1212_OnDSPDownloadComplete(korg1212);
1261 static int snd_korg1212_silence(struct snd_korg1212 *korg1212, int pos, int count, int offset, int size)
1263 struct KorgAudioFrame * dst = korg1212->playDataBufsPtr[0].bufferData + pos;
1273 if ( (void *) dst < (void *) korg1212->playDataBufsPtr ||
1274 (void *) dst > (void *) korg1212->playDataBufsPtr[8].bufferData ) {
1291 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1297 size = korg1212->channels * 2;
1298 src = korg1212->recordDataBufsPtr[0].bufferData + pos;
1306 if ( (void *) src < (void *) korg1212->recordDataBufsPtr ||
1307 (void *) src > (void *) korg1212->recordDataBufsPtr[8].bufferData ) {
1324 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1330 size = korg1212->channels * 2;
1331 dst = korg1212->playDataBufsPtr[0].bufferData + pos;
1341 if ( (void *) dst < (void *) korg1212->playDataBufsPtr ||
1342 (void *) dst > (void *) korg1212->playDataBufsPtr[8].bufferData ) {
1357 struct snd_korg1212 *korg1212 = pcm->private_data;
1360 stateName[korg1212->cardState]);
1362 korg1212->pcm = NULL;
1368 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1372 stateName[korg1212->cardState]);
1374 snd_korg1212_OpenCard(korg1212);
1377 snd_pcm_set_runtime_buffer(substream, korg1212->dma_play);
1379 spin_lock_irqsave(&korg1212->lock, flags);
1381 korg1212->playback_substream = substream;
1382 korg1212->playback_pid = current->pid;
1383 korg1212->periodsize = K1212_PERIODS;
1384 korg1212->channels = K1212_CHANNELS;
1385 korg1212->errorcnt = 0;
1387 spin_unlock_irqrestore(&korg1212->lock, flags);
1399 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1403 stateName[korg1212->cardState]);
1405 snd_korg1212_OpenCard(korg1212);
1408 snd_pcm_set_runtime_buffer(substream, korg1212->dma_rec);
1410 spin_lock_irqsave(&korg1212->lock, flags);
1412 korg1212->capture_substream = substream;
1413 korg1212->capture_pid = current->pid;
1414 korg1212->periodsize = K1212_PERIODS;
1415 korg1212->channels = K1212_CHANNELS;
1417 spin_unlock_irqrestore(&korg1212->lock, flags);
1427 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1430 stateName[korg1212->cardState]);
1432 snd_korg1212_silence(korg1212, 0, K1212_MAX_SAMPLES, 0, korg1212->channels * 2);
1434 spin_lock_irqsave(&korg1212->lock, flags);
1436 korg1212->playback_pid = -1;
1437 korg1212->playback_substream = NULL;
1438 korg1212->periodsize = 0;
1440 spin_unlock_irqrestore(&korg1212->lock, flags);
1442 snd_korg1212_CloseCard(korg1212);
1449 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1452 stateName[korg1212->cardState]);
1454 spin_lock_irqsave(&korg1212->lock, flags);
1456 korg1212->capture_pid = -1;
1457 korg1212->capture_substream = NULL;
1458 korg1212->periodsize = 0;
1460 spin_unlock_irqrestore(&korg1212->lock, flags);
1462 snd_korg1212_CloseCard(korg1212);
1487 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1493 stateName[korg1212->cardState]);
1495 spin_lock_irqsave(&korg1212->lock, flags);
1498 this_pid = korg1212->playback_pid;
1499 other_pid = korg1212->capture_pid;
1501 this_pid = korg1212->capture_pid;
1502 other_pid = korg1212->playback_pid;
1512 if ((int)params_rate(params) != korg1212->clkRate) {
1513 spin_unlock_irqrestore(&korg1212->lock, flags);
1518 spin_unlock_irqrestore(&korg1212->lock, flags);
1522 err = snd_korg1212_SetRate(korg1212, params_rate(params));
1524 spin_unlock_irqrestore(&korg1212->lock, flags);
1528 korg1212->channels = params_channels(params);
1529 korg1212->periodsize = K1212_PERIOD_BYTES;
1531 spin_unlock_irqrestore(&korg1212->lock, flags);
1538 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1542 stateName[korg1212->cardState]);
1544 spin_lock_irq(&korg1212->lock);
1547 if (korg1212->stop_pending_cnt > 0) {
1549 stateName[korg1212->cardState]);
1550 spin_unlock_irq(&korg1212->lock);
1553 korg1212->sharedBufferPtr->cardCommand = 0;
1554 del_timer(&korg1212->timer);
1555 korg1212->stop_pending_cnt = 0;
1559 rc = snd_korg1212_SetupForPlay(korg1212);
1561 korg1212->currentBuffer = 0;
1563 spin_unlock_irq(&korg1212->lock);
1571 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1575 stateName[korg1212->cardState], cmd);
1577 spin_lock(&korg1212->lock);
1581 if (korg1212->running) {
1586 korg1212->running++;
1587 rc = snd_korg1212_TriggerPlay(korg1212);
1592 if (!korg1212->running) {
1597 korg1212->running--;
1598 rc = snd_korg1212_StopPlay(korg1212);
1605 spin_unlock(&korg1212->lock);
1611 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1614 pos = korg1212->currentBuffer * kPlayBufferFrames;
1617 stateName[korg1212->cardState], pos);
1624 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1627 pos = korg1212->currentBuffer * kPlayBufferFrames;
1630 stateName[korg1212->cardState], pos);
1648 struct snd_korg1212 *korg1212 = snd_pcm_substream_chip(substream);
1650 return snd_korg1212_silence(korg1212, bytes_to_frames(runtime, pos),
1652 0, korg1212->channels * 2);
1700 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1703 spin_lock_irq(&korg1212->lock);
1705 u->value.integer.value[0] = korg1212->volumePhase[i];
1708 u->value.integer.value[1] = korg1212->volumePhase[i+1];
1710 spin_unlock_irq(&korg1212->lock);
1718 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1722 spin_lock_irq(&korg1212->lock);
1726 korg1212->volumePhase[i] = !!u->value.integer.value[0];
1728 val = korg1212->sharedBufferPtr->volumeData[kcontrol->private_value];
1731 val = abs(val) * (korg1212->volumePhase[i] > 0 ? -1 : 1);
1732 korg1212->sharedBufferPtr->volumeData[i] = val;
1737 korg1212->volumePhase[i+1] = !!u->value.integer.value[1];
1739 val = korg1212->sharedBufferPtr->volumeData[kcontrol->private_value+1];
1742 val = abs(val) * (korg1212->volumePhase[i+1] > 0 ? -1 : 1);
1743 korg1212->sharedBufferPtr->volumeData[i+1] = val;
1748 spin_unlock_irq(&korg1212->lock);
1766 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1769 spin_lock_irq(&korg1212->lock);
1772 u->value.integer.value[0] = abs(korg1212->sharedBufferPtr->volumeData[i]);
1775 u->value.integer.value[1] = abs(korg1212->sharedBufferPtr->volumeData[i+1]);
1777 spin_unlock_irq(&korg1212->lock);
1785 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1790 spin_lock_irq(&korg1212->lock);
1797 abs(korg1212->sharedBufferPtr->volumeData[i])) {
1798 val = korg1212->volumePhase[i] > 0 ? -1 : 1;
1800 korg1212->sharedBufferPtr->volumeData[i] = val;
1808 abs(korg1212->sharedBufferPtr->volumeData[i+1])) {
1809 val = korg1212->volumePhase[i+1] > 0 ? -1 : 1;
1811 korg1212->sharedBufferPtr->volumeData[i+1] = val;
1816 spin_unlock_irq(&korg1212->lock);
1832 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1835 spin_lock_irq(&korg1212->lock);
1838 u->value.enumerated.item[0] = korg1212->sharedBufferPtr->routeData[i];
1841 u->value.enumerated.item[1] = korg1212->sharedBufferPtr->routeData[i+1];
1843 spin_unlock_irq(&korg1212->lock);
1851 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1854 spin_lock_irq(&korg1212->lock);
1860 (unsigned) korg1212->sharedBufferPtr->volumeData[i]) {
1861 korg1212->sharedBufferPtr->routeData[i] = u->value.enumerated.item[0];
1868 (unsigned) korg1212->sharedBufferPtr->volumeData[i+1]) {
1869 korg1212->sharedBufferPtr->routeData[i+1] = u->value.enumerated.item[1];
1874 spin_unlock_irq(&korg1212->lock);
1892 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1894 spin_lock_irq(&korg1212->lock);
1896 u->value.integer.value[0] = korg1212->leftADCInSens;
1897 u->value.integer.value[1] = korg1212->rightADCInSens;
1899 spin_unlock_irq(&korg1212->lock);
1907 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1910 spin_lock_irq(&korg1212->lock);
1914 u->value.integer.value[0] != korg1212->leftADCInSens) {
1915 korg1212->leftADCInSens = u->value.integer.value[0];
1920 u->value.integer.value[1] != korg1212->rightADCInSens) {
1921 korg1212->rightADCInSens = u->value.integer.value[1];
1925 spin_unlock_irq(&korg1212->lock);
1928 snd_korg1212_WriteADCSensitivity(korg1212);
1942 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1944 spin_lock_irq(&korg1212->lock);
1946 ucontrol->value.enumerated.item[0] = korg1212->clkSource;
1948 spin_unlock_irq(&korg1212->lock);
1955 struct snd_korg1212 *korg1212 = snd_kcontrol_chip(kcontrol);
1960 spin_lock_irq(&korg1212->lock);
1961 change = val != korg1212->clkSource;
1962 snd_korg1212_SetClockSource(korg1212, val);
1963 spin_unlock_irq(&korg1212->lock);
2027 struct snd_korg1212 *korg1212 = entry->private_data;
2029 snd_iprintf(buffer, korg1212->card->longname);
2030 snd_iprintf(buffer, " (index #%d)\n", korg1212->card->number + 1);
2033 snd_iprintf(buffer, " clock mode: %s\n", clockSourceName[korg1212->clkSrcRate] );
2034 snd_iprintf(buffer, " left ADC Sens: %d\n", korg1212->leftADCInSens );
2035 snd_iprintf(buffer, " right ADC Sens: %d\n", korg1212->rightADCInSens );
2040 channelName[korg1212->sharedBufferPtr->routeData[n]],
2041 korg1212->sharedBufferPtr->volumeData[n]);
2043 snd_iprintf(buffer, " ADAT Time Code: %d\n", korg1212->sharedBufferPtr->AdatTimeCode);
2044 snd_iprintf(buffer, " Card State: %s\n", stateName[korg1212->cardState]);
2045 snd_iprintf(buffer, "Idle mon. State: %d\n", korg1212->idleMonitorOn);
2046 snd_iprintf(buffer, "Cmd retry count: %d\n", korg1212->cmdRetryCount);
2047 snd_iprintf(buffer, " Irq count: %ld\n", korg1212->irqcount);
2048 snd_iprintf(buffer, " Error count: %ld\n", korg1212->totalerrorcnt);
2051 static void snd_korg1212_proc_init(struct snd_korg1212 *korg1212)
2053 snd_card_ro_proc_new(korg1212->card, "korg1212", korg1212,
2060 struct snd_korg1212 *korg1212 = card->private_data;
2062 snd_korg1212_TurnOffIdleMonitor(korg1212);
2063 snd_korg1212_DisableCardInterrupts(korg1212);
2074 struct snd_korg1212 *korg1212 = card->private_data;
2081 korg1212->card = card;
2082 korg1212->pci = pci;
2084 init_waitqueue_head(&korg1212->wait);
2085 spin_lock_init(&korg1212->lock);
2086 mutex_init(&korg1212->open_mutex);
2087 timer_setup(&korg1212->timer, snd_korg1212_timer_func, 0);
2089 korg1212->irq = -1;
2090 korg1212->clkSource = K1212_CLKIDX_Local;
2091 korg1212->clkRate = 44100;
2092 korg1212->inIRQ = 0;
2093 korg1212->running = 0;
2094 korg1212->opencnt = 0;
2095 korg1212->playcnt = 0;
2096 korg1212->setcnt = 0;
2097 korg1212->totalerrorcnt = 0;
2098 korg1212->playback_pid = -1;
2099 korg1212->capture_pid = -1;
2100 snd_korg1212_setCardState(korg1212, K1212_STATE_UNINITIALIZED);
2101 korg1212->idleMonitorOn = 0;
2102 korg1212->clkSrcRate = K1212_CLKIDX_LocalAt44_1K;
2103 korg1212->leftADCInSens = k1212MaxADCSens;
2104 korg1212->rightADCInSens = k1212MaxADCSens;
2107 korg1212->volumePhase[i] = 0;
2109 err = pcim_iomap_regions_request_all(pci, 1 << 0, "korg1212");
2113 korg1212->iomem = pci_resource_start(korg1212->pci, 0);
2114 korg1212->ioport = pci_resource_start(korg1212->pci, 1);
2115 korg1212->iomem2 = pci_resource_start(korg1212->pci, 2);
2117 iomem_size = pci_resource_len(korg1212->pci, 0);
2118 ioport_size = pci_resource_len(korg1212->pci, 1);
2119 iomem2_size = pci_resource_len(korg1212->pci, 2);
2126 korg1212->iomem, iomem_size,
2127 korg1212->ioport, ioport_size,
2128 korg1212->iomem2, iomem2_size,
2129 stateName[korg1212->cardState]);
2131 korg1212->iobase = pcim_iomap_table(pci)[0];
2135 KBUILD_MODNAME, korg1212);
2138 snd_printk(KERN_ERR "korg1212: unable to grab IRQ %d\n", pci->irq);
2142 korg1212->irq = pci->irq;
2143 card->sync_irq = korg1212->irq;
2146 pci_set_master(korg1212->pci);
2148 korg1212->statusRegPtr = (u32 __iomem *) (korg1212->iobase + STATUS_REG_OFFSET);
2149 korg1212->outDoorbellPtr = (u32 __iomem *) (korg1212->iobase + OUT_DOORBELL_OFFSET);
2150 korg1212->inDoorbellPtr = (u32 __iomem *) (korg1212->iobase + IN_DOORBELL_OFFSET);
2151 korg1212->mailbox0Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX0_OFFSET);
2152 korg1212->mailbox1Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX1_OFFSET);
2153 korg1212->mailbox2Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX2_OFFSET);
2154 korg1212->mailbox3Ptr = (u32 __iomem *) (korg1212->iobase + MAILBOX3_OFFSET);
2155 korg1212->controlRegPtr = (u32 __iomem *) (korg1212->iobase + PCI_CONTROL_OFFSET);
2156 korg1212->sensRegPtr = (u16 __iomem *) (korg1212->iobase + SENS_CONTROL_OFFSET);
2157 korg1212->idRegPtr = (u32 __iomem *) (korg1212->iobase + DEV_VEND_ID_OFFSET);
2171 korg1212->statusRegPtr,
2172 korg1212->outDoorbellPtr,
2173 korg1212->inDoorbellPtr,
2174 korg1212->mailbox0Ptr,
2175 korg1212->mailbox1Ptr,
2176 korg1212->mailbox2Ptr,
2177 korg1212->mailbox3Ptr,
2178 korg1212->controlRegPtr,
2179 korg1212->sensRegPtr,
2180 korg1212->idRegPtr,
2181 stateName[korg1212->cardState]);
2183 korg1212->dma_shared = snd_devm_alloc_pages(&pci->dev,
2186 if (!korg1212->dma_shared)
2188 korg1212->sharedBufferPtr = (struct KorgSharedBuffer *)korg1212->dma_shared->area;
2189 korg1212->sharedBufferPhy = korg1212->dma_shared->addr;
2191 K1212_DEBUG_PRINTK("K1212_DEBUG: Shared Buffer Area = 0x%p (0x%08lx), %d bytes\n", korg1212->sharedBufferPtr, korg1212->sharedBufferPhy, sizeof(struct KorgSharedBuffer));
2194 korg1212->DataBufsSize = sizeof(struct KorgAudioBuffer) * kNumBuffers;
2195 korg1212->dma_play = snd_devm_alloc_pages(&pci->dev, SNDRV_DMA_TYPE_DEV,
2196 korg1212->DataBufsSize);
2197 if (!korg1212->dma_play)
2200 korg1212->playDataBufsPtr = (struct KorgAudioBuffer *)korg1212->dma_play->area;
2201 korg1212->PlayDataPhy = korg1212->dma_play->addr;
2204 korg1212->playDataBufsPtr, korg1212->PlayDataPhy, korg1212->DataBufsSize);
2206 korg1212->dma_rec = snd_devm_alloc_pages(&pci->dev, SNDRV_DMA_TYPE_DEV,
2207 korg1212->DataBufsSize);
2208 if (!korg1212->dma_rec)
2211 korg1212->recordDataBufsPtr = (struct KorgAudioBuffer *)korg1212->dma_rec->area;
2212 korg1212->RecDataPhy = korg1212->dma_rec->addr;
2215 korg1212->recordDataBufsPtr, korg1212->RecDataPhy, korg1212->DataBufsSize);
2219 korg1212->recordDataBufsPtr = korg1212->sharedBufferPtr->recordDataBufs;
2220 korg1212->playDataBufsPtr = korg1212->sharedBufferPtr->playDataBufs;
2221 korg1212->PlayDataPhy = (u32) &((struct KorgSharedBuffer *) korg1212->sharedBufferPhy)->playDataBufs;
2222 korg1212->RecDataPhy = (u32) &((struct KorgSharedBuffer *) korg1212->sharedBufferPhy)->recordDataBufs;
2226 korg1212->VolumeTablePhy = korg1212->sharedBufferPhy +
2228 korg1212->RoutingTablePhy = korg1212->sharedBufferPhy +
2230 korg1212->AdatTimeCodePhy = korg1212->sharedBufferPhy +
2239 korg1212->dma_dsp = snd_devm_alloc_pages(&pci->dev, SNDRV_DMA_TYPE_DEV,
2241 if (!korg1212->dma_dsp) {
2247 korg1212->dma_dsp->area, korg1212->dma_dsp->addr, dsp_code->size,
2248 stateName[korg1212->cardState]);
2250 memcpy(korg1212->dma_dsp->area, dsp_code->data, dsp_code->size);
2254 rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_RebootCard, 0, 0, 0, 0);
2257 K1212_DEBUG_PRINTK("K1212_DEBUG: Reboot Card - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);
2259 snd_korg1212_EnableCardInterrupts(korg1212);
2263 if (snd_korg1212_downloadDSPCode(korg1212))
2266 K1212_DEBUG_PRINTK("korg1212: dspMemPhy = %08x U[%08x], "
2268 "korg1212: RecDataPhy = %08x L[%08x], "
2270 "korg1212: RoutingTablePhy = %08x L[%08x], "
2272 (int)korg1212->dma_dsp.addr, UpperWordSwap(korg1212->dma_dsp.addr),
2273 korg1212->PlayDataPhy, LowerWordSwap(korg1212->PlayDataPhy),
2274 korg1212->RecDataPhy, LowerWordSwap(korg1212->RecDataPhy),
2275 korg1212->VolumeTablePhy, LowerWordSwap(korg1212->VolumeTablePhy),
2276 korg1212->RoutingTablePhy, LowerWordSwap(korg1212->RoutingTablePhy),
2277 korg1212->AdatTimeCodePhy, LowerWordSwap(korg1212->AdatTimeCodePhy));
2279 err = snd_pcm_new(korg1212->card, "korg1212", 0, 1, 1, &korg1212->pcm);
2283 korg1212->pcm->private_data = korg1212;
2284 korg1212->pcm->private_free = snd_korg1212_free_pcm;
2285 strcpy(korg1212->pcm->name, "korg1212");
2287 snd_pcm_set_ops(korg1212->pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_korg1212_playback_ops);
2289 snd_pcm_set_ops(korg1212->pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_korg1212_capture_ops);
2291 korg1212->pcm->info_flags = SNDRV_PCM_INFO_JOINT_DUPLEX;
2294 err = snd_ctl_add(korg1212->card, snd_ctl_new1(&snd_korg1212_controls[i], korg1212));
2299 snd_korg1212_proc_init(korg1212);
2313 struct snd_korg1212 *korg1212;
2325 sizeof(*korg1212), &card);
2328 korg1212 = card->private_data;
2334 strcpy(card->driver, "korg1212");
2335 strcpy(card->shortname, "korg1212");
2337 korg1212->iomem, korg1212->irq);