//*****************************************************************************
//
//  Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
//
//
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions
//  are met:
//
//    Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//
//    Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the
//    distribution.
//
//    Neither the name of Texas Instruments Incorporated nor the names of
//    its contributors may be used to endorse or promote products derived
//    from this software without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
//  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
//  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
//  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
//  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
//  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
//  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
//  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
//  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//*****************************************************************************

#ifndef __HW_COMMON_REG_H__
#define __HW_COMMON_REG_H__

//*****************************************************************************
//
// The following are defines for the COMMON_REG register offsets.
//
//*****************************************************************************
#define COMMON_REG_O_I2C_Properties_Register \
                                0x00000000

#define COMMON_REG_O_SPI_Properties_Register \
                                0x00000004

#define COMMON_REG_O_APPS_sh_resource_Interrupt_enable \
                                0x0000000C

#define COMMON_REG_O_APPS_sh_resource_Interrupt_status \
                                0x00000010

#define COMMON_REG_O_NWP_sh_resource_Interrupt_enable \
                                0x00000014

#define COMMON_REG_O_NWP_sh_resource_Interrupt_status \
                                0x00000018

#define COMMON_REG_O_Flash_ctrl_reg \
                                0x0000001C

#define COMMON_REG_O_Bus_matrix_M0_segment_access_config \
                                0x00000024

#define COMMON_REG_O_Bus_matrix_M1_segment_access_config \
                                0x00000028

#define COMMON_REG_O_Bus_matrix_M2_segment_access_config \
                                0x0000002C

#define COMMON_REG_O_Bus_matrix_M3_segment_access_config \
                                0x00000030

#define COMMON_REG_O_Bus_matrix_M4_segment_access_config \
                                0x00000034

#define COMMON_REG_O_Bus_matrix_M5_segment_access_config \
                                0x00000038

#define COMMON_REG_O_GPIO_properties_register \
                                0x0000003C

#define COMMON_REG_O_APPS_NW_SEMAPHORE1 \
                                0x00000040

#define COMMON_REG_O_APPS_NW_SEMAPHORE2 \
                                0x00000044

#define COMMON_REG_O_APPS_NW_SEMAPHORE3 \
                                0x00000048

#define COMMON_REG_O_APPS_NW_SEMAPHORE4 \
                                0x0000004C

#define COMMON_REG_O_APPS_NW_SEMAPHORE5 \
                                0x00000050

#define COMMON_REG_O_APPS_NW_SEMAPHORE6 \
                                0x00000054

#define COMMON_REG_O_APPS_NW_SEMAPHORE7 \
                                0x00000058

#define COMMON_REG_O_APPS_NW_SEMAPHORE8 \
                                0x0000005C

#define COMMON_REG_O_APPS_NW_SEMAPHORE9 \
                                0x00000060

#define COMMON_REG_O_APPS_NW_SEMAPHORE10 \
                                0x00000064

#define COMMON_REG_O_APPS_NW_SEMAPHORE11 \
                                0x00000068

#define COMMON_REG_O_APPS_NW_SEMAPHORE12 \
                                0x0000006C

#define COMMON_REG_O_APPS_SEMAPPHORE_PEND \
                                0x00000070

#define COMMON_REG_O_NW_SEMAPPHORE_PEND \
                                0x00000074

#define COMMON_REG_O_SEMAPHORE_STATUS \
                                0x00000078

#define COMMON_REG_O_IDMEM_TIM_Update \
                                0x0000007C

#define COMMON_REG_O_FPGA_ROM_WR_EN \
                                0x00000080

#define COMMON_REG_O_NW_INT_MASK \
                                0x00000084

#define COMMON_REG_O_NW_INT_MASK_SET \
                                0x00000088

#define COMMON_REG_O_NW_INT_MASK_CLR \
                                0x0000008C

#define COMMON_REG_O_NW_INT_STS_CLR \
                                0x00000090

#define COMMON_REG_O_NW_INT_ACK 0x00000094
#define COMMON_REG_O_NW_INT_TRIG \
                                0x00000098

