MTK 串口驱动 PART-2

/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*******************************************************************************
 * Filename:
 * ---------
 *   bl_uart_hw.h
 *
 * Project:
 * --------
 *   NFB - Bootloader
 *
 * Description:
 * ------------
 *   This file is intends for UART driver.
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
 
#ifndef _BOOTLOADER_UART_HW_H
#define _BOOTLOADER_UART_HW_H

#if defined(__APPLICATION_PROCESSOR__)

#if defined(MT6516)
#define UART1_base   0x80023000
#define UART2_base   0x80024000
#endif /* MT6516 */

#else /* __APPLICATION_PROCESSOR__ */

#if defined(MT6238) || defined(MT6235)  || defined(MT6239) || defined(MT6235B) || defined(MT6516) || defined(MT6253)
#define UART1_base   0x81030000
#define UART2_base   0x81040000
#elif defined(MT6268A) || defined(MT6268)
#define UART1_base   0x85030000
#define UART2_base   0x85040000
#else /* MT6228 || MT6229 || MT6230 || MT6225 */
#define UART1_base   0x80130000
#define UART2_base   0x80180000
#endif

#endif /* __APPLICATION_PROCESSOR__ */


//UART1 MMP address
#define   UART1_RBR     (UART1_base+0x0)    /* Read only */
#define   UART1_THR     (UART1_base+0x0)    /* Write only */
#define   UART1_IER     (UART1_base+0x4)
#define   UART1_IIR     (UART1_base+0x8)    /* Read only */
#define   UART1_FCR     (UART1_base+0x8)    /* Write only */
#define   UART1_LCR     (UART1_base+0xc)
#define   UART1_MCR     (UART1_base+0x10)
#define   UART1_LSR     (UART1_base+0x14)
#define   UART1_MSR     (UART1_base+0x18)
#define   UART1_SCR     (UART1_base+0x1c)
#define   UART1_DLL     (UART1_base+0x0)
#define   UART1_DLH     (UART1_base+0x4)
#define   UART1_EFR     (UART1_base+0x8)    /* Only when LCR = 0xbf */
#define   UART1_XON1    (UART1_base+0x10)   /* Only when LCR = 0xbf */
#define   UART1_XON2    (UART1_base+0x14)   /* Only when LCR = 0xbf */
#define   UART1_XOFF1   (UART1_base+0x18)   /* Only when LCR = 0xbf */
#define   UART1_XOFF2   (UART1_base+0x1c)   /* Only when LCR = 0xbf */
#define   UART1_SPEED   (UART1_base+0x24)


//UART2 MMP address
#define   UART2_RBR     (UART2_base+0x0)    /* Read only */
#define   UART2_THR     (UART2_base+0x0)    /* Write only */
#define   UART2_IER     (UART2_base+0x4)
#define   UART2_IIR     (UART2_base+0x8)    /* Read only */
#define   UART2_FCR     (UART2_base+0x8)    /* Write only */
#define   UART2_LCR     (UART2_base+0xc)
#define   UART2_MCR     (UART2_base+0x10)
#define   UART2_LSR     (UART2_base+0x14)
#define   UART2_MSR     (UART2_base+0x18)
#define   UART2_SCR     (UART2_base+0x1c)
#define   UART2_DLL     (UART2_base+0x0)
#define   UART2_DLH     (UART2_base+0x4)
#define   UART2_EFR     (UART2_base+0x8)    /* Only when LCR = 0xbf */
#define   UART2_XON1    (UART2_base+0x10)   /* Only when LCR = 0xbf */
#define   UART2_XON2    (UART2_base+0x14)   /* Only when LCR = 0xbf */
#define   UART2_XOFF1   (UART2_base+0x18)   /* Only when LCR = 0xbf */
#define   UART2_XOFF2   (UART2_base+0x1c)   /* Only when LCR = 0xbf */
#define   UART2_SPEED   (UART2_base+0x24)


//UART3 MMP address
#define   UART3_RBR     (UART3_base+0x0)    /* Read only */
#define   UART3_THR     (UART3_base+0x0)    /* Write only */
#define   UART3_IER     (UART3_base+0x4)
#define   UART3_IIR     (UART3_base+0x8)    /* Read only */
#define   UART3_FCR     (UART3_base+0x8)    /* Write only */
#define   UART3_LCR     (UART3_base+0xc)
#define   UART3_MCR     (UART3_base+0x10)
#define   UART3_LSR     (UART3_base+0x14)
#define   UART3_MSR     (UART3_base+0x18)
#define   UART3_SCR     (UART3_base+0x1c)
#define   UART3_DLL     (UART3_base+0x0)
#define   UART3_DLH     (UART3_base+0x4)
#define   UART3_EFR     (UART3_base+0x8)    /* Only when LCR = 0xbf */
#define   UART3_XON1    (UART3_base+0x10)   /* Only when LCR = 0xbf */
#define   UART3_XON2    (UART3_base+0x14)   /* Only when LCR = 0xbf */
#define   UART3_XOFF1   (UART3_base+0x18)   /* Only when LCR = 0xbf */
#define   UART3_XOFF2   (UART3_base+0x1c)   /* Only when LCR = 0xbf */


