
//------------------------------------------------------------------------------
//
//  Copyright (C) 2007, Freescale Semiconductor, Inc. All Rights Reserved.
//  THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
//  AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT
//
//------------------------------------------------------------------------------
//
//  Header:     cpld.h
//
//  Provides definitions for the cpld module of the
//  
//
//------------------------------------------------------------------------------
#ifndef    __CPLD_H
#define    __CPLD_H

#if    __cplusplus
extern "C" {
#endif

//------------------------------------------------------------------------------
// GENERAL MODULE CONSTANTS
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// REGISTER LAYOUT
//------------------------------------------------------------------------------
#define CPLD_MX31_BASE_PA_ADDRESS 0xB6000000


//------------------------------------------------------------------------------
// REGISTER OFFSETS
//------------------------------------------------------------------------------
#define CPLD_MX31_LAN9217_OFFSET        0
#define CPLD_MX31_EXT_UARTA_OFFSET   0x08000
#define CPLD_MX31_EXT_UARTB_OFFSET   0x10000
#define CPLD_MX31_RW_LED_OFFSET        0x20000
#define CPLD_MX31_RO_SW_OFFSET          0x20008
#define CPLD_MX31_CPLD_CODE_VERSION_OFFSET   0x20050
#define CPLD_MX31_CPU_PER_ID_OFFSET                         0x20068
#define CPLD_MX31_RO_INTERRUPT_STATUS_OFFSET       0x20010
#define CPLD_MX31_W_INTERRUPT_RESET_OFFSET           0x20020
#define CPLD_MX31_RW_INTERRUPT_MASK_OFFSET          0x20038
#define CPLD_MX31_RESET_XUART_OFFSET                       0x20060

//------------------------------------------------------------------------------
// REGISTER BIT FIELD POSITIONS (LEFT SHIFT)
//------------------------------------------------------------------------------

#define    CPLD_MX31_RO_INTERRUPT_STATUS_ETH_LSH              0
#define    CPLD_MX31_RO_INTERRUPT_STATUS_XUARTA_LSH              1
#define    CPLD_MX31_RO_INTERRUPT_STATUS_XUARTB_LSH              2
#define    CPLD_MX31_RO_INTERRUPT_STATUS_BUTTON1_LSH              3
#define    CPLD_MX31_RO_INTERRUPT_STATUS_BUTTON2_LSH              4


#define CPLD_MX31_RW_INTERRUPT_MASK_ETH_LSH    0 
#define CPLD_MX31_RW_INTERRUPT_MASK_XUARTA_LSH    1 
#define CPLD_MX31_RW_INTERRUPT_MASK_XUARTB_LSH    2 
#define CPLD_MX31_RW_INTERRUPT_MASK_BUTTON1_LSH    3
#define CPLD_MX31_RW_INTERRUPT_MASK_BUTTON2_LSH    4

#define CPLD_MX31_RW_INT_MASK_ETH        0x1
#define CPLD_MX31_RW_INT_MASK_XUARTA     0x2 
#define CPLD_MX31_RW_INT_MASK_XUARTB     0x4 
#define CPLD_MX31_RW_INT_MASK_BUTTON1    0x8
#define CPLD_MX31_RW_INT_MASK_BUTTON2    0x10
#define CPLD_MX31_RW_INT_MASK_ALL        0x1F

//------------------------------------------------------------------------------
// REGISTER BIT FIELD WIDTHS
//------------------------------------------------------------------------------
#define    CPLD_MX31_RO_INTERRUPT_STATUS_ETH_WID                    1
#define    CPLD_MX31_RO_INTERRUPT_STATUS_XUARTA_WID              1
#define    CPLD_MX31_RO_INTERRUPT_STATUS_XUARTB_WID              1
#define    CPLD_MX31_RO_INTERRUPT_STATUS_BUTTON1_WID            1
#define    CPLD_MX31_RO_INTERRUPT_STATUS_BUTTON2_WID             1


#define CPLD_MX31_RW_INTERRUPT_MASK_ETH_WID    1 
#define CPLD_MX31_RW_INTERRUPT_MASK_XUARTA_WID    1 
#define CPLD_MX31_RW_INTERRUPT_MASK_XUARTB_WID    1 
#define CPLD_MX31_RW_INTERRUPT_MASK_BUTTON1_WID   1
#define CPLD_MX31_RW_INTERRUPT_MASK_BUTTON2_WID   1


//------------------------------------------------------------------------------
// REGISTER    BIT    WRITE VALUES
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// FUNCTION PROTOTYPES
//------------------------------------------------------------------------------

#ifdef __cplusplus
}
#endif

#endif // __CPLD_H