#define COMMON_REG_O_NW_INT_STS_MASKED \
                                0x0000009C

#define COMMON_REG_O_NW_INT_STS_RAW \
                                0x000000A0

#define COMMON_REG_O_APPS_INT_MASK \
                                0x000000A4

#define COMMON_REG_O_APPS_INT_MASK_SET \
                                0x000000A8

#define COMMON_REG_O_APPS_INT_MASK_CLR \
                                0x000000AC

#define COMMON_REG_O_APPS_INT_STS_CLR \
                                0x000000B0

#define COMMON_REG_O_APPS_INT_ACK \
                                0x000000B4

#define COMMON_REG_O_APPS_INT_TRIG \
                                0x000000B8

#define COMMON_REG_O_APPS_INT_STS_MASKED \
                                0x000000BC

#define COMMON_REG_O_APPS_INT_STS_RAW \
                                0x000000C0

#define COMMON_REG_O_IDMEM_TIM_Updated \
                                0x000000C4

#define COMMON_REG_O_APPS_GPIO_TRIG_EN \
                                0x000000C8

#define COMMON_REG_O_EMU_DEBUG_REG \
                                0x000000CC

#define COMMON_REG_O_SEMAPHORE_STATUS2 \
                                0x000000D0

#define COMMON_REG_O_SEMAPHORE_PREV_OWNER1 \
                                0x000000D4

#define COMMON_REG_O_SEMAPHORE_PREV_OWNER2 \
                                0x000000D8




//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_I2C_Properties_Register register.
//
//******************************************************************************
#define COMMON_REG_I2C_Properties_Register_I2C_Properties_Register_M \
                                0x00000003  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_I2C_Properties_Register_I2C_Properties_Register_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_SPI_Properties_Register register.
//
//******************************************************************************
#define COMMON_REG_SPI_Properties_Register_SPI_Properties_Register_M \
                                0x00000003  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_SPI_Properties_Register_SPI_Properties_Register_S 0

//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_sh_resource_Interrupt_enable register.
//
//******************************************************************************
#define COMMON_REG_APPS_sh_resource_Interrupt_enable_APPS_sh_resource_Interrupt_enable_M \
                                0x0000000F  // Interrupt enable APPS bit 0 ->
                                            // when '1' enable I2C interrupt bit
                                            // 1 -> when '1' enable SPI
                                            // interrupt bit 3 ->
                                            // when '1' enable GPIO interrupt

#define COMMON_REG_APPS_sh_resource_Interrupt_enable_APPS_sh_resource_Interrupt_enable_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_sh_resource_Interrupt_status register.
//
//******************************************************************************
#define COMMON_REG_APPS_sh_resource_Interrupt_status_APPS_sh_resource_Interrupt_status_M \
                                0x0000000F  // Interrupt enable APPS bit 0 ->
                                            // when '1' enable I2C interrupt bit
                                            // 1 -> when '1' enable SPI
                                            // interrupt bit 3 ->
                                            // when '1' enable GPIO interrupt

#define COMMON_REG_APPS_sh_resource_Interrupt_status_APPS_sh_resource_Interrupt_status_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NWP_sh_resource_Interrupt_enable register.
//
//******************************************************************************
#define COMMON_REG_NWP_sh_resource_Interrupt_enable_NWP_sh_resource_Interrupt_enable_M \
                                0x0000000F  // Interrupt enable NWP bit 0 ->
                                            // when '1' enable I2C interrupt bit
                                            // 1 -> when '1' enable SPI
                                            // interrupt bit 3 ->
                                            // when '1' enable GPIO interrupt

#define COMMON_REG_NWP_sh_resource_Interrupt_enable_NWP_sh_resource_Interrupt_enable_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NWP_sh_resource_Interrupt_status register.
//
//******************************************************************************
#define COMMON_REG_NWP_sh_resource_Interrupt_status_NWP_sh_resource_Interrupt_status_M \
                                0x0000000F  // Interrupt enable NWP bit 0 ->
                                            // when '1' enable I2C interrupt bit
                                            // 1 -> when '1' enable SPI
                                            // interrupt bit 3 ->
                                            // when '1' enable GPIO interrupt

