/****************************************************************************
 *     Copyright (c) 1999-2014, Broadcom Corporation
 *     All Rights Reserved
 *     Confidential Property of Broadcom Corporation
 *
 *
 * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
 * AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
 * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
 *
 * Module Description:
 *                     DO NOT EDIT THIS FILE DIRECTLY
 *
 * This module was generated magically with RDB from a source description
 * file. You must edit the source file for changes to be made to this file.
 *
 *
 * Date:           Generated on               Wed Jun 10 03:09:40 2015
 *                 Full Compile MD5 Checksum  e8bde4108283f67d401938287dbb6bde
 *                     (minus title and desc)
 *                 MD5 Checksum               56f0f944fbd407545cd964e7b4e7f7b0
 *
 * Compiled with:  RDB Utility                combo_header.pl
 *                 RDB.pm                     15517
 *                 unknown                    unknown
 *                 Perl Interpreter           5.008008
 *                 Operating System           linux
 *
 *
 ***************************************************************************/

#ifndef BCHP_BSPI_RAF_H__
#define BCHP_BSPI_RAF_H__

/***************************************************************************
 *BSPI_RAF - Public Linear Read BSPI Pipe Registers
 ***************************************************************************/
#define BCHP_BSPI_RAF_START_ADDR                 0x204a3300 /* [RW] Physical Starting Address Location in Flash device */
#define BCHP_BSPI_RAF_NUM_WORDS                  0x204a3304 /* [RW] Number of Words to be fetched */
#define BCHP_BSPI_RAF_CTRL                       0x204a3308 /* [RW] RAF Session Control Register */
#define BCHP_BSPI_RAF_FULLNESS                   0x204a330c /* [RO] Fullness indicator for the read ahead buffer */
#define BCHP_BSPI_RAF_WATERMARK                  0x204a3310 /* [RW] Watermark level in the read ahead buffer that triggers an interrupt */
#define BCHP_BSPI_RAF_STATUS                     0x204a3314 /* [RO] Linear Read Status Register */
#define BCHP_BSPI_RAF_READ_DATA                  0x204a3318 /* [RO] Read data from Raf-buffer */
#define BCHP_BSPI_RAF_WORD_CNT                   0x204a331c /* [RO] Current number of words fetched from Flash */
#define BCHP_BSPI_RAF_CURR_ADDR                  0x204a3320 /* [RO] Current read address for the linear read session */

/***************************************************************************
 *START_ADDR - Physical Starting Address Location in Flash device
 ***************************************************************************/
/* BSPI_RAF :: START_ADDR :: START_ADDR [31:00] */
#define BCHP_BSPI_RAF_START_ADDR_START_ADDR_MASK                   0xffffffff
#define BCHP_BSPI_RAF_START_ADDR_START_ADDR_SHIFT                  0
#define BCHP_BSPI_RAF_START_ADDR_START_ADDR_DEFAULT                0x00000000

/***************************************************************************
 *NUM_WORDS - Number of Words to be fetched
 ***************************************************************************/
/* BSPI_RAF :: NUM_WORDS :: NumWords [31:00] */
#define BCHP_BSPI_RAF_NUM_WORDS_NumWords_MASK                      0xffffffff
#define BCHP_BSPI_RAF_NUM_WORDS_NumWords_SHIFT                     0
#define BCHP_BSPI_RAF_NUM_WORDS_NumWords_DEFAULT                   0x00000000

/***************************************************************************
 *CTRL - RAF Session Control Register
 ***************************************************************************/
/* BSPI_RAF :: CTRL :: reserved0 [31:02] */
#define BCHP_BSPI_RAF_CTRL_reserved0_MASK                          0xfffffffc
#define BCHP_BSPI_RAF_CTRL_reserved0_SHIFT                         2

/* BSPI_RAF :: CTRL :: CLEAR [01:01] */
#define BCHP_BSPI_RAF_CTRL_CLEAR_MASK                              0x00000002
#define BCHP_BSPI_RAF_CTRL_CLEAR_SHIFT                             1
#define BCHP_BSPI_RAF_CTRL_CLEAR_DEFAULT                           0x00000000

/* BSPI_RAF :: CTRL :: START [00:00] */
#define BCHP_BSPI_RAF_CTRL_START_MASK                              0x00000001
#define BCHP_BSPI_RAF_CTRL_START_SHIFT                             0
#define BCHP_BSPI_RAF_CTRL_START_DEFAULT                           0x00000000

/***************************************************************************
 *FULLNESS - Fullness indicator for the read ahead buffer
 ***************************************************************************/
/* BSPI_RAF :: FULLNESS :: reserved0 [31:07] */
#define BCHP_BSPI_RAF_FULLNESS_reserved0_MASK                      0xffffff80
#define BCHP_BSPI_RAF_FULLNESS_reserved0_SHIFT                     7

/* BSPI_RAF :: FULLNESS :: FULLNESS [06:00] */
#define BCHP_BSPI_RAF_FULLNESS_FULLNESS_MASK                       0x0000007f
#define BCHP_BSPI_RAF_FULLNESS_FULLNESS_SHIFT                      0
#define BCHP_BSPI_RAF_FULLNESS_FULLNESS_DEFAULT                    0x00000000

/***************************************************************************
 *WATERMARK - Watermark level in the read ahead buffer that triggers an interrupt
 ***************************************************************************/
/* BSPI_RAF :: WATERMARK :: reserved0 [31:02] */
#define BCHP_BSPI_RAF_WATERMARK_reserved0_MASK                     0xfffffffc
#define BCHP_BSPI_RAF_WATERMARK_reserved0_SHIFT                    2

/* BSPI_RAF :: WATERMARK :: FULLNESS_WATERMARK [01:00] */
#define BCHP_BSPI_RAF_WATERMARK_FULLNESS_WATERMARK_MASK            0x00000003
#define BCHP_BSPI_RAF_WATERMARK_FULLNESS_WATERMARK_SHIFT           0
#define BCHP_BSPI_RAF_WATERMARK_FULLNESS_WATERMARK_DEFAULT         0x00000000

/***************************************************************************
 *STATUS - Linear Read Status Register
 ***************************************************************************/
/* BSPI_RAF :: STATUS :: reserved0 [31:03] */
#define BCHP_BSPI_RAF_STATUS_reserved0_MASK                        0xfffffff8
#define BCHP_BSPI_RAF_STATUS_reserved0_SHIFT                       3

/* BSPI_RAF :: STATUS :: FIFO_FULL [02:02] */
#define BCHP_BSPI_RAF_STATUS_FIFO_FULL_MASK                        0x00000004
#define BCHP_BSPI_RAF_STATUS_FIFO_FULL_SHIFT                       2
#define BCHP_BSPI_RAF_STATUS_FIFO_FULL_DEFAULT                     0x00000000

/* BSPI_RAF :: STATUS :: FIFO_EMPTY [01:01] */
#define BCHP_BSPI_RAF_STATUS_FIFO_EMPTY_MASK                       0x00000002
#define BCHP_BSPI_RAF_STATUS_FIFO_EMPTY_SHIFT                      1
#define BCHP_BSPI_RAF_STATUS_FIFO_EMPTY_DEFAULT                    0x00000001

/* BSPI_RAF :: STATUS :: SESSION_BUSY [00:00] */
#define BCHP_BSPI_RAF_STATUS_SESSION_BUSY_MASK                     0x00000001
#define BCHP_BSPI_RAF_STATUS_SESSION_BUSY_SHIFT                    0
#define BCHP_BSPI_RAF_STATUS_SESSION_BUSY_DEFAULT                  0x00000000

/***************************************************************************
 *READ_DATA - Read data from Raf-buffer
 ***************************************************************************/
/* BSPI_RAF :: READ_DATA :: DATA [31:00] */
#define BCHP_BSPI_RAF_READ_DATA_DATA_MASK                          0xffffffff
#define BCHP_BSPI_RAF_READ_DATA_DATA_SHIFT                         0
#define BCHP_BSPI_RAF_READ_DATA_DATA_DEFAULT                       0x00000000

/***************************************************************************
 *WORD_CNT - Current number of words fetched from Flash
 ***************************************************************************/
/* BSPI_RAF :: WORD_CNT :: CURRENT_WORD_COUNT [31:00] */
#define BCHP_BSPI_RAF_WORD_CNT_CURRENT_WORD_COUNT_MASK             0xffffffff
#define BCHP_BSPI_RAF_WORD_CNT_CURRENT_WORD_COUNT_SHIFT            0
#define BCHP_BSPI_RAF_WORD_CNT_CURRENT_WORD_COUNT_DEFAULT          0x00000000

/***************************************************************************
 *CURR_ADDR - Current read address for the linear read session
 ***************************************************************************/
/* BSPI_RAF :: CURR_ADDR :: CURRENT_ADDRESS [31:00] */
#define BCHP_BSPI_RAF_CURR_ADDR_CURRENT_ADDRESS_MASK               0xffffffff
#define BCHP_BSPI_RAF_CURR_ADDR_CURRENT_ADDRESS_SHIFT              0
#define BCHP_BSPI_RAF_CURR_ADDR_CURRENT_ADDRESS_DEFAULT            0x00000000

#endif /* #ifndef BCHP_BSPI_RAF_H__ */

/* End of File */
