25 #include <linux/pci.h>
26 #include <linux/slab.h>
27 #include <linux/wait.h>
28 #include <linux/module.h>
44 #define K1212_DEBUG_LEVEL 0
45 #if K1212_DEBUG_LEVEL > 0
46 #define K1212_DEBUG_PRINTK(fmt,args...) printk(KERN_DEBUG fmt,##args)
48 #define K1212_DEBUG_PRINTK(fmt,...)
50 #if K1212_DEBUG_LEVEL > 1
51 #define K1212_DEBUG_PRINTK_VERBOSE(fmt,args...) printk(KERN_DEBUG fmt,##args)
53 #define K1212_DEBUG_PRINTK_VERBOSE(fmt,...)
152 #define MAILBOX0_OFFSET 0x40 // location of mailbox 0 relative to base address
153 #define MAILBOX1_OFFSET 0x44 // location of mailbox 1 relative to base address
154 #define MAILBOX2_OFFSET 0x48 // location of mailbox 2 relative to base address
155 #define MAILBOX3_OFFSET 0x4c // location of mailbox 3 relative to base address
156 #define OUT_DOORBELL_OFFSET 0x60 // location of PCI to local doorbell
157 #define IN_DOORBELL_OFFSET 0x64 // location of local to PCI doorbell
158 #define STATUS_REG_OFFSET 0x68 // location of interrupt control/status register
159 #define PCI_CONTROL_OFFSET 0x6c // location of the EEPROM, PCI, User I/O, init control
161 #define SENS_CONTROL_OFFSET 0x6e // location of the input sensitivity setting register.
163 #define DEV_VEND_ID_OFFSET 0x70 // location of the device and vendor ID register
165 #define MAX_COMMAND_RETRIES 5 // maximum number of times the driver will attempt
167 #define COMMAND_ACK_MASK 0x8000 // the MSB is set in the command acknowledgment from
169 #define DOORBELL_VAL_MASK 0x00FF // the doorbell value is one byte
171 #define CARD_BOOT_DELAY_IN_MS 10
172 #define CARD_BOOT_TIMEOUT 10
173 #define DSP_BOOT_DELAY_IN_MS 200
175 #define kNumBuffers 8
176 #define k1212MaxCards 4
177 #define k1212NumWaveDevices 6
178 #define k16BitChannels 10
179 #define k32BitChannels 2
180 #define kAudioChannels (k16BitChannels + k32BitChannels)
181 #define kPlayBufferFrames 1024
183 #define K1212_ANALOG_CHANNELS 2
184 #define K1212_SPDIF_CHANNELS 2
185 #define K1212_ADAT_CHANNELS 8
186 #define K1212_CHANNELS (K1212_ADAT_CHANNELS + K1212_ANALOG_CHANNELS)
187 #define K1212_MIN_CHANNELS 1
188 #define K1212_MAX_CHANNELS K1212_CHANNELS
189 #define K1212_FRAME_SIZE (sizeof(struct KorgAudioFrame))
190 #define K1212_MAX_SAMPLES (kPlayBufferFrames*kNumBuffers)
191 #define K1212_PERIODS (kNumBuffers)
192 #define K1212_PERIOD_BYTES (K1212_FRAME_SIZE*kPlayBufferFrames)
193 #define K1212_BUF_SIZE (K1212_PERIOD_BYTES*kNumBuffers)
194 #define K1212_ANALOG_BUF_SIZE (K1212_ANALOG_CHANNELS * 2 * kPlayBufferFrames * kNumBuffers)
195 #define K1212_SPDIF_BUF_SIZE (K1212_SPDIF_CHANNELS * 3 * kPlayBufferFrames * kNumBuffers)
196 #define K1212_ADAT_BUF_SIZE (K1212_ADAT_CHANNELS * 2 * kPlayBufferFrames * kNumBuffers)
197 #define K1212_MAX_BUF_SIZE (K1212_ANALOG_BUF_SIZE + K1212_ADAT_BUF_SIZE)
199 #define k1212MinADCSens 0x00
200 #define k1212MaxADCSens 0x7f
201 #define k1212MaxVolume 0x7fff
202 #define k1212MaxWaveVolume 0xffff
203 #define k1212MinVolume 0x0000
204 #define k1212MaxVolInverted 0x8000
210 #define PCI_INT_ENABLE_BIT 0x00000100
211 #define PCI_DOORBELL_INT_ENABLE_BIT 0x00000200
212 #define LOCAL_INT_ENABLE_BIT 0x00010000
213 #define LOCAL_DOORBELL_INT_ENABLE_BIT 0x00020000
214 #define LOCAL_DMA1_INT_ENABLE_BIT 0x00080000
219 #define PCI_CMD_MEM_SPACE_ENABLE_BIT 0x0002
220 #define PCI_CMD_IO_SPACE_ENABLE_BIT 0x0001
221 #define PCI_CMD_BUS_MASTER_ENABLE_BIT 0x0004
226 #define PCI_STAT_PARITY_ERROR_BIT 0x8000
227 #define PCI_STAT_SYSTEM_ERROR_BIT 0x4000
228 #define PCI_STAT_MASTER_ABORT_RCVD_BIT 0x2000
229 #define PCI_STAT_TARGET_ABORT_RCVD_BIT 0x1000
230 #define PCI_STAT_TARGET_ABORT_SENT_BIT 0x0800
236 #define SET_SENS_LOCALINIT_BITPOS 15
237 #define SET_SENS_DATA_BITPOS 10
238 #define SET_SENS_CLOCK_BITPOS 8
239 #define SET_SENS_LOADSHIFT_BITPOS 0
241 #define SET_SENS_LEFTCHANID 0x00
242 #define SET_SENS_RIGHTCHANID 0x01
244 #define K1212SENSUPDATE_DELAY_IN_MS 50
254 #define ONE_RTC_TICK 1
255 #define SENSCLKPULSE_WIDTH 4
256 #define LOADSHIFT_DELAY 4
257 #define INTERCOMMAND_DELAY 40
258 #define STOPCARD_DELAY 300 // max # RTC ticks for the card to stop once we write
260 #define COMMAND_ACK_DELAY 13 // number of RTC ticks to wait for an acknowledgement
290 #ifdef K1212_LARGEALLOC
433 static char *stateName[] = {
436 "DSP download in process",
437 "DSP download complete",
447 static char *clockSourceTypeName[] = {
"ADAT",
"S/PDIF",
"local" };
449 static char *clockSourceName[] = {
452 "S/PDIF at 44.1 kHz",
454 "local clock at 44.1 kHz",
455 "local clock at 48 kHz"
458 static char *channelName[] = {
473 static u16 ClockSourceSelector[] = {
484 #ifdef SNDRV_BIG_ENDIAN
485 static u32 LowerWordSwap(
u32 swappee)
487 static u32 UpperWordSwap(
u32 swappee)
493 retVal.c[2] = swapper.c[3];
494 retVal.c[3] = swapper.c[2];
495 retVal.c[1] = swapper.c[1];
496 retVal.c[0] = swapper.c[0];
501 #ifdef SNDRV_BIG_ENDIAN
502 static u32 UpperWordSwap(
u32 swappee)
504 static u32 LowerWordSwap(
u32 swappee)
510 retVal.c[2] = swapper.c[2];
511 retVal.c[3] = swapper.c[3];
512 retVal.c[1] = swapper.c[0];
513 retVal.c[0] = swapper.c[1];
518 #define SetBitInWord(theWord,bitPosition) (*theWord) |= (0x0001 << bitPosition)
519 #define SetBitInDWord(theWord,bitPosition) (*theWord) |= (0x00000001 << bitPosition)
520 #define ClearBitInWord(theWord,bitPosition) (*theWord) &= ~(0x0001 << bitPosition)
521 #define ClearBitInDWord(theWord,bitPosition) (*theWord) &= ~(0x00000001 << bitPosition)
523 static int snd_korg1212_Send1212Command(
struct snd_korg1212 *korg1212,
525 u32 mailBox0Val,
u32 mailBox1Val,
526 u32 mailBox2Val,
u32 mailBox3Val)
538 doorbellVal, mailBox0Val, stateName[korg1212->
cardState]);
573 if (retryCount >= MAX_COMMAND_RETRIES) {
582 static void snd_korg1212_SendStop(
struct snd_korg1212 *korg1212)
593 static void snd_korg1212_SendStopAndWait(
struct snd_korg1212 *korg1212)
598 snd_korg1212_SendStop(korg1212);
599 spin_unlock_irqrestore(&korg1212->
lock, flags);
604 static void snd_korg1212_timer_func(
unsigned long data)
631 spin_unlock_irqrestore(&korg1212->
lock, flags);
634 static int snd_korg1212_TurnOnIdleMonitor(
struct snd_korg1212 *korg1212)
644 spin_unlock_irqrestore(&korg1212->
lock, flags);
648 static void snd_korg1212_TurnOffIdleMonitor(
struct snd_korg1212 *korg1212)
651 snd_korg1212_SendStopAndWait(korg1212);
661 static int snd_korg1212_OpenCard(
struct snd_korg1212 * korg1212)
666 if (korg1212->
opencnt++ == 0) {
667 snd_korg1212_TurnOffIdleMonitor(korg1212);
675 static int snd_korg1212_CloseCard(
struct snd_korg1212 * korg1212)
697 snd_korg1212_SendStopAndWait(korg1212);
701 snd_korg1212_TurnOnIdleMonitor(korg1212);
710 static int snd_korg1212_SetupForPlay(
struct snd_korg1212 * korg1212)
733 static int snd_korg1212_TriggerPlay(
struct snd_korg1212 * korg1212)
755 static int snd_korg1212_StopPlay(
struct snd_korg1212 * korg1212)
766 snd_korg1212_SendStop(korg1212);
772 static void snd_korg1212_EnableCardInterrupts(
struct snd_korg1212 * korg1212)
784 static int snd_korg1212_SetMonitorMode(
struct snd_korg1212 *korg1212,
795 snd_korg1212_SendStopAndWait(korg1212);
822 static inline int snd_korg1212_use_is_exclusive(
struct snd_korg1212 *korg1212)
845 if (!snd_korg1212_use_is_exclusive (korg1212))
878 if (source < 0 || source > 2)
883 snd_korg1212_SetRate(korg1212, korg1212->
clkRate);
888 static void snd_korg1212_DisableCardInterrupts(
struct snd_korg1212 *korg1212)
893 static int snd_korg1212_WriteADCSensitivity(
struct snd_korg1212 *korg1212)
920 snd_korg1212_SendStopAndWait(korg1212);
963 for (channel = 0; channel < 2; channel++) {
974 for (bitPosition = 15; bitPosition >= 0; bitPosition--) {
976 if (sensVals.l.leftSensBits & (0x0001 << bitPosition))
981 if (sensVals.r.rightSensBits & (0x0001 << bitPosition))
1022 for (count = 0; count < 10; count++)
1033 spin_unlock_irqrestore(&korg1212->
lock, flags);
1038 static void snd_korg1212_OnDSPDownloadComplete(
struct snd_korg1212 *korg1212)
1058 rc = snd_korg1212_Send1212Command(korg1212,
1073 rc = snd_korg1212_Send1212Command(korg1212,
1096 snd_korg1212_WriteADCSensitivity(korg1212);
1106 rc = snd_korg1212_TurnOnIdleMonitor(korg1212);
1126 spin_lock(&korg1212->
lock);
1134 switch (doorbellValue) {
1184 spin_unlock(&korg1212->
lock);
1186 spin_lock(&korg1212->
lock);
1190 spin_unlock(&korg1212->
lock);
1192 spin_lock(&korg1212->
lock);
1200 spin_unlock(&korg1212->
lock);
1205 static int snd_korg1212_downloadDSPCode(
struct snd_korg1212 *korg1212)
1221 UpperWordSwap(korg1212->
dma_dsp.addr),
1232 snd_korg1212_OnDSPDownloadComplete(korg1212);
1285 pos, offset, size, count);
1289 for (i=0; i <
count; i++) {
1290 #if K1212_DEBUG_LEVEL > 0
1293 printk(
KERN_DEBUG "K1212_DEBUG: snd_korg1212_silence KERNEL EFAULT dst=%p iter=%d\n",
1298 memset((
void*) dst + offset, 0, size);
1305 static int snd_korg1212_copy_to(
struct snd_korg1212 *korg1212,
void __user *dst,
int pos,
int count,
int offset,
int size)
1315 for (i=0; i <
count; i++) {
1316 #if K1212_DEBUG_LEVEL > 0
1319 printk(
KERN_DEBUG "K1212_DEBUG: snd_korg1212_copy_to KERNEL EFAULT, src=%p dst=%p iter=%d\n", src, dst, i);
1325 K1212_DEBUG_PRINTK(
"K1212_DEBUG: snd_korg1212_copy_to USER EFAULT src=%p dst=%p iter=%d\n", src, dst, i);
1335 static int snd_korg1212_copy_from(
struct snd_korg1212 *korg1212,
void __user *src,
int pos,
int count,
int offset,
int size)
1341 pos, offset, size, count);
1346 for (i=0; i <
count; i++) {
1347 #if K1212_DEBUG_LEVEL > 0
1350 printk(
KERN_DEBUG "K1212_DEBUG: snd_korg1212_copy_from KERNEL EFAULT, src=%p dst=%p iter=%d\n", src, dst, i);
1356 K1212_DEBUG_PRINTK(
"K1212_DEBUG: snd_korg1212_copy_from USER EFAULT src=%p dst=%p iter=%d\n", src, dst, i);
1366 static void snd_korg1212_free_pcm(
struct snd_pcm *pcm)
1378 unsigned long flags;
1385 snd_korg1212_OpenCard(korg1212);
1387 runtime->
hw = snd_korg1212_playback_info;
1388 snd_pcm_set_runtime_buffer(substream, &korg1212->
dma_play);
1398 spin_unlock_irqrestore(&korg1212->
lock, flags);
1407 unsigned long flags;
1414 snd_korg1212_OpenCard(korg1212);
1416 runtime->
hw = snd_korg1212_capture_info;
1417 snd_pcm_set_runtime_buffer(substream, &korg1212->
dma_rec);
1426 spin_unlock_irqrestore(&korg1212->
lock, flags);
1435 unsigned long flags;
1449 spin_unlock_irqrestore(&korg1212->
lock, flags);
1451 snd_korg1212_CloseCard(korg1212);
1457 unsigned long flags;
1469 spin_unlock_irqrestore(&korg1212->
lock, flags);
1471 snd_korg1212_CloseCard(korg1212);
1476 unsigned int cmd,
void *
arg)
1495 unsigned long flags;
1514 if ((other_pid > 0) && (this_pid != other_pid)) {
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);
1539 spin_unlock_irqrestore(&korg1212->
lock, flags);
1552 spin_lock_irq(&korg1212->
lock);
1558 spin_unlock_irq(&korg1212->
lock);
1567 rc = snd_korg1212_SetupForPlay(korg1212);
1571 spin_unlock_irq(&korg1212->
lock);
1585 spin_lock(&korg1212->
lock);
1595 rc = snd_korg1212_TriggerPlay(korg1212);
1606 rc = snd_korg1212_StopPlay(korg1212);
1613 spin_unlock(&korg1212->
lock);
1652 stateName[korg1212->
cardState], pos, count);
1654 return snd_korg1212_copy_from(korg1212, src, pos, count, 0, korg1212->
channels * 2);
1668 return snd_korg1212_silence(korg1212, pos, count, 0, korg1212->
channels * 2);
1680 stateName[korg1212->
cardState], pos, count);
1682 return snd_korg1212_copy_to(korg1212, dst, pos, count, 0, korg1212->
channels * 2);
1685 static struct snd_pcm_ops snd_korg1212_playback_ops = {
1686 .open = snd_korg1212_playback_open,
1687 .close = snd_korg1212_playback_close,
1688 .ioctl = snd_korg1212_ioctl,
1689 .hw_params = snd_korg1212_hw_params,
1690 .prepare = snd_korg1212_prepare,
1691 .trigger = snd_korg1212_trigger,
1692 .pointer = snd_korg1212_playback_pointer,
1693 .copy = snd_korg1212_playback_copy,
1694 .silence = snd_korg1212_playback_silence,
1697 static struct snd_pcm_ops snd_korg1212_capture_ops = {
1698 .open = snd_korg1212_capture_open,
1699 .close = snd_korg1212_capture_close,
1700 .ioctl = snd_korg1212_ioctl,
1701 .hw_params = snd_korg1212_hw_params,
1702 .prepare = snd_korg1212_prepare,
1703 .trigger = snd_korg1212_trigger,
1704 .pointer = snd_korg1212_capture_pointer,
1705 .copy = snd_korg1212_capture_copy,
1712 static int snd_korg1212_control_phase_info(
struct snd_kcontrol *kcontrol,
1720 static int snd_korg1212_control_phase_get(
struct snd_kcontrol *kcontrol,
1726 spin_lock_irq(&korg1212->
lock);
1733 spin_unlock_irq(&korg1212->
lock);
1738 static int snd_korg1212_control_phase_put(
struct snd_kcontrol *kcontrol,
1745 spin_lock_irq(&korg1212->
lock);
1753 if ((u->
value.integer.value[0] != 0) != (val < 0)) {
1764 if ((u->
value.integer.value[1] != 0) != (val < 0)) {
1771 spin_unlock_irq(&korg1212->
lock);
1776 static int snd_korg1212_control_volume_info(
struct snd_kcontrol *kcontrol,
1786 static int snd_korg1212_control_volume_get(
struct snd_kcontrol *kcontrol,
1792 spin_lock_irq(&korg1212->
lock);
1800 spin_unlock_irq(&korg1212->
lock);
1805 static int snd_korg1212_control_volume_put(
struct snd_kcontrol *kcontrol,
1813 spin_lock_irq(&korg1212->
lock);
1819 u->
value.integer.value[0] !=
1822 val *= u->
value.integer.value[0];
1830 u->
value.integer.value[1] !=
1833 val *= u->
value.integer.value[1];
1839 spin_unlock_irq(&korg1212->
lock);
1844 static int snd_korg1212_control_route_info(
struct snd_kcontrol *kcontrol,
1857 static int snd_korg1212_control_route_get(
struct snd_kcontrol *kcontrol,
1863 spin_lock_irq(&korg1212->
lock);
1871 spin_unlock_irq(&korg1212->
lock);
1876 static int snd_korg1212_control_route_put(
struct snd_kcontrol *kcontrol,
1882 spin_lock_irq(&korg1212->
lock);
1886 if (u->
value.enumerated.item[0] < kAudioChannels &&
1887 u->
value.enumerated.item[0] !=
1894 if (u->
value.enumerated.item[1] < kAudioChannels &&
1895 u->
value.enumerated.item[1] !=
1902 spin_unlock_irq(&korg1212->
lock);
1907 static int snd_korg1212_control_info(
struct snd_kcontrol *kcontrol,
1917 static int snd_korg1212_control_get(
struct snd_kcontrol *kcontrol,
1922 spin_lock_irq(&korg1212->
lock);
1927 spin_unlock_irq(&korg1212->
lock);
1932 static int snd_korg1212_control_put(
struct snd_kcontrol *kcontrol,
1938 spin_lock_irq(&korg1212->
lock);
1953 spin_unlock_irq(&korg1212->
lock);
1956 snd_korg1212_WriteADCSensitivity(korg1212);
1961 static int snd_korg1212_control_sync_info(
struct snd_kcontrol *kcontrol,
1974 static int snd_korg1212_control_sync_get(
struct snd_kcontrol *kcontrol,
1979 spin_lock_irq(&korg1212->
lock);
1983 spin_unlock_irq(&korg1212->
lock);
1987 static int snd_korg1212_control_sync_put(
struct snd_kcontrol *kcontrol,
1994 val = ucontrol->
value.enumerated.item[0] % 3;
1995 spin_lock_irq(&korg1212->
lock);
1997 snd_korg1212_SetClockSource(korg1212, val);
1998 spin_unlock_irq(&korg1212->
lock);
2002 #define MON_MIXER(ord,c_name) \
2004 .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE, \
2005 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
2006 .name = c_name " Monitor Volume", \
2007 .info = snd_korg1212_control_volume_info, \
2008 .get = snd_korg1212_control_volume_get, \
2009 .put = snd_korg1212_control_volume_put, \
2010 .private_value = ord, \
2013 .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE, \
2014 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
2015 .name = c_name " Monitor Route", \
2016 .info = snd_korg1212_control_route_info, \
2017 .get = snd_korg1212_control_route_get, \
2018 .put = snd_korg1212_control_route_put, \
2019 .private_value = ord, \
2022 .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE, \
2023 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
2024 .name = c_name " Monitor Phase Invert", \
2025 .info = snd_korg1212_control_phase_info, \
2026 .get = snd_korg1212_control_phase_get, \
2027 .put = snd_korg1212_control_phase_put, \
2028 .private_value = ord, \
2039 .name =
"Sync Source",
2040 .info = snd_korg1212_control_sync_info,
2041 .get = snd_korg1212_control_sync_get,
2042 .put = snd_korg1212_control_sync_put,
2047 .name =
"ADC Attenuation",
2048 .info = snd_korg1212_control_info,
2049 .get = snd_korg1212_control_get,
2050 .put = snd_korg1212_control_put,
2064 snd_iprintf(buffer, korg1212->
card->longname);
2065 snd_iprintf(buffer,
" (index #%d)\n", korg1212->
card->number + 1);
2066 snd_iprintf(buffer,
"\nGeneral settings\n");
2068 snd_iprintf(buffer,
" clock mode: %s\n", clockSourceName[korg1212->
clkSrcRate] );
2069 snd_iprintf(buffer,
" left ADC Sens: %d\n", korg1212->
leftADCInSens );
2070 snd_iprintf(buffer,
" right ADC Sens: %d\n", korg1212->
rightADCInSens );
2071 snd_iprintf(buffer,
" Volume Info:\n");
2073 snd_iprintf(buffer,
" Channel %d: %s -> %s [%d]\n", n,
2077 snd_iprintf(buffer,
"\nGeneral status\n");
2078 snd_iprintf(buffer,
" ADAT Time Code: %d\n", korg1212->
sharedBufferPtr->AdatTimeCode);
2079 snd_iprintf(buffer,
" Card State: %s\n", stateName[korg1212->
cardState]);
2080 snd_iprintf(buffer,
"Idle mon. State: %d\n", korg1212->
idleMonitorOn);
2081 snd_iprintf(buffer,
"Cmd retry count: %d\n", korg1212->
cmdRetryCount);
2082 snd_iprintf(buffer,
" Irq count: %ld\n", korg1212->
irqcount);
2083 snd_iprintf(buffer,
" Error count: %ld\n", korg1212->
totalerrorcnt);
2090 if (! snd_card_proc_new(korg1212->
card,
"korg1212", &entry))
2091 snd_info_set_text_ops(entry, korg1212, snd_korg1212_proc_read);
2097 snd_korg1212_TurnOffIdleMonitor(korg1212);
2099 if (korg1212->
irq >= 0) {
2100 snd_korg1212_DisableCardInterrupts(korg1212);
2120 #ifndef K1212_LARGEALLOC
2154 return snd_korg1212_free(korg1212);
2163 unsigned ioport_size,
iomem_size, iomem2_size;
2168 .dev_free = snd_korg1212_dev_free,
2175 korg1212 = kzalloc(
sizeof(*korg1212),
GFP_KERNEL);
2176 if (korg1212 ==
NULL) {
2182 korg1212->
pci = pci;
2188 korg1212->
timer.function = snd_korg1212_timer_func;
2189 korg1212->
timer.data = (
unsigned long)korg1212;
2194 korg1212->
inIRQ = 0;
2226 " iomem = 0x%lx (%d)\n"
2227 " ioport = 0x%lx (%d)\n"
2228 " iomem = 0x%lx (%d)\n"
2230 korg1212->
iomem, iomem_size,
2231 korg1212->
ioport, ioport_size,
2232 korg1212->
iomem2, iomem2_size,
2237 korg1212->
iomem + iomem_size - 1);
2238 snd_korg1212_free(korg1212);
2244 KBUILD_MODNAME, korg1212);
2248 snd_korg1212_free(korg1212);
2252 korg1212->
irq = pci->
irq;
2268 " Status register = 0x%p\n"
2269 " OutDoorbell = 0x%p\n"
2270 " InDoorbell = 0x%p\n"
2271 " Mailbox0 = 0x%p\n"
2272 " Mailbox1 = 0x%p\n"
2273 " Mailbox2 = 0x%p\n"
2274 " Mailbox3 = 0x%p\n"
2275 " ControlReg = 0x%p\n"
2294 snd_korg1212_free(korg1212);
2302 #ifndef K1212_LARGEALLOC
2309 snd_korg1212_free(korg1212);
2321 snd_korg1212_free(korg1212);
2330 #else // K1212_LARGEALLOC
2337 #endif // K1212_LARGEALLOC
2350 snd_korg1212_free(korg1212);
2357 snd_korg1212_free(korg1212);
2376 snd_korg1212_free(korg1212);
2380 snd_korg1212_EnableCardInterrupts(korg1212);
2384 if (snd_korg1212_downloadDSPCode(korg1212))
2388 "PlayDataPhy = %08x L[%08x]\n"
2389 "korg1212: RecDataPhy = %08x L[%08x], "
2390 "VolumeTablePhy = %08x L[%08x]\n"
2391 "korg1212: RoutingTablePhy = %08x L[%08x], "
2392 "AdatTimeCodePhy = %08x L[%08x]\n",
2393 (
int)korg1212->
dma_dsp.addr, UpperWordSwap(korg1212->
dma_dsp.addr),
2403 korg1212->
pcm->private_data = korg1212;
2404 korg1212->
pcm->private_free = snd_korg1212_free_pcm;
2405 strcpy(korg1212->
pcm->name,
"korg1212");
2413 for (i = 0; i <
ARRAY_SIZE(snd_korg1212_controls); i++) {
2419 snd_korg1212_proc_init(korg1212);
2433 snd_korg1212_probe(
struct pci_dev *pci,
2452 if ((err = snd_korg1212_create(card, pci, &korg1212)) < 0) {
2468 pci_set_drvdata(pci, card);
2476 pci_set_drvdata(pci,
NULL);
2480 .name = KBUILD_MODNAME,
2481 .id_table = snd_korg1212_ids,
2482 .probe = snd_korg1212_probe,