#define COMMON_REG_NWP_sh_resource_Interrupt_status_NWP_sh_resource_Interrupt_status_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_Flash_ctrl_reg register.
//
//******************************************************************************
#define COMMON_REG_Flash_ctrl_reg_Flash_ctrl_reg_M \
                                0x00000003  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_Flash_ctrl_reg_Flash_ctrl_reg_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_Bus_matrix_M0_segment_access_config register.
//
//******************************************************************************
#define COMMON_REG_Bus_matrix_M0_segment_access_config_Bus_matrix_M0_segment_access_config_M \
                                0x0003FFFF  // Master 0 control word matrix to
                                            // each segment. Tieoff. Bit value 1
                                            // indicates segment is accesable.

#define COMMON_REG_Bus_matrix_M0_segment_access_config_Bus_matrix_M0_segment_access_config_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_Bus_matrix_M1_segment_access_config register.
//
//******************************************************************************
#define COMMON_REG_Bus_matrix_M1_segment_access_config_Bus_matrix_M1_segment_access_config_M \
                                0x0003FFFF  // Master 1 control word matrix to
                                            // each segment. Tieoff. Bit value 1
                                            // indicates segment is accesable.

#define COMMON_REG_Bus_matrix_M1_segment_access_config_Bus_matrix_M1_segment_access_config_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_Bus_matrix_M2_segment_access_config register.
//
//******************************************************************************
#define COMMON_REG_Bus_matrix_M2_segment_access_config_Bus_matrix_M2_segment_access_config_M \
                                0x0003FFFF  // Master 2 control word matrix to
                                            // each segment. Tieoff. Bit value 1
                                            // indicates segment is accesable.

#define COMMON_REG_Bus_matrix_M2_segment_access_config_Bus_matrix_M2_segment_access_config_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_Bus_matrix_M3_segment_access_config register.
//
//******************************************************************************
#define COMMON_REG_Bus_matrix_M3_segment_access_config_Bus_matrix_M3_segment_access_config_M \
                                0x0003FFFF  // Master 3 control word matrix to
                                            // each segment. Tieoff. Bit value 1
                                            // indicates segment is accesable.

#define COMMON_REG_Bus_matrix_M3_segment_access_config_Bus_matrix_M3_segment_access_config_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_Bus_matrix_M4_segment_access_config register.
//
//******************************************************************************
#define COMMON_REG_Bus_matrix_M4_segment_access_config_Bus_matrix_M4_segment_access_config_M \
                                0x0003FFFF  // Master 4 control word matrix to
                                            // each segment. Tieoff. Bit value 1
                                            // indicates segment is accesable.

#define COMMON_REG_Bus_matrix_M4_segment_access_config_Bus_matrix_M4_segment_access_config_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_Bus_matrix_M5_segment_access_config register.
//
//******************************************************************************
#define COMMON_REG_Bus_matrix_M5_segment_access_config_Bus_matrix_M5_segment_access_config_M \
                                0x0003FFFF  // Master 5 control word matrix to
                                            // each segment. Tieoff. Bit value 1
                                            // indicates segment is accesable.

#define COMMON_REG_Bus_matrix_M5_segment_access_config_Bus_matrix_M5_segment_access_config_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_GPIO_properties_register register.
//
//******************************************************************************
#define COMMON_REG_GPIO_properties_register_GPIO_properties_register_M \
                                0x000003FF  // Shared GPIO configuration
                                            // register. Bit [1:0] to configure
                                            // GPIO0 Bit [3:2] to configure
                                            // GPIO1 Bit [5:4] to configure
                                            // GPIO2 Bit [7:6] to configure
                                            // GPIO3 Bit [9:8] to configure
                                            // GPIO4 each GPIO can be
                                            // individully selected. When “00”
                                            // GPIO is free resource. When “01”
                                            // GPIO is APPS resource. When “10”
                                            // GPIO is NWP resource. Writing 11
                                            // doesnt have any affect, i.e. If
                                            // one write only relevant gpio
                                            // semaphore and other bits are 1s,
                                            // it'll not disturb the other
                                            // semaphore bits. For example : Say
                                            // If NW wants to take control of
                                            // gpio-1, one should write
                                            // 10'b11_1111_1011 and if one wants
                                            // to release it write
                                            // 10'b11_1111_0011.

