diff nuc-fw/nucleus/sd_defs.h @ 79:947b1f473960

beginning of nuc-fw
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 11 Aug 2013 07:17:25 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nuc-fw/nucleus/sd_defs.h	Sun Aug 11 07:17:25 2013 +0000
@@ -0,0 +1,361 @@
+/*************************************************************************
+*                                                                       
+*               Copyright Mentor Graphics Corporation 2002              
+*                         All Rights Reserved.                          
+*                                                                       
+* THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS  
+* THE PROPERTY OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS   
+* SUBJECT TO LICENSE TERMS.                                             
+*                                                                       
+*************************************************************************/
+
+/*************************************************************************
+*                                                                      
+* FILE NAME                                VERSION                        
+*                                                                      
+*      sd_defs.h                 Nucleus PLUS\ARM925\Code Composer 1.14.1 
+*                                                                      
+* COMPONENT                                                            
+*                                                                      
+*      SD - Serial Driver                                              
+*                                                                      
+* DESCRIPTION                                                          
+*                                                                      
+*      This file contains constant definitions and function macros     
+*      for the Serial Driver module.                                   
+*                                                                      
+* DATA STRUCTURES                                                      
+*                                                                      
+*      SD_PORT     :   Structure to keep all needed info. about a port.
+*                                                                      
+* DEPENDENCIES                                                         
+*                                                                      
+*      none    
+*
+*                                                                      
+*************************************************************************/
+#ifndef SD_DEFS_H
+#define SD_DEFS_H
+
+/**************** User configurable section *************************/
+
+/*
+ * The OMAP1510 version of this code found in XVilka's original
+ * code drop supported two UARTs numbered 1 and 2.
+ * In this proof-of-concept Calypso version this numbering
+ * has been retained, even though all other Calypso software
+ * I know of uses 0 and 1.
+ * The FreeNucleus UART numbers have been mapped as follows:
+ * 1 = MODEM, 2 = IrDA
+ */
+
+/* The base addresses for the seperate UART registers. */
+#define SD_UART_MODEM_BASE	0xFFFF5800
+#define SD_UART_IRDA_BASE	0xFFFF5000
+
+/* Macros for specifying which UART to use. */
+#define SD_UART1           1
+#define SD_UART2           2
+
+#define	SD_UART_MODEM      1
+#define	SD_UART_IRDA       2
+
+#define SD_MAX_UARTS        2
+
+/* These use specific type names, putting the register name
+   in the macro, because these macros are used by port specific
+   sections of code and will most likely have different names
+   on other UARTS. */
+/*************************************/
+/* Receive Holding Register - RHR (R)*/
+/*************************************/
+#define RHR_OFFSET          0x00
+
+/**************************************/
+/* Transmit Holding Register - THR (W)*/
+/**************************************/
+#define THR_OFFSET          0x00
+
+/****************************************/
+/* Interrupt Enable Register - IER (R/W)*/
+/****************************************/
+#define IER_OFFSET          0x01
+#define IER_RX_HOLDING_REG  0x01          /* bit 0 - Recieve Holding Register Interrupt
+                                             - Enabled When Set   */
+#define IER_TX_HOLDING_REG  0x02          /* bit 1 - Transmit Holding Register Interrupt
+                                             - Enabled When Set   */
+#define IER_RX_LINE_STATUS  0x04          /* bit 2 - recieve Line Status Interrupt
+                                             - Enabled When Set   */
+#define IER_MODEM_STATUS    0x08          /* bit 3 - Modem Status Interrupt
+                                             - Enabled When Set   */
+
+
+/************************************/
+/*  FIFO Control Register - FCR (W) */
+/************************************/
+#define FCR_OFFSET          0x02
+#define FCR_FIFO_ENABLED    0x01          /* bit 0 - Enabled When Set */
+#define FCR_RCVR_TRIG_LEVEL 0x00          /* bit 6:bit 7 - 8 Bytes Trigger Level */
+#define FCR_FIFO_RESET      0x06          /* bit 1-2 - TX/RX FIFO Reset When Set */
+
+/************************************************/
+/* Interrupt Identification Register - IIR (IIR)*/
+/************************************************/
+#define IIR_OFFSET          0x02
+#define IIR_TYPE_MASK       0x0000003E    /* bit 5:bit 1 */
+#define IIR_PENDING         0x00000001    /* ISR pending bit - 0=pending, 1=not pending       */
+#define IIR_RX_TIMEOUT      0x0000000C    /* 1 1 0 - RX time out                   Priority 2 */
+#define IIR_RX_RDY          0x00000004    /* 0 1 0 - Received Data Ready           Priority 2 */
+#define IIR_TX_RDY          0x00000002    /* 0 0 1 - Transmitter Holding Reg Empty Priority 3 */
+#define IIR_RX_LINE_STAT    0x00000006    /* 0 1 1 - Receive Line Status             Priority 1 */
+
+/**************************************/
+/*  Latch Control Register - LCR (R/W)*/
+/**************************************/
+#define LCR_OFFSET          0x03
+#define LCR_5_BIT_WORD      0x00          /* 0 0  - 5 Bit Word   */
+#define LCR_6_BIT_WORD      0x01          /* 0 1  - 6 Bit Word   */
+#define LCR_7_BIT_WORD      0x02          /* 1 0  - 7 Bit Word   */
+#define LCR_8_BIT_WORD      0x03          /* 1 1  - 8 Bit Word   */
+
+#define LCR_STOP_BIT_1      0x00          /* 1 stop bit */
+#define LCR_STOP_BIT_2      0x04          /* 2 stop bit */
+
+#define LCR_PARITY_ENABLE   0x08          /* bit 3 - Enable Parity Bit Generation and Check
+                                             - Enabled When Set */
+#define LCR_PARITY_DISABLE  0x00          /* bit 3 - Enable Parity Bit Generation and Check
+                                             - Enabled When Set */
+#define LCR_PARITY_EVEN     0x10          /* bit 4 - Odd/Even Parity Generation and Check
+                                             - Even When Set    */
+#define LCR_PARITY_ODD      0x00          /* bit 4 - Odd/Even Parity Generation and Check
+                                             - Odd When Set    */
+#define LCR_BREAK_SET       0x40          /* bit 6 - Force Break Control ( Tx o/p low)
+                                             - Forced When Set  */
+#define LCR_NO_BREAK        0x00          /* bit 6 - Normal operating conditions */
+#define LCR_DIV_EN          0x80          /* Enable access to DLL and DLH */
+
+/*************************************/
+/* Modem Control Register - MCR (R/W)*/
+/*************************************/
+#define MCR_OFFSET          0x04
+
+#define MCR_DTR_LOW         0x01          /* bit 0 - Set DCD Signal Low/High - DCD Low when Set */
+#define MCR_RTS_LOW         0x02          /* bit 1 - Set RTS Signal Low/High - RTS Low when Set */
+#define MCR_NORMAL_MODE     0x00          /* bit 4 - normal operating mode */
+#define MCR_LOOP_BACK       0x10          /* bit 4 - enable loopback mode */
+#define MCR_TCR_TLR         0x40          /* bit 6 - enable access to TCR and TLR */
+#define MCR_CLKSEL          0x80          /* bit 7 - enable clk/4 */
+#define MCR_Not_Used        0x0C          /* bit 2,bit 3 - not used */
+
+
+/* The Following Registers are Status Registers which Report conditions within the    */
+/* UART/PPP during operation. The defined values are masks to ensure that the register*/
+/* flags are correctly accessed */
+
+/*********************************/
+/* Line Status Register - LSR (R)*/
+/*********************************/
+#define LSR_OFFSET          0x05
+#define LSR_RX_DATA_READY   0x01          /* bit 0 - Data Received and Saved in Holding Reg
+                                             - Set when Valid */
+#define LSR_OVERRUN_ERROR   0x02          /* bit 1 - Overrun Error Occured
+                                             - Set When Valid */
+#define LSR_PARITY_ERROR    0x04          /* bit 2 - Parity Error Occured
+                                             - Set When Valid */
+#define LSR_FRAMING_ERROR   0x08          /* bit 3 - Framing Error Occured
+                                             - Set When Valid */
+#define LSR_BREAK_ERROR     0x10          /* bit 4 - Break Error Occured
+                                             - Set When Valid */
+#define LSR_TX_HOLD_EMPTY   0x20          /* bit 5 - Tx Holding Register is empty and ready
+                                             - Set When Valid */
+#define LSR_TX_HOLD_FULL    0x00          /* bit 5 - Tx Holding Register is Full */
+
+#define LSR_TX_EMPTY        0x40          /* bit 6 - 1= Tx Holding and shift registers are empty */
+#define LSR_TX_FULL         0x00          /* bit 6 - 0= Tx Holding and shift registers are full */
+
+#define LSR_FIFO_ERROR      0x80          /* bit 7 - At Least one of b4 - b2 has occurred
+                                               - Set When Valid */
+
+/**********************************/
+/* Modem Status Register - MSR (R)*/
+/**********************************/
+#define MSR_OFFSET          0x06
+
+/******************************************/
+/* Supplementary Status Register - SSR (R)*/
+/******************************************/
+#define SSR_OFFSET          0x11          /* Supplementary Status Reg Offset */
+#define SSR_TX_FIFO_FULL    0x01          /* bit 0 - Tx FIFO full - Set when full */
+
+/***************************************/
+/* Mode Definition Register - MDR (R/W)*/
+/***************************************/
+#define MDR_OFFSET          0x08
+#define MDR_UART_MODE       0x00          /* bit 2:bit 0 - 0 0 0 - Uart Mode        */
+#define MDR_AUTO_MODE       0x02          /* bit 2:bit 0 - 0 1 0 - AutoBaud Mode    */
+#define MDR_RESET_MODE      0x07          /* bit 2:bit 0 - 1 1 1 - Reset Mode       */
+
+/***********************************************/
+/* Divisor for baud-rate generation - DLH (R/W)*/
+/***********************************************/
+#define DLH_OFFSET          0x01
+
+/***********************************************/
+/* Divisor for baud-rate generation - DLL (R/W)*/
+/***********************************************/
+#define DLL_OFFSET          0x00
+
+
+/* These use generic type names, leaving off the register name
+   in the macro, because they are used by generic sections of
+   code which will not require changes for other UARTS. Only the
+   bits these correspond to should change. */
+
+/* UART Line Control Register Bits */
+#define SD_PARITY_NONE              LCR_PARITY_DISABLE
+#define SD_PARITY_EVEN              LCR_PARITY_EVEN
+#define SD_PARITY_ODD               LCR_PARITY_ODD
+
+#define SD_DATA_BITS_5              LCR_5_BIT_WORD
+#define SD_DATA_BITS_6              LCR_6_BIT_WORD
+#define SD_DATA_BITS_7              LCR_7_BIT_WORD
+#define SD_DATA_BITS_8              LCR_8_BIT_WORD
+
+#define SD_STOP_BITS_1              LCR_STOP_BIT_1
+#define SD_STOP_BITS_2              LCR_STOP_BIT_2
+
+#define SD_MODE_NORMAL              MCR_NORMAL_MODE
+#define SD_MODE_AUTO_ECHO           MCR_NOT_USED
+#define SD_MODE_LOCAL_LOOP          MCR_LOOP_BACK
+#define SD_MODE_REMOTE_LOOP         MCR_NOT_USED
+
+/* Define default Serial Driver settings for this board */
+#define     DEFAULT_UART_PORT       SD_UART_IRDA
+#define     DEFAULT_PPP_BAUD        57600
+#define     DEFAULT_UART_BAUD       115200
+#define     DEFAULT_UART_DATA       DATA_BITS_8
+#define     DEFAULT_UART_STOP       STOP_BITS_1
+#define     DEFAULT_UART_PARITY     PARITY_NONE
+#define     DEFAULT_UART_MODE       MODE_NORMAL
+#define     DEFAULT_UART_BUFFER     100
+
+/* Define data structures for management of a serial port. */
+
+typedef struct SD_INIT_STRUCT
+{
+    UINT32        data_mode;
+    UINT32        base_address;
+
+    /* The following elements should generic accross other
+       platforms. */
+    NU_SEMAPHORE    *sd_semaphore;
+    UINT32        com_port;
+    UINT32        data_bits;
+    UINT32        stop_bits;
+    UINT32        parity;
+    UINT32        baud_rate;
+    UINT32        vector;
+    UINT32        driver_options;
+    UINT32        sd_buffer_size;
+
+    UINT32        parity_errors;
+    UINT32        frame_errors;
+    UINT32        overrun_errors;
+    UINT32        busy_errors;
+    UINT32        general_errors;
+
+    CHAR            *rx_buffer;
+    INT             rx_buffer_read;
+    INT             rx_buffer_write;
+    volatile INT    rx_buffer_status;
+
+    /* All of the following elements are required by PPP, do not modify. */
+    UINT32        communication_mode;
+    CHAR            *tx_buffer;
+    INT             tx_buffer_read;
+    INT             tx_buffer_write;
+    volatile INT    tx_buffer_status;
+
+} SD_PORT;
+
+/* Defines to be used by application */
+#define MODE_NORMAL       SD_MODE_NORMAL
+#define MODE_AUTO_ECHO    SD_MODE_AUTO_ECHO
+#define MODE_LOCAL_LOOP   SD_MODE_LOCAL_LOOP
+#define MODE_REMOTE_LOOP  SD_MODE_REMOTE_LOOP
+
+#define STOP_BITS_1       SD_STOP_BITS_1
+#define STOP_BITS_2       SD_STOP_BITS_2
+
+#define UART1             SD_UART1
+#define UART2             SD_UART2
+
+/* Defines to determine communication mode */
+#define SERIAL_MODE                 0
+#define SERIAL_MOUSE                3
+/* MDM_NETWORK and MDM_TERMINAL do not need to be defined here
+   since they are defined in PPP.  */
+
+/***********************************************************************
+ Note: everything below should be genric.
+*/
+
+#define NU_SERIAL_PORT          SD_PORT
+#define PARITY_NONE             SD_PARITY_NONE
+#define PARITY_EVEN             SD_PARITY_EVEN
+#define PARITY_ODD              SD_PARITY_ODD
+
+#define DATA_BITS_6             SD_DATA_BITS_6
+#define DATA_BITS_7             SD_DATA_BITS_7
+#define DATA_BITS_8             SD_DATA_BITS_8
+
+#define NU_SD_Put_Char          SDC_Put_Char
+#define NU_SD_Get_Char          SDC_Get_Char
+#define NU_SD_Put_String        SDC_Put_String
+#define NU_SD_Init_Port         SDC_Init_Port
+#define NU_SD_Data_Ready        SDC_Data_Ready
+
+#define NU_UART_SUCCESS         0
+#define NU_INVALID_PARITY       -1
+#define NU_INVALID_DATA_BITS    -2
+#define NU_INVALID_STOP_BITS    -3
+#define NU_INVALID_BAUD         -4
+#define NU_INVALID_COM_PORT     -5
+#define NU_INVALID_DATA_MODE    -6
+#define NU_UART_LIST_FULL       -7
+#define NU_INVALID_MOUSE_MODE   -8
+
+#define NU_BUFFER_FULL          1
+#define NU_BUFFER_DATA          2
+#define NU_BUFFER_EMPTY         3
+
+/* Deifine IO macros. */
+
+/* 8 bit access */
+#define SD_OUTBYTE(reg, data)   ( (*( (volatile UINT8 *) (reg) ) ) = (UINT8) (data) )
+
+#define SD_INBYTE(reg)          (  *( (volatile UINT8 *) (reg) ) )
+
+/* 16 bit access */
+#define SD_OUTWORD(reg, data)   ( (*( (volatile UINT16 *) (reg) ) ) = (data) )
+
+#define SD_INWORD(reg)          (  *( (volatile UINT16 *) (reg) ) )
+
+/* 32 bit access */
+#define SD_OUTDWORD(reg, data)  ( (*( (volatile UINT32 *) (reg) ) ) = (data) )
+
+#define SD_INDWORD(reg)         (  *( (volatile UINT32 *) (reg) ) )
+
+/*Macro used for converting URT to SD_PORT. This is for PPP serial driver
+  backwards compatability. */
+#define URT_LAYER                       SD_PORT
+
+#define URT_TX_BUFFER_SIZE              uart->sd_buffer_size
+#define URT_Get_Char                    SDC_Get_Char
+#define URT_Put_Char                    SDC_Put_Char
+#define URT_Reset                       SDC_Reset
+#define URT_Change_Communication_Mode   SDC_Change_Communication_Mode
+#define URT_Carrier                     SDC_Carrier
+
+
+#endif /* ifndef SD_DEFS_H */