summaryrefslogtreecommitdiff
path: root/ecos/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h
diff options
context:
space:
mode:
authorMichael Gielda <mgielda@antmicro.com>2014-04-03 14:53:04 +0200
committerMichael Gielda <mgielda@antmicro.com>2014-04-03 14:53:04 +0200
commitae1e4e08a1005a0c487f03ba189d7536e7fdcba6 (patch)
treef1c296f8a966a9a39876b0e98e16d9c5da1776dd /ecos/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h
parentf157da5337118d3c5cd464266796de4262ac9dbd (diff)
Added the OS files
Diffstat (limited to 'ecos/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h')
-rw-r--r--ecos/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/ecos/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h b/ecos/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h
new file mode 100644
index 0000000..9ad39c7
--- /dev/null
+++ b/ecos/packages/devs/serial/v85x/v850/current/src/v85x_v850_serial.h
@@ -0,0 +1,164 @@
+#ifndef CYGONCE_V85X_V850_SERIAL_H
+#define CYGONCE_V85X_V850_SERIAL_H
+
+// ====================================================================
+//
+// v850_ceb_serial.h
+//
+// Device I/O - Description of NEC V850 serial hardware
+//
+// ====================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+//
+// eCos 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 or (at your option) any later
+// version.
+//
+// eCos 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 eCos; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// As a special exception, if other files instantiate templates or use
+// macros or inline functions from this file, or you compile this file
+// and link it with other works to produce a work based on this file,
+// this file does not by itself cause the resulting work to be covered by
+// the GNU General Public License. However the source code for this file
+// must still be made available in accordance with section (3) of the GNU
+// General Public License v2.
+//
+// This exception does not invalidate any other reasons why a work based
+// on this file might be covered by the GNU General Public License.
+// -------------------------------------------
+// ####ECOSGPLCOPYRIGHTEND####
+// ====================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s): gthomas
+// Contributors: gthomas,jlarmour
+// Date: 2001-03-21
+// Purpose: Internal interfaces for serial I/O drivers
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+// ====================================================================
+
+// Description of serial ports on NEC V850/SA1 & SB1
+
+#include <pkgconf/system.h>
+#include CYGBLD_HAL_TARGET_H
+
+#include <cyg/hal/v850_common.h>
+
+struct serial_port {
+ unsigned char asim; // Serial interface mode
+ unsigned char _filler0;
+ unsigned char asis; // Serial interface status
+ unsigned char _filler1;
+ unsigned char brgc; // Baud rate control
+ unsigned char _filler2;
+ unsigned char txs; // Transmit shift register
+ unsigned char _filler3;
+ unsigned char rxs; // Receive shift register
+ unsigned char _filler4[5];
+ unsigned char brgm; // Baud rate mode
+ unsigned char _filler5;
+#if CYGINT_HAL_V850_VARIANT_SB1
+ unsigned char _filler6[0x10];
+ unsigned char brgm1; // Baud rate overflow
+#endif
+};
+
+// Relative interrupt numbers
+#define INT_ERR 0 // Receive error condition
+#define INT_Rx 1 // Receive data
+#define INT_Tx 2 // Transmit data
+
+// Serial interface mode
+#define ASIM_TxRx_MASK (3<<6) // Receive & Transmit enables
+#define ASIM_TxRx_Rx (1<<6) // Receive enable
+#define ASIM_TxRx_Tx (2<<6) // Transmit enable
+#define ASIM_Parity_MASK (3<<4) // Parity mode bits
+#define ASIM_Parity_none (0<<4) // No parity
+#define ASIM_Parity_space (1<<4) // Send zero bit, ignore errors
+#define ASIM_Parity_odd (2<<4) // Odd parity
+#define ASIM_Parity_even (3<<4) // Even parity
+#define ASIM_Length_MASK (1<<3) // Character length select
+#define ASIM_Length_7 (0<<3) // 7 bit chars
+#define ASIM_Length_8 (1<<3) // 8 bit chars
+#define ASIM_Stop_MASK (1<<2) // Stop bit select
+#define ASIM_Stop_1 (0<<2) // 1 stop bit
+#define ASIM_Stop_2 (1<<2) // 2 stop bits
+#define ASIM_Error_MASK (1<<1) // Receive error select
+#define ASIM_Error_enable (0<<1) // Issue interrupt on receive error
+#define ASIM_Error_disable (1<<1) // No interrupts on receive error
+
+// Serial interface status (errors only)
+#define ASIS_OVE (1<<0) // Overrun error
+#define ASIS_FE (1<<1) // Framing error
+#define ASIS_PE (1<<2) // Parity error
+
+static unsigned char select_word_length[] = {
+ 0xFF, // 5 bits / word (char)
+ 0xFF,
+ ASIM_Length_7,
+ ASIM_Length_8
+};
+
+static unsigned char select_stop_bits[] = {
+ 0,
+ ASIM_Stop_1, // 1 stop bit
+ 0xFF, // 1.5 stop bit
+ ASIM_Stop_2 // 2 stop bits
+};
+
+static unsigned char select_parity[] = {
+ ASIM_Parity_none, // No parity
+ ASIM_Parity_even, // Even parity
+ ASIM_Parity_odd, // Odd parity
+ 0xFF, // Mark parity
+ ASIM_Parity_space, // Space parity
+};
+
+static struct v850_baud {
+ unsigned int count;
+ unsigned int divisor;
+} select_baud[] = {
+// Baud rate values, using defined system clock
+#define BAUDCOUNT(X) ((CYGHWR_HAL_V85X_CPU_FREQ/2)/(X))
+ {0, 0}, // Unused
+ {0, 0}, // 50
+ {0, 0}, // 75
+ {0, 0}, // 110
+ {0, 0}, // 134.5
+ {0, 0}, // 150
+ {0, 0}, // 200
+ {0, 0}, // 300
+ {0, 0}, // 600
+ {BAUDCOUNT(1200), 1}, // 1200
+ {0, 0}, // 1800
+ {BAUDCOUNT(2400), 1}, // 2400
+ {0, 0}, // 3600
+ {BAUDCOUNT(4800), 1}, // 4800
+ {0, 0}, // 7200
+ {BAUDCOUNT(9600), 1}, // 9600
+ {0, 0}, // 14400
+ {BAUDCOUNT(19200), 1}, // 19200
+ {BAUDCOUNT(38400), 1}, // 38400
+ {0, 0}, // 57600
+ {0, 0}, // 115200
+ {0, 0}, // 230400
+};
+
+#endif // CYGONCE_V85X_V850_SERIAL_H
+
+// EOF v85x_v850_serial.h