#define COMMON_REG_GPIO_properties_register_GPIO_properties_register_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE1 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE1_APPS_NW_SEMAPHORE1_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE1_APPS_NW_SEMAPHORE1_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE2 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE2_APPS_NW_SEMAPHORE2_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE2_APPS_NW_SEMAPHORE2_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE3 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE3_APPS_NW_SEMAPHORE3_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE3_APPS_NW_SEMAPHORE3_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE4 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE4_APPS_NW_SEMAPHORE4_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE4_APPS_NW_SEMAPHORE4_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE5 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE5_APPS_NW_SEMAPHORE5_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE5_APPS_NW_SEMAPHORE5_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE6 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE6_APPS_NW_SEMAPHORE6_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE6_APPS_NW_SEMAPHORE6_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE7 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE7_APPS_NW_SEMAPHORE7_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE7_APPS_NW_SEMAPHORE7_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE8 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE8_APPS_NW_SEMAPHORE8_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE8_APPS_NW_SEMAPHORE8_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE9 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE9_APPS_NW_SEMAPHORE9_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE9_APPS_NW_SEMAPHORE9_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE10 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE10_APPS_NW_SEMAPHORE10_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE10_APPS_NW_SEMAPHORE10_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE11 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE11_APPS_NW_SEMAPHORE11_M \
                                0xFFFFFFFF  // • Each semaphore register is of
                                            // 2 bit. • When this register is
                                            // set to 2’b01 – Apps have access
                                            // and when set to 2’b10 – NW have
                                            // access. • Ideally both the master
                                            // can modify any of this 2 bit, but
                                            // assumption apps will write only
                                            // 2’b01 or 2’b00 to this register
                                            // and nw will write only 2’b10 or
                                            // 2’b00. • Implementation is when
                                            // any of the bit of this register
                                            // is set, only next write
                                            // allowedvis 2’b00 – Again
                                            // assumption is one master will not
                                            // write 2’b00 if other is already
                                            // holding the semaphore.

#define COMMON_REG_APPS_NW_SEMAPHORE11_APPS_NW_SEMAPHORE11_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_NW_SEMAPHORE12 register.
//
//******************************************************************************
#define COMMON_REG_APPS_NW_SEMAPHORE12_APPS_NW_SEMAPHORE12_M \
                                0xFFFFFFFF  // APPS NW semaphore register - not
                                            // reflected in status.

#define COMMON_REG_APPS_NW_SEMAPHORE12_APPS_NW_SEMAPHORE12_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_SEMAPPHORE_PEND register.
//
//******************************************************************************
#define COMMON_REG_APPS_SEMAPPHORE_PEND_APPS_SEMAPPHORE_PEND_M \
                                0xFFFFFFFF  // APPS SEMAPOHORE STATUS

#define COMMON_REG_APPS_SEMAPPHORE_PEND_APPS_SEMAPPHORE_PEND_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_SEMAPPHORE_PEND register.
//
//******************************************************************************
#define COMMON_REG_NW_SEMAPPHORE_PEND_NW_SEMAPPHORE_PEND_M \
                                0xFFFFFFFF  // NW SEMAPHORE STATUS

#define COMMON_REG_NW_SEMAPPHORE_PEND_NW_SEMAPPHORE_PEND_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_SEMAPHORE_STATUS register.
//
//******************************************************************************
#define COMMON_REG_SEMAPHORE_STATUS_SEMAPHORE_STATUS_M \
                                0xFFFFFFFF  // SEMAPHORE STATUS 9:8 :semaphore
                                            // status of flash_control 7:6
                                            // :semaphore status of
                                            // gpio_properties 5:4
                                            // :semaphore status of
                                            // spi_propertie 1:0 :semaphore
                                            // status of i2c_propertie

