⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ixuart.h

📁 u-boot-1.1.6 源码包
💻 H
字号:
/**  * @file IxUART.h * * @date 12-OCT-01 * * @brief Public header for the Intel IXP400 internal UART, generic driver. *  * Design Notes: * This driver allows you to perform the following functions:  *	Device Initialization, *	send/receive characters. * * Perform Uart IOCTL for the following: *	Set/Get the current baud rate, *	set parity, *	set the number of Stop bits, *	set the character Length (5,6,7,8), *	enable/disable Hardware flow control. * * Only Polled mode is supported for now. *     *  * @par * IXP400 SW Release version 2.0 *  * -- Copyright Notice -- *  * @par * Copyright 2001-2005, Intel Corporation. * All rights reserved. *  * @par * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the Intel Corporation nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. *  * @par * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *  * @par * -- End of Copyright Notice --*//** * @defgroup IxUARTAccAPI IXP400 UART Access (IxUARTAcc) API * * @brief IXP400 UARTAcc Driver Public API *  * @{ *//* Defaults *//** * @defgroup DefaultDefines Defines for Default Values * * @brief Default values which can be used for UART configuration * * @sa ixUARTDev *//** * @def IX_UART_DEF_OPTS * * @brief The default hardware options to set the UART to - * no flow control, 8 bit word, 1 stop bit, no parity  * * @ingroup DefaultDefines */#define IX_UART_DEF_OPTS (CLOCAL | CS8)/** * @def IX_UART_DEF_XMIT * * @brief The default UART FIFO size - must be no bigger than 64 * * @ingroup DefaultDefines */#define IX_UART_DEF_XMIT 64/** * @def IX_UART_DEF_BAUD * * @brief The default UART baud rate - 9600 * * @ingroup DefaultDefines */#define IX_UART_DEF_BAUD 9600/** * @def IX_UART_MIN_BAUD * * @brief The minimum UART baud rate - 9600 * * @ingroup DefaultDefines */#define IX_UART_MIN_BAUD 9600/** * @def IX_UART_MAX_BAUD * * @brief The maximum UART baud rate - 926100 * * @ingroup DefaultDefines */#define IX_UART_MAX_BAUD 926100/** * @def IX_UART_XTAL * * @brief The UART clock speed * * @ingroup DefaultDefines */#define IX_UART_XTAL 14745600/* IOCTL commands (Request codes) *//** * @defgroup IoctlCommandDefines Defines for IOCTL Commands * * @brief IOCTL Commands (Request codes) which can be used *        with @ref ixUARTIoctl *//** * @ingroup IoctlCommandDefines * * @def IX_BAUD_SET * * @brief Set the baud rate */#define IX_BAUD_SET	0/** * @ingroup IoctlCommandDefines * * @def IX_BAUD_GET * * @brief Get the baud rate */#define IX_BAUD_GET	1/** * @ingroup IoctlCommandDefines * @def IX_MODE_SET * @brief Set the UART mode of operation */#define IX_MODE_SET	2/** * @ingroup IoctlCommandDefines * * @def IX_MODE_GET * * @brief Get the current UART mode of operation */#define IX_MODE_GET	3/** * @ingroup IoctlCommandDefines * * @def IX_OPTS_SET * * @brief Set the UART device options */#define IX_OPTS_SET	4/** * @ingroup IoctlCommandDefines * * @def IX_OPTS_GET * * @brief Get the UART device options */#define IX_OPTS_GET	5/** * @ingroup IoctlCommandDefines * * @def IX_STATS_GET * * @brief Get the UART statistics */#define IX_STATS_GET	6/* POSIX style ioctl arguments *//** * @defgroup IoctlArgDefines Defines for IOCTL Arguments * * @brief POSIX style IOCTL arguments which can be used *        with @ref ixUARTIoctl * * @sa ixUARTMode *//** * @ingroup IoctlArgDefines * * @def CLOCAL * * @brief Software flow control */#ifdef CLOCAL#undef CLOCAL#endif#define CLOCAL		0x1/** * @ingroup IoctlArgDefines * * @def CREAD * * @brief Enable interrupt receiver */#ifdef CREAD#undef CREAD#endif#define CREAD		0x2/** * @ingroup IoctlArgDefines * * @def CSIZE * * @brief Characters size */#ifdef CSIZE#undef CSIZE#endif#define CSIZE		0xc/** * @ingroup IoctlArgDefines * * @def CS5 * * @brief 5 bits */#ifdef CS5#undef CS5#endif#define CS5		0x0/** * @ingroup IoctlArgDefines * * @def CS6 * * @brief 6 bits */#ifdef CS6#undef CS6#endif#define CS6		0x4/** * @ingroup IoctlArgDefines * * @def CS7 * * @brief 7 bits */#ifdef CS7#undef CS7#endif#define CS7		0x8/** * @ingroup IoctlArgDefines * * @def CS8 * * @brief 8 bits */#ifdef CS8#undef CS8#endif#define CS8		0xc/** * @ingroup IoctlArgDefines * * @def STOPB * * @brief Send two stop bits (else one) */#define STOPB		0x20/** * @ingroup IoctlArgDefines * * @def PARENB * * @brief Parity detection enabled (else disabled) */#ifdef PARENB#undef PARENB#endif#define PARENB		0x40/** * @ingroup IoctlArgDefines * * @def PARODD * * @brief Odd parity  (else even) */#ifdef PARODD#undef PARODD#endif#define PARODD		0x80/** * @enum ixUARTMode * @brief The mode to set to UART to. */typedef enum{    INTERRUPT=0,	/**< Interrupt mode */    POLLED,		/**< Polled mode */    LOOPBACK		/**< Loopback mode */} ixUARTMode;/** * @struct ixUARTStats * @brief Statistics for the UART. */typedef struct{    UINT32  rxCount;    UINT32  txCount;	    UINT32  overrunErr;    UINT32  parityErr;    UINT32  framingErr;    UINT32  breakErr;} ixUARTStats;/** * @struct ixUARTDev * @brief Device descriptor for the UART. */typedef struct{    UINT8 *addr;	/**< device base address */    ixUARTMode mode;	/**< interrupt, polled or loopback */    int baudRate;	/**< baud rate */    int freq;		/**< UART clock frequency */         int options;	/**< hardware options */    int fifoSize;	/**< FIFO xmit size */    ixUARTStats   stats;	/**< device statistics */} ixUARTDev;/** * @ingroup IxUARTAccAPI * * @fn IX_STATUS ixUARTInit(ixUARTDev* pUART) *  * @param pUART	@ref ixUARTDev [in] - pointer to UART structure describing our device. *  * @brief Initialise the UART. This puts the chip in a quiescent state. *  * @pre The base address for the UART must contain a valid value. *      Also the baud rate and hardware options must contain sensible values *      otherwise the defaults will be used as defined in ixUART.h * * @post UART is initialized and ready to send and receive data. * * @note This function should only be called once per device. * * @retval IX_SUCCESS - UART device successfully initialised. * @retval IX_FAIL - Critical error, device not initialised. ***************************************************************************/PUBLIC IX_STATUS ixUARTInit(ixUARTDev* pUART);/** * @ingroup IxUARTAccAPI * * @fn IX_STATUS ixUARTPollOutput(ixUARTDev* pUART, int outChar) * * @param pUART @ref ixUARTDev [out] - pointer to UART structure describing our device. * @param outChar int [out] - character to transmit. * * @brief Transmit a character in polled mode. * * @pre UART device must be initialised. * * @retval IX_SUCCESS - character was successfully transmitted. * @retval IX_FAIL - output buffer is full (try again). ***************************************************************************/PUBLIC IX_STATUS ixUARTPollOutput(ixUARTDev* pUART, int outChar);/** * @ingroup IxUARTAccAPI * * @fn IX_STATUS ixUARTPollInput(ixUARTDev* pUART, char *inChar) * * @param pUART	@ref ixUARTDev [in] - pointer to UART structure describing our device. * @param *inChar char [in] - character read from the device. * * @brief Receive a character in polled mode. * * @pre UART device must be initialised. * * @retval IX_SUCCESS - character was successfully read. * @retval IX_FAIL - input buffer empty (try again). ***************************************************************************/PUBLIC IX_STATUS ixUARTPollInput(ixUARTDev* pUART, char *inChar);/** * @ingroup IxUARTAccAPI * * @fn IX_STATUS ixUARTIoctl(ixUARTDev* pUART, int cmd, void* arg) * * @param pUART	@ref ixUARTDev [in] - pointer to UART structure describing our device. * @param cmd int [in] - an ioctl request code. * @param arg void* [in] - optional argument used to set the device mode, *	 baud rate, and hardware options. * * @brief Perform I/O control routines on the device. * * @retval IX_SUCCESS - requested feature was set/read successfully. * @retval IX_FAIL - error setting/reading the requested feature. * * @sa IoctlCommandDefines * @sa IoctlArgDefines ***************************************************************************/    PUBLIC IX_STATUS ixUARTIoctl(ixUARTDev* pUART, int cmd, void* arg);/** * @} defgroup IxUARTAcc */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -