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

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

?? z85c30.c

?? RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* *  This file contains the console driver chip level routines for the *  Zilog z85c30 chip. * *  The Zilog Z8530 is also available as: * *    + Intel 82530 *    + AMD ??? * *  COPYRIGHT (c) 1998 by Radstone Technology * * * THIS FILE IS PROVIDED TO YOU, THE USER, "AS IS", WITHOUT WARRANTY OF ANY * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK * AS TO THE QUALITY AND PERFORMANCE OF ALL CODE IN THIS FILE IS WITH YOU. * * You are hereby granted permission to use, copy, modify, and distribute * this file, provided that this notice, plus the above copyright notice * and disclaimer, appears in all copies. Radstone Technology will provide * no support for this code. * *  COPYRIGHT (c) 1989-1997. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: z85c30.c,v 1.21.2.1 2003/09/04 18:46:04 joel Exp $ */#include <rtems.h>#include <rtems/libio.h>#include <stdlib.h>#include <libchip/serial.h>#include <libchip/sersupp.h>#include "z85c30_p.h"/* * Flow control is only supported when using interrupts */console_flow z85c30_flow_RTSCTS = {  z85c30_negate_RTS,    /* deviceStopRemoteTx */  z85c30_assert_RTS     /* deviceStartRemoteTx */};console_flow z85c30_flow_DTRCTS = {  z85c30_negate_DTR,    /* deviceStopRemoteTx */  z85c30_assert_DTR     /* deviceStartRemoteTx */};/* * Exported driver function table */console_fns z85c30_fns = {  libchip_serial_default_probe,  /* deviceProbe */  z85c30_open,                   /* deviceFirstOpen */  NULL,                          /* deviceLastClose */  NULL,                          /* deviceRead */  z85c30_write_support_int,      /* deviceWrite */  z85c30_initialize_interrupts,  /* deviceInitialize */  z85c30_write_polled,           /* deviceWritePolled */  NULL,                          /* deviceSetAttributes */  TRUE                           /* deviceOutputUsesInterrupts */};console_fns z85c30_fns_polled = {  libchip_serial_default_probe,      /* deviceProbe */  z85c30_open,                       /* deviceFirstOpen */  z85c30_close,                      /* deviceLastClose */  z85c30_inbyte_nonblocking_polled,  /* deviceRead */  z85c30_write_support_polled,       /* deviceWrite */  z85c30_init,                       /* deviceInitialize */  z85c30_write_polled,               /* deviceWritePolled */  NULL,                              /* deviceSetAttributes */  FALSE                              /* deviceOutputUsesInterrupts */};extern void set_vector( rtems_isr_entry, rtems_vector_number, int );/*  *  z85c30_initialize_port * *  initialize a z85c30 Port */Z85C30_STATIC void z85c30_initialize_port(  int minor){  unsigned32      ulCtrlPort;  unsigned32      ulBaudDivisor;  setRegister_f   setReg;  ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;  setReg   = Console_Port_Tbl[minor].setRegister;  /*   * Using register 4   * Set up the clock rate is 16 times the data   * rate, 8 bit sync char, 1 stop bit, no parity   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR4, SCC_WR4_1_STOP | SCC_WR4_16_CLOCK );  /*   * Set up for 8 bits/character on receive with   * receiver disable via register 3   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR3, SCC_WR3_RX_8_BITS );  /*   * Set up for 8 bits/character on transmit   * with transmitter disable via register 5   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR5, SCC_WR5_TX_8_BITS );  /*   * Clear misc control bits   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR10, 0x00 );  /*   * Setup the source of the receive and xmit   * clock as BRG output and the transmit clock   * as the output source for TRxC pin via register 11   */  (*setReg)(    ulCtrlPort,    SCC_WR0_SEL_WR11,    SCC_WR11_OUT_BR_GEN | SCC_WR11_TRXC_OI |       SCC_WR11_TX_BR_GEN | SCC_WR11_RX_BR_GEN  );  ulBaudDivisor = Z85C30_Baud(     (unsigned32) Console_Port_Tbl[minor].ulClock,    (unsigned32) Console_Port_Tbl[minor].pDeviceParams  );  /*   * Setup the lower 8 bits time constants=1E.   * If the time constans=1E, then the desire   * baud rate will be equilvalent to 9600, via register 12.   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR12, ulBaudDivisor & 0xff );  /*   * using register 13   * Setup the upper 8 bits time constant   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR13, (ulBaudDivisor>>8) & 0xff );             /*   * Enable the baud rate generator enable with clock from the   * SCC's PCLK input via register 14.   */  (*setReg)(    ulCtrlPort,    SCC_WR0_SEL_WR14,    SCC_WR14_BR_EN | SCC_WR14_BR_SRC | SCC_WR14_NULL  );  /*   * We are only interested in CTS state changes   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR15, SCC_WR15_CTS_IE );  /*   * Reset errors   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR0, SCC_WR0_RST_INT );  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR0, SCC_WR0_ERR_RST );  /*   * Enable the receiver via register 3   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR3, SCC_WR3_RX_8_BITS | SCC_WR3_RX_EN );  /*   * Enable the transmitter pins set via register 5.   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR5, SCC_WR5_TX_8_BITS | SCC_WR5_TX_EN );  /*   * Disable interrupts   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR1, 0 );  /*   * Reset TX CRC   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR0, SCC_WR0_RST_TX_CRC );  /*   * Reset interrupts   */  (*setReg)( ulCtrlPort, SCC_WR0_SEL_WR0, SCC_WR0_RST_INT );}/* *  z85c30_open */Z85C30_STATIC int z85c30_open(  int   major,  int   minor,  void *arg){  z85c30_initialize_port(minor);  /*   * Assert DTR   */  if (Console_Port_Tbl[minor].pDeviceFlow !=&z85c30_flow_DTRCTS) {    z85c30_assert_DTR(minor);  }  return(RTEMS_SUCCESSFUL);}/* *  z85c30_close */Z85C30_STATIC int z85c30_close(  int   major,  int   minor,  void *arg){  /*   * Negate DTR   */  if (Console_Port_Tbl[minor].pDeviceFlow !=&z85c30_flow_DTRCTS) {    z85c30_negate_DTR(minor);  }  return(RTEMS_SUCCESSFUL);}/* *  z85c30_init */Z85C30_STATIC void z85c30_init(int minor){  unsigned32       ulCtrlPort;  unsigned8        dummy;  z85c30_context  *pz85c30Context;  setRegister_f    setReg;  getRegister_f    getReg;  setReg = Console_Port_Tbl[minor].setRegister;  getReg   = Console_Port_Tbl[minor].getRegister;  pz85c30Context = (z85c30_context *)malloc(sizeof(z85c30_context));  Console_Port_Data[minor].pDeviceContext = (void *)pz85c30Context;  pz85c30Context->ucModemCtrl = SCC_WR5_TX_8_BITS | SCC_WR5_TX_EN;  ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;  if ( ulCtrlPort == Console_Port_Tbl[minor].ulCtrlPort2 ) {    /*     * This is channel A     */    /*     * Ensure port state machine is reset     */    dummy = (*getReg)(ulCtrlPort, SCC_WR0_SEL_RD0);    (*setReg)(ulCtrlPort, SCC_WR0_SEL_WR9, SCC_WR9_CH_A_RST);  } else {    /*     * This is channel B     */    /*     * Ensure port state machine is reset     */    dummy = (*getReg)(ulCtrlPort, SCC_WR0_SEL_RD0);    (*setReg)(ulCtrlPort, SCC_WR0_SEL_WR9, SCC_WR9_CH_B_RST);  }}/* * These routines provide control of the RTS and DTR lines *//* *  z85c30_assert_RTS */Z85C30_STATIC int z85c30_assert_RTS(int minor){  rtems_interrupt_level  Irql;  z85c30_context        *pz85c30Context;  setRegister_f          setReg;  setReg = Console_Port_Tbl[minor].setRegister;  pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;    /*   * Assert RTS   */  rtems_interrupt_disable(Irql);    pz85c30Context->ucModemCtrl|=SCC_WR5_RTS;    (*setReg)(      Console_Port_Tbl[minor].ulCtrlPort1,      SCC_WR0_SEL_WR5,      pz85c30Context->ucModemCtrl    );  rtems_interrupt_enable(Irql);  return 0;}/* *  z85c30_negate_RTS */Z85C30_STATIC int z85c30_negate_RTS(int minor){  rtems_interrupt_level  Irql;  z85c30_context        *pz85c30Context;  setRegister_f          setReg;  setReg = Console_Port_Tbl[minor].setRegister;  pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;    /*   * Negate RTS   */  rtems_interrupt_disable(Irql);    pz85c30Context->ucModemCtrl&=~SCC_WR5_RTS;    (*setReg)(      Console_Port_Tbl[minor].ulCtrlPort1,      SCC_WR0_SEL_WR5,      pz85c30Context->ucModemCtrl    );  rtems_interrupt_enable(Irql);  return 0;}/* * These flow control routines utilise a connection from the local DTR * line to the remote CTS line *//* *  z85c30_assert_DTR */Z85C30_STATIC int z85c30_assert_DTR(int minor){  rtems_interrupt_level  Irql;  z85c30_context        *pz85c30Context;  setRegister_f          setReg;  setReg = Console_Port_Tbl[minor].setRegister;  pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;    /*   * Assert DTR   */  rtems_interrupt_disable(Irql);    pz85c30Context->ucModemCtrl|=SCC_WR5_DTR;    (*setReg)(      Console_Port_Tbl[minor].ulCtrlPort1,      SCC_WR0_SEL_WR5,      pz85c30Context->ucModemCtrl  );  rtems_interrupt_enable(Irql);  return 0;}/* *  z85c30_negate_DTR */Z85C30_STATIC int z85c30_negate_DTR(int minor){  rtems_interrupt_level  Irql;  z85c30_context        *pz85c30Context;  setRegister_f          setReg;  setReg = Console_Port_Tbl[minor].setRegister;  pz85c30Context = (z85c30_context *) Console_Port_Data[minor].pDeviceContext;    /*   * Negate DTR   */  rtems_interrupt_disable(Irql);    pz85c30Context->ucModemCtrl&=~SCC_WR5_DTR;    (*setReg)(      Console_Port_Tbl[minor].ulCtrlPort1,      SCC_WR0_SEL_WR5,      pz85c30Context->ucModemCtrl  );  rtems_interrupt_enable(Irql);  return 0;}/* *  z85c30_set_attributes * *  This function sets the SCC channel to reflect the requested termios *  port settings. */Z85C30_STATIC int z85c30_set_attributes(  int                   minor,  const struct termios *t){  unsigned32             ulCtrlPort;  unsigned32             ulBaudDivisor;  unsigned32             wr3;  unsigned32             wr4;  unsigned32             wr5;  int                    baud_requested;  setRegister_f          setReg;  rtems_interrupt_level  Irql;  ulCtrlPort = Console_Port_Tbl[minor].ulCtrlPort1;  setReg     = Console_Port_Tbl[minor].setRegister;  /*

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情文学综合网| av午夜一区麻豆| 亚洲欧美在线视频| 欧美一区二区三区性视频| 成人av电影在线网| 免费亚洲电影在线| 亚洲成人动漫av| 国产精品剧情在线亚洲| 日韩精品一区在线| 精品视频色一区| 99精品久久免费看蜜臀剧情介绍 | 成人一二三区视频| 麻豆久久久久久| 午夜日韩在线电影| 一区二区三区国产豹纹内裤在线| 国产日韩欧美精品一区| 日韩免费在线观看| 欧美午夜宅男影院| 91免费精品国自产拍在线不卡| 国产一区二区不卡| 韩国精品免费视频| 美女视频黄a大片欧美| 亚洲风情在线资源站| 最好看的中文字幕久久| 国产精品热久久久久夜色精品三区| 日韩欧美视频一区| 91麻豆精品国产91久久久使用方法 | 亚洲自拍偷拍欧美| 亚洲婷婷综合色高清在线| 欧美国产日韩亚洲一区| 久久婷婷成人综合色| 欧美成人三级电影在线| 欧美一区二区黄| 欧美一级二级在线观看| 欧美一区二区观看视频| 欧美一区二区免费| 日韩精品专区在线| 亚洲精品在线观看网站| 精品国产免费久久| 久久久国产精品麻豆 | 亚洲www啪成人一区二区麻豆| 亚洲激情在线播放| 亚洲一区二区三区四区五区黄| 有坂深雪av一区二区精品| 亚洲综合免费观看高清完整版在线 | 粉嫩av一区二区三区在线播放| 国内成人自拍视频| 国产呦精品一区二区三区网站| 国产九色sp调教91| 国产91色综合久久免费分享| 国产a区久久久| av成人动漫在线观看| 91麻豆精东视频| 欧美精品在线视频| 日韩美一区二区三区| 精品国产亚洲在线| 中文字幕在线观看不卡视频| 亚洲人成伊人成综合网小说| 亚洲成av人片| 韩日av一区二区| 91亚洲精品乱码久久久久久蜜桃| 日本高清不卡在线观看| 欧美一区二区在线免费观看| 久久久激情视频| 亚洲激情五月婷婷| 日本午夜精品视频在线观看| 国产在线精品视频| 99r国产精品| 欧美精品国产精品| 欧美国产精品一区二区三区| 一区二区三区四区五区视频在线观看| 亚洲国产毛片aaaaa无费看| 奇米影视在线99精品| 国产1区2区3区精品美女| 色噜噜久久综合| 日韩欧美成人激情| 亚洲欧美色图小说| 蜜臂av日日欢夜夜爽一区| 成人免费精品视频| 91精品国产综合久久香蕉的特点 | 欧美一区二区免费观在线| 久久久精品蜜桃| 亚洲chinese男男1069| 国产一区二区三区蝌蚪| 欧美性猛交xxxx乱大交退制版| 91精品国产aⅴ一区二区| 亚洲国产精品ⅴa在线观看| 午夜欧美大尺度福利影院在线看| 国产乱理伦片在线观看夜一区| 色婷婷av久久久久久久| 精品久久久久久最新网址| 亚洲三级视频在线观看| 精品一区二区三区在线观看 | 日韩影院免费视频| jlzzjlzz欧美大全| 日韩欧美国产综合一区| 亚洲午夜在线电影| 成人免费高清在线观看| 日韩西西人体444www| 亚洲三级电影网站| 国产一区二区免费看| 欧美美女一区二区| 亚洲免费观看高清完整版在线观看熊 | 欧美午夜片在线观看| 国产亚洲欧美激情| 奇米色一区二区| 欧美在线色视频| 最近日韩中文字幕| 亚洲资源在线观看| aaa亚洲精品一二三区| 久久日韩粉嫩一区二区三区| 午夜日韩在线观看| 在线观看日韩电影| 综合激情网...| 岛国精品一区二区| 国产视频视频一区| 麻豆国产精品官网| 337p亚洲精品色噜噜狠狠| 一区二区三区四区五区视频在线观看| 国产成人aaaa| 国产亚洲一区字幕| 国内精品写真在线观看| 日韩你懂的在线播放| 美女被吸乳得到大胸91| 4438成人网| 人禽交欧美网站| 欧美一级片在线看| 日韩精品成人一区二区在线| 欧美日韩综合色| 亚洲福利一二三区| 欧美日韩aaa| 视频一区在线播放| 在线播放欧美女士性生活| 同产精品九九九| 欧美一卡二卡在线| 免费观看一级欧美片| 日韩美一区二区三区| 激情五月播播久久久精品| www亚洲一区| 国产精品一品二品| 国产精品视频免费| caoporen国产精品视频| 中文字幕日韩一区| 色婷婷综合五月| 亚洲成人先锋电影| 欧美绝品在线观看成人午夜影视| 亚洲高清免费一级二级三级| 91精品综合久久久久久| 久久99精品久久久久婷婷| 久久亚洲捆绑美女| 不卡高清视频专区| 一区二区三区在线看| 欧美日韩一级二级三级| 麻豆国产精品一区二区三区| 国产午夜亚洲精品理论片色戒| 成人综合婷婷国产精品久久| 亚洲欧美日韩国产手机在线| 欧美日韩一区不卡| 久久精品二区亚洲w码| 国产欧美视频一区二区三区| 色欧美片视频在线观看在线视频| 亚洲午夜精品久久久久久久久| 91精品国产综合久久婷婷香蕉| 国内欧美视频一区二区| **欧美大码日韩| 欧美精品 国产精品| 国产又粗又猛又爽又黄91精品| 中文字幕在线视频一区| 制服丝袜国产精品| 成人黄色网址在线观看| 亚洲国产一区二区a毛片| 久久伊99综合婷婷久久伊| 91丨porny丨国产| 蜜臀av一区二区在线观看| 中文字幕在线观看一区二区| 8x8x8国产精品| 99国产精品一区| 免费在线欧美视频| 1000精品久久久久久久久| 日韩女同互慰一区二区| 91在线国产福利| 精品系列免费在线观看| 亚洲自拍欧美精品| 国产亚洲制服色| 欧美一区二区啪啪| 色婷婷一区二区三区四区| 久久99精品视频| 亚洲成人1区2区| 国产精品久久福利| 欧美xxxxx裸体时装秀| 一本到不卡精品视频在线观看| 蜜桃视频一区二区三区| 亚洲精品国产一区二区精华液 | 精品少妇一区二区| 色妞www精品视频| 国产成人精品综合在线观看 | 91黄色在线观看| 国产成人免费在线观看不卡| 日本亚洲天堂网| 亚洲一区在线播放|