#define COMMON_REG_SEMAPHORE_STATUS_SEMAPHORE_STATUS_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_IDMEM_TIM_Update register.
//
//******************************************************************************
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_FPGA_ROM_WR_EN register.
//
//******************************************************************************
#define COMMON_REG_FPGA_ROM_WR_EN_FPGA_ROM_WR_EN \
                                0x00000001  // when '1' enables Write into
                                            // IDMEM CORE ROM, APPS ROM, NWP ROM

//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_MASK register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_MASK_NW_INT_MASK_M \
                                0xFFFFFFFF  // 1= disable corresponding
                                            // interrupt;0 = interrupt enabled

#define COMMON_REG_NW_INT_MASK_NW_INT_MASK_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_MASK_SET register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_MASK_SET_NW_INT_MASK_SET_M \
                                0xFFFFFFFF  // write 1 to set corresponding bit
                                            // in NW_INT_MASK;0 = no effect

#define COMMON_REG_NW_INT_MASK_SET_NW_INT_MASK_SET_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_MASK_CLR register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_MASK_CLR_NW_INT_MASK_CLR_M \
                                0xFFFFFFFF  // write 1 to clear corresponding
                                            // bit in NW_INT_MASK;0 = no effect

#define COMMON_REG_NW_INT_MASK_CLR_NW_INT_MASK_CLR_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_STS_CLR register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_STS_CLR_NW_INT_STS_CLR_M \
                                0xFFFFFFFF  // write 1 to clear corresponding
                                            // interrupt; 0 = no effect;
                                            // interrupt is not lost if coincide
                                            // with write operation

#define COMMON_REG_NW_INT_STS_CLR_NW_INT_STS_CLR_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_ACK register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_ACK_NW_INT_ACK_M \
                                0xFFFFFFFF  // write 1 to clear corresponding
                                            // interrupt;0 = no effect

#define COMMON_REG_NW_INT_ACK_NW_INT_ACK_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_TRIG register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_TRIG_NW_INT_TRIG_M \
                                0xFFFFFFFF  // Writing a 1 to a bit in this
                                            // register causes the the Host CPU
                                            // if enabled (not masked). This
                                            // register is self-clearing.
                                            // Writing 0 has no effect

#define COMMON_REG_NW_INT_TRIG_NW_INT_TRIG_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_STS_MASKED register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_STS_MASKED_NW_INT_STS_MASKED_M \
                                0xFFFFFFFF  // 1= corresponding interrupt is
                                            // active and not masked. read is
                                            // non-destructive;0 = corresponding
                                            // interrupt is inactive or masked
                                            // by NW_INT mask

#define COMMON_REG_NW_INT_STS_MASKED_NW_INT_STS_MASKED_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_NW_INT_STS_RAW register.
//
//******************************************************************************
#define COMMON_REG_NW_INT_STS_RAW_NW_INT_STS_RAW_M \
                                0xFFFFFFFF  // 1= corresponding interrupt is
                                            // active. read is non-destructive;0
                                            // = corresponding interrupt is
                                            // inactive

#define COMMON_REG_NW_INT_STS_RAW_NW_INT_STS_RAW_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_MASK register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_MASK_APPS_INT_MASK_M \
                                0xFFFFFFFF  // 1= disable corresponding
                                            // interrupt;0 = interrupt enabled

#define COMMON_REG_APPS_INT_MASK_APPS_INT_MASK_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_MASK_SET register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_MASK_SET_APPS_INT_MASK_SET_M \
                                0xFFFFFFFF  // write 1 to set corresponding bit
                                            // in APPS_INT_MASK;0 = no effect

#define COMMON_REG_APPS_INT_MASK_SET_APPS_INT_MASK_SET_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_MASK_CLR register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_MASK_CLR_APPS_INT_MASK_CLR_M \
                                0xFFFFFFFF  // write 1 to clear corresponding
                                            // bit in APPS_INT_MASK;0 = no
                                            // effect

