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

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

?? edb7xxx_serial.c

?? Intel XScale PXA255 引導Linux的Redboot 版bootloader源代碼!
?? C
?? 第 1 頁 / 共 2 頁
字號:
        select_stop_bits[new_config->stop] |        select_parity[new_config->parity] |        UBLCR_FIFOEN | UART_BITRATE(baud_divisor);#ifdef CYGDBG_IO_INIT    diag_printf("Set CTL: %x = %x\n", blcfg, _lcr);#endif    *blcfg = _lcr;    *syscon |= SYSCON1_UART1EN;    if (new_config != &chan->config) {        chan->config = *new_config;    }    return true;}// Function to initialize the device.  Called at bootstrap time.static bool edb7xxx_serial_init(struct cyg_devtab_entry *tab){    serial_channel *chan = (serial_channel *)tab->priv;    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;#ifdef CYGDBG_IO_INIT    diag_printf("EDB7XXX SERIAL init - dev: %x.%d\n", edb7xxx_chan->control, edb7xxx_chan->tx_int_num);#endif    (chan->callbacks->serial_init)(chan);  // Really only required for interrupt driven devices    if (chan->out_cbuf.len != 0) {        cyg_drv_interrupt_create(edb7xxx_chan->tx_int_num,                                 99,                     // Priority - unused                                 (cyg_addrword_t)chan,   //  Data item passed to interrupt handler                                 edb7xxx_serial_tx_ISR,                                 edb7xxx_serial_tx_DSR,                                 &edb7xxx_chan->serial_tx_interrupt_handle,                                 &edb7xxx_chan->serial_tx_interrupt);        cyg_drv_interrupt_attach(edb7xxx_chan->serial_tx_interrupt_handle);        cyg_drv_interrupt_mask(edb7xxx_chan->tx_int_num);        edb7xxx_chan->tx_enabled = false;    }    if (chan->in_cbuf.len != 0) {        cyg_drv_interrupt_create(edb7xxx_chan->rx_int_num,                                 99,                     // Priority - unused                                 (cyg_addrword_t)chan,   //  Data item passed to interrupt handler                                 edb7xxx_serial_rx_ISR,                                 edb7xxx_serial_rx_DSR,                                 &edb7xxx_chan->serial_rx_interrupt_handle,                                 &edb7xxx_chan->serial_rx_interrupt);        cyg_drv_interrupt_attach(edb7xxx_chan->serial_rx_interrupt_handle);        cyg_drv_interrupt_unmask(edb7xxx_chan->rx_int_num);    }    edb7xxx_serial_config_port(chan, &chan->config, true);    return true;}// This routine is called when the device is "looked" up (i.e. attached)static Cyg_ErrNo edb7xxx_serial_lookup(struct cyg_devtab_entry **tab,                   struct cyg_devtab_entry *sub_tab,                  const char *name){    serial_channel *chan = (serial_channel *)(*tab)->priv;    (chan->callbacks->serial_init)(chan);  // Really only required for interrupt driven devices    return ENOERR;}// Send a character to the device output buffer.// Return 'true' if character is sent to devicestatic booledb7xxx_serial_putc(serial_channel *chan, unsigned char c){    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    volatile cyg_uint8  *data = (volatile cyg_uint8  *)edb7xxx_chan->data;    volatile cyg_uint32 *stat = (volatile cyg_uint32 *)edb7xxx_chan->stat;    if ((*stat & SYSFLG1_UTXFF1) == 0) {// Transmit buffer/FIFO is not full        *data = c;        return true;    } else {// No space        return false;    }}// Fetch a character from the device input buffer, waiting if necessarystatic unsigned char edb7xxx_serial_getc(serial_channel *chan){    unsigned char c;    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    volatile cyg_uint32 *data = (volatile cyg_uint32 *)edb7xxx_chan->data;    volatile cyg_uint32 *stat = (volatile cyg_uint32 *)edb7xxx_chan->stat;    while (*stat & SYSFLG1_URXFE1) ; // Wait for char    c = *data;    return c;}// Set up the device characteristics; baud rate, etc.static Cyg_ErrNoedb7xxx_serial_set_config(serial_channel *chan, cyg_uint32 key,                          const void *xbuf, cyg_uint32 *len){    switch (key) {    case CYG_IO_SET_CONFIG_SERIAL_INFO:      {        cyg_serial_info_t *config = (cyg_serial_info_t *)xbuf;        if ( *len < sizeof(cyg_serial_info_t) ) {            return -EINVAL;        }        *len = sizeof(cyg_serial_info_t);        if ( true != edb7xxx_serial_config_port(chan, config, false) )            return -EINVAL;      }      break;    default:        return -EINVAL;    }    return ENOERR;}// Enable the transmitter (interrupt) on the devicestatic voidedb7xxx_serial_start_xmit(serial_channel *chan){    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    edb7xxx_chan->tx_enabled = true;    cyg_drv_interrupt_unmask(edb7xxx_chan->tx_int_num);}// Disable the transmitter on the devicestatic void edb7xxx_serial_stop_xmit(serial_channel *chan){    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    cyg_drv_interrupt_mask(edb7xxx_chan->tx_int_num);    edb7xxx_chan->tx_enabled = false;}// Serial I/O - low level Tx interrupt handler (ISR)static cyg_uint32 edb7xxx_serial_tx_ISR(cyg_vector_t vector, cyg_addrword_t data){    serial_channel *chan = (serial_channel *)data;    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    cyg_drv_interrupt_mask(edb7xxx_chan->tx_int_num);    cyg_drv_interrupt_acknowledge(edb7xxx_chan->tx_int_num);    return CYG_ISR_CALL_DSR;  // Cause DSR to be run}// Serial I/O - high level Tx interrupt handler (DSR)static void       edb7xxx_serial_tx_DSR(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data){    serial_channel *chan = (serial_channel *)data;    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    (chan->callbacks->xmt_char)(chan);    if (edb7xxx_chan->tx_enabled) {        cyg_drv_interrupt_unmask(edb7xxx_chan->tx_int_num);    }}// Serial I/O - low level Rx interrupt handler (ISR)static cyg_uint32 edb7xxx_serial_rx_ISR(cyg_vector_t vector, cyg_addrword_t data){    serial_channel *chan = (serial_channel *)data;    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    cyg_drv_interrupt_mask(edb7xxx_chan->rx_int_num);    cyg_drv_interrupt_acknowledge(edb7xxx_chan->rx_int_num);    return CYG_ISR_CALL_DSR;  // Cause DSR to be run}// Serial I/O - high level Rx interrupt handler (DSR)static void       edb7xxx_serial_rx_DSR(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data){    serial_channel *chan = (serial_channel *)data;    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    volatile cyg_uint32 *datreg = (volatile cyg_uint32 *)edb7xxx_chan->data;    volatile cyg_uint32 *stat = (volatile cyg_uint32 *)edb7xxx_chan->stat;    while (!(*stat & SYSFLG1_URXFE1))        (chan->callbacks->rcv_char)(chan, *datreg);    cyg_drv_interrupt_unmask(edb7xxx_chan->rx_int_num);}// Serial I/O - low level Ms interrupt handler (ISR)static cyg_uint32 edb7xxx_serial_ms_ISR(cyg_vector_t vector, cyg_addrword_t data){    serial_channel *chan = (serial_channel *)data;    edb7xxx_serial_info *edb7xxx_chan = (edb7xxx_serial_info *)chan->dev_priv;    cyg_drv_interrupt_mask(edb7xxx_chan->ms_int_num);    cyg_drv_interrupt_acknowledge(edb7xxx_chan->ms_int_num);    return CYG_ISR_CALL_DSR;  // Cause DSR to be run}// Serial I/O - high level Ms interrupt handler (DSR)static void       edb7xxx_serial_ms_DSR(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data){}#endif // CYGPKG_IO_SERIAL_ARM_EDB7XXX

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产原创一区二区三区| 欧美国产1区2区| 欧美aaaaaa午夜精品| 欧美xxx久久| 国产精品99久久久| 中文字幕一区二区视频| 91蝌蚪porny九色| 日韩在线播放一区二区| 日韩欧美国产三级| 成人午夜视频在线| 亚洲一区在线视频| 精品欧美黑人一区二区三区| 成人性视频网站| 亚洲愉拍自拍另类高清精品| 日韩你懂的电影在线观看| 成人黄色在线视频| 亚洲成a人片在线观看中文| 日韩欧美一卡二卡| 99re热这里只有精品视频| 无码av免费一区二区三区试看| 欧美xxxxx裸体时装秀| 99re8在线精品视频免费播放| 亚洲国产一区二区a毛片| 精品国产精品一区二区夜夜嗨 | 日韩国产欧美在线播放| 2020日本不卡一区二区视频| 色美美综合视频| 国产在线一区二区综合免费视频| 中文字幕永久在线不卡| 日韩欧美国产综合一区| a在线播放不卡| 久久电影国产免费久久电影| 欧美国产精品劲爆| 欧美一卡二卡在线| 在线观看免费一区| 国产1区2区3区精品美女| 午夜精品久久久久久久久久久| 国产亚洲一区二区在线观看| 69成人精品免费视频| 91麻豆国产自产在线观看| 韩国av一区二区| 日韩精品亚洲专区| 亚洲美女视频一区| 中文字幕电影一区| 久久久久久夜精品精品免费| 欧美另类久久久品| 色婷婷综合久久久| 成人三级伦理片| 狠狠网亚洲精品| 日日夜夜免费精品视频| 亚洲午夜在线视频| 亚洲日本va午夜在线影院| 国产日韩综合av| 2020国产精品久久精品美国| 91精品久久久久久久99蜜桃| 欧美系列日韩一区| 99久久精品国产精品久久| 高清日韩电视剧大全免费| 激情久久五月天| 伦理电影国产精品| 毛片av一区二区| 美女一区二区视频| 免费看欧美美女黄的网站| 亚洲777理论| 亚洲6080在线| 日韩在线观看一区二区| 午夜欧美视频在线观看| 亚洲电影一级片| 国产精品视频观看| 自拍偷拍欧美精品| 国产网红主播福利一区二区| 日韩你懂的在线观看| 欧美一区二区三区日韩| 欧美二区乱c少妇| 日韩一区二区免费在线电影| 69久久99精品久久久久婷婷| 欧美日韩www| 欧美一级理论性理论a| 日韩一卡二卡三卡四卡| 欧美一区二区视频在线观看2022 | 国产资源精品在线观看| 久久精品国产99国产| 寂寞少妇一区二区三区| 国产精品亚洲一区二区三区妖精 | 欧美日韩一本到| 欧美精品自拍偷拍动漫精品| 国产精品123区| 国产老妇另类xxxxx| 蜜桃视频一区二区三区| 久久疯狂做爰流白浆xx| 国模套图日韩精品一区二区| 精品无码三级在线观看视频 | 老鸭窝一区二区久久精品| 美国十次了思思久久精品导航| 精品一区二区在线视频| 成人性视频网站| 色噜噜狠狠色综合欧洲selulu| 欧美色欧美亚洲另类二区| 337p亚洲精品色噜噜噜| 国产无人区一区二区三区| 日韩一区日韩二区| 午夜av电影一区| 国产精品一区2区| 91丝袜高跟美女视频| 欧美日韩国产一二三| 久久亚洲精品小早川怜子| 亚洲婷婷综合色高清在线| 肉肉av福利一精品导航| 国产成人精品亚洲日本在线桃色 | 蜜桃视频在线一区| 久久97超碰国产精品超碰| 久久国产福利国产秒拍| 99re亚洲国产精品| 欧美高清一级片在线| 国产日韩三级在线| 亚洲成av人片在线| 国产精品亚洲人在线观看| 日本丶国产丶欧美色综合| 精品免费日韩av| 国产精品福利电影一区二区三区四区| 亚洲午夜影视影院在线观看| 国产乱码字幕精品高清av | 91黄色激情网站| 亚洲精品一区二区三区影院| 一区二区三区精密机械公司| 韩国午夜理伦三级不卡影院| 欧美伊人精品成人久久综合97| 国产亚洲欧美在线| 日韩不卡一区二区三区 | 日本少妇一区二区| 九九国产精品视频| 欧美性色欧美a在线播放| 久久久国产精华| 日韩成人一级大片| 91成人网在线| 国产精品免费视频一区| 极品少妇xxxx精品少妇偷拍| 欧美丝袜自拍制服另类| 国产精品久久久久久久久动漫| 日韩国产在线观看| 欧美日韩激情一区二区| 亚洲少妇屁股交4| 极品少妇一区二区三区精品视频| 欧美日韩一本到| 一区二区三区中文字幕电影 | 精品1区2区在线观看| 偷拍日韩校园综合在线| 欧美午夜精品久久久久久孕妇| 亚洲天堂av一区| 99久久精品久久久久久清纯| 国产嫩草影院久久久久| 国产精品一品二品| 久久综合国产精品| 国内一区二区视频| 欧美喷水一区二区| 午夜精品久久久久久久久久 | 欧美日韩视频专区在线播放| 亚洲欧美日韩国产综合| av网站一区二区三区| 国产精品无遮挡| 成人一区二区三区| 欧美激情综合网| 顶级嫩模精品视频在线看| 国产午夜精品一区二区| 国产成人鲁色资源国产91色综 | 538prom精品视频线放| 亚洲va天堂va国产va久| 欧美日韩色综合| 视频在线观看91| 日韩欧美激情一区| 激情都市一区二区| 久久久久综合网| 国产91富婆露脸刺激对白| 国产精品麻豆视频| 色综合色狠狠天天综合色| 亚洲女人小视频在线观看| 色999日韩国产欧美一区二区| 一区二区三区中文字幕| 欧美性猛交xxxx乱大交退制版| 亚洲大尺度视频在线观看| 欧美顶级少妇做爰| 国内精品自线一区二区三区视频| 国产性色一区二区| av一本久道久久综合久久鬼色| 亚洲日韩欧美一区二区在线| 欧美午夜电影一区| 精品夜夜嗨av一区二区三区| 国产亚洲欧美一区在线观看| 色综合久久中文字幕| 亚洲成在线观看| 久久品道一品道久久精品| 91色porny蝌蚪| 日韩精彩视频在线观看| 欧美videofree性高清杂交| 成人免费毛片片v| 亚洲成av人片一区二区| 久久久精品2019中文字幕之3| 99国产精品久久| 免费人成在线不卡| 中文字幕字幕中文在线中不卡视频|