summaryrefslogtreecommitdiff
path: root/uart_core.h
diff options
context:
space:
mode:
Diffstat (limited to 'uart_core.h')
-rw-r--r--uart_core.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/uart_core.h b/uart_core.h
new file mode 100644
index 0000000..4cab207
--- /dev/null
+++ b/uart_core.h
@@ -0,0 +1,79 @@
+/*
+ Nios-sim - one simple NIOSII simulator only for personal interest and fun.
+ Copyright (C) 2010 chysun2000@gmail.com
+
+ This program 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 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#ifndef __UART_CORE_H__
+#define __UART_CORE_H__
+
+#include <stdio.h>
+#include "public.h"
+#include "niosii.h"
+#include "io_device.h"
+
+#define UART_IRQ_MASK (1 << 2)
+#define UART_CORE_BASE_ADDR (0x80681000)
+#define UART_CORE_REG_CNT (8)
+
+/* Mask for registers */
+/* copy from /drivers/serial/altuart.c */
+#define ALTERA_UART_STATUS_PE_MSK (0x1)
+#define ALTERA_UART_STATUS_FE_MSK (0x2)
+#define ALTERA_UART_STATUS_BRK_MSK (0x4)
+#define ALTERA_UART_STATUS_ROE_MSK (0x8)
+#define ALTERA_UART_STATUS_TOE_MSK (0x10)
+#define ALTERA_UART_STATUS_TMT_MSK (0x20)
+#define ALTERA_UART_STATUS_TRDY_MSK (0x40)
+#define ALTERA_UART_STATUS_RRDY_MSK (0x80)
+#define ALTERA_UART_STATUS_E_MSK (0x100)
+#define ALTERA_UART_STATUS_DCTS_MSK (0x400)
+#define ALTERA_UART_STATUS_CTS_MSK (0x800)
+#define ALTERA_UART_STATUS_EOP_MSK (0x1000)
+
+#define ALTERA_UART_CONTROL_PE_MSK (0x1)
+#define ALTERA_UART_CONTROL_FE_MSK (0x2)
+#define ALTERA_UART_CONTROL_BRK_MSK (0x4)
+#define ALTERA_UART_CONTROL_ROE_MSK (0x8)
+#define ALTERA_UART_CONTROL_TOE_MSK (0x10)
+#define ALTERA_UART_CONTROL_TMT_MSK (0x20)
+#define ALTERA_UART_CONTROL_TRDY_MSK (0x40)
+#define ALTERA_UART_CONTROL_RRDY_MSK (0x80)
+#define ALTERA_UART_CONTROL_E_MSK (0x100)
+#define ALTERA_UART_CONTROL_TRBK_MSK (0x200)
+#define ALTERA_UART_CONTROL_DCTS_MSK (0x400)
+#define ALTERA_UART_CONTROL_RTS_MSK (0x800)
+#define ALTERA_UART_CONTROL_EOP_MSK (0x1000)
+
+#define ALTERA_UART_EOP_MSK (0xFF)
+#define ALTERA_UART_EOP_OFST (0)
+
+#define UART_HAS_NO_DATA_TO_RX (0x00)
+#define UART_HAS_DATA_TO_RX (0x01)
+#define UART_HAS_DATA_TO_TX (0x01)
+#define UART_HAS_NO_DATA_TO_TX (0x00)
+
+struct uart_core_hw {
+ struct io_reg io_regs[UART_CORE_REG_CNT];
+ uint32_t rx_status;
+ uint32_t tx_status;
+};
+
+extern struct io_device uart_core;
+#endif
+
+
+