#define COMMON_REG_APPS_INT_MASK_CLR_APPS_INT_MASK_CLR_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_STS_CLR register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_STS_CLR_APPS_INT_STS_CLR_M \
                                0xFFFFFFFF  // write 1 to clear corresponding
                                            // interrupt; 0 = no effect;
                                            // interrupt is not lost if coincide
                                            // with write operation

#define COMMON_REG_APPS_INT_STS_CLR_APPS_INT_STS_CLR_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_ACK register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_ACK_APPS_INT_ACK_M \
                                0xFFFFFFFF  // write 1 to clear corresponding
                                            // interrupt;0 = no effect

#define COMMON_REG_APPS_INT_ACK_APPS_INT_ACK_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_TRIG register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_TRIG_APPS_INT_TRIG_M \
                                0xFFFFFFFF  // Writing a 1 to a bit in this
                                            // register causes the the Host CPU
                                            // if enabled (not masked). This
                                            // register is self-clearing.
                                            // Writing 0 has no effect

#define COMMON_REG_APPS_INT_TRIG_APPS_INT_TRIG_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_STS_MASKED register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_STS_MASKED_APPS_INT_STS_MASKED_M \
                                0xFFFFFFFF  // 1= corresponding interrupt is
                                            // active and not masked. read is
                                            // non-destructive;0 = corresponding
                                            // interrupt is inactive or masked
                                            // by APPS_INT mask

#define COMMON_REG_APPS_INT_STS_MASKED_APPS_INT_STS_MASKED_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_INT_STS_RAW register.
//
//******************************************************************************
#define COMMON_REG_APPS_INT_STS_RAW_APPS_INT_STS_RAW_M \
                                0xFFFFFFFF  // 1= corresponding interrupt is
                                            // active. read is non-destructive;0
                                            // = corresponding interrupt is
                                            // inactive

#define COMMON_REG_APPS_INT_STS_RAW_APPS_INT_STS_RAW_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_IDMEM_TIM_Updated register.
//
//******************************************************************************
#define COMMON_REG_IDMEM_TIM_Updated_TIM_UPDATED \
                                0x00000001  // toggle in this signal
                                            // indicatesIDMEM_TIM_UPDATE
                                            // register mentioned above is
                                            // updated.

//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_APPS_GPIO_TRIG_EN register.
//
//******************************************************************************
#define COMMON_REG_APPS_GPIO_TRIG_EN_APPS_GPIO_TRIG_EN_M \
                                0x0000001F  // APPS GPIO Trigger EN control.
                                            // Bit 0: when '1' enable GPIO 0
                                            // trigger. This bit enables trigger
                                            // for all GPIO 0 pins (GPIO 0 to
                                            // GPIO7). Bit 1: when '1' enable
                                            // GPIO 1 trigger. This bit enables
                                            // trigger for all GPIO 1 pins (
                                            // GPIO8 to GPIO15). Bit 2: when '1'
                                            // enable GPIO 2 trigger. This bit
                                            // enables trigger for all GPIO 2
                                            // pins (GPIO16 to GPIO23). Bit 3:
                                            // when '1' enable GPIO 3 trigger.
                                            // This bit enables trigger for all
                                            // GPIO 3 pins (GPIO24 to GPIO31).
                                            // Bit 4: when '1' enable GPIO 4
                                            // trigger. This bit enables trigger
                                            // for all GPIO 4 pins.(GPIO32 to
                                            // GPIO39)

#define COMMON_REG_APPS_GPIO_TRIG_EN_APPS_GPIO_TRIG_EN_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_EMU_DEBUG_REG register.
//
//******************************************************************************
#define COMMON_REG_EMU_DEBUG_REG_EMU_DEBUG_REG_M \
                                0xFFFFFFFF  // 0 th bit used for stalling APPS
                                            // DMA and 1st bit is used for
                                            // stalling NWP DMA for debug
                                            // purpose. Other bits are unused.

