/********************************************************************************
 * Marvell GPL License Option
 *
 * If you received this File from Marvell, you may opt to use, redistribute and/or
 * modify this File in accordance with the terms and conditions of the General
 * Public License Version 2, June 1991 (the "GPL License"), a copy of which is
 * available along with the File in the license.txt file or by writing to the Free
 * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
 * on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
 * DISCLAIMED.  The GPL License provides additional details about this warranty
 * disclaimer.
 ******************************************************************************/

//////
/// don't edit! auto-generated by docc: GaloisDmaMap.h
////////////////////////////////////////////////////////////
#ifndef GaloisDmaMap_h
#define GaloisDmaMap_h (){}


#include "ctypes.h"

#pragma pack(1)
#ifdef __cplusplus
  extern "C" {
#endif

#ifndef _DOCC_H_BITOPS_
#define _DOCC_H_BITOPS_ (){}

    #define _bSETMASK_(b)                                      ((b)<32 ? (1<<((b)&31)) : 0)
    #define _NSETMASK_(msb,lsb)                                (_bSETMASK_((msb)+1)-_bSETMASK_(lsb))
    #define _bCLRMASK_(b)                                      (~_bSETMASK_(b))
    #define _NCLRMASK_(msb,lsb)                                (~_NSETMASK_(msb,lsb))
    #define _BFGET_(r,msb,lsb)                                 (_NSETMASK_((msb)-(lsb),0)&((r)>>(lsb)))
    #define _BFSET_(r,msb,lsb,v)                               do{ (r)&=_NCLRMASK_(msb,lsb); (r)|=_NSETMASK_(msb,lsb)&((v)<<(lsb)); }while(0)

#endif



//////
/// 
/// $INTERFACE GaloisDmaID                              (4,4)
///     # # ----------------------------------------------------------
///               : maskSys            0xF000
///               : vPro_Sys           0x0
///               : avio_Sys           0x1000
///               : maskDev            0xF00
///               : vProDma_ID         0x100
///               : vProHbo_ID         0x200
///               : vScope0Hbo_ID      0x300
///               : P3Hbo_ID           0x400
///               : QdeQIO_ID          0x700
///               : avioDma_ID         0x0
///               : drmHbo_ID          0x600
///                            ###
///                            * Use (id & maskDev) to determine device id
///                            ###
///               : maskChannel        0xFF
///               : vProDma_Num        0xC
///               : vProHbo_Num        0xC
///               : vScope0Hbo_Num     0xE
///               : P3Hbo_Num          0x9
///               : P3Hbo1_Num         0x1
///               : QdeQIO_Num         0x2
///               : avioDma_Num        0xD
///               : drmHbo_Num         0x9
///                            ###
///                            * Use (id & maskChannel) to match with the following channel IDs
///                            * vPro DMA, 12 Channels
///                            ###
///               : vProDma_Start      0x100
///               : vProDma_End        0x10B
///                            ###
///                            * Total 12 vPro DMA channels; id = 0x0100 ~ 0x010B
///                            ###
///               : m2h_copy           0x100
///               : m2h_copy_cmd_size  0x20
///               : m2h_copy_size      0x200
///                            ###
///                            * Load data from any memory mapped source on XBAR
///                            * Type: DMA
///                            * Cmd FIFO size: 32B
///                            * Data FIFO size: 512B
///                            ###
///               : h2m_copy           0x101
///               : h2m_copy_cmd_size  0x20
///               : h2m_copy_size      0x200
///                            ###
///                            * Send data to any memory mapped target on XBAR
///                            * Type: DMA
///                            * Cmd FIFO size: 32B
///                            * Data FIFO size: 512B
///                            ###
///               : m2h_BiuCfg         0x102
///               : m2h_BiuCfg_cmd_size 0x40
///               : m2h_BiuCfg_size    0x80
///                            ###
///                            * Read the BIU configuration information for vPro slice level initialization via BIU backdoor
///                            * Type: DMA
///                            * Cmd FIFO size: 64B
///                            * Data FIFO size: 128B
///                            ###
///               : h2m_vFmt           0x103
///               : h2m_vFmt_cmd_size  0x40
///               : h2m_vFmt_size      0x400
///                            ###
///                            * video formatter output write channel
///                            * Type: DMA
///                            * Cmd FIFO size: 64B
///                            * Data FIFO size: 1024B
///                            ###
///               : m2h_DsRd           0x104
///               : m2h_DsRd_cmd_size  0x20
///               : m2h_DsRd_size      0x100
///                            ###
///                            * vScope Data Streamer read channel
///                            * Type: DMA
///                            * Cmd FIFO size: 32B
///                            * Data FIFO size: 256B
///                            ###
///               : h2m_DsWr           0x105
///               : h2m_DsWr_cmd_size  0x20
///               : h2m_DsWr_size      0x100
///                            ###
///                            * vScope Data Streamer write channel
///                            * Type: DMA
///                            * Cmd FIFO size: 32B
///                            * Data FIFO size: 256B
///                            ###
///               : m2h_P3dbIn         0x106
///               : m2h_P3DbIn_cmd_size 0x10
///               : m2h_P3dbIn_size    0x80
///                            ###
///                            * Deblocking filter pixel context fetching for VC-1
///                            * Type: DMA
///                            * Cmd FIFO size: 16B
///                            * Data FIFO size: 128B
///                            ###
///               : h2m_P3dbOut        0x107
///               : h2m_P3dbOut_cmd_size 0x10
///               : h2m_P3dbOut_size   0x80
///                            ###
///                            * Deblocking filter pixel context storing for VC-1
///                            * Type: DMA
///                            * Cmd FIFO size: 16B
///                            * Data FIFO size: 128B
///                            ###
///               : m2h_vesIn          0x108
///               : m2h_vesIn_cmd_size 0x80
///               : m2h_vesIn_size     0x100
///                            ###
///                            * VES fetching for vldX
///                            * Type: DMA
///                            * Cmd FIFO size: 128B
///                            * Data FIFO size: 256B
///                            ###
///               : m2h_vld0In         0x109
///               : m2h_vld0In_cmd_size 0x40
///               : m2h_vld0In_size    0x80
///                            ###
///                            * VES fetching for vld0
///                            * Cmd FIFO size: 64B
///                            * Data FIFO size: 128B
///                            ###
///               : h2m_vlcXOut        0x10A
///               : h2m_vlcXOut_cmd_size 0x20
///               : h2m_vlcXOut_size   0x100
///                            ###
///                            * VES out for vlcX
///                            * Cmd FIFO size: 32B
///                            * Data FIFO size: 256B
///                            ###
///               : m2h_vcIn           0x10B
///               : m2h_vcIn_cmd_size  0x100
///               : m2h_vcIn_size      0xF00
///                            ###
///                            * vCache ref region in
///                            * Cmd FIFO size: 256B
///                            * Data FIFO size: 3840B
///                            * End vPro DMA
///                            * vPro HBO, 11 channels
///                            * Purple hilighted is for decoder
///                            * Yellow hilighted is for encoder
///                            * Not hilighted is for both
///                            ###
///               : vProHbo_Start      0x200
///               : vProHbo_End        0x20A
///                            ###
///                            * Total 11 vPro HBO channels, ID = 0x0200 ~ 0x020a
///                            ###
///               : vPro_hctx          0x200
///               : vPro_hctx_size     0x4000
///               : vPro_hctx_addr     0x0
///                            ###
///                            * HCTX
///                            * Type: HBO
///                            * Size: 128Kb (16KB)
///                            * Connection: vPro_hctx<->vScope_hctx
///                            * HBO bank: 0
///                            * Used for decoder mode.
///                            ###
///               : vPro_vxhctx        0x200
///               : vPro_vxhctx_size   0x4000
///               : vPro_vxhctx_addr   0x0
///                            ###
///                            * VXHCTX
///                            * Type: HBO
///                            * Size: 128Kb (16KB)
///                            * Connection: vPro_hctx<->vScope_hctx
///                            * HBO bank: 0
///                            * Used for encoder mode.
///                            ###
///               : vPro_vcMsg         0x201
///               : vPro_vcMsg_size    0x1000
///               : vPro_vcMsg_addr    0x4000
///                            ###
///                            * vCache messages
///                            * Type: HBO
///                            * Size: 32Kb (4KB)
///                            * Connection: vScope_vcMsg->vCache
///                            * HBO Bank: 0
///                            * Used for codec mode.
///                            ###
///               : vPro_p3Msg         0x202
///               : vPro_p3Msg_size    0x1000
///               : vPro_p3Msg_addr    0x5000
///                            ###
///                            * vCache messages
///                            * Type: HBO
///                            * Size: 32Kb (4KB)
///                            * Connection: vScope->P3
///                            * HBO Bank: 0
///                            * Used for decoder
///                            ###
///               : vPro_laInfo        0x202
///               : vPro_laInfo_size   0x400
///               : vPro_laInfo_addr   0x5000
///                            ###
///                            * look ahead information
///                            * Type: HBO
///                            * Size: 32Kb (4KB)
///                            * Connection: vScope->P3
///                            * HBO Bank: 0
///                            * Used for encoder
///                            ###
///               : vPro_qtc           0x203
///               : vPro_qtc_size      0x800
///               : vPro_qtc_addr      0x5800
///                            ###
///                            * vCache messages
///                            * Type: HBO
///                            * Size: 32Kb (4KB)
///                            * Connection: p3-> vx
///                            * HBO Bank: 0
///                            * Used for encoder
///                            * End of Bank 0 / Start of Bank 1; address base = 0x8000
///                            ###
///               : vPro_fop           0x204
///               : vPro_fop_size      0x1000
///               : vPro_fop_addr      0x8000
///                            ###
///                            * FOP
///                            * Type: HBO
///                            * Size: 32Kb (4KB)
///                            * Connection: vScope_fop->PCube
///                            * HBO Bank: 1
///                            ###
///               : vPro_tc            0x205
///               : vPro_tc_size       0x4000
///               : vPro_tc_addr       0x9000
///                            ###
///                            * Transform coefficients
///                            * Type: HBO
///                            * Size: 128Kb (16KB)
///                            * Connection: vScope_tc->PCube
///                            * HBO Bank: 1
///                            * used for decoder
///                            ###
///               : vPro_p3hctx        0x206
///               : vPro_p3hctx_size   0x4000
///               : vPro_p3hctx_addr   0x9000
///                            ###
///                            * Transform coefficients
///                            * Type: HBO
///                            * Size: 128Kb (16KB)
///                            * Connection: vScope_tc->PCube
///                            * HBO Bank: 1
///                            * used for encoder
///                            ###
///               : vPro_mbctx         0x207
///               : vPro_mbctx_size    0x800
///               : vPro_mbctx_addr    0x8000
///                            ###
///                            * mb context
///                            * Type: HBO
///                            * Size: 16Kb (2KB)
///                            * Connection: pCube-> vScope
///                            * HBO Bank: 1
///                            * used for encoder
///                            ###
///               : vPro_mbstat        0x208
///               : vPro_mbstat_size   0x200
///               : vPro_mbstat_addr   0x8800
///                            ###
///                            * mb status
///                            * Type: HBO
///                            * Size: 4Kb (512KB)
///                            * Connection: pCube-> vScope
///                            * HBO Bank: 1
///                            * used for encoder
///                            * End of Bank 1 / Start of Bank 2
///                            ###
///               : vPro_db            0x209
///               : vPro_db_size       0x8000
///               : vPro_db_addr       0x10000
///                            ###
///                            * H.264 Deblocking context
///                            * Type: HBO
///                            * Size: 256Kb (32KB)
///                            * Connection: PCube<->PCube
///                            * HBO Bank: 2
///                            ###
///               : vPro_ip            0x20A
///               : vPro_ip_size       0x2000
///               : vPro_ip_addr       0x18000
///                            ###
///                            * H.264 Intra prediction context
///                            * Type: HBO
///                            * Size: 64Kb (8KB)
///                            * Connection: Pcube.WA<->PCube.RA
///                            * HBO Bank: 2
///                            ###
///               : vPro_ipro          0x20B
///               : vPro_ipro_size     0x2000
///               : vPro_ipro_addr     0x18000
///                            ###
///                            * H.264 Intra prediction context, the same as vPro_ip, but different FIFO channel for simplicity. SW will guarantee no conflict.
///                            * Type: HBO
///                            * Size: 64Kb (8KB)
///                            * Connection: pcube.IPRO<->pcube.RA
///                            * HBO Bank: 2
///                            * End of Bank 2 / End of vPro HBO
///                            * vScope HBO, 14 channels
///                            ###
///               : vScopeHbo0_Start   0x300
///               : vScopeHbo0_End     0x30D
///                            ###
///                            * Total 14 vScope HBO channels; ID = 0x0300 ~ 0x030D
///                            * Start of Bank 0
///                            ###
///               : vScope_hctxIn      0x300
///               : vScope_hctxIn_size 0x200
///                            ###
///                            * vScope HCTX in
///                            * Type: HBO
///                            * Size: 4Kb (512B)
///                            * Connection: vPro_hctx->FIGO0
///                            * Bank: vScope Hbo0 bank0
///                            ###
///               : vScope_hctxOut     0x301
///               : vScope_hctxOut_size 0x200
///                            ###
///                            * vScope HCTX out
///                            * Type: HBO
///                            * Size: 4Kb (512B)
///                            * Connection: FIGO0->vPro_hctx
///                            * Bank: vScope HBO0 bank0
///                            ###
///               : vScope_p3Msg       0x302
///               : vScope_p3Msg_size  0x400
///                            ###
///                            * pCube messages
///                            * Type: HBO
///                            * Size: 8Kb (1KB)
///                            * Connection: FIGO0 -> vPro_p3Msg
///                            * Bank: vScope HBO0 Bank0
///                            ###
///               : vScope_encprop     0x302
///               : vScope_encprop_size 0x80
///                            ###
///                            * The information of first pass encoding and calculated DMV, reuse the P3Msg channel in decoder.
///                            * Type: HBO
///                            * Size: 128 B (at least 16 macroblocks)
///                            * Connection: vScope syntax Processor --> PCube Parser
///                            * Bank: vScope HBO 0 Bank 1
///                            ###
///               : vScope_ds          0x303
///               : vScope_ds_size     0x80
///                            ###
///                            * vScope data streamer command
///                            * Type: HBO
///                            * Size: 1Kb (128B), or 16 entries
///                            * Connection: FIGO0/FIGO1 -> Data Streamer
///                            * Bank: vScope HBO0 Bank0
///                            * End of Bank 0 / Start of BANK 1
///                            ###
///               : vScope_mbctx       0x304
///               : vScope_mbctx_size  0x800
///                            ###
///                            * MBCTX, the whole context of current MB, address comes from another link list
///                            * Type: HBO
///                            * Size: 2048 B
///                            * connection: h2m (from vPro HBO)
///                            * Bank: vScope HBO 0 Bank 0
///                            ###
///               : vScope_ctxAddr     0x305
///               : vScope_ctxAddr_size 0x80
///                            ###
///                            * ctxAddr, the address link list buffer for MBCTX FIFO
///                            * Type: HBO
///                            * Size: 128 B
///                            * Connection: m2h
///                            * Bank: vScope HBO 0 Bank 0
///                            ###
///               : vScope_tc          0x306
///               : vScope_tc_size     0x400
///                            ###
///                            * Transform Coefficients
///                            * Type: HBO
///                            * Size: 8Kb (1KB)
///                            * Connection: FIGO1->vPro_tc
///                            * Bank: vScope HBO1 Bank0
///                            ###
///               : vScope_ds1         0x307
///               : vScope_ds1_size    0x80
///                            ###
///                            * vScope data streamer command 1
///                            * Type: HBO
///                            * Size: 1Kb (128B), or 16 entries
///                            * Connection: FIGO0/FIGO1 -> Data Streamer
///                            * Bank: vScope HBO0 Bank0
///                            ###
///               : vScope_cfg         0x308
///               : vScope_cfg_size    0x80
///                            ###
///                            * configuration channel
///                            * Type: HBO
///                            * Size: 8Kb (1KB)
///                            * Connection: FIGO0/FIGO1 -> biu backdoor configuration
///                            * Bank: vScope HBO 0 Bank1
///                            ###
///               : vScope_vld         0x309
///               : vScope_vld_size    0x80
///                            ###
///                            * VLD alternative input
///                            * Type: HBO
///                            * Size: 8Kb (1KB)
///                            * Connection: FIGO0/FIGO1 -> vldX
///                            * Bank: vScope HBO 0 Bank1
///                            ###
///               : vScope_qtc         0x30A
///               : vScope_qtc_size    0x400
///                            ###
///                            * Quantized coefficients
///                            * Type: HBO
///                            * Size: 8Kb (1KB)
///                            * Connection: vPro_tc -> FIGO1
///                            * Bank: vScope HBO 0 Bank1
///                            ###
///               : vScope_mbstat      0x30B
///               : vScope_mbstat_size 0x100
///                            ###
///                            * Information for VLC encoding and generated by QDQ such as CBP, total zeros/trailing ones.
///                            * Type: HBO
///                            * Size: 256 B (at least 16 macroblocks)
///                            * Connection: PCube Encoder -> vScope Parser
///                            * Bank: vScope HBO 0 Bank 1
///                            * End of Bank 1 / Start of Bank 2
///                            ###
///               : vScope_fop         0x30C
///               : vScope_fop_size    0x400
///                            ###
///                            * FOP messages
///                            * Type: HBO
///                            * Size: 8Kb (1KB)
///                            * Connection: FIGO1 -> vPro_fop
///                            * Bank: vScope HBO0 bank2
///                            ###
///               : vScope_vcMsg       0x30D
///               : vScope_vcMsg_size  0x400
///                            ###
///                            * vCache messages
///                            * Type: HBO
///                            * Size: 8Kb (1KB)
///                            * Connection: FIGO0 -> vPro_vcMsg
///                            * Bank: vScope Hbo0 bank2
///                            * End vScope HBO
///                            * PCube HBO0, 10 channels
///                            ###
///               : P3Hbo_Start        0x400
///               : P3Hbo_End          0x409
///                            ###
///                            * Total 10 PCube HBO channels; ID = 0x0400 ~ 0409
///                            ###
///               : P3CtlMsg           0x400
///               : P3CtlMsg_size      0x100
///                            ###
///                            * PCube message input
///                            * Type: HBO
///                            * Size: 256 B
///                            * Connection: vPro HBO -> PCube
///                            ###
///               : pCube_encprop      0x400
///               : pCube_encprop_size 0x80
///                            ###
///                            * LA information from vScope
///                            * Type: HBO
///                            * Size: 128 B
///                            * Connection: h2m vpro->pcube, reuse the mbprop queue in decoder
///                            ###
///               : RAmsg              0x401
///               : RAmsg_size         0x80
///                            ###
///                            * PCube Read agent message
///                            * Type: HBO
///                            * Size: 128 B
///                            * Connection: PCube,Figo -> PCube.ReadAgent
///                            ###
///               : WAmsg              0x402
///               : WAmsg_size         0xC0
///                            ###
///                            * PCube Write agent message
///                            * Type: HBO
///                            * Size: 192B
///                            * Connection: PCube,Figo -> PCube.WriteAgent
///                            ###
///               : pCube_hctxIn       0x403
///               : pCube_hctxIn_size  0x200
///                            ###
///                            * HCTX output to vPro
///                            * Type: HBO
///                            * Size: 512 B
///                            * Connection: h2m vpro->pcube
///                            ###
///               : pCube_hctxOut      0x404
///               : pCube_hctxOut_size 0x200
///                            ###
///                            * HCTX output to vPro
///                            * Type: HBO
///                            * Size: 512 B
///                            * Connection: m2h pcube->vpro
///                            ###
///               : pCube_mbctx        0x405
///               : pCube_mbctx_size   0x800
///                            ###
///                            * PCube MBCTX
///                            * Type: HBO
///                            * Size: 2048
///                            * Connection: m2h pcube->vpro->vscope
///                            ###
///               : pCube_mbstat       0x406
///               : pCube_mbstat_size  0x100
///                            ###
///                            * MB statistics get from QDQ
///                            * Type: HBO
///                            * Size: 256
///                            * Connection: m2h pcube->vpro->vscope
///                            ###
///               : pCube_fop          0x407
///               : pCube_fop_size     0x200
///                            ###
///                            * FOP for PCube figo3.
///                            * Type: HBO
///                            * Size: 512 B (at least 16 macroblocks)
///                            * Connection: PCube --> RA
///                            * Bank: PCube HBO Bank 1
///                            ###
///               : pCube_ctxAddr      0x408
///               : pCube_ctxAddr_size 0x100
///                            ###
///                            * Address link list FIFO used for mbctx. Needs 32 entries
///                            * Type: HBO
///                            * Size: 128 B
///                            * Connection: m2h
///                            ###
///               : P3_DTCM            0x420
///                            ###
///                            * Memory type access.
///                            * End PCube HBO
///                            * QdeQ Input/Output OCPf, 2 channels, connect to pCube WA/RA
///                            ###
///               : QdeQ_in            0x701
///               : QdeQ_out           0x702
///                            ###
///                            * End QdeQ I/O
///                            * AVIO DMA, 12 channels
///                            ###
///               : avioDma_Start      0x1000
///               : avioDma_End        0x100B
///                            ###
///                            * Total 12 AVIO DMA channels; ID = 0x1000 ~ 0x100B
///                            ###
///               : m2h_i2sOutMain_0   0x1000
///               : m2h_i2sOutMain_0_size 0x200
///                            ###
///                            * For I2S main audio output (7.1)
///                            * Type: DMA
///                            * Size: 4Kb (512B)
///                            * Connection: DDR -> i2s.main[0]
///                            * Semaphore: i2sOutMain_0 (consumer)
///                            ###
///               : m2h_i2sOutMain_1   0x1001
///               : m2h_i2sOutMain_1_size 0x200
///                            ###
///                            * For I2S main audio output (7.1)
///                            * Type: DMA
///                            * Size: 4Kb (512B)
///                            * Connection: DDR -> i2s.main[1]
///                            * Semaphore: i2sOutMain_1 (consumer)
///                            ###
///               : m2h_i2sOutMain_2   0x1002
///               : m2h_i2sOutMain_2_size 0x200
///                            ###
///                            * For I2S main audio output (7.1)
///                            * Type: DMA
///                            * Size: 4Kb (512B)
///                            * Connection: DDR -> i2s.main[2]
///                            * Semaphore: i2sOutMain_2 (consumer)
///                            ###
///               : m2h_i2sOutMain_3   0x1003
///               : m2h_i2sOutMain_3_size 0x200
///                            ###
///                            * For I2S main audio output (7.1)
///                            * Type: DMA
///                            * Size: 4Kb (512B)
///                            * Connection: DDR -> i2s.main[3]
///                            * Semaphore: i2sOutMain_3 (consumer)
///                            ###
///               : m2h_i2sOut2nd      0x1004
///               : m2h_i2sOut2nd_size 0x200
///                            ###
///                            * For I2S 2nd audio output (stereo)
///                            * Type: DMA
///                            * Size: 4Kb (512B)
///                            * Connection: DDR -> i2s.2nd
///                            * Semaphore: i2sOut2nd (consumer)
///                            ###
///               : m2h_SPDIF          0x1005
///               : m2h_SPDIF_size     0x100
///                            ###
///                            * For SPDIF audio output
///                            * Type: DMA
///                            * Size: 2Kb (256B)
///                            * Connection: DDR -> SPDIF
///                            * Semaphore: SPDIF (consumer)
///                            ###
///               : h2m_i2sIn          0x1006
///               : h2m_i2sIn_size     0x100
///                            ###
///                            * For I2S audio input (stereo)
///                            * Type: DMA
///                            * Size: 2Kb (256B)
///                            * Connection: i2s.in -> DDR
///                            * Semaphore: i2sIn (producer)
///                            ###
///               : m2h_vmain          0x1007
///               : m2h_vmain_size     0x800
///                            ###
///                            * For main video (YUV422) output
///                            * Type: DMA
///                            * Size: 16Kb (2KB)
///                            * Connection: DDR -> vop.main
///                            * Semaphore: N/A
///                            ###
///               : m2h_v2nd           0x1008
///               : m2h_v2nd_size      0x800
///                            ###
///                            * For 2nd video (YUV422) output
///                            * Type: DMA
///                            * Size: 16Kb (2KB)
///                            * Connection: DDR -> vop.2nd
///                            * Semaphore: N/A
///                            ###
///               : m2h_gplane0        0x100A
///               : m2h_subtitle_size  0x600
///                            ###
///                            * For RGB graphic plane 0 output
///                            * Type: DMA
///                            * Size: 12Kb (1536B)
///                            * Connection: DDR -> vop.osd.gfx0
///                            * Semaphore: N/A
///                            ###
///               : m2h_gplane1        0x1009
///               : m2h_OSD_size       0x600
///                            ###
///                            * For RGB graphic plane 1 output
///                            * Type: DMA
///                            * Size: 12Kb (1536B)
///                            * Connection: DDR -> vop.osd.gfx1
///                            * Semaphore: N/A
///                            ###
///               : m2h_gplane2        0x100B
///               : m2h_cursor_size    0x200
///                            ###
///                            * For RGB graphic plane 2 output
///                            * Type: DMA
///                            * Size: 4Kb (assuming no wider than 256) (512B)
///                            * Connection: DDR -> vop.osd.cursor
///                            * Semaphore: N/A
///                            * End AVIO DMA
///                            ###
///     @ 0x00000 dummy                (P)
///               %unsigned 1  dummy                     
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:       1b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_GaloisDmaID
#define h_GaloisDmaID (){}

    #define        GaloisDmaID_maskSys                         0xF000
    #define        GaloisDmaID_vPro_Sys                        0x0
    #define        GaloisDmaID_avio_Sys                        0x1000
    #define        GaloisDmaID_maskDev                         0xF00
    #define        GaloisDmaID_vProDma_ID                      0x100
    #define        GaloisDmaID_vProHbo_ID                      0x200
    #define        GaloisDmaID_vScope0Hbo_ID                   0x300
    #define        GaloisDmaID_P3Hbo_ID                        0x400
    #define        GaloisDmaID_QdeQIO_ID                       0x700
    #define        GaloisDmaID_avioDma_ID                      0x0
    #define        GaloisDmaID_drmHbo_ID                       0x600
    #define        GaloisDmaID_maskChannel                     0xFF
    #define        GaloisDmaID_vProDma_Num                     0xC
    #define        GaloisDmaID_vProHbo_Num                     0xC
    #define        GaloisDmaID_vScope0Hbo_Num                  0xE
    #define        GaloisDmaID_P3Hbo_Num                       0x9
    #define        GaloisDmaID_P3Hbo1_Num                      0x1
    #define        GaloisDmaID_QdeQIO_Num                      0x2
    #define        GaloisDmaID_avioDma_Num                     0xD
    #define        GaloisDmaID_drmHbo_Num                      0x9
    #define        GaloisDmaID_vProDma_Start                   0x100
    #define        GaloisDmaID_vProDma_End                     0x10B
    #define        GaloisDmaID_m2h_copy                        0x100
    #define        GaloisDmaID_m2h_copy_cmd_size               0x20
    #define        GaloisDmaID_m2h_copy_size                   0x200
    #define        GaloisDmaID_h2m_copy                        0x101
    #define        GaloisDmaID_h2m_copy_cmd_size               0x20
    #define        GaloisDmaID_h2m_copy_size                   0x200
    #define        GaloisDmaID_m2h_BiuCfg                      0x102
    #define        GaloisDmaID_m2h_BiuCfg_cmd_size             0x40
    #define        GaloisDmaID_m2h_BiuCfg_size                 0x80
    #define        GaloisDmaID_h2m_vFmt                        0x103
    #define        GaloisDmaID_h2m_vFmt_cmd_size               0x40
    #define        GaloisDmaID_h2m_vFmt_size                   0x400
    #define        GaloisDmaID_m2h_DsRd                        0x104
    #define        GaloisDmaID_m2h_DsRd_cmd_size               0x20
    #define        GaloisDmaID_m2h_DsRd_size                   0x100
    #define        GaloisDmaID_h2m_DsWr                        0x105
    #define        GaloisDmaID_h2m_DsWr_cmd_size               0x20
    #define        GaloisDmaID_h2m_DsWr_size                   0x100
    #define        GaloisDmaID_m2h_P3dbIn                      0x106
    #define        GaloisDmaID_m2h_P3DbIn_cmd_size             0x10
    #define        GaloisDmaID_m2h_P3dbIn_size                 0x80
    #define        GaloisDmaID_h2m_P3dbOut                     0x107
    #define        GaloisDmaID_h2m_P3dbOut_cmd_size            0x10
    #define        GaloisDmaID_h2m_P3dbOut_size                0x80
    #define        GaloisDmaID_m2h_vesIn                       0x108
    #define        GaloisDmaID_m2h_vesIn_cmd_size              0x80
    #define        GaloisDmaID_m2h_vesIn_size                  0x100
    #define        GaloisDmaID_m2h_vld0In                      0x109
    #define        GaloisDmaID_m2h_vld0In_cmd_size             0x40
    #define        GaloisDmaID_m2h_vld0In_size                 0x80
    #define        GaloisDmaID_h2m_vlcXOut                     0x10A
    #define        GaloisDmaID_h2m_vlcXOut_cmd_size            0x20
    #define        GaloisDmaID_h2m_vlcXOut_size                0x100
    #define        GaloisDmaID_m2h_vcIn                        0x10B
    #define        GaloisDmaID_m2h_vcIn_cmd_size               0x100
    #define        GaloisDmaID_m2h_vcIn_size                   0xF00
    #define        GaloisDmaID_vProHbo_Start                   0x200
    #define        GaloisDmaID_vProHbo_End                     0x20A
    #define        GaloisDmaID_vPro_hctx                       0x200
    #define        GaloisDmaID_vPro_hctx_size                  0x4000
    #define        GaloisDmaID_vPro_hctx_addr                  0x0
    #define        GaloisDmaID_vPro_vxhctx                     0x200
    #define        GaloisDmaID_vPro_vxhctx_size                0x4000
    #define        GaloisDmaID_vPro_vxhctx_addr                0x0
    #define        GaloisDmaID_vPro_vcMsg                      0x201
    #define        GaloisDmaID_vPro_vcMsg_size                 0x1000
    #define        GaloisDmaID_vPro_vcMsg_addr                 0x4000
    #define        GaloisDmaID_vPro_p3Msg                      0x202
    #define        GaloisDmaID_vPro_p3Msg_size                 0x1000
    #define        GaloisDmaID_vPro_p3Msg_addr                 0x5000
    #define        GaloisDmaID_vPro_laInfo                     0x202
    #define        GaloisDmaID_vPro_laInfo_size                0x400
    #define        GaloisDmaID_vPro_laInfo_addr                0x5000
    #define        GaloisDmaID_vPro_qtc                        0x203
    #define        GaloisDmaID_vPro_qtc_size                   0x800
    #define        GaloisDmaID_vPro_qtc_addr                   0x5800
    #define        GaloisDmaID_vPro_fop                        0x204
    #define        GaloisDmaID_vPro_fop_size                   0x1000
    #define        GaloisDmaID_vPro_fop_addr                   0x8000
    #define        GaloisDmaID_vPro_tc                         0x205
    #define        GaloisDmaID_vPro_tc_size                    0x4000
    #define        GaloisDmaID_vPro_tc_addr                    0x9000
    #define        GaloisDmaID_vPro_p3hctx                     0x206
    #define        GaloisDmaID_vPro_p3hctx_size                0x4000
    #define        GaloisDmaID_vPro_p3hctx_addr                0x9000
    #define        GaloisDmaID_vPro_mbctx                      0x207
    #define        GaloisDmaID_vPro_mbctx_size                 0x800
    #define        GaloisDmaID_vPro_mbctx_addr                 0x8000
    #define        GaloisDmaID_vPro_mbstat                     0x208
    #define        GaloisDmaID_vPro_mbstat_size                0x200
    #define        GaloisDmaID_vPro_mbstat_addr                0x8800
    #define        GaloisDmaID_vPro_db                         0x209
    #define        GaloisDmaID_vPro_db_size                    0x8000
    #define        GaloisDmaID_vPro_db_addr                    0x10000
    #define        GaloisDmaID_vPro_ip                         0x20A
    #define        GaloisDmaID_vPro_ip_size                    0x2000
    #define        GaloisDmaID_vPro_ip_addr                    0x18000
    #define        GaloisDmaID_vPro_ipro                       0x20B
    #define        GaloisDmaID_vPro_ipro_size                  0x2000
    #define        GaloisDmaID_vPro_ipro_addr                  0x18000
    #define        GaloisDmaID_vScopeHbo0_Start                0x300
    #define        GaloisDmaID_vScopeHbo0_End                  0x30D
    #define        GaloisDmaID_vScope_hctxIn                   0x300
    #define        GaloisDmaID_vScope_hctxIn_size              0x200
    #define        GaloisDmaID_vScope_hctxOut                  0x301
    #define        GaloisDmaID_vScope_hctxOut_size             0x200
    #define        GaloisDmaID_vScope_p3Msg                    0x302
    #define        GaloisDmaID_vScope_p3Msg_size               0x400
    #define        GaloisDmaID_vScope_encprop                  0x302
    #define        GaloisDmaID_vScope_encprop_size             0x80
    #define        GaloisDmaID_vScope_ds                       0x303
    #define        GaloisDmaID_vScope_ds_size                  0x80
    #define        GaloisDmaID_vScope_mbctx                    0x304
    #define        GaloisDmaID_vScope_mbctx_size               0x800
    #define        GaloisDmaID_vScope_ctxAddr                  0x305
    #define        GaloisDmaID_vScope_ctxAddr_size             0x80
    #define        GaloisDmaID_vScope_tc                       0x306
    #define        GaloisDmaID_vScope_tc_size                  0x400
    #define        GaloisDmaID_vScope_ds1                      0x307
    #define        GaloisDmaID_vScope_ds1_size                 0x80
    #define        GaloisDmaID_vScope_cfg                      0x308
    #define        GaloisDmaID_vScope_cfg_size                 0x80
    #define        GaloisDmaID_vScope_vld                      0x309
    #define        GaloisDmaID_vScope_vld_size                 0x80
    #define        GaloisDmaID_vScope_qtc                      0x30A
    #define        GaloisDmaID_vScope_qtc_size                 0x400
    #define        GaloisDmaID_vScope_mbstat                   0x30B
    #define        GaloisDmaID_vScope_mbstat_size              0x100
    #define        GaloisDmaID_vScope_fop                      0x30C
    #define        GaloisDmaID_vScope_fop_size                 0x400
    #define        GaloisDmaID_vScope_vcMsg                    0x30D
    #define        GaloisDmaID_vScope_vcMsg_size               0x400
    #define        GaloisDmaID_P3Hbo_Start                     0x400
    #define        GaloisDmaID_P3Hbo_End                       0x409
    #define        GaloisDmaID_P3CtlMsg                        0x400
    #define        GaloisDmaID_P3CtlMsg_size                   0x100
    #define        GaloisDmaID_pCube_encprop                   0x400
    #define        GaloisDmaID_pCube_encprop_size              0x80
    #define        GaloisDmaID_RAmsg                           0x401
    #define        GaloisDmaID_RAmsg_size                      0x80
    #define        GaloisDmaID_WAmsg                           0x402
    #define        GaloisDmaID_WAmsg_size                      0xC0
    #define        GaloisDmaID_pCube_hctxIn                    0x403
    #define        GaloisDmaID_pCube_hctxIn_size               0x200
    #define        GaloisDmaID_pCube_hctxOut                   0x404
    #define        GaloisDmaID_pCube_hctxOut_size              0x200
    #define        GaloisDmaID_pCube_mbctx                     0x405
    #define        GaloisDmaID_pCube_mbctx_size                0x800
    #define        GaloisDmaID_pCube_mbstat                    0x406
    #define        GaloisDmaID_pCube_mbstat_size               0x100
    #define        GaloisDmaID_pCube_fop                       0x407
    #define        GaloisDmaID_pCube_fop_size                  0x200
    #define        GaloisDmaID_pCube_ctxAddr                   0x408
    #define        GaloisDmaID_pCube_ctxAddr_size              0x100
    #define        GaloisDmaID_P3_DTCM                         0x420
    #define        GaloisDmaID_QdeQ_in                         0x701
    #define        GaloisDmaID_QdeQ_out                        0x702
    #define        GaloisDmaID_avioDma_Start                   0x1000
    #define        GaloisDmaID_avioDma_End                     0x100B
    #define        GaloisDmaID_m2h_i2sOutMain_0                0x1000
    #define        GaloisDmaID_m2h_i2sOutMain_0_size           0x200
    #define        GaloisDmaID_m2h_i2sOutMain_1                0x1001
    #define        GaloisDmaID_m2h_i2sOutMain_1_size           0x200
    #define        GaloisDmaID_m2h_i2sOutMain_2                0x1002
    #define        GaloisDmaID_m2h_i2sOutMain_2_size           0x200
    #define        GaloisDmaID_m2h_i2sOutMain_3                0x1003
    #define        GaloisDmaID_m2h_i2sOutMain_3_size           0x200
    #define        GaloisDmaID_m2h_i2sOut2nd                   0x1004
    #define        GaloisDmaID_m2h_i2sOut2nd_size              0x200
    #define        GaloisDmaID_m2h_SPDIF                       0x1005
    #define        GaloisDmaID_m2h_SPDIF_size                  0x100
    #define        GaloisDmaID_h2m_i2sIn                       0x1006
    #define        GaloisDmaID_h2m_i2sIn_size                  0x100
    #define        GaloisDmaID_m2h_vmain                       0x1007
    #define        GaloisDmaID_m2h_vmain_size                  0x800
    #define        GaloisDmaID_m2h_v2nd                        0x1008
    #define        GaloisDmaID_m2h_v2nd_size                   0x800
    #define        GaloisDmaID_m2h_gplane0                     0x100A
    #define        GaloisDmaID_m2h_subtitle_size               0x600
    #define        GaloisDmaID_m2h_gplane1                     0x1009
    #define        GaloisDmaID_m2h_OSD_size                    0x600
    #define        GaloisDmaID_m2h_gplane2                     0x100B
    #define        GaloisDmaID_m2h_cursor_size                 0x200
    ///////////////////////////////////////////////////////////
    #define     RA_GaloisDmaID_dummy                           0x0000

    #define     BA_GaloisDmaID_dummy_dummy                     0x0000
    #define     B16GaloisDmaID_dummy_dummy                     0x0000
    #define   LSb32GaloisDmaID_dummy_dummy                        0
    #define   LSb16GaloisDmaID_dummy_dummy                        0
    #define       bGaloisDmaID_dummy_dummy                     1
    #define   MSK32GaloisDmaID_dummy_dummy                        0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_GaloisDmaID {
    ///////////////////////////////////////////////////////////
    #define   GET32GaloisDmaID_dummy_dummy(r32)                _BFGET_(r32, 0, 0)
    #define   SET32GaloisDmaID_dummy_dummy(r32,v)              _BFSET_(r32, 0, 0,v)
    #define   GET16GaloisDmaID_dummy_dummy(r16)                _BFGET_(r16, 0, 0)
    #define   SET16GaloisDmaID_dummy_dummy(r16,v)              _BFSET_(r16, 0, 0,v)

    #define     w32GaloisDmaID_dummy                           {\
            UNSG32 udummy_dummy                                :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32GaloisDmaID_dummy;
            struct w32GaloisDmaID_dummy;
          };
    ///////////////////////////////////////////////////////////
    } SIE_GaloisDmaID;

    typedef union  T32GaloisDmaID_dummy
          { UNSG32 u32;
            struct w32GaloisDmaID_dummy;
                 } T32GaloisDmaID_dummy;
    ///////////////////////////////////////////////////////////

    typedef union  TGaloisDmaID_dummy
          { UNSG32 u32[1];
            struct {
            struct w32GaloisDmaID_dummy;
                   };
                 } TGaloisDmaID_dummy;

    ///////////////////////////////////////////////////////////
     SIGN32 GaloisDmaID_drvrd(SIE_GaloisDmaID *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 GaloisDmaID_drvwr(SIE_GaloisDmaID *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void GaloisDmaID_reset(SIE_GaloisDmaID *p);
     SIGN32 GaloisDmaID_cmp  (SIE_GaloisDmaID *p, SIE_GaloisDmaID *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define GaloisDmaID_check(p,pie,pfx,hLOG) GaloisDmaID_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define GaloisDmaID_print(p,    pfx,hLOG) GaloisDmaID_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: GaloisDmaID
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE GaloisSemID                              (4,4)
///     # # ----------------------------------------------------------
///               : maskSem            0xF00
///               : vproID             0x0
///               : avioID             0x100
///               : maskChannel        0xFF
///               : vproNum            0x20
///               : avioNum            0x18
///                            ###
///                            * 'vpro-semaphore' channels
///                            ###
///               : dspWb              0x1
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : dbIn               0x2
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : dbWb               0x3
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : ipIn               0x4
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : ipWb               0x5
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : tcIn               0x6
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : fopLd              0x7
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : dpWa               0x8
///                            ###
///                            * Producer & Consumer: PCube data path -> PCube Write Agent
///                            ###
///               : waDp               0x9
///                            ###
///                            * Producer & Consumer: PCube Write Agent -> PCube data path
///                            ###
///               : dpRa               0xA
///                            ###
///                            * Producer & Consumer: PCube data path -> PCube Read Agent
///                            ###
///               : raDp               0xB
///                            ###
///                            * Producer & Consumer: PCube Read Agent -> PCube data path
///                            * 'Global Semaphores 01~31; 16~31 accessible by PCube RA/WA
///                            ###
///               : vhubCh0            0x0
///                            ###
///                            * Interrupt for vPro dHub channel 0
///                            ###
///               : vhubCh1            0x1
///                            ###
///                            * Interrupt for vPro dHub channel 1
///                            ###
///               : vhubCh2            0x2
///                            ###
///                            * Interrupt for vPro dHub channel 2
///                            ###
///               : vhubCh3            0x3
///                            ###
///                            * interrupt for vPro dHub channel 3
///                            ###
///               : vhubCh4            0x4
///                            ###
///                            * interrupt for vPro dHub channel 4
///                            ###
///               : vhubCh5            0x5
///                            ###
///                            * interrupt for vPro dHub channel 5
///                            ###
///               : vhubCh6            0x6
///                            ###
///                            * interrupt for vPro dHub channel 6
///                            ###
///               : vhubCh7            0x7
///                            ###
///                            * interrupt for vPro dHub channel 7
///                            ###
///               : vhubCh8            0x8
///                            ###
///                            * interrupt for vPro dHub channel 8
///                            ###
///               : vhubCh9            0x9
///                            ###
///                            * interrupt for vPro dHub channel 9
///                            ###
///               : vhubChA            0xA
///                            ###
///                            * interrupt for vPro dHub channel 10
///                            ###
///               : vhubChB            0xB
///                            ###
///                            * interrupt for vPro dHub channel 11
///                            ###
///               : vxFigo0            0xC
///                            ###
///                            * vScope syntax processor interrupt; 1bit
///                            ###
///               : vxFigo1            0xD
///                            ###
///                            * vScope stream parser interrupt; 1bit
///                            ###
///               : p3Cmdr             0xE
///                            ###
///                            * PCube commander interrupt; 1bit
///                            ###
///               : p3Ctlr             0xF
///                            ###
///                            * PCube controller interrupt; 1bit
///                            ###
///               : vldX               0x10
///                            ###
///                            * vldX interrupt; 1bit
///                            ###
///               : vld0               0x11
///                            ###
///                            * vld0 interrupt; 1bit
///                            ###
///               : P3db               0x15
///                            ###
///                            * Producer: dma.m2h_P3dbOut; consumer: P3dbIn 16bit
///                            ###
///               : refIn              0x13
///                            ###
///                            * Producer & Consumer: PCube -> PCube
///                            ###
///               : P3EOF              0x14
///                            ###
///                            * pCube end-of-frame interrupt
///                            ###
///               : P3Dbg              0x12
///                            ###
///                            * pCube debug semaphore (software only)
///                            ###
///               : refIn2             0x16
///                            ###
///                            * Producer & Consumer: PCube DR -> PCube encoder
///                            ###
///     @ 0x00000 vpro                 (P)
///               %unsigned 16 SemaphoreNum              0x20
///               %%        16         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       4B, bits:      16b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_GaloisSemID
#define h_GaloisSemID (){}

    #define        GaloisSemID_maskSem                         0xF00
    #define        GaloisSemID_vproID                          0x0
    #define        GaloisSemID_avioID                          0x100
    #define        GaloisSemID_maskChannel                     0xFF
    #define        GaloisSemID_vproNum                         0x20
    #define        GaloisSemID_avioNum                         0x18
    #define        GaloisSemID_dspWb                           0x1
    #define        GaloisSemID_dbIn                            0x2
    #define        GaloisSemID_dbWb                            0x3
    #define        GaloisSemID_ipIn                            0x4
    #define        GaloisSemID_ipWb                            0x5
    #define        GaloisSemID_tcIn                            0x6
    #define        GaloisSemID_fopLd                           0x7
    #define        GaloisSemID_dpWa                            0x8
    #define        GaloisSemID_waDp                            0x9
    #define        GaloisSemID_dpRa                            0xA
    #define        GaloisSemID_raDp                            0xB
    #define        GaloisSemID_vhubCh0                         0x0
    #define        GaloisSemID_vhubCh1                         0x1
    #define        GaloisSemID_vhubCh2                         0x2
    #define        GaloisSemID_vhubCh3                         0x3
    #define        GaloisSemID_vhubCh4                         0x4
    #define        GaloisSemID_vhubCh5                         0x5
    #define        GaloisSemID_vhubCh6                         0x6
    #define        GaloisSemID_vhubCh7                         0x7
    #define        GaloisSemID_vhubCh8                         0x8
    #define        GaloisSemID_vhubCh9                         0x9
    #define        GaloisSemID_vhubChA                         0xA
    #define        GaloisSemID_vhubChB                         0xB
    #define        GaloisSemID_vxFigo0                         0xC
    #define        GaloisSemID_vxFigo1                         0xD
    #define        GaloisSemID_p3Cmdr                          0xE
    #define        GaloisSemID_p3Ctlr                          0xF
    #define        GaloisSemID_vldX                            0x10
    #define        GaloisSemID_vld0                            0x11
    #define        GaloisSemID_P3db                            0x15
    #define        GaloisSemID_refIn                           0x13
    #define        GaloisSemID_P3EOF                           0x14
    #define        GaloisSemID_P3Dbg                           0x12
    #define        GaloisSemID_refIn2                          0x16
    ///////////////////////////////////////////////////////////
    #define     RA_GaloisSemID_vpro                            0x0000

    #define     BA_GaloisSemID_vpro_SemaphoreNum               0x0000
    #define     B16GaloisSemID_vpro_SemaphoreNum               0x0000
    #define   LSb32GaloisSemID_vpro_SemaphoreNum                  0
    #define   LSb16GaloisSemID_vpro_SemaphoreNum                  0
    #define       bGaloisSemID_vpro_SemaphoreNum               16
    #define   MSK32GaloisSemID_vpro_SemaphoreNum                  0x0000FFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_GaloisSemID {
    ///////////////////////////////////////////////////////////
    #define   GET32GaloisSemID_vpro_SemaphoreNum(r32)          _BFGET_(r32,15, 0)
    #define   SET32GaloisSemID_vpro_SemaphoreNum(r32,v)        _BFSET_(r32,15, 0,v)
    #define   GET16GaloisSemID_vpro_SemaphoreNum(r16)          _BFGET_(r16,15, 0)
    #define   SET16GaloisSemID_vpro_SemaphoreNum(r16,v)        _BFSET_(r16,15, 0,v)

    #define     w32GaloisSemID_vpro                            {\
            UNSG32 uvpro_SemaphoreNum                          : 16;\
            UNSG32 RSVDx0_b16                                  : 16;\
          }
    union { UNSG32 u32GaloisSemID_vpro;
            struct w32GaloisSemID_vpro;
          };
    ///////////////////////////////////////////////////////////
    } SIE_GaloisSemID;

    typedef union  T32GaloisSemID_vpro
          { UNSG32 u32;
            struct w32GaloisSemID_vpro;
                 } T32GaloisSemID_vpro;
    ///////////////////////////////////////////////////////////

    typedef union  TGaloisSemID_vpro
          { UNSG32 u32[1];
            struct {
            struct w32GaloisSemID_vpro;
                   };
                 } TGaloisSemID_vpro;

    ///////////////////////////////////////////////////////////
     SIGN32 GaloisSemID_drvrd(SIE_GaloisSemID *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 GaloisSemID_drvwr(SIE_GaloisSemID *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void GaloisSemID_reset(SIE_GaloisSemID *p);
     SIGN32 GaloisSemID_cmp  (SIE_GaloisSemID *p, SIE_GaloisSemID *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define GaloisSemID_check(p,pie,pfx,hLOG) GaloisSemID_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define GaloisSemID_print(p,    pfx,hLOG) GaloisSemID_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: GaloisSemID
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: GaloisDmaMap.h
////////////////////////////////////////////////////////////