//IER
#define   UART_IER_ERBFI            0x0001
#define   UART_IER_ETBEI            0x0002
#define   UART_IER_ELSI             0x0004
#define   UART_IER_EDSSI            0x0008
#define   UART_IER_XOFFI            0x0020
#define   UART_IER_RTSI             0x0040
#define   UART_IER_CTSI             0x0080
#define   IER_HW_NORMALINTS         0x000d
#define   IER_HW_ALLINTS            0x000f
#define   IER_SW_NORMALINTS         0x002d
#define   IER_SW_ALLINTS            0x002f
#define   UART_IER_ALLOFF           0x0000


//FCR
#define   UART_FCR_FIFOEN           0x0001
#define   UART_FCR_CLRR             0x0002
#define   UART_FCR_CLRT             0x0004
#define   UART_FCR_FIFOINI          0x0007
#define   UART_FCR_RX1Byte_Level    0x0000
#define   UART_FCR_RX16Byte_Level   0x0040
#define   UART_FCR_RX32Byte_Level   0x0080
#define   UART_FCR_RX62Byte_Level   0x00c0

#define   UART_FCR_TX1Byte_Level    0x0000
#define   UART_FCR_TX16Byte_Level   0x0010
#define   UART_FCR_TX32Byte_Level   0x0020
#define   UART_FCR_TX62Byte_Level   0x0030

#define   UART_FCR_Normal           (UART_FCR_TX16Byte_Level | UART_FCR_RX32Byte_Level | UART_FCR_FIFOINI)


//IIR,RO
#define   UART_IIR_INT_INVALID      0x0001
#define   UART_IIR_RLS              0x0006  // Receiver Line Status
#define   UART_IIR_RDA              0x0004  // Receive Data Available
#define   UART_IIR_CTI              0x000C  // Character Timeout Indicator
#define   UART_IIR_THRE             0x0002  // Transmit Holding Register Empty
#define   UART_IIR_MS               0x0000  // Check Modem Status Register
#define   UART_IIR_SWFlowCtrl       0x0010  // Receive XOFF characters
#define   UART_IIR_HWFlowCtrl       0x0020  // CTS or RTS Rising Edge
#define   UART_IIR_FIFOS_ENABLED    0x00c0
#define   UART_IIR_NO_INTERRUPT_PENDING   0x0001
#define   UART_IIR_INT_MASK         0x001f

//===============================LCR================================
//WLS
#define   UART_WLS_8                0x0003
#define   UART_WLS_7                0x0002
#define   UART_WLS_6                0x0001
#define   UART_WLS_5                0x0000
#define   UART_DATA_MASK            0x0003

//Parity
#define   UART_NONE_PARITY          0x0000
#define   UART_ODD_PARITY           0x0008
#define   UART_EVEN_PARITY          0x0018
#define   UART_MARK_PARITY          0x0028
#define   UART_SPACE_PARITY         0x0038
#define   UART_PARITY_MASK          0x0038

//Stop bits
#define   UART_1_STOP               0x0000
#define   UART_1_5_STOP             0x0004  // Only valid for 5 data bits
#define   UART_2_STOP               0x0004
#define   UART_STOP_MASK            0x0004

#define   UART_LCR_DLAB             0x0080

//===============================LCR================================

//MCR
#define   UART_MCR_DTR              0x0001
#define   UART_MCR_RTS              0x0002
#define   UART_MCR_LOOPB            0x0010
#define   UART_MCR_IRE              0x0040  //Enable IrDA modulation/demodulation
#define   UART_MCR_XOFF             0x0080
#define   UART_MCR_Normal           (UART_MCR_DTR | UART_MCR_RTS)

//LSR
#define   UART_LSR_DR               0x0001
#define   UART_LSR_OE               0x0002
#define   UART_LSR_PE               0x0004
#define   UART_LSR_FE               0x0008
#define   UART_LSR_BI               0x0010
#define   UART_LSR_THRE             0x0020
#define   UART_LSR_TEMT             0x0040
#define   UART_LSR_FIFOERR          0x0080

//MSR
#define   UART_MSR_DCTS             0x0001
#define   UART_MSR_DDSR             0x0002
#define   UART_MSR_TERI             0x0004
#define   UART_MSR_DDCD             0x0008
#define   UART_MSR_CTS              0x0010
#define   UART_MSR_DSR              0x0020
#define   UART_MSR_RI               0x0040
#define   UART_MSR_DCD              0x0080

//DLL
//DLM
//EFR
#define   UART_EFR_AutoCTS          0x0080
#define   UART_EFR_AutoRTS          0x0040
#define   UART_EFR_Enchance         0x0010
#define   UART_EFR_SWCtrlMask       0x000f
#define   UART_EFR_NoSWFlowCtrl     0x0000
#define   UART_EFR_ALLOFF           0x0000
#define   UART_EFR_AutoRTSCTS       0x00c0

//Tx/Rx XON1/Xoff1 as flow control word
#define   UART_EFR_SWFlowCtrlX1     0x000a 

//Tx/Rx XON2/Xoff2 as flow control word
#define   UART_EFR_SWFlowCtrlX2     0x0005

//Tx/Rx XON1&XON2/Xoff1&Xoff2 as flow control word
#define   UART_EFR_SWFlowCtrlXAll   0x000f

#define   UART_TxFIFO_DEPTH         48
#define   UART_RxFIFO_DEPTH         62


#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值