亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? korg1212.c

?? LINUX2.6.15的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
        if (monModeSet) {                rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,                                K1212_MODE_MonitorOn, 0, 0, 0);#if K1212_DEBUG_LEVEL > 0	        if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: WriteADCSensivity - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif        }	spin_unlock_irqrestore(&korg1212->lock, flags);        return 1;}static void snd_korg1212_OnDSPDownloadComplete(korg1212_t *korg1212){        int channel;#if K1212_DEBUG_LEVEL > 0        K1212_DEBUG_PRINTK("K1212_DEBUG: DSP download is complete. [%s]\n", stateName[korg1212->cardState]);#endif        // ----------------------------------------------------        // tell the card to boot        // ----------------------------------------------------        rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_BootFromDSPPage4, 0, 0, 0, 0);#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Boot from Page 4 - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif	mdelay(DSP_BOOT_DELAY_IN_MS);        // --------------------------------------------------------------------------------        // Let the card know where all the buffers are.        // --------------------------------------------------------------------------------        rc = snd_korg1212_Send1212Command(korg1212,                        K1212_DB_ConfigureBufferMemory,                        LowerWordSwap(korg1212->PlayDataPhy),                        LowerWordSwap(korg1212->RecDataPhy),                        ((kNumBuffers * kPlayBufferFrames) / 2),   // size given to the card                                                                   // is based on 2 buffers                        0        );#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Configure Buffer Memory - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif        udelay(INTERCOMMAND_DELAY);        rc = snd_korg1212_Send1212Command(korg1212,                        K1212_DB_ConfigureMiscMemory,                        LowerWordSwap(korg1212->VolumeTablePhy),                        LowerWordSwap(korg1212->RoutingTablePhy),                        LowerWordSwap(korg1212->AdatTimeCodePhy),                        0        );#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Configure Misc Memory - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif        // --------------------------------------------------------------------------------        // Initialize the routing and volume tables, then update the card's state.        // --------------------------------------------------------------------------------        udelay(INTERCOMMAND_DELAY);        for (channel = 0; channel < kAudioChannels; channel++) {                korg1212->sharedBufferPtr->volumeData[channel] = k1212MaxVolume;                //korg1212->sharedBufferPtr->routeData[channel] = channel;                korg1212->sharedBufferPtr->routeData[channel] = 8 + (channel & 1);        }        snd_korg1212_WriteADCSensitivity(korg1212);	udelay(INTERCOMMAND_DELAY);	rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SetClockSourceRate,					  ClockSourceSelector[korg1212->clkSrcRate],					  0, 0, 0);#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Set Clock Source Selector - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif	snd_korg1212_TurnOnIdleMonitor(korg1212);	snd_korg1212_setCardState(korg1212, K1212_STATE_READY);#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Set Monitor On - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif	snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE);}static irqreturn_t snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs){        u32 doorbellValue;        korg1212_t *korg1212 = dev_id;	if(irq != korg1212->irq)		return IRQ_NONE;        doorbellValue = readl(korg1212->inDoorbellPtr);        if (!doorbellValue)		return IRQ_NONE;	spin_lock(&korg1212->lock);	writel(doorbellValue, korg1212->inDoorbellPtr);        korg1212->irqcount++;	korg1212->inIRQ++;        switch (doorbellValue) {                case K1212_DB_DSPDownloadDone:#if K1212_DEBUG_LEVEL > 0                        K1212_DEBUG_PRINTK("K1212_DEBUG: IRQ DNLD count - %ld, %x, [%s].\n", korg1212->irqcount, doorbellValue, stateName[korg1212->cardState]);#endif                        if (korg1212->cardState == K1212_STATE_DSP_IN_PROCESS) {				korg1212->dsp_is_loaded = 1;				wake_up(&korg1212->wait);			}                        break;                // ------------------------------------------------------------------------                // an error occurred - stop the card                // ------------------------------------------------------------------------                case K1212_DB_DMAERROR:#if K1212_DEBUG_LEVEL > 1                        K1212_DEBUG_PRINTK("K1212_DEBUG: IRQ DMAE count - %ld, %x, [%s].\n", korg1212->irqcount, doorbellValue, stateName[korg1212->cardState]);#endif			snd_printk(KERN_ERR "korg1212: DMA Error\n");				korg1212->errorcnt++;			korg1212->totalerrorcnt++;			korg1212->sharedBufferPtr->cardCommand = 0;			snd_korg1212_setCardState(korg1212, K1212_STATE_ERRORSTOP);                        break;                // ------------------------------------------------------------------------                // the card has stopped by our request.  Clear the command word and signal                // the semaphore in case someone is waiting for this.                // ------------------------------------------------------------------------                case K1212_DB_CARDSTOPPED:#if K1212_DEBUG_LEVEL > 1                        K1212_DEBUG_PRINTK("K1212_DEBUG: IRQ CSTP count - %ld, %x, [%s].\n", korg1212->irqcount, doorbellValue, stateName[korg1212->cardState]);#endif			korg1212->sharedBufferPtr->cardCommand = 0;                        break;                default:#if K1212_DEBUG_LEVEL > 3                        K1212_DEBUG_PRINTK("K1212_DEBUG: IRQ DFLT count - %ld, %x, cpos=%d [%s].\n", korg1212->irqcount, doorbellValue, 				korg1212->currentBuffer, stateName[korg1212->cardState]);#endif                        if ((korg1212->cardState > K1212_STATE_SETUP) || korg1212->idleMonitorOn) {                                korg1212->currentBuffer++;                                if (korg1212->currentBuffer >= kNumBuffers)                                        korg1212->currentBuffer = 0;                                if (!korg1212->running)                                        break;                                if (korg1212->capture_substream) {					spin_unlock(&korg1212->lock);                                        snd_pcm_period_elapsed(korg1212->capture_substream);					spin_lock(&korg1212->lock);                                }                                if (korg1212->playback_substream) {					spin_unlock(&korg1212->lock);                                        snd_pcm_period_elapsed(korg1212->playback_substream);					spin_lock(&korg1212->lock);                                }                        }                        break;        }	korg1212->inIRQ--;	spin_unlock(&korg1212->lock);	return IRQ_HANDLED;}static int snd_korg1212_downloadDSPCode(korg1212_t *korg1212){#if K1212_DEBUG_LEVEL > 0        K1212_DEBUG_PRINTK("K1212_DEBUG: DSP download is starting... [%s]\n", stateName[korg1212->cardState]);#endif        // ---------------------------------------------------------------        // verify the state of the card before proceeding.        // ---------------------------------------------------------------        if (korg1212->cardState >= K1212_STATE_DSP_IN_PROCESS) {                return 1;        }        snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_IN_PROCESS);        memcpy(korg1212->dma_dsp.area, dspCode, korg1212->dspCodeSize);        rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_StartDSPDownload,                                     UpperWordSwap(korg1212->dma_dsp.addr),                                     0, 0, 0);#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Start DSP Download RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif	korg1212->dsp_is_loaded = 0;	wait_event_timeout(korg1212->wait, korg1212->dsp_is_loaded, HZ * CARD_BOOT_TIMEOUT);	if (! korg1212->dsp_is_loaded )		return -EBUSY; /* timeout */	snd_korg1212_OnDSPDownloadComplete(korg1212);        return 0;}static snd_pcm_hardware_t snd_korg1212_playback_info ={	.info =              (SNDRV_PCM_INFO_MMAP |                              SNDRV_PCM_INFO_MMAP_VALID |                              SNDRV_PCM_INFO_INTERLEAVED),	.formats =	      SNDRV_PCM_FMTBIT_S16_LE,        .rates =              (SNDRV_PCM_RATE_44100 |                              SNDRV_PCM_RATE_48000),        .rate_min =           44100,        .rate_max =           48000,        .channels_min =       K1212_MIN_CHANNELS,        .channels_max =       K1212_MAX_CHANNELS,        .buffer_bytes_max =   K1212_MAX_BUF_SIZE,        .period_bytes_min =   K1212_MIN_CHANNELS * 2 * kPlayBufferFrames,        .period_bytes_max =   K1212_MAX_CHANNELS * 2 * kPlayBufferFrames,        .periods_min =        K1212_PERIODS,        .periods_max =        K1212_PERIODS,        .fifo_size =          0,};static snd_pcm_hardware_t snd_korg1212_capture_info ={        .info =              (SNDRV_PCM_INFO_MMAP |                              SNDRV_PCM_INFO_MMAP_VALID |                              SNDRV_PCM_INFO_INTERLEAVED),        .formats =	      SNDRV_PCM_FMTBIT_S16_LE,        .rates =	      (SNDRV_PCM_RATE_44100 |                              SNDRV_PCM_RATE_48000),        .rate_min =           44100,        .rate_max =           48000,        .channels_min =       K1212_MIN_CHANNELS,        .channels_max =       K1212_MAX_CHANNELS,        .buffer_bytes_max =   K1212_MAX_BUF_SIZE,        .period_bytes_min =   K1212_MIN_CHANNELS * 2 * kPlayBufferFrames,        .period_bytes_max =   K1212_MAX_CHANNELS * 2 * kPlayBufferFrames,        .periods_min =        K1212_PERIODS,        .periods_max =        K1212_PERIODS,        .fifo_size =          0,};static int snd_korg1212_silence(korg1212_t *korg1212, int pos, int count, int offset, int size){	KorgAudioFrame * dst =  korg1212->playDataBufsPtr[0].bufferData + pos;	int i;#if K1212_DEBUG_LEVEL > 2	K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_silence pos=%d offset=%d size=%d count=%d\n", pos, offset, size, count);#endif	snd_assert(pos + count <= K1212_MAX_SAMPLES, return -EINVAL);	for (i=0; i < count; i++) {#if K1212_DEBUG_LEVEL > 0		if ( (void *) dst < (void *) korg1212->playDataBufsPtr ||		     (void *) dst > (void *) korg1212->playDataBufsPtr[8].bufferData ) {			K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_silence KERNEL EFAULT dst=%p iter=%d\n", dst, i);			return -EFAULT;		}#endif		memset((void*) dst + offset, 0, size);		dst++;	}	return 0;}static int snd_korg1212_copy_to(korg1212_t *korg1212, void __user *dst, int pos, int count, int offset, int size){	KorgAudioFrame * src =  korg1212->recordDataBufsPtr[0].bufferData + pos;	int i, rc;#if K1212_DEBUG_LEVEL > 2	K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_copy_to pos=%d offset=%d size=%d\n", pos, offset, size);#endif	snd_assert(pos + count <= K1212_MAX_SAMPLES, return -EINVAL);	for (i=0; i < count; i++) {#if K1212_DEBUG_LEVEL > 0		if ( (void *) src < (void *) korg1212->recordDataBufsPtr ||		     (void *) src > (void *) korg1212->recordDataBufsPtr[8].bufferData ) {			K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_copy_to KERNEL EFAULT, src=%p dst=%p iter=%d\n", src, dst, i);			return -EFAULT;		}#endif		rc = copy_to_user(dst + offset, src, size);		if (rc) {#if K1212_DEBUG_LEVEL > 0			K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_copy_to USER EFAULT src=%p dst=%p iter=%d\n", src, dst, i);#endif			return -EFAULT;		}		src++;		dst += size;	}	return 0;}static int snd_korg1212_copy_from(korg1212_t *korg1212, void __user *src, int pos, int count, int offset, int size){	KorgAudioFrame * dst =  korg1212->playDataBufsPtr[0].bufferData + pos;	int i, rc;#if K1212_DEBUG_LEVEL > 2	K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_copy_from pos=%d offset=%d size=%d count=%d\n", pos, offset, size, count);#endif	snd_assert(pos + count <= K1212_MAX_SAMPLES, return -EINVAL);	for (i=0; i < count; i++) {#if K1212_DEBUG_LEVEL > 0		if ( (void *) dst < (void *) korg1212->playDataBufsPtr ||		     (void *) dst > (void *) korg1212->playDataBufsPtr[8].bufferData ) {			K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_copy_from KERNEL EFAULT, src=%p dst=%p iter=%d\n", src, dst, i);			return -EFAULT;		}#endif		rc = copy_from_user((void*) dst + offset, src, size);		if (rc) {#if K1212_DEBUG_LEVEL > 0			K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_copy_from USER EFAULT src=%p dst=%p iter=%d\n", src, dst, i);#endif			return -EFAULT;		}		dst++;		src += size;	}	return 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美夫妻性生活| eeuss鲁一区二区三区| 亚洲同性同志一二三专区| 宅男噜噜噜66一区二区66| 欧美三区在线视频| 精品伊人久久久久7777人| 成人永久看片免费视频天堂| 精品视频1区2区3区| 国产午夜亚洲精品午夜鲁丝片| 亚洲成人先锋电影| 99久久精品国产一区二区三区| 日韩你懂的电影在线观看| 亚洲精品视频一区二区| 国产成人亚洲综合a∨猫咪| 51精品久久久久久久蜜臀| 亚洲欧洲日韩av| 懂色av中文一区二区三区| 在线不卡一区二区| 亚洲欧美在线观看| 激情另类小说区图片区视频区| 91麻豆免费看片| 国产精品视频观看| 欧美日韩在线精品一区二区三区激情| 成人小视频免费观看| 91国模大尺度私拍在线视频| 欧美日韩精品一区二区| 欧美videofree性高清杂交| 国产三级三级三级精品8ⅰ区| 国产精品不卡视频| 偷拍一区二区三区| 国产丶欧美丶日本不卡视频| 色综合一个色综合| 日韩一区二区三区视频在线观看| 久久久五月婷婷| 亚洲黄色录像片| 国产乱人伦偷精品视频免下载| 成人av电影在线播放| 在线成人免费观看| 一区视频在线播放| 久久丁香综合五月国产三级网站| 97精品久久久久中文字幕| 欧美精品在线一区二区三区| 国产精品美女视频| 日韩激情在线观看| 91麻豆国产在线观看| 久久综合色婷婷| 亚洲一区二区美女| 不卡的电视剧免费网站有什么| 欧美日韩精品一二三区| 国产精品传媒入口麻豆| 精品一区二区成人精品| 欧美日韩国产一级| 日韩一区在线播放| 国产精品一区二区三区99| 91精品国产91久久久久久一区二区| 中文字幕精品综合| 九一九一国产精品| 3d动漫精品啪啪一区二区竹菊| 中文字幕在线观看不卡| 国产精品66部| 欧美成人性战久久| 日韩不卡手机在线v区| 欧美性生活影院| 亚洲精品美腿丝袜| 99精品久久免费看蜜臀剧情介绍| 精品国精品国产尤物美女| 天天影视网天天综合色在线播放| 91在线一区二区三区| 国产农村妇女毛片精品久久麻豆| 久久精品国产亚洲a| 欧美一区二区三区四区久久| 香港成人在线视频| 欧美精品免费视频| 日韩专区欧美专区| 欧美日韩mp4| 日韩成人一区二区三区在线观看| 欧美性猛交一区二区三区精品| 一区二区三区在线观看网站| 99精品桃花视频在线观看| 中文字幕中文字幕一区二区| av在线一区二区| 亚洲欧美一区二区三区国产精品 | 国产一区二区女| 日韩你懂的在线观看| 美女免费视频一区二区| 精品久久久久久久久久久久久久久久久| 日韩精品成人一区二区三区| 91精品国产福利在线观看 | 麻豆国产精品777777在线| 欧美一级搡bbbb搡bbbb| 国内国产精品久久| 亚洲国产高清不卡| 色综合久久精品| 丝袜国产日韩另类美女| 日韩一级在线观看| 国产精品综合一区二区| 中文字幕中文字幕在线一区| 欧美亚洲另类激情小说| 视频一区二区三区在线| 精品久久一区二区三区| 粉嫩av一区二区三区| 一区二区在线观看视频| 欧美丰满高潮xxxx喷水动漫| 国产一区二区在线观看免费| 国产精品电影一区二区三区| 欧美日韩亚洲不卡| 极品少妇xxxx偷拍精品少妇| 日韩美女久久久| 911精品国产一区二区在线| 国产精品白丝jk黑袜喷水| 亚洲蜜臀av乱码久久精品蜜桃| 6080国产精品一区二区| 成人app在线| 日韩在线a电影| 国产精品国产三级国产aⅴ入口| 欧美福利视频一区| 成人黄色免费短视频| 日韩高清不卡在线| 国产精品国产自产拍在线| 日韩亚洲欧美成人一区| 99精品欧美一区二区三区小说 | 综合av第一页| 日韩免费高清视频| 日本精品一区二区三区高清 | 日韩一区日韩二区| 欧美电视剧在线看免费| 欧洲一区二区三区在线| 国产成人丝袜美腿| 日本女人一区二区三区| 亚洲欧美一区二区久久 | 国产精品国产成人国产三级 | 懂色av一区二区夜夜嗨| 日韩中文字幕区一区有砖一区| 一色桃子久久精品亚洲| 久久综合九色综合97婷婷女人 | 国产清纯白嫩初高生在线观看91 | 欧美日韩一区成人| fc2成人免费人成在线观看播放| 另类调教123区| 午夜电影久久久| 一区二区三区精品在线| 亚洲欧美自拍偷拍| 欧美激情在线免费观看| 久久亚洲捆绑美女| 欧美xxxx在线观看| 日韩欧美电影在线| 欧美一区二区三区视频在线观看| 在线观看国产一区二区| 在线免费观看一区| 色婷婷一区二区三区四区| av亚洲产国偷v产偷v自拍| 成人高清视频在线观看| 成人免费毛片嘿嘿连载视频| 丁香一区二区三区| 成人三级在线视频| 波多野洁衣一区| 色综合久久六月婷婷中文字幕| 成人sese在线| 91精品办公室少妇高潮对白| 色综合咪咪久久| 欧美三级视频在线| 51久久夜色精品国产麻豆| 欧美人牲a欧美精品| 欧美日韩www| 欧美成人一级视频| 国产无一区二区| 国产精品视频一二三区| 亚洲女同女同女同女同女同69| 亚洲精品国产成人久久av盗摄 | 精品久久久久久久人人人人传媒| 欧美大片在线观看| 国产女主播一区| 伊人色综合久久天天人手人婷| 亚洲成人免费av| 韩国一区二区视频| 波多野结衣中文字幕一区| 一本大道综合伊人精品热热| 欧美日韩一区二区三区在线| 日韩一区二区视频在线观看| 久久精品水蜜桃av综合天堂| 国产精品沙发午睡系列990531| 亚洲欧美日韩电影| 同产精品九九九| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品夜夜爽| 成人av电影在线播放| 欧美三片在线视频观看| 26uuu另类欧美亚洲曰本| 国产精品电影院| 日本一不卡视频| 国产不卡视频在线播放| 欧美视频一区二区三区四区| 精品国产一区二区三区不卡| 亚洲女人****多毛耸耸8| 精品在线免费观看| 99久久精品免费看| 欧美成人综合网站| 亚洲一区二区三区爽爽爽爽爽 | 亚洲色欲色欲www| 捆绑调教美女网站视频一区|