summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libbsp/m68k/gen68340/include/m340uart.h
blob: 47d9ca5022d40661cd301895de9461e456f66342 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                     
                            
                                                    













































































































































                                                                                                                           
/*
 *  Header file for console driver
 *  defines for accessing M68340/68349 UART registers
 *
 *  Author:
 *  Geoffroy Montel
 *  France Telecom - CNET/DSM/TAM/CAT
 *  4, rue du Clos Courtel
 *  35512 CESSON-SEVIGNE
 *  FRANCE
 * 
 *  e-mail: g_montel@yahoo.com 
 *
 *
 *  COPYRIGHT (c) 1989-1999.
 *  On-Line Applications Research Corporation (OAR).
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *
 *  http://www.OARcorp.com/rtems/license.html.
 *
 *  $Id$
 */

#ifndef __m340uart_H__
#define __m340uart_H__

/* UART initialisation */
#define UART_CHANNEL_A			0
#define UART_CHANNEL_B			1
#define UART_NUMBER_OF_CHANNELS		2
#define UART_CONSOLE_NAME		"/dev/console"
#define UART_RAW_IO_NAME		"/dev/tty1"
#define UART_FIFO_FULL			0
#define UART_CRR			1
#define UART_INTERRUPTS			0
#define UART_POLLING			1
#define UART_TERMIOS_CONSOLE		0
#define UART_TERMIOS_RAW		1
#define UART_TERMIOS_MIN_DEFAULT	1
#define UART_TERMIOS_TIME_DEFAULT	0

void Init_UART_Table(void);

typedef struct {
		rtems_unsigned8		enable;
		rtems_unsigned16	rx_buffer_size;	/* NOT IMPLEMENTED */
		rtems_unsigned16	tx_buffer_size;	/* NOT IMPLEMENTED */
	       } uart_termios_config;

typedef struct { /* for one channel */
		rtems_unsigned8		enable;		/* use this channel */
		char			name[64];	/* use UART_CONSOLE_NAME for console purpose */
		rtems_unsigned8		parity_mode;	/* parity mode, see MR1 section for defines */
		rtems_unsigned8		bits_per_char;	/* bits per character, see MR1 section for defines  */
		float			rx_baudrate;	/* Rx baudrate */
		float			tx_baudrate;	/* Tx baudrate */
		rtems_unsigned8		rx_mode;	/* FIFO Full (UART_FIFO_FULL) or ChannelReceiverReady (UART_CRR) */
		rtems_unsigned8		mode;		/* use interrupts (UART_INTERRUPTS) or polling (UART_POLLING) */
		uart_termios_config	termios;
	       } uart_channel_config;

extern uart_channel_config		m340_uart_config[UART_NUMBER_OF_CHANNELS];

typedef  struct {
		 int	set;	/* number of the m340 baud speed set */
		 int	rcs;	/* RCS for the needed baud set */
		 int    tcs;	/* TCS for the needed baud set */
		} t_baud_speed;

typedef	 struct {
		 t_baud_speed	baud_speed_table[2];
		 short		nb;
		} t_baud_speed_table;

extern t_baud_speed_table
Find_Right_m340_UART_Config(float ChannelA_ReceiverBaudRate, float ChannelA_TransmitterBaudRate, rtems_unsigned8 enableA,
			    float ChannelB_ReceiverBaudRate, float ChannelB_TransmitterBaudRate, rtems_unsigned8 enableB);

extern rtems_isr InterruptHandler (rtems_vector_number v);

extern float termios_baud_rates_equivalence ( int speed ) ;
extern int dbugRead (int minor);
extern int dbugWrite (int minor, const char *buf, int len);

extern float m340_Baud_Rates_Table[16][2];

/*  SR */
#define m340_Rx_RDY		1
#define m340_FFULL		(1<<1)
#define m340_Tx_RDY		(1<<2)
#define m340_TxEMP		(1<<3)
#define m340_OE			(1<<4)
#define m340_PE			(1<<5)
#define m340_FE			(1<<6)
#define m340_RB			(1<<7)

/*  IER */
#define m340_TxRDYA		1
#define m340_RxRDYA		(1<<1)
#define m340_TxRxRDYA		0x3
#define m340_TxRDYB		(1<<4)
#define m340_RxRDYB		(1<<5)
#define m340_TxRxRDYB		0x30

/*  CR */
#define m340_Reset_Error_Status	0x40
#define m340_Reset_Receiver	0x20
#define m340_Reset_Transmitter	0x30
#define m340_Transmitter_Enable	(1<<2)
#define m340_Receiver_Enable	1
#define m340_Transmitter_Disable (2<<2)
#define m340_Receiver_Disable	2

/*  ACR */
#define m340_BRG_Set1		0
#define m340_BRG_Set2		(1<<7)

/*  OPCR */
#define m340_OPCR_Gal		0x0
#define m340_OPCR_Aux		0xFF

/*  ISR */
#define m340_COS		(1<<7)
#define m340_DBB		(1<<6)
#define m340_XTAL_RDY		(1<<3)
#define m340_DBA		(1<<2)

/*  MR1 */
#define m340_RxRTS		(1<<7)
#define m340_R_F		(1<<6)		/* character or block mode */
#define m340_ERR		(1<<5)
#define m340_RxRTX		(1<<7)
#define m340_Even_Parity	0
#define m340_Odd_Parity		(1<<2)
#define m340_Low_Parity		(2<<2)
#define m340_High_Parity	(3<<2)
#define m340_No_Parity		(4<<2)
#define m340_Data_Character	(6<<2)
#define m340_Address_Character	(7<<2)
#define m340_5bpc		0x0
#define m340_6bpc		0x1
#define m340_7bpc		0x2
#define m340_8bpc		0x3

/*  MR2 */
#define m340_normal		(0<<6)
#define m340_automatic_echo	(1<<6)
#define m340_local_loopback	(2<<6)
#define m340_remote_loopback	(3<<6)
#define m340_TxRTS		(1<<5)
#define m340_TxCTS		(1<<4)

/* Baud rates for Transmitter/Receiver */
#define SCLK	1		/* put your own SCLK value here */

#endif