diff options
Diffstat (limited to 'arch/m68k/include/asm/coldfire/mcf548x/mcf548x_uart.h')
-rw-r--r-- | arch/m68k/include/asm/coldfire/mcf548x/mcf548x_uart.h | 233 |
1 files changed, 233 insertions, 0 deletions
diff --git a/arch/m68k/include/asm/coldfire/mcf548x/mcf548x_uart.h b/arch/m68k/include/asm/coldfire/mcf548x/mcf548x_uart.h new file mode 100644 index 0000000000..8f46f1c3ec --- /dev/null +++ b/arch/m68k/include/asm/coldfire/mcf548x/mcf548x_uart.h @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2008 Carsten Schlote <c.schlote@konzeptpark.de> + * See file CREDITS for list of people who contributed to this project. + * + * This file is part of U-Boot V2. + * + * U-Boot V2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * U-Boot V2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with U-Boot V2. If not, see <http://www.gnu.org/licenses/>. + */ + +/** @file + * Register and bit definitions for the MCF548X and MCF547x + * Programmable Serial Controller (UART Compatible Definitions) (UART) + */ +#ifndef __MCF548X_UART_H__ +#define __MCF548X_UART_H__ + +/* + * Programmable Serial Controller (UART Compatible Definitions) (UART) + */ + +/* Register read/write macros */ +#define MCF_UART_UMR0 (*(vuint8_t *)(&__MBAR[0x008600])) +#define MCF_UART_USR0 (*(vuint8_t *)(&__MBAR[0x008604])) +#define MCF_UART_UCSR0 (*(vuint8_t *)(&__MBAR[0x008604])) +#define MCF_UART_UCR0 (*(vuint8_t *)(&__MBAR[0x008608])) +#define MCF_UART_URB0 (*(vuint8_t *)(&__MBAR[0x00860C])) +#define MCF_UART_UTB0 (*(vuint8_t *)(&__MBAR[0x00860C])) +#define MCF_UART_UIPCR0 (*(vuint8_t *)(&__MBAR[0x008610])) +#define MCF_UART_UACR0 (*(vuint8_t *)(&__MBAR[0x008610])) +#define MCF_UART_UISR0 (*(vuint8_t *)(&__MBAR[0x008614])) +#define MCF_UART_UIMR0 (*(vuint8_t *)(&__MBAR[0x008614])) +#define MCF_UART_UBG10 (*(vuint8_t *)(&__MBAR[0x008618])) +#define MCF_UART_UBG20 (*(vuint8_t *)(&__MBAR[0x00861C])) +#define MCF_UART_UIP0 (*(vuint8_t *)(&__MBAR[0x008634])) +#define MCF_UART_UOP10 (*(vuint8_t *)(&__MBAR[0x008638])) +#define MCF_UART_UOP00 (*(vuint8_t *)(&__MBAR[0x00863C])) + +#define MCF_UART_UMR1 (*(vuint8_t *)(&__MBAR[0x008700])) +#define MCF_UART_USR1 (*(vuint8_t *)(&__MBAR[0x008704])) +#define MCF_UART_UCSR1 (*(vuint8_t *)(&__MBAR[0x008704])) +#define MCF_UART_UCR1 (*(vuint8_t *)(&__MBAR[0x008708])) +#define MCF_UART_URB1 (*(vuint8_t *)(&__MBAR[0x00870C])) +#define MCF_UART_UTB1 (*(vuint8_t *)(&__MBAR[0x00870C])) +#define MCF_UART_UIPCR1 (*(vuint8_t *)(&__MBAR[0x008710])) +#define MCF_UART_UACR1 (*(vuint8_t *)(&__MBAR[0x008710])) +#define MCF_UART_UISR1 (*(vuint8_t *)(&__MBAR[0x008714])) +#define MCF_UART_UIMR1 (*(vuint8_t *)(&__MBAR[0x008714])) +#define MCF_UART_UBG11 (*(vuint8_t *)(&__MBAR[0x008718])) +#define MCF_UART_UBG21 (*(vuint8_t *)(&__MBAR[0x00871C])) +#define MCF_UART_UIP1 (*(vuint8_t *)(&__MBAR[0x008734])) +#define MCF_UART_UOP11 (*(vuint8_t *)(&__MBAR[0x008738])) +#define MCF_UART_UOP01 (*(vuint8_t *)(&__MBAR[0x00873C])) + +#define MCF_UART_UMR2 (*(vuint8_t *)(&__MBAR[0x008800])) +#define MCF_UART_USR2 (*(vuint8_t *)(&__MBAR[0x008804])) +#define MCF_UART_UCSR2 (*(vuint8_t *)(&__MBAR[0x008804])) +#define MCF_UART_UCR2 (*(vuint8_t *)(&__MBAR[0x008808])) +#define MCF_UART_URB2 (*(vuint8_t *)(&__MBAR[0x00880C])) +#define MCF_UART_UTB2 (*(vuint8_t *)(&__MBAR[0x00880C])) +#define MCF_UART_UIPCR2 (*(vuint8_t *)(&__MBAR[0x008810])) +#define MCF_UART_UACR2 (*(vuint8_t *)(&__MBAR[0x008810])) +#define MCF_UART_UISR2 (*(vuint8_t *)(&__MBAR[0x008814])) +#define MCF_UART_UIMR2 (*(vuint8_t *)(&__MBAR[0x008814])) +#define MCF_UART_UBG12 (*(vuint8_t *)(&__MBAR[0x008818])) +#define MCF_UART_UBG22 (*(vuint8_t *)(&__MBAR[0x00881C])) +#define MCF_UART_UIP2 (*(vuint8_t *)(&__MBAR[0x008834])) +#define MCF_UART_UOP12 (*(vuint8_t *)(&__MBAR[0x008838])) +#define MCF_UART_UOP02 (*(vuint8_t *)(&__MBAR[0x00883C])) + +#define MCF_UART_UMR3 (*(vuint8_t *)(&__MBAR[0x008900])) +#define MCF_UART_USR3 (*(vuint8_t *)(&__MBAR[0x008904])) +#define MCF_UART_UCSR3 (*(vuint8_t *)(&__MBAR[0x008904])) +#define MCF_UART_UCR3 (*(vuint8_t *)(&__MBAR[0x008908])) +#define MCF_UART_URB3 (*(vuint8_t *)(&__MBAR[0x00890C])) +#define MCF_UART_UTB3 (*(vuint8_t *)(&__MBAR[0x00890C])) +#define MCF_UART_UIPCR3 (*(vuint8_t *)(&__MBAR[0x008910])) +#define MCF_UART_UACR3 (*(vuint8_t *)(&__MBAR[0x008910])) +#define MCF_UART_UISR3 (*(vuint8_t *)(&__MBAR[0x008914])) +#define MCF_UART_UIMR3 (*(vuint8_t *)(&__MBAR[0x008914])) +#define MCF_UART_UBG13 (*(vuint8_t *)(&__MBAR[0x008918])) +#define MCF_UART_UBG23 (*(vuint8_t *)(&__MBAR[0x00891C])) +#define MCF_UART_UIP3 (*(vuint8_t *)(&__MBAR[0x008934])) +#define MCF_UART_UOP13 (*(vuint8_t *)(&__MBAR[0x008938])) +#define MCF_UART_UOP03 (*(vuint8_t *)(&__MBAR[0x00893C])) + + +#define MCF_UART_UMR(x) (*(vuint8_t *)(&__MBAR[0x008600+((x)*0x100)])) +#define MCF_UART_USR(x) (*(vuint8_t *)(&__MBAR[0x008604+((x)*0x100)])) +#define MCF_UART_UCSR(x) (*(vuint8_t *)(&__MBAR[0x008604+((x)*0x100)])) +#define MCF_UART_UCR(x) (*(vuint8_t *)(&__MBAR[0x008608+((x)*0x100)])) +#define MCF_UART_URB(x) (*(vuint8_t *)(&__MBAR[0x00860C+((x)*0x100)])) +#define MCF_UART_UTB(x) (*(vuint8_t *)(&__MBAR[0x00860C+((x)*0x100)])) +#define MCF_UART_UIPCR(x) (*(vuint8_t *)(&__MBAR[0x008610+((x)*0x100)])) +#define MCF_UART_UACR(x) (*(vuint8_t *)(&__MBAR[0x008610+((x)*0x100)])) +#define MCF_UART_UISR(x) (*(vuint8_t *)(&__MBAR[0x008614+((x)*0x100)])) +#define MCF_UART_UIMR(x) (*(vuint8_t *)(&__MBAR[0x008614+((x)*0x100)])) +#define MCF_UART_UBG1(x) (*(vuint8_t *)(&__MBAR[0x008618+((x)*0x100)])) +#define MCF_UART_UBG2(x) (*(vuint8_t *)(&__MBAR[0x00861C+((x)*0x100)])) +#define MCF_UART_UIP(x) (*(vuint8_t *)(&__MBAR[0x008634+((x)*0x100)])) +#define MCF_UART_UOP1(x) (*(vuint8_t *)(&__MBAR[0x008638+((x)*0x100)])) +#define MCF_UART_UOP0(x) (*(vuint8_t *)(&__MBAR[0x00863C+((x)*0x100)])) + +/* Bit definitions and macros for MCF_UART_UMR */ +#define MCF_UART_UMR_BC(x) (((x)&0x03)<<0) +#define MCF_UART_UMR_PT (0x04) +#define MCF_UART_UMR_PM(x) (((x)&0x03)<<3) +#define MCF_UART_UMR_ERR (0x20) +#define MCF_UART_UMR_RXIRQ (0x40) +#define MCF_UART_UMR_RXRTS (0x80) +#define MCF_UART_UMR_SB(x) (((x)&0x0F)<<0) +#define MCF_UART_UMR_TXCTS (0x10) +#define MCF_UART_UMR_TXRTS (0x20) +#define MCF_UART_UMR_CM(x) (((x)&0x03)<<6) +#define MCF_UART_UMR_PM_MULTI_ADDR (0x1C) +#define MCF_UART_UMR_PM_MULTI_DATA (0x18) +#define MCF_UART_UMR_PM_NONE (0x10) +#define MCF_UART_UMR_PM_FORCE_HI (0x0C) +#define MCF_UART_UMR_PM_FORCE_LO (0x08) +#define MCF_UART_UMR_PM_ODD (0x04) +#define MCF_UART_UMR_PM_EVEN (0x00) +#define MCF_UART_UMR_BC_5 (0x00) +#define MCF_UART_UMR_BC_6 (0x01) +#define MCF_UART_UMR_BC_7 (0x02) +#define MCF_UART_UMR_BC_8 (0x03) +#define MCF_UART_UMR_CM_NORMAL (0x00) +#define MCF_UART_UMR_CM_ECHO (0x40) +#define MCF_UART_UMR_CM_LOCAL_LOOP (0x80) +#define MCF_UART_UMR_CM_REMOTE_LOOP (0xC0) +#define MCF_UART_UMR_SB_STOP_BITS_1 (0x07) +#define MCF_UART_UMR_SB_STOP_BITS_15 (0x08) +#define MCF_UART_UMR_SB_STOP_BITS_2 (0x0F) + +/* Bit definitions and macros for MCF_UART_USR */ +#define MCF_UART_USR_RXRDY (0x01) +#define MCF_UART_USR_FFULL (0x02) +#define MCF_UART_USR_TXRDY (0x04) +#define MCF_UART_USR_TXEMP (0x08) +#define MCF_UART_USR_OE (0x10) +#define MCF_UART_USR_PE (0x20) +#define MCF_UART_USR_FE (0x40) +#define MCF_UART_USR_RB (0x80) + +/* Bit definitions and macros for MCF_UART_UCSR */ +#define MCF_UART_UCSR_TCS(x) (((x)&0x0F)<<0) +#define MCF_UART_UCSR_RCS(x) (((x)&0x0F)<<4) +#define MCF_UART_UCSR_RCS_SYS_CLK (0xD0) +#define MCF_UART_UCSR_RCS_CTM16 (0xE0) +#define MCF_UART_UCSR_RCS_CTM (0xF0) +#define MCF_UART_UCSR_TCS_SYS_CLK (0x0D) +#define MCF_UART_UCSR_TCS_CTM16 (0x0E) +#define MCF_UART_UCSR_TCS_CTM (0x0F) + +/* Bit definitions and macros for MCF_UART_UCR */ +#define MCF_UART_UCR_RXC(x) (((x)&0x03)<<0) +#define MCF_UART_UCR_TXC(x) (((x)&0x03)<<2) +#define MCF_UART_UCR_MISC(x) (((x)&0x07)<<4) +#define MCF_UART_UCR_NONE (0x00) +#define MCF_UART_UCR_STOP_BREAK (0x70) +#define MCF_UART_UCR_START_BREAK (0x60) +#define MCF_UART_UCR_BKCHGINT (0x50) +#define MCF_UART_UCR_RESET_ERROR (0x40) +#define MCF_UART_UCR_RESET_TX (0x30) +#define MCF_UART_UCR_RESET_RX (0x20) +#define MCF_UART_UCR_RESET_MR (0x10) +#define MCF_UART_UCR_TX_DISABLED (0x08) +#define MCF_UART_UCR_TX_ENABLED (0x04) +#define MCF_UART_UCR_RX_DISABLED (0x02) +#define MCF_UART_UCR_RX_ENABLED (0x01) + +/* Bit definitions and macros for MCF_UART_UIPCR */ +#define MCF_UART_UIPCR_CTS (0x01) +#define MCF_UART_UIPCR_COS (0x10) + +/* Bit definitions and macros for MCF_UART_UACR */ +#define MCF_UART_UACR_IEC (0x01) + +/* Bit definitions and macros for MCF_UART_UISR */ +#define MCF_UART_UISR_TXRDY (0x01) +#define MCF_UART_UISR_RXRDY_FU (0x02) +#define MCF_UART_UISR_DB (0x04) +#define MCF_UART_UISR_RXFTO (0x08) +#define MCF_UART_UISR_TXFIFO (0x10) +#define MCF_UART_UISR_RXFIFO (0x20) +#define MCF_UART_UISR_COS (0x80) + +/* Bit definitions and macros for MCF_UART_UIMR */ +#define MCF_UART_UIMR_TXRDY (0x01) +#define MCF_UART_UIMR_RXRDY_FU (0x02) +#define MCF_UART_UIMR_DB (0x04) +#define MCF_UART_UIMR_COS (0x80) + +/* Bit definitions and macros for MCF_UART_UIP */ +#define MCF_UART_UIP_CTS (0x01) + +/* Bit definitions and macros for MCF_UART_UOP1 */ +#define MCF_UART_UOP1_RTS (0x01) + +/* Bit definitions and macros for MCF_UART_UOP0 */ +#define MCF_UART_UOP0_RTS (0x01) + +/* The UART registers for mem mapped access */ +struct m5407uart +{ + vuint8_t umr; vuint24_t reserved0; + vuint8_t usr; vuint24_t reserved1; /* ucsr */ + vuint8_t ucr; vuint24_t reserved2; + vuint8_t urb; vuint24_t reserved3; /* utb */ + vuint8_t uipcr; vuint24_t reserved4; /* uacr */ + vuint8_t uisr; vuint24_t reserved5; /* uimr */ + vuint8_t udu; vuint24_t reserved6; + vuint8_t ubg1; vuint24_t reserved7; + vuint8_t ubg2; vuint24_t reserved8; + const uint8_t uip; vuint24_t reserved9; + vuint8_t uop1; vuint24_t reserved10; + vuint8_t uop0; vuint24_t reserved11; +} __attribute((packed)); + +#define MCF_UART(x) (*(struct m5407uart *)(&__MBAR[0x008600+((x)*0x100)])) + + +#endif /* __MCF548X_UART_H__ */ + |