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

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

?? korg1212.c

?? LINUX2.6.15的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
#endif	down(&korg1212->open_mutex);	if (--(korg1212->opencnt)) {		up(&korg1212->open_mutex);		return 0;	}        if (korg1212->cardState == K1212_STATE_SETUP) {                rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,                                K1212_MODE_StopPlay, 0, 0, 0);#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: CloseCard - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif		if (rc != K1212_CMDRET_Success) {			up(&korg1212->open_mutex);                        return 0;		}        } else if (korg1212->cardState > K1212_STATE_SETUP) {		snd_korg1212_SendStopAndWait(korg1212);        }        if (korg1212->cardState > K1212_STATE_READY) {		snd_korg1212_TurnOnIdleMonitor(korg1212);                snd_korg1212_setCardState(korg1212, K1212_STATE_READY);	}	up(&korg1212->open_mutex);        return 0;}/* spinlock already held */static int snd_korg1212_SetupForPlay(korg1212_t * korg1212){#if K1212_DEBUG_LEVEL > 0	K1212_DEBUG_PRINTK("K1212_DEBUG: SetupForPlay [%s] %d\n", stateName[korg1212->cardState], korg1212->setcnt);#endif        if (korg1212->setcnt++)		return 0;        snd_korg1212_setCardState(korg1212, K1212_STATE_SETUP);        rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,                                        K1212_MODE_SetupPlay, 0, 0, 0);#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: SetupForPlay - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif        if (rc != K1212_CMDRET_Success) {                return 1;        }        return 0;}/* spinlock already held */static int snd_korg1212_TriggerPlay(korg1212_t * korg1212){#if K1212_DEBUG_LEVEL > 0	K1212_DEBUG_PRINTK("K1212_DEBUG: TriggerPlay [%s] %d\n", stateName[korg1212->cardState], korg1212->playcnt);#endif        if (korg1212->playcnt++)		return 0;        snd_korg1212_setCardState(korg1212, K1212_STATE_PLAYING);        rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_TriggerPlay, 0, 0, 0, 0);#if K1212_DEBUG_LEVEL > 0	if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: TriggerPlay - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);#endif        if (rc != K1212_CMDRET_Success) {                return 1;        }        return 0;}/* spinlock already held */static int snd_korg1212_StopPlay(korg1212_t * korg1212){#if K1212_DEBUG_LEVEL > 0	K1212_DEBUG_PRINTK("K1212_DEBUG: StopPlay [%s] %d\n", stateName[korg1212->cardState], korg1212->playcnt);#endif        if (--(korg1212->playcnt)) 		return 0;	korg1212->setcnt = 0;        if (korg1212->cardState != K1212_STATE_ERRORSTOP)		snd_korg1212_SendStop(korg1212);	snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);        return 0;}static void snd_korg1212_EnableCardInterrupts(korg1212_t * korg1212){	writel(PCI_INT_ENABLE_BIT            |	       PCI_DOORBELL_INT_ENABLE_BIT   |	       LOCAL_INT_ENABLE_BIT          |	       LOCAL_DOORBELL_INT_ENABLE_BIT |	       LOCAL_DMA1_INT_ENABLE_BIT,	       korg1212->statusRegPtr);}#if 0 /* not used */static int snd_korg1212_SetMonitorMode(korg1212_t *korg1212, MonitorModeSelector mode){#if K1212_DEBUG_LEVEL > 0	K1212_DEBUG_PRINTK("K1212_DEBUG: SetMonitorMode [%s]\n", stateName[korg1212->cardState]);#endif        switch (mode) {                case K1212_MONMODE_Off:                        if (korg1212->cardState != K1212_STATE_MONITOR) {                                return 0;                        } else {				snd_korg1212_SendStopAndWait(korg1212);                                snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);                        }                        break;                case K1212_MONMODE_On:                        if (korg1212->cardState != K1212_STATE_OPEN) {                                return 0;                        } else {                                snd_korg1212_setCardState(korg1212, K1212_STATE_MONITOR);                                rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,                                                        K1212_MODE_MonitorOn, 0, 0, 0);                                if (rc != K1212_CMDRET_Success) {                                        return 0;                                }                        }                        break;                default:                        return 0;        }        return 1;}#endif /* not used */static inline int snd_korg1212_use_is_exclusive(korg1212_t *korg1212){	int ret = 1;	if ((korg1212->playback_pid != korg1212->capture_pid) &&	    (korg1212->playback_pid >= 0) && (korg1212->capture_pid >= 0)) {		ret = 0;	}	return ret;}static int snd_korg1212_SetRate(korg1212_t *korg1212, int rate){        static ClockSourceIndex s44[] = { K1212_CLKIDX_AdatAt44_1K,                                          K1212_CLKIDX_WordAt44_1K,                                          K1212_CLKIDX_LocalAt44_1K };        static ClockSourceIndex s48[] = {                                          K1212_CLKIDX_AdatAt48K,                                          K1212_CLKIDX_WordAt48K,                                          K1212_CLKIDX_LocalAt48K };        int parm;        if (!snd_korg1212_use_is_exclusive (korg1212)) {                return -EBUSY;        }        switch(rate) {                case 44100:                parm = s44[korg1212->clkSource];                break;                case 48000:                parm = s48[korg1212->clkSource];                break;                default:                return -EINVAL;        }        korg1212->clkSrcRate = parm;        korg1212->clkRate = rate;	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        return 0;}static int snd_korg1212_SetClockSource(korg1212_t *korg1212, int source){        if (source<0 || source >2)           return -EINVAL;        korg1212->clkSource = source;        snd_korg1212_SetRate(korg1212, korg1212->clkRate);        return 0;}static void snd_korg1212_DisableCardInterrupts(korg1212_t *korg1212){	writel(0, korg1212->statusRegPtr);}static int snd_korg1212_WriteADCSensitivity(korg1212_t *korg1212){        SensBits  sensVals;        int       bitPosition;        int       channel;        int       clkIs48K;        int       monModeSet;        u16       controlValue;    // this keeps the current value to be written to                                   //  the card's eeprom control register.        u16       count;	unsigned long flags;#if K1212_DEBUG_LEVEL > 0	K1212_DEBUG_PRINTK("K1212_DEBUG: WriteADCSensivity [%s]\n", stateName[korg1212->cardState]);#endif        // ----------------------------------------------------------------------------        // initialize things.  The local init bit is always set when writing to the        // card's control register.        // ----------------------------------------------------------------------------        controlValue = 0;        SetBitInWord(&controlValue, SET_SENS_LOCALINIT_BITPOS);    // init the control value        // ----------------------------------------------------------------------------        // make sure the card is not in monitor mode when we do this update.        // ----------------------------------------------------------------------------        if (korg1212->cardState == K1212_STATE_MONITOR || korg1212->idleMonitorOn) {                monModeSet = 1;		snd_korg1212_SendStopAndWait(korg1212);        } else                monModeSet = 0;	spin_lock_irqsave(&korg1212->lock, flags);        // ----------------------------------------------------------------------------        // we are about to send new values to the card, so clear the new values queued        // flag.  Also, clear out mailbox 3, so we don't lockup.        // ----------------------------------------------------------------------------        writel(0, korg1212->mailbox3Ptr);        udelay(LOADSHIFT_DELAY);        // ----------------------------------------------------------------------------        // determine whether we are running a 48K or 44.1K clock.  This info is used        // later when setting the SPDIF FF after the volume has been shifted in.        // ----------------------------------------------------------------------------        switch (korg1212->clkSrcRate) {                case K1212_CLKIDX_AdatAt44_1K:                case K1212_CLKIDX_WordAt44_1K:                case K1212_CLKIDX_LocalAt44_1K:                        clkIs48K = 0;                        break;                case K1212_CLKIDX_WordAt48K:                case K1212_CLKIDX_AdatAt48K:                case K1212_CLKIDX_LocalAt48K:                default:                        clkIs48K = 1;                        break;        }        // ----------------------------------------------------------------------------        // start the update.  Setup the bit structure and then shift the bits.        // ----------------------------------------------------------------------------        sensVals.l.v.leftChanId   = SET_SENS_LEFTCHANID;        sensVals.r.v.rightChanId  = SET_SENS_RIGHTCHANID;        sensVals.l.v.leftChanVal  = korg1212->leftADCInSens;        sensVals.r.v.rightChanVal = korg1212->rightADCInSens;        // ----------------------------------------------------------------------------        // now start shifting the bits in.  Start with the left channel then the right.        // ----------------------------------------------------------------------------        for (channel = 0; channel < 2; channel++) {                // ----------------------------------------------------------------------------                // Bring the load/shift line low, then wait - the spec says >150ns from load/                // shift low to the first rising edge of the clock.                // ----------------------------------------------------------------------------                ClearBitInWord(&controlValue, SET_SENS_LOADSHIFT_BITPOS);                ClearBitInWord(&controlValue, SET_SENS_DATA_BITPOS);                writew(controlValue, korg1212->sensRegPtr);                          // load/shift goes low                udelay(LOADSHIFT_DELAY);                for (bitPosition = 15; bitPosition >= 0; bitPosition--) {       // for all the bits                        if (channel == 0) {                                if (sensVals.l.leftSensBits & (0x0001 << bitPosition)) {                                        SetBitInWord(&controlValue, SET_SENS_DATA_BITPOS);     // data bit set high                                } else {                                        ClearBitInWord(&controlValue, SET_SENS_DATA_BITPOS);   // data bit set low                                }                        } else {                                if (sensVals.r.rightSensBits & (0x0001 << bitPosition)) {                                SetBitInWord(&controlValue, SET_SENS_DATA_BITPOS);     // data bit set high                                } else {                                ClearBitInWord(&controlValue, SET_SENS_DATA_BITPOS);   // data bit set low                                }                        }                        ClearBitInWord(&controlValue, SET_SENS_CLOCK_BITPOS);                        writew(controlValue, korg1212->sensRegPtr);                       // clock goes low                        udelay(SENSCLKPULSE_WIDTH);                        SetBitInWord(&controlValue, SET_SENS_CLOCK_BITPOS);                        writew(controlValue, korg1212->sensRegPtr);                       // clock goes high                        udelay(SENSCLKPULSE_WIDTH);                }                // ----------------------------------------------------------------------------                // finish up SPDIF for left.  Bring the load/shift line high, then write a one                // bit if the clock rate is 48K otherwise write 0.                // ----------------------------------------------------------------------------                ClearBitInWord(&controlValue, SET_SENS_DATA_BITPOS);                ClearBitInWord(&controlValue, SET_SENS_CLOCK_BITPOS);                SetBitInWord(&controlValue, SET_SENS_LOADSHIFT_BITPOS);                writew(controlValue, korg1212->sensRegPtr);                   // load shift goes high - clk low                udelay(SENSCLKPULSE_WIDTH);                if (clkIs48K)                        SetBitInWord(&controlValue, SET_SENS_DATA_BITPOS);                writew(controlValue, korg1212->sensRegPtr);                   // set/clear data bit                udelay(ONE_RTC_TICK);                SetBitInWord(&controlValue, SET_SENS_CLOCK_BITPOS);                writew(controlValue, korg1212->sensRegPtr);                   // clock goes high                udelay(SENSCLKPULSE_WIDTH);                ClearBitInWord(&controlValue, SET_SENS_CLOCK_BITPOS);                writew(controlValue, korg1212->sensRegPtr);                   // clock goes low                udelay(SENSCLKPULSE_WIDTH);        }        // ----------------------------------------------------------------------------        // The update is complete.  Set a timeout.  This is the inter-update delay.        // Also, if the card was in monitor mode, restore it.        // ----------------------------------------------------------------------------        for (count = 0; count < 10; count++)                udelay(SENSCLKPULSE_WIDTH);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区福利视频| 亚洲日本一区二区| 一区二区三区四区在线| 在线亚洲免费视频| 日韩有码一区二区三区| 精品国产一区二区亚洲人成毛片| 免费人成精品欧美精品| 久久综合久久综合亚洲| 97se亚洲国产综合在线| 亚洲不卡一区二区三区| 精品入口麻豆88视频| 国产成人免费在线| 午夜久久久久久| 国产精品国产馆在线真实露脸| 欧美亚洲综合一区| 国产a视频精品免费观看| 亚洲小少妇裸体bbw| 亚洲欧美日韩一区二区| 日韩一区二区三区视频| 在线免费观看日本欧美| 欧美日韩一区三区| 一本大道久久a久久精二百| 精品在线你懂的| 午夜精品视频一区| 国模套图日韩精品一区二区| 亚洲成人av在线电影| 蜜臀av性久久久久蜜臀aⅴ| 亚洲一区在线观看网站| 国产精品的网站| 一区二区三区在线不卡| 另类小说欧美激情| 欧美aaaaa成人免费观看视频| 韩国视频一区二区| 91久久免费观看| 99精品久久99久久久久| 欧美日韩在线观看一区二区| 精品国产污网站| 夜夜嗨av一区二区三区中文字幕| 日韩制服丝袜先锋影音| 成人综合婷婷国产精品久久| 久久99精品国产麻豆婷婷洗澡| 国产**成人网毛片九色| 91精品国产综合久久精品图片| 91在线精品一区二区三区| 日韩视频在线你懂得| 亚洲欧洲99久久| 一区二区三区欧美视频| 精品一区二区三区在线播放视频| 99久久久国产精品免费蜜臀| 欧美变态tickling挠脚心| 17c精品麻豆一区二区免费| 日本成人在线一区| 精彩视频一区二区三区| 色欧美片视频在线观看在线视频| 日韩免费视频一区二区| 精品欧美久久久| 亚洲第一会所有码转帖| 99久久er热在这里只有精品15 | 久久99久久99| 懂色中文一区二区在线播放| 欧美日韩久久久一区| 欧美最猛性xxxxx直播| 中文字幕巨乱亚洲| 亚洲欧美偷拍三级| 国产剧情一区二区三区| av毛片久久久久**hd| 欧美亚洲自拍偷拍| 成人欧美一区二区三区1314| 国产传媒欧美日韩成人| www久久精品| 久久99久久精品| 日韩欧美一级精品久久| 亚欧色一区w666天堂| 欧美亚洲国产bt| 一级中文字幕一区二区| 在线观看亚洲成人| 亚洲夂夂婷婷色拍ww47 | 一本色道久久综合亚洲aⅴ蜜桃| 国产亚洲女人久久久久毛片| 亚洲欧美一区二区在线观看| 成人激情小说乱人伦| 欧美色精品天天在线观看视频| 国产精品久久久久久久岛一牛影视| 国产麻豆欧美日韩一区| 久久久国产一区二区三区四区小说| 亚洲欧美激情一区二区| 色999日韩国产欧美一区二区| 亚洲嫩草精品久久| 欧美日韩免费一区二区三区| 性做久久久久久免费观看欧美| 欧美日韩精品免费观看视频| 日韩高清不卡一区二区| www成人在线观看| 欧美人xxxx| 精品一区二区在线免费观看| 久久综合网色—综合色88| 成人免费观看av| 亚洲最大成人综合| 日韩免费视频一区| 成人激情视频网站| 亚洲国产精品一区二区久久| 欧美色爱综合网| 久久成人18免费观看| 欧美极品另类videosde| 欧美在线高清视频| 国产制服丝袜一区| 亚洲最新在线观看| 久久久亚洲精品石原莉奈| 成人av一区二区三区| 亚洲午夜一区二区| 久久毛片高清国产| 色欲综合视频天天天| 免费一区二区视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 在线视频亚洲一区| 国产精品 欧美精品| 亚洲综合网站在线观看| 国产午夜亚洲精品羞羞网站| 色悠久久久久综合欧美99| 蜜桃av噜噜一区二区三区小说| 中文在线资源观看网站视频免费不卡| 欧美午夜电影网| 成人性视频免费网站| 男男gaygay亚洲| 亚洲精品中文在线观看| 一本色道久久加勒比精品| 蜜桃精品在线观看| 亚洲mv在线观看| 亚洲免费在线观看视频| 久久精品亚洲麻豆av一区二区| 欧美三级在线视频| 97aⅴ精品视频一二三区| 国产麻豆精品theporn| 日韩成人免费电影| 亚洲国产日韩精品| 亚洲欧美日韩国产中文在线| 久久精品欧美一区二区三区麻豆| 欧美日韩一级二级三级| 92精品国产成人观看免费| 国产精品一二二区| 久热成人在线视频| 免费成人小视频| 香蕉久久夜色精品国产使用方法| 国产精品美女www爽爽爽| 91福利社在线观看| 97精品超碰一区二区三区| 91精品国产一区二区三区蜜臀| 五月天激情综合网| 亚洲小说春色综合另类电影| 国产精品国产三级国产| 国产精品网站一区| 亚洲国产成人私人影院tom| 久久久久国产一区二区三区四区| 精品日韩一区二区三区免费视频| 欧美一区二区精美| 91精品国产综合久久久久久久 | 日韩美女视频在线| 另类中文字幕网| 麻豆精品视频在线观看免费 | 欧美成人精品3d动漫h| 日韩精品一区二区三区视频| 欧美一级片免费看| 91精品午夜视频| 日韩免费观看高清完整版 | 成人激情视频网站| 91免费视频网| 免费av成人在线| 久久66热re国产| 国产宾馆实践打屁股91| 99久久99精品久久久久久| 欧美色精品在线视频| 欧美一区二区三区免费大片| 精品处破学生在线二十三| 欧美精品一区二区三区四区| 久久色在线视频| 国产精品色婷婷| 亚洲一区二区三区美女| 蜜桃视频在线一区| 成人小视频在线| 欧美日韩aaaaaa| 久久综合色婷婷| 亚洲欧美日韩精品久久久久| 午夜精品久久久久久| 国产一区二区免费在线| 日韩一区二区三区视频| 久久久久国产成人精品亚洲午夜| 日韩一区在线播放| 蜜桃av一区二区| 99久久久国产精品| 日韩欧美国产精品一区| 国产精品美女久久久久aⅴ | 波多野结衣亚洲一区| 欧美男生操女生| 中文字幕精品一区二区精品绿巨人| 亚洲亚洲精品在线观看| 国产成人激情av| 欧美肥妇free| 欧美午夜电影一区| 欧美国产日产图区| 五月天激情小说综合|