#define COMMON_REG_EMU_DEBUG_REG_EMU_DEBUG_REG_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_SEMAPHORE_STATUS2 register.
//
//******************************************************************************
#define COMMON_REG_SEMAPHORE_STATUS2_SEMPAPHORE_STATUS2_M \
                                0x00FFFFFF  // SEMAPHORE STATUS 23:22
                                            // :semaphore status of
                                            // apps_nw_semaphore11 21:20
                                            // :semaphore status of
                                            // apps_nw_semaphore11 19:18
                                            // :semaphore status of
                                            // apps_nw_semaphore10 17:16
                                            // :semaphore status of
                                            // apps_nw_semaphore9 15:14
                                            // :semaphore status of
                                            // apps_nw_semaphore8 13:12
                                            // :semaphore status of
                                            // apps_nw_semaphore7 11:10
                                            // :semaphore status of
                                            // apps_nw_semaphore6 9:8 :semaphore
                                            // status of apps_nw_semaphore5 7:6
                                            // :semaphore status of
                                            // apps_nw_semaphore4 5:4 :semaphore
                                            // status of apps_nw_semaphore3 3:2
                                            // :semaphore status of
                                            // apps_nw_semaphore2 1:0 :semaphore
                                            // status of apps_nw_semaphore1

#define COMMON_REG_SEMAPHORE_STATUS2_SEMPAPHORE_STATUS2_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_SEMAPHORE_PREV_OWNER1 register.
//
//******************************************************************************
#define COMMON_REG_SEMAPHORE_PREV_OWNER1_SEMAPHORE_PREV_OWNER1_M \
                                0x0003FFFF  // 1:0 : prvious owner of
                                            // i2c_properties_reg[1:0] 3:2 :
                                            // prvious owner of
                                            // spi_properties_reg[1:0] 5:4 :
                                            // prvious owner of
                                            // gpio_properties_reg[1:0] 9:8 :
                                            // prvious owner of
                                            // gpio_properties_reg[3:2] 11:10 :
                                            // prvious owner of
                                            // gpio_properties_reg[5:4] 13:12 :
                                            // prvious owner of
                                            // gpio_properties_reg[7:6] 15:14 :
                                            // prvious owner of
                                            // gpio_properties_reg[9:8] 17:16 :
                                            // prvious owner of
                                            // flash_control_reg[1:0]

#define COMMON_REG_SEMAPHORE_PREV_OWNER1_SEMAPHORE_PREV_OWNER1_S 0
//******************************************************************************
//
// The following are defines for the bit fields in the
// COMMON_REG_O_SEMAPHORE_PREV_OWNER2 register.
//
//******************************************************************************
#define COMMON_REG_SEMAPHORE_PREV_OWNER2_SEMAPHORE_PREV_OWNER2_M \
                                0x00FFFFFF  // 1:0 : previous owner of
                                            // apps_nw_semaphore1_reg[1:0] 3:2 :
                                            // previous owner of
                                            // apps_nw_semaphore2_reg[1:0] 5:4 :
                                            // previous owner of
                                            // apps_nw_semaphore3_reg[1:0] 7:6 :
                                            // previous owner of
                                            // apps_nw_semaphore4_reg[1:0] 9:8 :
                                            // previous owner of
                                            // apps_nw_semaphore5_reg[1:0] 11:10
                                            // : previous owner of
                                            // apps_nw_semaphore6_reg[1:0] 13:12
                                            // : previous owner of
                                            // apps_nw_semaphore7_reg[1:0] 15:14
                                            // : previous owner of
                                            // apps_nw_semaphore8_reg[1:0] 17:16
                                            // : previous owner of
                                            // apps_nw_semaphore9_reg[1:0] 19:18
                                            // : previous owner of
                                            // apps_nw_semaphore10_reg[1:0]
                                            // 21:20 : previous owner of
                                            // apps_nw_semaphore11_reg[1:0]
                                            // 23:22 : previous owner of
                                            // apps_nw_semaphore12_reg[1:0]

#define COMMON_REG_SEMAPHORE_PREV_OWNER2_SEMAPHORE_PREV_OWNER2_S 0



#endif // __HW_COMMON_REG_H__