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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? korg1212.c

?? 底層驅(qū)動(dòng)開發(fā)
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
#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);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线这里只有精品| 丝袜诱惑亚洲看片| 亚洲国产综合人成综合网站| 五月天久久比比资源色| 老司机精品视频一区二区三区| 国产精品1区2区| 日本韩国精品在线| 精品嫩草影院久久| 亚洲男人的天堂在线观看| 日韩av不卡在线观看| 成人黄动漫网站免费app| 欧美日韩成人高清| 欧美国产一区二区| 日韩精彩视频在线观看| 国产**成人网毛片九色| 91精品福利在线一区二区三区| 日本一区二区三区四区| 午夜精品成人在线| www.日韩大片| 欧美电影免费提供在线观看| 1000部国产精品成人观看| 男人操女人的视频在线观看欧美| 丁香五精品蜜臀久久久久99网站| 欧美日韩高清一区| 国产精品传媒视频| 激情丁香综合五月| 欧美色综合影院| 中文幕一区二区三区久久蜜桃| 亚洲国产精品一区二区久久| 成人一级片网址| 精品国产百合女同互慰| 亚洲国产精品影院| 99麻豆久久久国产精品免费| 精品国产一区二区三区av性色| 一二三四社区欧美黄| 丁香婷婷综合色啪| 精品剧情在线观看| 视频精品一区二区| 色哟哟国产精品| 欧美国产精品中文字幕| 蜜桃视频在线一区| 欧美精品在线观看播放| 大美女一区二区三区| 在线播放日韩导航| 一区二区三区毛片| 成人av网址在线观看| 精品国产一二三区| 日本不卡一区二区| 欧美日本一道本| 亚洲素人一区二区| 成人18视频日本| 欧美国产一区在线| 国产精品69毛片高清亚洲| 欧美成人一级视频| 美女视频黄久久| 91麻豆精品国产91久久久久| 一区二区三区毛片| 91久久久免费一区二区| 亚洲精品视频观看| 97精品国产露脸对白| 国产精品福利一区二区三区| 成人性视频免费网站| 亚洲国产高清不卡| 高清久久久久久| 国产欧美va欧美不卡在线| 国产精品18久久久久久久久 | 国产亚洲一区字幕| 麻豆精品视频在线| 欧美电影免费提供在线观看| 精品一区二区久久| 精品国产免费一区二区三区四区 | 最新久久zyz资源站| av亚洲精华国产精华| 综合久久久久久久| 一本大道久久a久久综合| 亚洲美女电影在线| 欧美唯美清纯偷拍| 首页国产丝袜综合| 日韩午夜在线影院| 精品一区二区三区在线观看国产 | 久久精品国内一区二区三区| 欧美一区二区久久| 麻豆成人久久精品二区三区小说| 欧美成人精品3d动漫h| 国产美女一区二区| 国产精品国产三级国产普通话蜜臀 | a美女胸又www黄视频久久| 中文字幕日韩av资源站| 一本色道久久综合亚洲91| 亚洲一区二区三区小说| 欧美一区二区三区免费在线看 | 欧美日韩国产区一| 亚洲成a人在线观看| 欧美一区二区在线观看| 久久99国产乱子伦精品免费| 国产亚洲欧美日韩日本| 99v久久综合狠狠综合久久| 伊人色综合久久天天人手人婷| 欧美色涩在线第一页| 开心九九激情九九欧美日韩精美视频电影 | 久久婷婷综合激情| 成人av片在线观看| 亚洲午夜电影在线观看| 日韩精品综合一本久道在线视频| 国产精品一级黄| 亚洲欧美一区二区三区久本道91| 欧美日韩一区高清| 国产一区二区三区黄视频| 亚洲人吸女人奶水| 538prom精品视频线放| 国产丶欧美丶日本不卡视频| 亚洲乱码国产乱码精品精可以看| 欧美一区二区三区四区五区| 国产欧美一区二区三区鸳鸯浴| 91蜜桃在线观看| 免费精品视频在线| 国产精品网站在线播放| 欧美日韩高清一区| 粉嫩av一区二区三区在线播放| 亚洲一区二区三区四区五区黄| 日韩欧美在线综合网| 9人人澡人人爽人人精品| 婷婷丁香激情综合| 国产精品免费aⅴ片在线观看| 欧美三级资源在线| 国产成人在线视频网站| 亚洲精品精品亚洲| 久久精品视频一区二区三区| 精品视频一区二区不卡| 国产不卡视频在线观看| 日日夜夜精品视频天天综合网| 国产无人区一区二区三区| 欧美日韩免费不卡视频一区二区三区 | 色综合久久九月婷婷色综合| 麻豆成人av在线| 亚洲精品成人少妇| 国产亚洲成aⅴ人片在线观看 | 日本视频中文字幕一区二区三区| 国产精品激情偷乱一区二区∴| 4hu四虎永久在线影院成人| 99精品国产91久久久久久| 麻豆国产精品官网| 夜夜嗨av一区二区三区中文字幕 | 激情综合五月天| 亚洲午夜电影在线| 亚洲婷婷在线视频| 久久欧美中文字幕| 91精品一区二区三区久久久久久 | 亚洲欧美激情视频在线观看一区二区三区 | 欧美sm美女调教| 欧美久久久久久久久中文字幕| eeuss鲁片一区二区三区| 国产一区三区三区| 蜜桃精品视频在线| 亚洲 欧美综合在线网络| 亚洲三级在线看| 亚洲国产精品成人综合| 欧美精品一区二区三区久久久| 在线电影一区二区三区| 欧美制服丝袜第一页| 91免费视频观看| www.日韩av| www.66久久| 中文字幕中文字幕一区| 久久色在线观看| 精品电影一区二区| 日韩欧美亚洲另类制服综合在线| 欧美日韩高清一区二区| 欧美日韩一区精品| 欧美日韩一区不卡| 欧美少妇bbb| 欧美少妇xxx| 欧美日韩精品免费| 欧美日韩成人综合在线一区二区| 在线看国产日韩| 欧美在线观看视频一区二区| 91美女片黄在线观看| av电影在线观看完整版一区二区| 成人免费高清在线观看| 成人听书哪个软件好| 成人美女在线观看| 成人污污视频在线观看| caoporm超碰国产精品| 99国产欧美久久久精品| 91丨九色丨国产丨porny| 日本伦理一区二区| 在线免费不卡视频| 欧美酷刑日本凌虐凌虐| 91精品欧美一区二区三区综合在| 欧美精品久久99久久在免费线 | 奇米精品一区二区三区在线观看| 日日骚欧美日韩| 日韩一区二区在线看| 日韩欧美一区在线| 久久新电视剧免费观看| 日本一区二区三区在线观看| 亚洲欧洲国产日韩| 夜夜揉揉日日人人青青一国产精品 | 国产suv精品一区二区6| 99在线视频精品|