/********************************************************************************
 * 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: aio.h
////////////////////////////////////////////////////////////
#ifndef aio_h
#define aio_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 PRIAUD                  biu              (4,4)
///     ###
///     * Audio Port configuration registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 CLKDIV               (RW)
///               ###
///               * Audio Master Clock (MCLK) Divider register decides the ratio between MCLK and Audio Bit Clock (BCLK).
///               ###
///               %unsigned 3  SETTING                   0x2
///                                    ###
///                                    * MCLK Divider setting:
///                                    * 0 : Divide by 1
///                                    * 1: Divide by 2 (default)
///                                    * 2: Divide by 4
///                                    * 3 : Divide by 8
///                                    * 4: Divide by 16
///                                    * 5: Divide by 32
///                                    * 6: Divide by 64
///                                    * 7: Divide by 128
///                                    ###
///                                    : DIV1                      0x0
///                                    : DIV2                      0x1
///                                    : DIV4                      0x2
///                                    : DIV8                      0x3
///                                    : DIV16                     0x4
///                                    : DIV32                     0x5
///                                    : DIV64                     0x6
///                                    : DIV128                    0x7
///               %%        29         # Stuffing bits...
///     @ 0x00004 CTRL                 (RW)
///               ###
///               * Register to Control the Output data format for a audio Port
///               ###
///               %unsigned 1  LEFTJFY                   0x0
///                                    ###
///                                    * Decides the Audio Justify mode:
///                                    * 0 : Left Justify (default).
///                                    * 1 : Right Justify.
///                                    ###
///                                    : LEFT                      0x0
///                                    : RIGHT                     0x1
///               %unsigned 1  INVCLK                    0x0
///                                    ###
///                                    * Invert Bit clock (BCLK):
///                                    * 0 - Normal, data is send/received with Rising edge of bit-Clock (default).
///                                    * Note: For TX: Use this setting if DAC is sampling data at negative edge of bit clock.
///                                    * Note: For RX: Use this setting if ADC is sending data at negative edge of bit clock.
///                                    * 1 - Inverted, data is send/received with Falling edge of bit-Clock.
///                                    * Note: For TX: Use this setting if DAC is sampling data at positive edge of bit clock.
///                                    * Note: For RX: Use this setting if ADC is sending data at positive edge of bit clock.
///                                    ###
///                                    : NORMAL                    0x0
///                                    : INVERTED                  0x1
///               %unsigned 1  INVFS                     0x1
///                                    ###
///                                    * Invert Frame Sync (LR Clock):
///                                    * 0: Normal, FSYNC is Low during reset and goes High when first channel (Left) data is transmitted and keeps toggling after that.
///                                    * 1: Inverted, FSYNC is High during reset and goes Low when first channel (Left) data is transmitted and keeps toggling after that. (default)
///                                    * Note: Not used for RX port (MIC).
///                                    ###
///                                    : NORMAL                    0x0
///                                    : INVERTED                  0x1
///               %unsigned 1  TLSB                      0x0
///                                    ###
///                                    * Decides which bit is transmitted/received first(left):
///                                    * 0: MSB first
///                                    * 1: LSB first
///                                    ###
///                                    : MSB_FIRST                 0x0
///                                    : LSB_FIRST                 0x1
///               %unsigned 3  TDM                       0x0
///                                    ###
///                                    * Decides the channel resolution (number of valid bits in a half period of FSYNC):
///                                    * 0: 16-bits per channel
///                                    * 1: 18-bits per channel
///                                    * 2: 20-bits per channel
///                                    * 3: 24-bits per channel
///                                    * 4: 32-bits per channel
///                                    * 5-7: Reserved
///                                    * Note: HD port only support 16-bits per channel
///                                    ###
///                                    : 16DFM                     0x0
///                                    : 18DFM                     0x1
///                                    : 20DFM                     0x2
///                                    : 24DFM                     0x3
///                                    : 32DFM                     0x4
///               %unsigned 2  TCF                       0x2
///                                    ###
///                                    * Decides the half period of FSYNC (sampling rate) in terms of number of bit-clocks:
///                                    * 0: FSYNC half period equals to 16 bit-clocks
///                                    * 1: FSYNC half period equals to 24 bit-clocks
///                                    * 2: FSYNC half period equals to 32 bit-clocks
///                                    * 3: Reserved
///                                    ###
///                                    : 16CFM                     0x0
///                                    : 24CFM                     0x1
///                                    : 32CFM                     0x2
///               %unsigned 2  TFM                       0x2
///                                    ###
///                                    * Decides the TX/RX data format:
///                                    * 1: Justified
///                                    * 2: I2S (default)
///                                    * 0 and 3: Reserved
///                                    ###
///                                    : JUSTIFIED                 0x1
///                                    : I2S                       0x2
///               %%        21         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:       8B, bits:      14b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_PRIAUD
#define h_PRIAUD (){}

    #define     RA_PRIAUD_CLKDIV                               0x0000

    #define     BA_PRIAUD_CLKDIV_SETTING                       0x0000
    #define     B16PRIAUD_CLKDIV_SETTING                       0x0000
    #define   LSb32PRIAUD_CLKDIV_SETTING                          0
    #define   LSb16PRIAUD_CLKDIV_SETTING                          0
    #define       bPRIAUD_CLKDIV_SETTING                       3
    #define   MSK32PRIAUD_CLKDIV_SETTING                          0x00000007
    #define        PRIAUD_CLKDIV_SETTING_DIV1                               0x0
    #define        PRIAUD_CLKDIV_SETTING_DIV2                               0x1
    #define        PRIAUD_CLKDIV_SETTING_DIV4                               0x2
    #define        PRIAUD_CLKDIV_SETTING_DIV8                               0x3
    #define        PRIAUD_CLKDIV_SETTING_DIV16                              0x4
    #define        PRIAUD_CLKDIV_SETTING_DIV32                              0x5
    #define        PRIAUD_CLKDIV_SETTING_DIV64                              0x6
    #define        PRIAUD_CLKDIV_SETTING_DIV128                             0x7
    ///////////////////////////////////////////////////////////
    #define     RA_PRIAUD_CTRL                                 0x0004

    #define     BA_PRIAUD_CTRL_LEFTJFY                         0x0004
    #define     B16PRIAUD_CTRL_LEFTJFY                         0x0004
    #define   LSb32PRIAUD_CTRL_LEFTJFY                            0
    #define   LSb16PRIAUD_CTRL_LEFTJFY                            0
    #define       bPRIAUD_CTRL_LEFTJFY                         1
    #define   MSK32PRIAUD_CTRL_LEFTJFY                            0x00000001
    #define        PRIAUD_CTRL_LEFTJFY_LEFT                                 0x0
    #define        PRIAUD_CTRL_LEFTJFY_RIGHT                                0x1

    #define     BA_PRIAUD_CTRL_INVCLK                          0x0004
    #define     B16PRIAUD_CTRL_INVCLK                          0x0004
    #define   LSb32PRIAUD_CTRL_INVCLK                             1
    #define   LSb16PRIAUD_CTRL_INVCLK                             1
    #define       bPRIAUD_CTRL_INVCLK                          1
    #define   MSK32PRIAUD_CTRL_INVCLK                             0x00000002
    #define        PRIAUD_CTRL_INVCLK_NORMAL                                0x0
    #define        PRIAUD_CTRL_INVCLK_INVERTED                              0x1

    #define     BA_PRIAUD_CTRL_INVFS                           0x0004
    #define     B16PRIAUD_CTRL_INVFS                           0x0004
    #define   LSb32PRIAUD_CTRL_INVFS                              2
    #define   LSb16PRIAUD_CTRL_INVFS                              2
    #define       bPRIAUD_CTRL_INVFS                           1
    #define   MSK32PRIAUD_CTRL_INVFS                              0x00000004
    #define        PRIAUD_CTRL_INVFS_NORMAL                                 0x0
    #define        PRIAUD_CTRL_INVFS_INVERTED                               0x1

    #define     BA_PRIAUD_CTRL_TLSB                            0x0004
    #define     B16PRIAUD_CTRL_TLSB                            0x0004
    #define   LSb32PRIAUD_CTRL_TLSB                               3
    #define   LSb16PRIAUD_CTRL_TLSB                               3
    #define       bPRIAUD_CTRL_TLSB                            1
    #define   MSK32PRIAUD_CTRL_TLSB                               0x00000008
    #define        PRIAUD_CTRL_TLSB_MSB_FIRST                               0x0
    #define        PRIAUD_CTRL_TLSB_LSB_FIRST                               0x1

    #define     BA_PRIAUD_CTRL_TDM                             0x0004
    #define     B16PRIAUD_CTRL_TDM                             0x0004
    #define   LSb32PRIAUD_CTRL_TDM                                4
    #define   LSb16PRIAUD_CTRL_TDM                                4
    #define       bPRIAUD_CTRL_TDM                             3
    #define   MSK32PRIAUD_CTRL_TDM                                0x00000070
    #define        PRIAUD_CTRL_TDM_16DFM                                    0x0
    #define        PRIAUD_CTRL_TDM_18DFM                                    0x1
    #define        PRIAUD_CTRL_TDM_20DFM                                    0x2
    #define        PRIAUD_CTRL_TDM_24DFM                                    0x3
    #define        PRIAUD_CTRL_TDM_32DFM                                    0x4

    #define     BA_PRIAUD_CTRL_TCF                             0x0004
    #define     B16PRIAUD_CTRL_TCF                             0x0004
    #define   LSb32PRIAUD_CTRL_TCF                                7
    #define   LSb16PRIAUD_CTRL_TCF                                7
    #define       bPRIAUD_CTRL_TCF                             2
    #define   MSK32PRIAUD_CTRL_TCF                                0x00000180
    #define        PRIAUD_CTRL_TCF_16CFM                                    0x0
    #define        PRIAUD_CTRL_TCF_24CFM                                    0x1
    #define        PRIAUD_CTRL_TCF_32CFM                                    0x2

    #define     BA_PRIAUD_CTRL_TFM                             0x0005
    #define     B16PRIAUD_CTRL_TFM                             0x0004
    #define   LSb32PRIAUD_CTRL_TFM                                9
    #define   LSb16PRIAUD_CTRL_TFM                                9
    #define       bPRIAUD_CTRL_TFM                             2
    #define   MSK32PRIAUD_CTRL_TFM                                0x00000600
    #define        PRIAUD_CTRL_TFM_JUSTIFIED                                0x1
    #define        PRIAUD_CTRL_TFM_I2S                                      0x2
    ///////////////////////////////////////////////////////////

    typedef struct SIE_PRIAUD {
    ///////////////////////////////////////////////////////////
    #define   GET32PRIAUD_CLKDIV_SETTING(r32)                  _BFGET_(r32, 2, 0)
    #define   SET32PRIAUD_CLKDIV_SETTING(r32,v)                _BFSET_(r32, 2, 0,v)
    #define   GET16PRIAUD_CLKDIV_SETTING(r16)                  _BFGET_(r16, 2, 0)
    #define   SET16PRIAUD_CLKDIV_SETTING(r16,v)                _BFSET_(r16, 2, 0,v)

    #define     w32PRIAUD_CLKDIV                               {\
            UNSG32 uCLKDIV_SETTING                             :  3;\
            UNSG32 RSVDx0_b3                                   : 29;\
          }
    union { UNSG32 u32PRIAUD_CLKDIV;
            struct w32PRIAUD_CLKDIV;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32PRIAUD_CTRL_LEFTJFY(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32PRIAUD_CTRL_LEFTJFY(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16PRIAUD_CTRL_LEFTJFY(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16PRIAUD_CTRL_LEFTJFY(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32PRIAUD_CTRL_INVCLK(r32)                     _BFGET_(r32, 1, 1)
    #define   SET32PRIAUD_CTRL_INVCLK(r32,v)                   _BFSET_(r32, 1, 1,v)
    #define   GET16PRIAUD_CTRL_INVCLK(r16)                     _BFGET_(r16, 1, 1)
    #define   SET16PRIAUD_CTRL_INVCLK(r16,v)                   _BFSET_(r16, 1, 1,v)

    #define   GET32PRIAUD_CTRL_INVFS(r32)                      _BFGET_(r32, 2, 2)
    #define   SET32PRIAUD_CTRL_INVFS(r32,v)                    _BFSET_(r32, 2, 2,v)
    #define   GET16PRIAUD_CTRL_INVFS(r16)                      _BFGET_(r16, 2, 2)
    #define   SET16PRIAUD_CTRL_INVFS(r16,v)                    _BFSET_(r16, 2, 2,v)

    #define   GET32PRIAUD_CTRL_TLSB(r32)                       _BFGET_(r32, 3, 3)
    #define   SET32PRIAUD_CTRL_TLSB(r32,v)                     _BFSET_(r32, 3, 3,v)
    #define   GET16PRIAUD_CTRL_TLSB(r16)                       _BFGET_(r16, 3, 3)
    #define   SET16PRIAUD_CTRL_TLSB(r16,v)                     _BFSET_(r16, 3, 3,v)

    #define   GET32PRIAUD_CTRL_TDM(r32)                        _BFGET_(r32, 6, 4)
    #define   SET32PRIAUD_CTRL_TDM(r32,v)                      _BFSET_(r32, 6, 4,v)
    #define   GET16PRIAUD_CTRL_TDM(r16)                        _BFGET_(r16, 6, 4)
    #define   SET16PRIAUD_CTRL_TDM(r16,v)                      _BFSET_(r16, 6, 4,v)

    #define   GET32PRIAUD_CTRL_TCF(r32)                        _BFGET_(r32, 8, 7)
    #define   SET32PRIAUD_CTRL_TCF(r32,v)                      _BFSET_(r32, 8, 7,v)
    #define   GET16PRIAUD_CTRL_TCF(r16)                        _BFGET_(r16, 8, 7)
    #define   SET16PRIAUD_CTRL_TCF(r16,v)                      _BFSET_(r16, 8, 7,v)

    #define   GET32PRIAUD_CTRL_TFM(r32)                        _BFGET_(r32,10, 9)
    #define   SET32PRIAUD_CTRL_TFM(r32,v)                      _BFSET_(r32,10, 9,v)
    #define   GET16PRIAUD_CTRL_TFM(r16)                        _BFGET_(r16,10, 9)
    #define   SET16PRIAUD_CTRL_TFM(r16,v)                      _BFSET_(r16,10, 9,v)

    #define     w32PRIAUD_CTRL                                 {\
            UNSG32 uCTRL_LEFTJFY                               :  1;\
            UNSG32 uCTRL_INVCLK                                :  1;\
            UNSG32 uCTRL_INVFS                                 :  1;\
            UNSG32 uCTRL_TLSB                                  :  1;\
            UNSG32 uCTRL_TDM                                   :  3;\
            UNSG32 uCTRL_TCF                                   :  2;\
            UNSG32 uCTRL_TFM                                   :  2;\
            UNSG32 RSVDx4_b11                                  : 21;\
          }
    union { UNSG32 u32PRIAUD_CTRL;
            struct w32PRIAUD_CTRL;
          };
    ///////////////////////////////////////////////////////////
    } SIE_PRIAUD;

    typedef union  T32PRIAUD_CLKDIV
          { UNSG32 u32;
            struct w32PRIAUD_CLKDIV;
                 } T32PRIAUD_CLKDIV;
    typedef union  T32PRIAUD_CTRL
          { UNSG32 u32;
            struct w32PRIAUD_CTRL;
                 } T32PRIAUD_CTRL;
    ///////////////////////////////////////////////////////////

    typedef union  TPRIAUD_CLKDIV
          { UNSG32 u32[1];
            struct {
            struct w32PRIAUD_CLKDIV;
                   };
                 } TPRIAUD_CLKDIV;
    typedef union  TPRIAUD_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32PRIAUD_CTRL;
                   };
                 } TPRIAUD_CTRL;

    ///////////////////////////////////////////////////////////
     SIGN32 PRIAUD_drvrd(SIE_PRIAUD *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 PRIAUD_drvwr(SIE_PRIAUD *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void PRIAUD_reset(SIE_PRIAUD *p);
     SIGN32 PRIAUD_cmp  (SIE_PRIAUD *p, SIE_PRIAUD *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define PRIAUD_check(p,pie,pfx,hLOG) PRIAUD_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define PRIAUD_print(p,    pfx,hLOG) PRIAUD_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: PRIAUD
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE AUDCH                   biu              (4,4)
///     ###
///     * Audio Port Control registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 CTRL                 (RW)
///               ###
///               * Audio Port Control register
///               ###
///               %unsigned 1  ENABLE                    0x0
///                                    ###
///                                    * Control bit to enable/disable an audio channel:
///                                    * 0: Disable a audio Channel (default)
///                                    * 1: Enable a audio Channel
///                                    * Note: Bit-clock (BCLK) is not controlled using this bit. For switching off the Bit Clock the output enable register should be used(IOSEL).
///                                    ###
///                                    : DISABLE                   0x0
///                                    : ENABLE                    0x1
///               %unsigned 1  MUTE                      0x0
///                                    ###
///                                    * Control bit to turn mute function ON or OFF
///                                    * 0: Mute turned OFF (default)
///                                    * 1: Mute turned ON
///                                    ###
///                                    : MUTE_OFF                  0x0
///                                    : MUTE_ON                   0x1
///               %unsigned 1  LRSWITCH                  0x0
///                                    ###
///                                    * Control bit for switching the left channel data with right channel data:
///                                    * 0: Do not switch data (default)
///                                    * 1: Switch Data
///                                    * Note: Not supported for S/PDIF.
///                                    ###
///                                    : SWITCH_OFF                0x0
///                                    : SWITCH_ON                 0x1
///               %unsigned 1  DEBUGEN                   0x0
///                                    ###
///                                    * Control bit to enable/disable Debug mode:
///                                    * 0: Disable (default)
///                                    * 1: Enable
///                                    * Note: In debug mode transmit data is from debug registers.
///                                    * *INTERNAL_ONLY**
///                                    ###
///                                    : DISABLE                   0x0
///                                    : ENABLE                    0x1
///               %unsigned 1  FLUSH                     0x0
///                                    ###
///                                    * Control bit to clear the Data FIFO pointers related to a port:
///                                    * 0: Do not flush (default)
///                                    * 1: Flush
///                                    ###
///                                    : ON                        0x1
///                                    : OFF                       0x0
///               %%        27         # Stuffing bits...
///     @ 0x00004 DEBUGHI              (RW)
///               ###
///               * Upper 32-bit Debug data
///               ###
///               %unsigned 32 DATAHI                    0x4884103F
///                                    ###
///                                    * Upper 32-bit Debug data
///                                    * *INTERNAL_ONLY**
///                                    ###
///     @ 0x00008 DEBUGLO              (RW)
///               ###
///               * Lower 32-bit Debug data
///               ###
///               %unsigned 32 DATALO                    0xB77BEFC0
///                                    ###
///                                    * Lower 32-bit Debug data
///                                    * *INTERNAL_ONLY**
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      12B, bits:      69b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_AUDCH
#define h_AUDCH (){}

    #define     RA_AUDCH_CTRL                                  0x0000

    #define     BA_AUDCH_CTRL_ENABLE                           0x0000
    #define     B16AUDCH_CTRL_ENABLE                           0x0000
    #define   LSb32AUDCH_CTRL_ENABLE                              0
    #define   LSb16AUDCH_CTRL_ENABLE                              0
    #define       bAUDCH_CTRL_ENABLE                           1
    #define   MSK32AUDCH_CTRL_ENABLE                              0x00000001
    #define        AUDCH_CTRL_ENABLE_DISABLE                                0x0
    #define        AUDCH_CTRL_ENABLE_ENABLE                                 0x1

    #define     BA_AUDCH_CTRL_MUTE                             0x0000
    #define     B16AUDCH_CTRL_MUTE                             0x0000
    #define   LSb32AUDCH_CTRL_MUTE                                1
    #define   LSb16AUDCH_CTRL_MUTE                                1
    #define       bAUDCH_CTRL_MUTE                             1
    #define   MSK32AUDCH_CTRL_MUTE                                0x00000002
    #define        AUDCH_CTRL_MUTE_MUTE_OFF                                 0x0
    #define        AUDCH_CTRL_MUTE_MUTE_ON                                  0x1

    #define     BA_AUDCH_CTRL_LRSWITCH                         0x0000
    #define     B16AUDCH_CTRL_LRSWITCH                         0x0000
    #define   LSb32AUDCH_CTRL_LRSWITCH                            2
    #define   LSb16AUDCH_CTRL_LRSWITCH                            2
    #define       bAUDCH_CTRL_LRSWITCH                         1
    #define   MSK32AUDCH_CTRL_LRSWITCH                            0x00000004
    #define        AUDCH_CTRL_LRSWITCH_SWITCH_OFF                           0x0
    #define        AUDCH_CTRL_LRSWITCH_SWITCH_ON                            0x1

    #define     BA_AUDCH_CTRL_DEBUGEN                          0x0000
    #define     B16AUDCH_CTRL_DEBUGEN                          0x0000
    #define   LSb32AUDCH_CTRL_DEBUGEN                             3
    #define   LSb16AUDCH_CTRL_DEBUGEN                             3
    #define       bAUDCH_CTRL_DEBUGEN                          1
    #define   MSK32AUDCH_CTRL_DEBUGEN                             0x00000008
    #define        AUDCH_CTRL_DEBUGEN_DISABLE                               0x0
    #define        AUDCH_CTRL_DEBUGEN_ENABLE                                0x1

    #define     BA_AUDCH_CTRL_FLUSH                            0x0000
    #define     B16AUDCH_CTRL_FLUSH                            0x0000
    #define   LSb32AUDCH_CTRL_FLUSH                               4
    #define   LSb16AUDCH_CTRL_FLUSH                               4
    #define       bAUDCH_CTRL_FLUSH                            1
    #define   MSK32AUDCH_CTRL_FLUSH                               0x00000010
    #define        AUDCH_CTRL_FLUSH_ON                                      0x1
    #define        AUDCH_CTRL_FLUSH_OFF                                     0x0
    ///////////////////////////////////////////////////////////
    #define     RA_AUDCH_DEBUGHI                               0x0004

    #define     BA_AUDCH_DEBUGHI_DATAHI                        0x0004
    #define     B16AUDCH_DEBUGHI_DATAHI                        0x0004
    #define   LSb32AUDCH_DEBUGHI_DATAHI                           0
    #define   LSb16AUDCH_DEBUGHI_DATAHI                           0
    #define       bAUDCH_DEBUGHI_DATAHI                        32
    #define   MSK32AUDCH_DEBUGHI_DATAHI                           0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_AUDCH_DEBUGLO                               0x0008

    #define     BA_AUDCH_DEBUGLO_DATALO                        0x0008
    #define     B16AUDCH_DEBUGLO_DATALO                        0x0008
    #define   LSb32AUDCH_DEBUGLO_DATALO                           0
    #define   LSb16AUDCH_DEBUGLO_DATALO                           0
    #define       bAUDCH_DEBUGLO_DATALO                        32
    #define   MSK32AUDCH_DEBUGLO_DATALO                           0xFFFFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_AUDCH {
    ///////////////////////////////////////////////////////////
    #define   GET32AUDCH_CTRL_ENABLE(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32AUDCH_CTRL_ENABLE(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16AUDCH_CTRL_ENABLE(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16AUDCH_CTRL_ENABLE(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define   GET32AUDCH_CTRL_MUTE(r32)                        _BFGET_(r32, 1, 1)
    #define   SET32AUDCH_CTRL_MUTE(r32,v)                      _BFSET_(r32, 1, 1,v)
    #define   GET16AUDCH_CTRL_MUTE(r16)                        _BFGET_(r16, 1, 1)
    #define   SET16AUDCH_CTRL_MUTE(r16,v)                      _BFSET_(r16, 1, 1,v)

    #define   GET32AUDCH_CTRL_LRSWITCH(r32)                    _BFGET_(r32, 2, 2)
    #define   SET32AUDCH_CTRL_LRSWITCH(r32,v)                  _BFSET_(r32, 2, 2,v)
    #define   GET16AUDCH_CTRL_LRSWITCH(r16)                    _BFGET_(r16, 2, 2)
    #define   SET16AUDCH_CTRL_LRSWITCH(r16,v)                  _BFSET_(r16, 2, 2,v)

    #define   GET32AUDCH_CTRL_DEBUGEN(r32)                     _BFGET_(r32, 3, 3)
    #define   SET32AUDCH_CTRL_DEBUGEN(r32,v)                   _BFSET_(r32, 3, 3,v)
    #define   GET16AUDCH_CTRL_DEBUGEN(r16)                     _BFGET_(r16, 3, 3)
    #define   SET16AUDCH_CTRL_DEBUGEN(r16,v)                   _BFSET_(r16, 3, 3,v)

    #define   GET32AUDCH_CTRL_FLUSH(r32)                       _BFGET_(r32, 4, 4)
    #define   SET32AUDCH_CTRL_FLUSH(r32,v)                     _BFSET_(r32, 4, 4,v)
    #define   GET16AUDCH_CTRL_FLUSH(r16)                       _BFGET_(r16, 4, 4)
    #define   SET16AUDCH_CTRL_FLUSH(r16,v)                     _BFSET_(r16, 4, 4,v)

    #define     w32AUDCH_CTRL                                  {\
            UNSG32 uCTRL_ENABLE                                :  1;\
            UNSG32 uCTRL_MUTE                                  :  1;\
            UNSG32 uCTRL_LRSWITCH                              :  1;\
            UNSG32 uCTRL_DEBUGEN                               :  1;\
            UNSG32 uCTRL_FLUSH                                 :  1;\
            UNSG32 RSVDx0_b5                                   : 27;\
          }
    union { UNSG32 u32AUDCH_CTRL;
            struct w32AUDCH_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AUDCH_DEBUGHI_DATAHI(r32)                   _BFGET_(r32,31, 0)
    #define   SET32AUDCH_DEBUGHI_DATAHI(r32,v)                 _BFSET_(r32,31, 0,v)

    #define     w32AUDCH_DEBUGHI                               {\
            UNSG32 uDEBUGHI_DATAHI                             : 32;\
          }
    union { UNSG32 u32AUDCH_DEBUGHI;
            struct w32AUDCH_DEBUGHI;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AUDCH_DEBUGLO_DATALO(r32)                   _BFGET_(r32,31, 0)
    #define   SET32AUDCH_DEBUGLO_DATALO(r32,v)                 _BFSET_(r32,31, 0,v)

    #define     w32AUDCH_DEBUGLO                               {\
            UNSG32 uDEBUGLO_DATALO                             : 32;\
          }
    union { UNSG32 u32AUDCH_DEBUGLO;
            struct w32AUDCH_DEBUGLO;
          };
    ///////////////////////////////////////////////////////////
    } SIE_AUDCH;

    typedef union  T32AUDCH_CTRL
          { UNSG32 u32;
            struct w32AUDCH_CTRL;
                 } T32AUDCH_CTRL;
    typedef union  T32AUDCH_DEBUGHI
          { UNSG32 u32;
            struct w32AUDCH_DEBUGHI;
                 } T32AUDCH_DEBUGHI;
    typedef union  T32AUDCH_DEBUGLO
          { UNSG32 u32;
            struct w32AUDCH_DEBUGLO;
                 } T32AUDCH_DEBUGLO;
    ///////////////////////////////////////////////////////////

    typedef union  TAUDCH_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32AUDCH_CTRL;
                   };
                 } TAUDCH_CTRL;
    typedef union  TAUDCH_DEBUGHI
          { UNSG32 u32[1];
            struct {
            struct w32AUDCH_DEBUGHI;
                   };
                 } TAUDCH_DEBUGHI;
    typedef union  TAUDCH_DEBUGLO
          { UNSG32 u32[1];
            struct {
            struct w32AUDCH_DEBUGLO;
                   };
                 } TAUDCH_DEBUGLO;

    ///////////////////////////////////////////////////////////
     SIGN32 AUDCH_drvrd(SIE_AUDCH *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 AUDCH_drvwr(SIE_AUDCH *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void AUDCH_reset(SIE_AUDCH *p);
     SIGN32 AUDCH_cmp  (SIE_AUDCH *p, SIE_AUDCH *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define AUDCH_check(p,pie,pfx,hLOG) AUDCH_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define AUDCH_print(p,    pfx,hLOG) AUDCH_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: AUDCH
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SPDIF                   biu              (4,4)
///     ###
///     * S/PDIF Control registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 CLKDIV               (RW)
///               ###
///               * S/PDIF transmitter bit clock selection register to decide the output sampling rate
///               ###
///               %unsigned 3  SETTING                   0x2
///                                    ###
///                                    * MCLK Divider setting:
///                                    * 0 : Divide by 1
///                                    * 1: Divide by 2
///                                    * 2: Divide by 4 ( default)
///                                    * 3 : Divide by 8
///                                    * 4: Divide by 16
///                                    * 5: Divide by 32
///                                    * 6: Divide by 64
///                                    * 7: Divide by 128
///                                    ###
///                                    : DIV1                      0x0
///                                    : DIV2                      0x1
///                                    : DIV4                      0x2
///                                    : DIV8                      0x3
///                                    : DIV16                     0x4
///                                    : DIV32                     0x5
///                                    : DIV64                     0x6
///                                    : DIV128                    0x7
///               %%        29         # Stuffing bits...
///     @ 0x00004                      (P)
///     # 0x00004 SPDIF                
///               $AUDCH               SPDIF             REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      72b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SPDIF
#define h_SPDIF (){}

    #define     RA_SPDIF_CLKDIV                                0x0000

    #define     BA_SPDIF_CLKDIV_SETTING                        0x0000
    #define     B16SPDIF_CLKDIV_SETTING                        0x0000
    #define   LSb32SPDIF_CLKDIV_SETTING                           0
    #define   LSb16SPDIF_CLKDIV_SETTING                           0
    #define       bSPDIF_CLKDIV_SETTING                        3
    #define   MSK32SPDIF_CLKDIV_SETTING                           0x00000007
    #define        SPDIF_CLKDIV_SETTING_DIV1                                0x0
    #define        SPDIF_CLKDIV_SETTING_DIV2                                0x1
    #define        SPDIF_CLKDIV_SETTING_DIV4                                0x2
    #define        SPDIF_CLKDIV_SETTING_DIV8                                0x3
    #define        SPDIF_CLKDIV_SETTING_DIV16                               0x4
    #define        SPDIF_CLKDIV_SETTING_DIV32                               0x5
    #define        SPDIF_CLKDIV_SETTING_DIV64                               0x6
    #define        SPDIF_CLKDIV_SETTING_DIV128                              0x7
    ///////////////////////////////////////////////////////////
    #define     RA_SPDIF_SPDIF                                 0x0004
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SPDIF {
    ///////////////////////////////////////////////////////////
    #define   GET32SPDIF_CLKDIV_SETTING(r32)                   _BFGET_(r32, 2, 0)
    #define   SET32SPDIF_CLKDIV_SETTING(r32,v)                 _BFSET_(r32, 2, 0,v)
    #define   GET16SPDIF_CLKDIV_SETTING(r16)                   _BFGET_(r16, 2, 0)
    #define   SET16SPDIF_CLKDIV_SETTING(r16,v)                 _BFSET_(r16, 2, 0,v)

    #define     w32SPDIF_CLKDIV                                {\
            UNSG32 uCLKDIV_SETTING                             :  3;\
            UNSG32 RSVDx0_b3                                   : 29;\
          }
    union { UNSG32 u32SPDIF_CLKDIV;
            struct w32SPDIF_CLKDIV;
          };
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_SPDIF;
    ///////////////////////////////////////////////////////////
    } SIE_SPDIF;

    typedef union  T32SPDIF_CLKDIV
          { UNSG32 u32;
            struct w32SPDIF_CLKDIV;
                 } T32SPDIF_CLKDIV;
    ///////////////////////////////////////////////////////////

    typedef union  TSPDIF_CLKDIV
          { UNSG32 u32[1];
            struct {
            struct w32SPDIF_CLKDIV;
                   };
                 } TSPDIF_CLKDIV;

    ///////////////////////////////////////////////////////////
     SIGN32 SPDIF_drvrd(SIE_SPDIF *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SPDIF_drvwr(SIE_SPDIF *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SPDIF_reset(SIE_SPDIF *p);
     SIGN32 SPDIF_cmp  (SIE_SPDIF *p, SIE_SPDIF *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SPDIF_check(p,pie,pfx,hLOG) SPDIF_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SPDIF_print(p,    pfx,hLOG) SPDIF_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SPDIF
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE P71                                      (4,4)
///     ###
///     * Audio 7.1 Primary port Control registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 PRIAUD               
///               $PRIAUD              PRIAUD            REG          
///                                    ###
///                                    * Primary Port Channel 0 control register
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 TSD0                 
///               $AUDCH               TSD0              REG          
///                                    ###
///                                    * Primary Port Channel 1 control register
///                                    ###
///     @ 0x00014                      (P)
///     # 0x00014 TSD1                 
///               $AUDCH               TSD1              REG          
///                                    ###
///                                    * Primary Port Channel 2 control register
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 TSD2                 
///               $AUDCH               TSD2              REG          
///                                    ###
///                                    * Primary Port Channel 3 control register
///                                    ###
///     @ 0x0002C                      (P)
///     # 0x0002C TSD3                 
///               $AUDCH               TSD3              REG          
///     @ 0x00038 PRIPORT              (RW)
///               %unsigned 1  ENABLE                    0x0
///                                    ###
///                                    * Register bit to enable or disable the whole Primary Audio port:
///                                    * 0: Disabled (default)
///                                    * 1: Enabled
///                                    * Note: User can selects the desired number of audio channels within the primary port by setting the corresponding enable bits for Channel 0/1/2/3
///                                    ###
///                                    : DISABLE                   0x0
///                                    : ENABLE                    0x1
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      60B, bits:     291b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_P71
#define h_P71 (){}

    #define     RA_P71_PRIAUD                                  0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_P71_TSD0                                    0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_P71_TSD1                                    0x0014
    ///////////////////////////////////////////////////////////
    #define     RA_P71_TSD2                                    0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_P71_TSD3                                    0x002C
    ///////////////////////////////////////////////////////////
    #define     RA_P71_PRIPORT                                 0x0038

    #define     BA_P71_PRIPORT_ENABLE                          0x0038
    #define     B16P71_PRIPORT_ENABLE                          0x0038
    #define   LSb32P71_PRIPORT_ENABLE                             0
    #define   LSb16P71_PRIPORT_ENABLE                             0
    #define       bP71_PRIPORT_ENABLE                          1
    #define   MSK32P71_PRIPORT_ENABLE                             0x00000001
    #define        P71_PRIPORT_ENABLE_DISABLE                               0x0
    #define        P71_PRIPORT_ENABLE_ENABLE                                0x1
    ///////////////////////////////////////////////////////////

    typedef struct SIE_P71 {
    ///////////////////////////////////////////////////////////
              SIE_PRIAUD                                       ie_PRIAUD;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_TSD0;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_TSD1;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_TSD2;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_TSD3;
    ///////////////////////////////////////////////////////////
    #define   GET32P71_PRIPORT_ENABLE(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32P71_PRIPORT_ENABLE(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16P71_PRIPORT_ENABLE(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16P71_PRIPORT_ENABLE(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32P71_PRIPORT                                 {\
            UNSG32 uPRIPORT_ENABLE                             :  1;\
            UNSG32 RSVDx38_b1                                  : 31;\
          }
    union { UNSG32 u32P71_PRIPORT;
            struct w32P71_PRIPORT;
          };
    ///////////////////////////////////////////////////////////
    } SIE_P71;

    typedef union  T32P71_PRIPORT
          { UNSG32 u32;
            struct w32P71_PRIPORT;
                 } T32P71_PRIPORT;
    ///////////////////////////////////////////////////////////

    typedef union  TP71_PRIPORT
          { UNSG32 u32[1];
            struct {
            struct w32P71_PRIPORT;
                   };
                 } TP71_PRIPORT;

    ///////////////////////////////////////////////////////////
     SIGN32 P71_drvrd(SIE_P71 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 P71_drvwr(SIE_P71 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void P71_reset(SIE_P71 *p);
     SIGN32 P71_cmp  (SIE_P71 *p, SIE_P71 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define P71_check(p,pie,pfx,hLOG) P71_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define P71_print(p,    pfx,hLOG) P71_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: P71
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE SEC                                      (4,4)
///     ###
///     * Audio Secondary port Control registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 SECAUD               
///               $PRIAUD              SECAUD            REG          
///     @ 0x00008                      (P)
///     # 0x00008 TSD                  
///               $AUDCH               TSD               REG          
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      20B, bits:      83b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_SEC
#define h_SEC (){}

    #define     RA_SEC_SECAUD                                  0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_SEC_TSD                                     0x0008
    ///////////////////////////////////////////////////////////

    typedef struct SIE_SEC {
    ///////////////////////////////////////////////////////////
              SIE_PRIAUD                                       ie_SECAUD;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_TSD;
    ///////////////////////////////////////////////////////////
    } SIE_SEC;

    ///////////////////////////////////////////////////////////
     SIGN32 SEC_drvrd(SIE_SEC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 SEC_drvwr(SIE_SEC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void SEC_reset(SIE_SEC *p);
     SIGN32 SEC_cmp  (SIE_SEC *p, SIE_SEC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define SEC_check(p,pie,pfx,hLOG) SEC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define SEC_print(p,    pfx,hLOG) SEC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: SEC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE HDMI                                     (4,4)
///     ###
///     * HDMI port control register
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 HDAUD                
///               $PRIAUD              HDAUD             REG          
///     @ 0x00008                      (P)
///     # 0x00008 HDTSD                
///               $AUDCH               HDTSD             REG          
///     @ 0x00014 HDPORT               (RW)
///               ###
///               * High Bit Rate (HD) audio port Control register
///               ###
///               %unsigned 1  TXSEL                     0x0
///                                    ###
///                                    * Register used to select the transmitter for HDMI audio.
///                                    * 0 : HD channel
///                                    * 1: p71 channel (primary audio)
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      24B, bits:      84b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_HDMI
#define h_HDMI (){}

    #define     RA_HDMI_HDAUD                                  0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_HDMI_HDTSD                                  0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_HDMI_HDPORT                                 0x0014

    #define     BA_HDMI_HDPORT_TXSEL                           0x0014
    #define     B16HDMI_HDPORT_TXSEL                           0x0014
    #define   LSb32HDMI_HDPORT_TXSEL                              0
    #define   LSb16HDMI_HDPORT_TXSEL                              0
    #define       bHDMI_HDPORT_TXSEL                           1
    #define   MSK32HDMI_HDPORT_TXSEL                              0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_HDMI {
    ///////////////////////////////////////////////////////////
              SIE_PRIAUD                                       ie_HDAUD;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_HDTSD;
    ///////////////////////////////////////////////////////////
    #define   GET32HDMI_HDPORT_TXSEL(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32HDMI_HDPORT_TXSEL(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16HDMI_HDPORT_TXSEL(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16HDMI_HDPORT_TXSEL(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32HDMI_HDPORT                                 {\
            UNSG32 uHDPORT_TXSEL                               :  1;\
            UNSG32 RSVDx14_b1                                  : 31;\
          }
    union { UNSG32 u32HDMI_HDPORT;
            struct w32HDMI_HDPORT;
          };
    ///////////////////////////////////////////////////////////
    } SIE_HDMI;

    typedef union  T32HDMI_HDPORT
          { UNSG32 u32;
            struct w32HDMI_HDPORT;
                 } T32HDMI_HDPORT;
    ///////////////////////////////////////////////////////////

    typedef union  THDMI_HDPORT
          { UNSG32 u32[1];
            struct {
            struct w32HDMI_HDPORT;
                   };
                 } THDMI_HDPORT;

    ///////////////////////////////////////////////////////////
     SIGN32 HDMI_drvrd(SIE_HDMI *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 HDMI_drvwr(SIE_HDMI *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void HDMI_reset(SIE_HDMI *p);
     SIGN32 HDMI_cmp  (SIE_HDMI *p, SIE_HDMI *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define HDMI_check(p,pie,pfx,hLOG) HDMI_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define HDMI_print(p,    pfx,hLOG) HDMI_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: HDMI
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE MIC                                      (4,4)
///     ###
///     * RX Port registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 MICCTRL              
///               $PRIAUD              MICCTRL           REG          
///                                    ###
///                                    * RX Port Channel 0 control register
///                                    ###
///     @ 0x00008                      (P)
///     # 0x00008 RSD0                 
///               $AUDCH               RSD0              REG          
///                                    ###
///                                    * RX Port Channel 1 control register
///                                    ###
///     @ 0x00014                      (P)
///     # 0x00014 RSD1                 
///               $AUDCH               RSD1              REG          
///                                    ###
///                                    * RX Port Channel 2 control register
///                                    ###
///     @ 0x00020                      (P)
///     # 0x00020 RSD2                 
///               $AUDCH               RSD2              REG          
///                                    ###
///                                    * RX Port Channel 3 control register
///                                    ###
///     @ 0x0002C                      (P)
///     # 0x0002C RSD3                 
///               $AUDCH               RSD3              REG          
///     @ 0x00038 RXPORT               (RW)
///               %unsigned 1  ENABLE                    0x0
///                                    ###
///                                    * Register bit to enable or disable the whole RX Audio port:
///                                    * 0: Disabled (default)
///                                    * 1: Enabled
///                                    * Note: User can selects the desired number of audio channels within the RX port by setting the
///                                    * corresponding enable bits for channel 0/1/2/3
///                                    ###
///                                    : DISABLE                   0x0
///                                    : ENABLE                    0x1
///               %%        31         # Stuffing bits...
///     @ 0x0003C RXDATA               (RW)
///               %unsigned 1  HBR                       0x0
///                                    ###
///                                    * Register bit to indicate whether incoming data is 8-channel HBR or LPCM (or 2-channel HBR)
///                                    * 1 : HBR data (8-channel HBR)
///                                    * 0 : LPCM data
///                                    * Note: This bit should not be set to “1” in case of 2-channel HBR. As there is no difference in behavior of this module between 2-channel HBR or 2-channel LPCM data.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00040 HBRDMAP              (RW)
///               ###
///               * HBR DATA MAP Register.
///               * In 8-channel HBR data mode. 128-bits of data is received by SoC. These registers bits allows the users to map the 32 bits received on each port to the desired place in 128-bits.
///               ###
///               %unsigned 2  PORT0                     0x0
///                                    ###
///                                    * Data select for [31:0]:
///                                    * 00 : Port 0 data
///                                    * 01 : Port 1 data
///                                    * 10 : Port 2 data
///                                    * 11 : Port 3 data
///                                    ###
///               %unsigned 2  PORT1                     0x1
///                                    ###
///                                    * Data select for [63:32]:
///                                    * 00 : Port 0 data
///                                    * 01 : Port 1 data
///                                    * 10 : Port 2 data
///                                    * 11 : Port 3 data
///                                    ###
///               %unsigned 2  PORT2                     0x2
///                                    ###
///                                    * Data select for [95:64]:
///                                    * 00 : Port 0 data
///                                    * 01 : Port 1 data
///                                    * 10 : Port 2 data
///                                    * 11 : Port 3 data
///                                    ###
///               %unsigned 2  PORT3                     0x3
///                                    ###
///                                    * Data select for [127:96]:
///                                    * 00 : Port 0 data
///                                    * 01 : Port 1 data
///                                    * 10 : Port 2 data
///                                    * 11 : Port 3 data
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00044 PDM_CTRL1            (RW)
///               %unsigned 4  MCLKSEL                   0x1
///                                    ###
///                                    * PDM MCLK Selection register:
///                                    * 3'b000 : Select MCLK PRIMARY
///                                    * 3'b001 : Select MCLK SECONDARY (default)
///                                    * 3'b010 : Select MCLK HD TX
///                                    * 3'b011 : Select MCLK SPDIF
///                                    * 3'b100 : Select MCLK HD RX
///                                    * 3'b101 to 3'b111 reserved
///                                    * Bit 4: is used to select MCLK of 4-channel MIC
///                                    * 1: Select MCLK of 4-channel MIC
///                                    ###
///               %unsigned 4  CLKDIV                    0x4
///                                    ###
///                                    * PDM CLKOUT Divider.
///                                    * 0: Divide by 1
///                                    * 1: Divide by 2
///                                    * 2: Divide by 4
///                                    * 3: Divide by 8
///                                    * 4: Divide by 16 (default)
///                                    * 5: Divide by 32
///                                    * 6: Divide by 64
///                                    * ........................
///                                    * ........................
///                                    * 14: Divide by 16384
///                                    * 15: Divide by 32768
///                                    ###
///               %unsigned 1  CLKEN                     0x0
///                                    ###
///                                    * PDM CLKOUT ENABLE
///                                    * 0 : PDM CLK disabled (default)
///                                    * 1 : PDM CLK enabled
///                                    ###
///               %unsigned 1  ENABLE                    0x0
///                                    ###
///                                    * PDM interface enable
///                                    * 0: Disabled (default)
///                                    * 1: Enabled
///                                    ###
///               %unsigned 1  MUTE                      0x0
///                                    ###
///                                    * Control bit to turn mute function ON or OFF
///                                    * 0: Mute turned OFF (default)
///                                    * 1: Mute turned ON
///                                    ###
///               %unsigned 1  LRSWITCH                  0x0
///                                    ###
///                                    * Control bit for switching the left channel data with right channel data:
///                                    * 0: Do not switch data (default)
///                                    * 1: Switch Data
///                                    ###
///               %unsigned 1  INVCLK_OUT                0x0
///                                    ###
///                                    * Invert PDM CLK OUT
///                                    * 0: Not inverted (default)
///                                    * 1: Inverted
///                                    ###
///               %unsigned 1  INVCLK_INT                0x0
///                                    ###
///                                    * Invert PDM CLK Internal
///                                    * 0: Not inverted (default)
///                                    * 1: Inverted
///                                    ###
///               %unsigned 1  RLSB                      0x0
///                                    ###
///                                    * Decides which bit is eceived first(left):
///                                    * 0: MSB first (default)
///                                    * 1: LSB first
///                                    ###
///               %unsigned 3  RDM                       0x4
///                                    ###
///                                    * L/R Channel resolution
///                                    * 0: 16-bits per channel
///                                    * 1: 18-bits per channel
///                                    * 2: 20-bits per channel
///                                    * 3: 24-bits per channel
///                                    * 4: 32-bits per channel (default)
///                                    * 5-7: Reserved
///                                    ###
///               %unsigned 1  MODE                      0x0
///                                    ###
///                                    * 0 : Half cycle PDM (DDR) (default)
///                                    * 1 : Classic PDM      (SDR)
///                                    ###
///               %unsigned 1  SDR_CLKSEL                0x0
///                                    ###
///                                    * SDR Data latch clock edge select
///                                    * 0: Latch data on falling clock edge of CLKOUT (default)
///                                    * 1: Latch data on rising clock edge of CLKOUT
///                                    ###
///               %unsigned 1  LATCH_MODE                0x0
///                                    ###
///                                    * PDM Data input latch mode
///                                    * 0: Counter, Use oversampling clock (400Mhz, sysClk) to lath the input data (default)
///                                    * 1: Edge, Use PDM CLKOUT Edge to latch the the input data
///                                    ###
///               %%        11         # Stuffing bits...
///     @ 0x00048 PDM_CTRL2            (RW)
///               %unsigned 16 RDLT                      0x1E
///                                    ###
///                                    * Rise Data Latch Time
///                                    * This registers decides PDM input data latch time after the Rising edge of PDMCLK in-terms of sysClk cycles + 1, when Data Latch mode is counter
///                                    ###
///               %unsigned 16 FDLT                      0x1E
///                                    ###
///                                    * Fall Data Latch Time
///                                    * This registers decides PDM input data latch time after the falling edge of PDMCLK in-terms of sysClk cycles + 1, when Data Latch mode is counter
///                                    ###
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      76B, bits:     353b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_MIC
#define h_MIC (){}

    #define     RA_MIC_MICCTRL                                 0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_RSD0                                    0x0008
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_RSD1                                    0x0014
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_RSD2                                    0x0020
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_RSD3                                    0x002C
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_RXPORT                                  0x0038

    #define     BA_MIC_RXPORT_ENABLE                           0x0038
    #define     B16MIC_RXPORT_ENABLE                           0x0038
    #define   LSb32MIC_RXPORT_ENABLE                              0
    #define   LSb16MIC_RXPORT_ENABLE                              0
    #define       bMIC_RXPORT_ENABLE                           1
    #define   MSK32MIC_RXPORT_ENABLE                              0x00000001
    #define        MIC_RXPORT_ENABLE_DISABLE                                0x0
    #define        MIC_RXPORT_ENABLE_ENABLE                                 0x1
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_RXDATA                                  0x003C

    #define     BA_MIC_RXDATA_HBR                              0x003C
    #define     B16MIC_RXDATA_HBR                              0x003C
    #define   LSb32MIC_RXDATA_HBR                                 0
    #define   LSb16MIC_RXDATA_HBR                                 0
    #define       bMIC_RXDATA_HBR                              1
    #define   MSK32MIC_RXDATA_HBR                                 0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_HBRDMAP                                 0x0040

    #define     BA_MIC_HBRDMAP_PORT0                           0x0040
    #define     B16MIC_HBRDMAP_PORT0                           0x0040
    #define   LSb32MIC_HBRDMAP_PORT0                              0
    #define   LSb16MIC_HBRDMAP_PORT0                              0
    #define       bMIC_HBRDMAP_PORT0                           2
    #define   MSK32MIC_HBRDMAP_PORT0                              0x00000003

    #define     BA_MIC_HBRDMAP_PORT1                           0x0040
    #define     B16MIC_HBRDMAP_PORT1                           0x0040
    #define   LSb32MIC_HBRDMAP_PORT1                              2
    #define   LSb16MIC_HBRDMAP_PORT1                              2
    #define       bMIC_HBRDMAP_PORT1                           2
    #define   MSK32MIC_HBRDMAP_PORT1                              0x0000000C

    #define     BA_MIC_HBRDMAP_PORT2                           0x0040
    #define     B16MIC_HBRDMAP_PORT2                           0x0040
    #define   LSb32MIC_HBRDMAP_PORT2                              4
    #define   LSb16MIC_HBRDMAP_PORT2                              4
    #define       bMIC_HBRDMAP_PORT2                           2
    #define   MSK32MIC_HBRDMAP_PORT2                              0x00000030

    #define     BA_MIC_HBRDMAP_PORT3                           0x0040
    #define     B16MIC_HBRDMAP_PORT3                           0x0040
    #define   LSb32MIC_HBRDMAP_PORT3                              6
    #define   LSb16MIC_HBRDMAP_PORT3                              6
    #define       bMIC_HBRDMAP_PORT3                           2
    #define   MSK32MIC_HBRDMAP_PORT3                              0x000000C0
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_PDM_CTRL1                               0x0044

    #define     BA_MIC_PDM_CTRL1_MCLKSEL                       0x0044
    #define     B16MIC_PDM_CTRL1_MCLKSEL                       0x0044
    #define   LSb32MIC_PDM_CTRL1_MCLKSEL                          0
    #define   LSb16MIC_PDM_CTRL1_MCLKSEL                          0
    #define       bMIC_PDM_CTRL1_MCLKSEL                       4
    #define   MSK32MIC_PDM_CTRL1_MCLKSEL                          0x0000000F

    #define     BA_MIC_PDM_CTRL1_CLKDIV                        0x0044
    #define     B16MIC_PDM_CTRL1_CLKDIV                        0x0044
    #define   LSb32MIC_PDM_CTRL1_CLKDIV                           4
    #define   LSb16MIC_PDM_CTRL1_CLKDIV                           4
    #define       bMIC_PDM_CTRL1_CLKDIV                        4
    #define   MSK32MIC_PDM_CTRL1_CLKDIV                           0x000000F0

    #define     BA_MIC_PDM_CTRL1_CLKEN                         0x0045
    #define     B16MIC_PDM_CTRL1_CLKEN                         0x0044
    #define   LSb32MIC_PDM_CTRL1_CLKEN                            8
    #define   LSb16MIC_PDM_CTRL1_CLKEN                            8
    #define       bMIC_PDM_CTRL1_CLKEN                         1
    #define   MSK32MIC_PDM_CTRL1_CLKEN                            0x00000100

    #define     BA_MIC_PDM_CTRL1_ENABLE                        0x0045
    #define     B16MIC_PDM_CTRL1_ENABLE                        0x0044
    #define   LSb32MIC_PDM_CTRL1_ENABLE                           9
    #define   LSb16MIC_PDM_CTRL1_ENABLE                           9
    #define       bMIC_PDM_CTRL1_ENABLE                        1
    #define   MSK32MIC_PDM_CTRL1_ENABLE                           0x00000200

    #define     BA_MIC_PDM_CTRL1_MUTE                          0x0045
    #define     B16MIC_PDM_CTRL1_MUTE                          0x0044
    #define   LSb32MIC_PDM_CTRL1_MUTE                             10
    #define   LSb16MIC_PDM_CTRL1_MUTE                             10
    #define       bMIC_PDM_CTRL1_MUTE                          1
    #define   MSK32MIC_PDM_CTRL1_MUTE                             0x00000400

    #define     BA_MIC_PDM_CTRL1_LRSWITCH                      0x0045
    #define     B16MIC_PDM_CTRL1_LRSWITCH                      0x0044
    #define   LSb32MIC_PDM_CTRL1_LRSWITCH                         11
    #define   LSb16MIC_PDM_CTRL1_LRSWITCH                         11
    #define       bMIC_PDM_CTRL1_LRSWITCH                      1
    #define   MSK32MIC_PDM_CTRL1_LRSWITCH                         0x00000800

    #define     BA_MIC_PDM_CTRL1_INVCLK_OUT                    0x0045
    #define     B16MIC_PDM_CTRL1_INVCLK_OUT                    0x0044
    #define   LSb32MIC_PDM_CTRL1_INVCLK_OUT                       12
    #define   LSb16MIC_PDM_CTRL1_INVCLK_OUT                       12
    #define       bMIC_PDM_CTRL1_INVCLK_OUT                    1
    #define   MSK32MIC_PDM_CTRL1_INVCLK_OUT                       0x00001000

    #define     BA_MIC_PDM_CTRL1_INVCLK_INT                    0x0045
    #define     B16MIC_PDM_CTRL1_INVCLK_INT                    0x0044
    #define   LSb32MIC_PDM_CTRL1_INVCLK_INT                       13
    #define   LSb16MIC_PDM_CTRL1_INVCLK_INT                       13
    #define       bMIC_PDM_CTRL1_INVCLK_INT                    1
    #define   MSK32MIC_PDM_CTRL1_INVCLK_INT                       0x00002000

    #define     BA_MIC_PDM_CTRL1_RLSB                          0x0045
    #define     B16MIC_PDM_CTRL1_RLSB                          0x0044
    #define   LSb32MIC_PDM_CTRL1_RLSB                             14
    #define   LSb16MIC_PDM_CTRL1_RLSB                             14
    #define       bMIC_PDM_CTRL1_RLSB                          1
    #define   MSK32MIC_PDM_CTRL1_RLSB                             0x00004000

    #define     BA_MIC_PDM_CTRL1_RDM                           0x0045
    #define     B16MIC_PDM_CTRL1_RDM                           0x0044
    #define   LSb32MIC_PDM_CTRL1_RDM                              15
    #define   LSb16MIC_PDM_CTRL1_RDM                              15
    #define       bMIC_PDM_CTRL1_RDM                           3
    #define   MSK32MIC_PDM_CTRL1_RDM                              0x00038000

    #define     BA_MIC_PDM_CTRL1_MODE                          0x0046
    #define     B16MIC_PDM_CTRL1_MODE                          0x0046
    #define   LSb32MIC_PDM_CTRL1_MODE                             18
    #define   LSb16MIC_PDM_CTRL1_MODE                             2
    #define       bMIC_PDM_CTRL1_MODE                          1
    #define   MSK32MIC_PDM_CTRL1_MODE                             0x00040000

    #define     BA_MIC_PDM_CTRL1_SDR_CLKSEL                    0x0046
    #define     B16MIC_PDM_CTRL1_SDR_CLKSEL                    0x0046
    #define   LSb32MIC_PDM_CTRL1_SDR_CLKSEL                       19
    #define   LSb16MIC_PDM_CTRL1_SDR_CLKSEL                       3
    #define       bMIC_PDM_CTRL1_SDR_CLKSEL                    1
    #define   MSK32MIC_PDM_CTRL1_SDR_CLKSEL                       0x00080000

    #define     BA_MIC_PDM_CTRL1_LATCH_MODE                    0x0046
    #define     B16MIC_PDM_CTRL1_LATCH_MODE                    0x0046
    #define   LSb32MIC_PDM_CTRL1_LATCH_MODE                       20
    #define   LSb16MIC_PDM_CTRL1_LATCH_MODE                       4
    #define       bMIC_PDM_CTRL1_LATCH_MODE                    1
    #define   MSK32MIC_PDM_CTRL1_LATCH_MODE                       0x00100000
    ///////////////////////////////////////////////////////////
    #define     RA_MIC_PDM_CTRL2                               0x0048

    #define     BA_MIC_PDM_CTRL2_RDLT                          0x0048
    #define     B16MIC_PDM_CTRL2_RDLT                          0x0048
    #define   LSb32MIC_PDM_CTRL2_RDLT                             0
    #define   LSb16MIC_PDM_CTRL2_RDLT                             0
    #define       bMIC_PDM_CTRL2_RDLT                          16
    #define   MSK32MIC_PDM_CTRL2_RDLT                             0x0000FFFF

    #define     BA_MIC_PDM_CTRL2_FDLT                          0x004A
    #define     B16MIC_PDM_CTRL2_FDLT                          0x004A
    #define   LSb32MIC_PDM_CTRL2_FDLT                             16
    #define   LSb16MIC_PDM_CTRL2_FDLT                             0
    #define       bMIC_PDM_CTRL2_FDLT                          16
    #define   MSK32MIC_PDM_CTRL2_FDLT                             0xFFFF0000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_MIC {
    ///////////////////////////////////////////////////////////
              SIE_PRIAUD                                       ie_MICCTRL;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_RSD0;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_RSD1;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_RSD2;
    ///////////////////////////////////////////////////////////
              SIE_AUDCH                                        ie_RSD3;
    ///////////////////////////////////////////////////////////
    #define   GET32MIC_RXPORT_ENABLE(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32MIC_RXPORT_ENABLE(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16MIC_RXPORT_ENABLE(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16MIC_RXPORT_ENABLE(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32MIC_RXPORT                                  {\
            UNSG32 uRXPORT_ENABLE                              :  1;\
            UNSG32 RSVDx38_b1                                  : 31;\
          }
    union { UNSG32 u32MIC_RXPORT;
            struct w32MIC_RXPORT;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32MIC_RXDATA_HBR(r32)                         _BFGET_(r32, 0, 0)
    #define   SET32MIC_RXDATA_HBR(r32,v)                       _BFSET_(r32, 0, 0,v)
    #define   GET16MIC_RXDATA_HBR(r16)                         _BFGET_(r16, 0, 0)
    #define   SET16MIC_RXDATA_HBR(r16,v)                       _BFSET_(r16, 0, 0,v)

    #define     w32MIC_RXDATA                                  {\
            UNSG32 uRXDATA_HBR                                 :  1;\
            UNSG32 RSVDx3C_b1                                  : 31;\
          }
    union { UNSG32 u32MIC_RXDATA;
            struct w32MIC_RXDATA;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32MIC_HBRDMAP_PORT0(r32)                      _BFGET_(r32, 1, 0)
    #define   SET32MIC_HBRDMAP_PORT0(r32,v)                    _BFSET_(r32, 1, 0,v)
    #define   GET16MIC_HBRDMAP_PORT0(r16)                      _BFGET_(r16, 1, 0)
    #define   SET16MIC_HBRDMAP_PORT0(r16,v)                    _BFSET_(r16, 1, 0,v)

    #define   GET32MIC_HBRDMAP_PORT1(r32)                      _BFGET_(r32, 3, 2)
    #define   SET32MIC_HBRDMAP_PORT1(r32,v)                    _BFSET_(r32, 3, 2,v)
    #define   GET16MIC_HBRDMAP_PORT1(r16)                      _BFGET_(r16, 3, 2)
    #define   SET16MIC_HBRDMAP_PORT1(r16,v)                    _BFSET_(r16, 3, 2,v)

    #define   GET32MIC_HBRDMAP_PORT2(r32)                      _BFGET_(r32, 5, 4)
    #define   SET32MIC_HBRDMAP_PORT2(r32,v)                    _BFSET_(r32, 5, 4,v)
    #define   GET16MIC_HBRDMAP_PORT2(r16)                      _BFGET_(r16, 5, 4)
    #define   SET16MIC_HBRDMAP_PORT2(r16,v)                    _BFSET_(r16, 5, 4,v)

    #define   GET32MIC_HBRDMAP_PORT3(r32)                      _BFGET_(r32, 7, 6)
    #define   SET32MIC_HBRDMAP_PORT3(r32,v)                    _BFSET_(r32, 7, 6,v)
    #define   GET16MIC_HBRDMAP_PORT3(r16)                      _BFGET_(r16, 7, 6)
    #define   SET16MIC_HBRDMAP_PORT3(r16,v)                    _BFSET_(r16, 7, 6,v)

    #define     w32MIC_HBRDMAP                                 {\
            UNSG32 uHBRDMAP_PORT0                              :  2;\
            UNSG32 uHBRDMAP_PORT1                              :  2;\
            UNSG32 uHBRDMAP_PORT2                              :  2;\
            UNSG32 uHBRDMAP_PORT3                              :  2;\
            UNSG32 RSVDx40_b8                                  : 24;\
          }
    union { UNSG32 u32MIC_HBRDMAP;
            struct w32MIC_HBRDMAP;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32MIC_PDM_CTRL1_MCLKSEL(r32)                  _BFGET_(r32, 3, 0)
    #define   SET32MIC_PDM_CTRL1_MCLKSEL(r32,v)                _BFSET_(r32, 3, 0,v)
    #define   GET16MIC_PDM_CTRL1_MCLKSEL(r16)                  _BFGET_(r16, 3, 0)
    #define   SET16MIC_PDM_CTRL1_MCLKSEL(r16,v)                _BFSET_(r16, 3, 0,v)

    #define   GET32MIC_PDM_CTRL1_CLKDIV(r32)                   _BFGET_(r32, 7, 4)
    #define   SET32MIC_PDM_CTRL1_CLKDIV(r32,v)                 _BFSET_(r32, 7, 4,v)
    #define   GET16MIC_PDM_CTRL1_CLKDIV(r16)                   _BFGET_(r16, 7, 4)
    #define   SET16MIC_PDM_CTRL1_CLKDIV(r16,v)                 _BFSET_(r16, 7, 4,v)

    #define   GET32MIC_PDM_CTRL1_CLKEN(r32)                    _BFGET_(r32, 8, 8)
    #define   SET32MIC_PDM_CTRL1_CLKEN(r32,v)                  _BFSET_(r32, 8, 8,v)
    #define   GET16MIC_PDM_CTRL1_CLKEN(r16)                    _BFGET_(r16, 8, 8)
    #define   SET16MIC_PDM_CTRL1_CLKEN(r16,v)                  _BFSET_(r16, 8, 8,v)

    #define   GET32MIC_PDM_CTRL1_ENABLE(r32)                   _BFGET_(r32, 9, 9)
    #define   SET32MIC_PDM_CTRL1_ENABLE(r32,v)                 _BFSET_(r32, 9, 9,v)
    #define   GET16MIC_PDM_CTRL1_ENABLE(r16)                   _BFGET_(r16, 9, 9)
    #define   SET16MIC_PDM_CTRL1_ENABLE(r16,v)                 _BFSET_(r16, 9, 9,v)

    #define   GET32MIC_PDM_CTRL1_MUTE(r32)                     _BFGET_(r32,10,10)
    #define   SET32MIC_PDM_CTRL1_MUTE(r32,v)                   _BFSET_(r32,10,10,v)
    #define   GET16MIC_PDM_CTRL1_MUTE(r16)                     _BFGET_(r16,10,10)
    #define   SET16MIC_PDM_CTRL1_MUTE(r16,v)                   _BFSET_(r16,10,10,v)

    #define   GET32MIC_PDM_CTRL1_LRSWITCH(r32)                 _BFGET_(r32,11,11)
    #define   SET32MIC_PDM_CTRL1_LRSWITCH(r32,v)               _BFSET_(r32,11,11,v)
    #define   GET16MIC_PDM_CTRL1_LRSWITCH(r16)                 _BFGET_(r16,11,11)
    #define   SET16MIC_PDM_CTRL1_LRSWITCH(r16,v)               _BFSET_(r16,11,11,v)

    #define   GET32MIC_PDM_CTRL1_INVCLK_OUT(r32)               _BFGET_(r32,12,12)
    #define   SET32MIC_PDM_CTRL1_INVCLK_OUT(r32,v)             _BFSET_(r32,12,12,v)
    #define   GET16MIC_PDM_CTRL1_INVCLK_OUT(r16)               _BFGET_(r16,12,12)
    #define   SET16MIC_PDM_CTRL1_INVCLK_OUT(r16,v)             _BFSET_(r16,12,12,v)

    #define   GET32MIC_PDM_CTRL1_INVCLK_INT(r32)               _BFGET_(r32,13,13)
    #define   SET32MIC_PDM_CTRL1_INVCLK_INT(r32,v)             _BFSET_(r32,13,13,v)
    #define   GET16MIC_PDM_CTRL1_INVCLK_INT(r16)               _BFGET_(r16,13,13)
    #define   SET16MIC_PDM_CTRL1_INVCLK_INT(r16,v)             _BFSET_(r16,13,13,v)

    #define   GET32MIC_PDM_CTRL1_RLSB(r32)                     _BFGET_(r32,14,14)
    #define   SET32MIC_PDM_CTRL1_RLSB(r32,v)                   _BFSET_(r32,14,14,v)
    #define   GET16MIC_PDM_CTRL1_RLSB(r16)                     _BFGET_(r16,14,14)
    #define   SET16MIC_PDM_CTRL1_RLSB(r16,v)                   _BFSET_(r16,14,14,v)

    #define   GET32MIC_PDM_CTRL1_RDM(r32)                      _BFGET_(r32,17,15)
    #define   SET32MIC_PDM_CTRL1_RDM(r32,v)                    _BFSET_(r32,17,15,v)

    #define   GET32MIC_PDM_CTRL1_MODE(r32)                     _BFGET_(r32,18,18)
    #define   SET32MIC_PDM_CTRL1_MODE(r32,v)                   _BFSET_(r32,18,18,v)
    #define   GET16MIC_PDM_CTRL1_MODE(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16MIC_PDM_CTRL1_MODE(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define   GET32MIC_PDM_CTRL1_SDR_CLKSEL(r32)               _BFGET_(r32,19,19)
    #define   SET32MIC_PDM_CTRL1_SDR_CLKSEL(r32,v)             _BFSET_(r32,19,19,v)
    #define   GET16MIC_PDM_CTRL1_SDR_CLKSEL(r16)               _BFGET_(r16, 3, 3)
    #define   SET16MIC_PDM_CTRL1_SDR_CLKSEL(r16,v)             _BFSET_(r16, 3, 3,v)

    #define   GET32MIC_PDM_CTRL1_LATCH_MODE(r32)               _BFGET_(r32,20,20)
    #define   SET32MIC_PDM_CTRL1_LATCH_MODE(r32,v)             _BFSET_(r32,20,20,v)
    #define   GET16MIC_PDM_CTRL1_LATCH_MODE(r16)               _BFGET_(r16, 4, 4)
    #define   SET16MIC_PDM_CTRL1_LATCH_MODE(r16,v)             _BFSET_(r16, 4, 4,v)

    #define     w32MIC_PDM_CTRL1                               {\
            UNSG32 uPDM_CTRL1_MCLKSEL                          :  4;\
            UNSG32 uPDM_CTRL1_CLKDIV                           :  4;\
            UNSG32 uPDM_CTRL1_CLKEN                            :  1;\
            UNSG32 uPDM_CTRL1_ENABLE                           :  1;\
            UNSG32 uPDM_CTRL1_MUTE                             :  1;\
            UNSG32 uPDM_CTRL1_LRSWITCH                         :  1;\
            UNSG32 uPDM_CTRL1_INVCLK_OUT                       :  1;\
            UNSG32 uPDM_CTRL1_INVCLK_INT                       :  1;\
            UNSG32 uPDM_CTRL1_RLSB                             :  1;\
            UNSG32 uPDM_CTRL1_RDM                              :  3;\
            UNSG32 uPDM_CTRL1_MODE                             :  1;\
            UNSG32 uPDM_CTRL1_SDR_CLKSEL                       :  1;\
            UNSG32 uPDM_CTRL1_LATCH_MODE                       :  1;\
            UNSG32 RSVDx44_b21                                 : 11;\
          }
    union { UNSG32 u32MIC_PDM_CTRL1;
            struct w32MIC_PDM_CTRL1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32MIC_PDM_CTRL2_RDLT(r32)                     _BFGET_(r32,15, 0)
    #define   SET32MIC_PDM_CTRL2_RDLT(r32,v)                   _BFSET_(r32,15, 0,v)
    #define   GET16MIC_PDM_CTRL2_RDLT(r16)                     _BFGET_(r16,15, 0)
    #define   SET16MIC_PDM_CTRL2_RDLT(r16,v)                   _BFSET_(r16,15, 0,v)

    #define   GET32MIC_PDM_CTRL2_FDLT(r32)                     _BFGET_(r32,31,16)
    #define   SET32MIC_PDM_CTRL2_FDLT(r32,v)                   _BFSET_(r32,31,16,v)
    #define   GET16MIC_PDM_CTRL2_FDLT(r16)                     _BFGET_(r16,15, 0)
    #define   SET16MIC_PDM_CTRL2_FDLT(r16,v)                   _BFSET_(r16,15, 0,v)

    #define     w32MIC_PDM_CTRL2                               {\
            UNSG32 uPDM_CTRL2_RDLT                             : 16;\
            UNSG32 uPDM_CTRL2_FDLT                             : 16;\
          }
    union { UNSG32 u32MIC_PDM_CTRL2;
            struct w32MIC_PDM_CTRL2;
          };
    ///////////////////////////////////////////////////////////
    } SIE_MIC;

    typedef union  T32MIC_RXPORT
          { UNSG32 u32;
            struct w32MIC_RXPORT;
                 } T32MIC_RXPORT;
    typedef union  T32MIC_RXDATA
          { UNSG32 u32;
            struct w32MIC_RXDATA;
                 } T32MIC_RXDATA;
    typedef union  T32MIC_HBRDMAP
          { UNSG32 u32;
            struct w32MIC_HBRDMAP;
                 } T32MIC_HBRDMAP;
    typedef union  T32MIC_PDM_CTRL1
          { UNSG32 u32;
            struct w32MIC_PDM_CTRL1;
                 } T32MIC_PDM_CTRL1;
    typedef union  T32MIC_PDM_CTRL2
          { UNSG32 u32;
            struct w32MIC_PDM_CTRL2;
                 } T32MIC_PDM_CTRL2;
    ///////////////////////////////////////////////////////////

    typedef union  TMIC_RXPORT
          { UNSG32 u32[1];
            struct {
            struct w32MIC_RXPORT;
                   };
                 } TMIC_RXPORT;
    typedef union  TMIC_RXDATA
          { UNSG32 u32[1];
            struct {
            struct w32MIC_RXDATA;
                   };
                 } TMIC_RXDATA;
    typedef union  TMIC_HBRDMAP
          { UNSG32 u32[1];
            struct {
            struct w32MIC_HBRDMAP;
                   };
                 } TMIC_HBRDMAP;
    typedef union  TMIC_PDM_CTRL1
          { UNSG32 u32[1];
            struct {
            struct w32MIC_PDM_CTRL1;
                   };
                 } TMIC_PDM_CTRL1;
    typedef union  TMIC_PDM_CTRL2
          { UNSG32 u32[1];
            struct {
            struct w32MIC_PDM_CTRL2;
                   };
                 } TMIC_PDM_CTRL2;

    ///////////////////////////////////////////////////////////
     SIGN32 MIC_drvrd(SIE_MIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 MIC_drvwr(SIE_MIC *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void MIC_reset(SIE_MIC *p);
     SIGN32 MIC_cmp  (SIE_MIC *p, SIE_MIC *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define MIC_check(p,pie,pfx,hLOG) MIC_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define MIC_print(p,    pfx,hLOG) MIC_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: MIC
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE IOSEL                   biu              (4,4)
///     ###
///     * PAD Output Enable selection register
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 PRIMCLK              (RW)
///               ###
///               * Primary Port MCLK output enable register.
///               ###
///               %unsigned 1  SEL                       0x0
///                                    ###
///                                    * Note: Not used. MCLK source is selected using register defined in 88DE3010 Global Unit.
///                                    * *INTERNAL_ONLY**
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00004 SECMCLK              (RW)
///               ###
///               * Secondary Port MCLK output enable register.
///               ###
///               %unsigned 1  SEL                       0x0
///                                    ###
///                                    * Note: Not used. MCLK source is selected using register defined in 88DE3010 Global Unit.
///                                    * *INTERNAL_ONLY**
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00008 MIC1MCLK             (RW)
///               ###
///               * MIC Port MCLK output enable register.
///               ###
///               %unsigned 1  SEL                       0x0
///                                    ###
///                                    * Note: Not used. MCLK source is selected using register defined in 88DE3010 Global Unit.
///                                    * *INTERNAL_ONLY**
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0000C PRIBCLK              (RW)
///               ###
///               * Primary port Bit-clock output enable register.
///               ###
///               %unsigned 1  SEL                       0x1
///                                    ###
///                                    * Bit clock output enable:
///                                    * 0: Bit clock is from external
///                                    * 1: Bit clock generated internally using Master Clock (MCLK) (default)
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00010 SECBCLK              (RW)
///               ###
///               * Secondary port Bit-clock output enable register.
///               ###
///               %unsigned 1  SEL                       0x1
///                                    ###
///                                    * Bit clock output enable:
///                                    * 0: Bit clock is from external
///                                    * 1: Bit clock generated internally using Master Clock (MCLK) (default)
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00014 MIC1BCLK             (RW)
///               ###
///               * MIC port Bit-clock output enable register.
///               ###
///               %unsigned 1  SEL                       0x0
///                                    ###
///                                    * Bit clock output enable:
///                                    * 0: Bit clock is from external (default)
///                                    * 1: Bit clock generated internally using MCLK
///                                    * Note: MIC Port is slave only so above bit should be set to 0.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00018 MIC2BCLK             (RW)
///               ###
///               * MIC(4-Channel) port Bit-clock output enable register.
///               ###
///               %unsigned 1  SEL                       0x0
///               %%        31         # Stuffing bits...
///     @ 0x0001C PRIFS                (RW)
///               ###
///               * Primary port FSYNC output enable register.
///               ###
///               %unsigned 1  SEL                       0x1
///                                    ###
///                                    * In 88DE3010 Primary port FSYNC is generated internally so this bit should be set to 1.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00020 SECFS                (RW)
///               ###
///               * Secondary port FSYNC output enable register.
///               ###
///               %unsigned 1  SEL                       0x1
///                                    ###
///                                    * In 88DE3010 Secondary port FSYNC is generated internally so this bit should be set to 1.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x00024 MIC1FS               (RW)
///               ###
///               * MIC port FSYNC output enable register.
///               ###
///               %unsigned 1  SEL                       0x0
///               %%        31         # Stuffing bits...
///     @ 0x00028 MIC2FS               (RW)
///               ###
///               * MIC-4 port FSYNC output enable register.
///               ###
///               %unsigned 1  SEL                       0x0
///                                    ###
///                                    * In 88DE3010 MIC port FSYNC is from external so this bit should be set to 0.
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x0002C PDMCLK               (RW)
///               ###
///               * PDM CLK Output Enable
///               * 0: No clock out
///               * 1: Clock out
///               ###
///               %unsigned 1  SEL                       0x0
///               %%        31         # Stuffing bits...
///     @ 0x00030 PDM                  (RW)
///               %unsigned 1  GENABLE                   0x0
///                                    ###
///                                    * PDM GLOBAL Enable
///                                    ###
///               %%        31         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      52B, bits:      13b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_IOSEL
#define h_IOSEL (){}

    #define     RA_IOSEL_PRIMCLK                               0x0000

    #define     BA_IOSEL_PRIMCLK_SEL                           0x0000
    #define     B16IOSEL_PRIMCLK_SEL                           0x0000
    #define   LSb32IOSEL_PRIMCLK_SEL                              0
    #define   LSb16IOSEL_PRIMCLK_SEL                              0
    #define       bIOSEL_PRIMCLK_SEL                           1
    #define   MSK32IOSEL_PRIMCLK_SEL                              0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_SECMCLK                               0x0004

    #define     BA_IOSEL_SECMCLK_SEL                           0x0004
    #define     B16IOSEL_SECMCLK_SEL                           0x0004
    #define   LSb32IOSEL_SECMCLK_SEL                              0
    #define   LSb16IOSEL_SECMCLK_SEL                              0
    #define       bIOSEL_SECMCLK_SEL                           1
    #define   MSK32IOSEL_SECMCLK_SEL                              0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_MIC1MCLK                              0x0008

    #define     BA_IOSEL_MIC1MCLK_SEL                          0x0008
    #define     B16IOSEL_MIC1MCLK_SEL                          0x0008
    #define   LSb32IOSEL_MIC1MCLK_SEL                             0
    #define   LSb16IOSEL_MIC1MCLK_SEL                             0
    #define       bIOSEL_MIC1MCLK_SEL                          1
    #define   MSK32IOSEL_MIC1MCLK_SEL                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_PRIBCLK                               0x000C

    #define     BA_IOSEL_PRIBCLK_SEL                           0x000C
    #define     B16IOSEL_PRIBCLK_SEL                           0x000C
    #define   LSb32IOSEL_PRIBCLK_SEL                              0
    #define   LSb16IOSEL_PRIBCLK_SEL                              0
    #define       bIOSEL_PRIBCLK_SEL                           1
    #define   MSK32IOSEL_PRIBCLK_SEL                              0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_SECBCLK                               0x0010

    #define     BA_IOSEL_SECBCLK_SEL                           0x0010
    #define     B16IOSEL_SECBCLK_SEL                           0x0010
    #define   LSb32IOSEL_SECBCLK_SEL                              0
    #define   LSb16IOSEL_SECBCLK_SEL                              0
    #define       bIOSEL_SECBCLK_SEL                           1
    #define   MSK32IOSEL_SECBCLK_SEL                              0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_MIC1BCLK                              0x0014

    #define     BA_IOSEL_MIC1BCLK_SEL                          0x0014
    #define     B16IOSEL_MIC1BCLK_SEL                          0x0014
    #define   LSb32IOSEL_MIC1BCLK_SEL                             0
    #define   LSb16IOSEL_MIC1BCLK_SEL                             0
    #define       bIOSEL_MIC1BCLK_SEL                          1
    #define   MSK32IOSEL_MIC1BCLK_SEL                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_MIC2BCLK                              0x0018

    #define     BA_IOSEL_MIC2BCLK_SEL                          0x0018
    #define     B16IOSEL_MIC2BCLK_SEL                          0x0018
    #define   LSb32IOSEL_MIC2BCLK_SEL                             0
    #define   LSb16IOSEL_MIC2BCLK_SEL                             0
    #define       bIOSEL_MIC2BCLK_SEL                          1
    #define   MSK32IOSEL_MIC2BCLK_SEL                             0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_PRIFS                                 0x001C

    #define     BA_IOSEL_PRIFS_SEL                             0x001C
    #define     B16IOSEL_PRIFS_SEL                             0x001C
    #define   LSb32IOSEL_PRIFS_SEL                                0
    #define   LSb16IOSEL_PRIFS_SEL                                0
    #define       bIOSEL_PRIFS_SEL                             1
    #define   MSK32IOSEL_PRIFS_SEL                                0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_SECFS                                 0x0020

    #define     BA_IOSEL_SECFS_SEL                             0x0020
    #define     B16IOSEL_SECFS_SEL                             0x0020
    #define   LSb32IOSEL_SECFS_SEL                                0
    #define   LSb16IOSEL_SECFS_SEL                                0
    #define       bIOSEL_SECFS_SEL                             1
    #define   MSK32IOSEL_SECFS_SEL                                0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_MIC1FS                                0x0024

    #define     BA_IOSEL_MIC1FS_SEL                            0x0024
    #define     B16IOSEL_MIC1FS_SEL                            0x0024
    #define   LSb32IOSEL_MIC1FS_SEL                               0
    #define   LSb16IOSEL_MIC1FS_SEL                               0
    #define       bIOSEL_MIC1FS_SEL                            1
    #define   MSK32IOSEL_MIC1FS_SEL                               0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_MIC2FS                                0x0028

    #define     BA_IOSEL_MIC2FS_SEL                            0x0028
    #define     B16IOSEL_MIC2FS_SEL                            0x0028
    #define   LSb32IOSEL_MIC2FS_SEL                               0
    #define   LSb16IOSEL_MIC2FS_SEL                               0
    #define       bIOSEL_MIC2FS_SEL                            1
    #define   MSK32IOSEL_MIC2FS_SEL                               0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_PDMCLK                                0x002C

    #define     BA_IOSEL_PDMCLK_SEL                            0x002C
    #define     B16IOSEL_PDMCLK_SEL                            0x002C
    #define   LSb32IOSEL_PDMCLK_SEL                               0
    #define   LSb16IOSEL_PDMCLK_SEL                               0
    #define       bIOSEL_PDMCLK_SEL                            1
    #define   MSK32IOSEL_PDMCLK_SEL                               0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_IOSEL_PDM                                   0x0030

    #define     BA_IOSEL_PDM_GENABLE                           0x0030
    #define     B16IOSEL_PDM_GENABLE                           0x0030
    #define   LSb32IOSEL_PDM_GENABLE                              0
    #define   LSb16IOSEL_PDM_GENABLE                              0
    #define       bIOSEL_PDM_GENABLE                           1
    #define   MSK32IOSEL_PDM_GENABLE                              0x00000001
    ///////////////////////////////////////////////////////////

    typedef struct SIE_IOSEL {
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_PRIMCLK_SEL(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_PRIMCLK_SEL(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_PRIMCLK_SEL(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_PRIMCLK_SEL(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_PRIMCLK                               {\
            UNSG32 uPRIMCLK_SEL                                :  1;\
            UNSG32 RSVDx0_b1                                   : 31;\
          }
    union { UNSG32 u32IOSEL_PRIMCLK;
            struct w32IOSEL_PRIMCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_SECMCLK_SEL(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_SECMCLK_SEL(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_SECMCLK_SEL(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_SECMCLK_SEL(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_SECMCLK                               {\
            UNSG32 uSECMCLK_SEL                                :  1;\
            UNSG32 RSVDx4_b1                                   : 31;\
          }
    union { UNSG32 u32IOSEL_SECMCLK;
            struct w32IOSEL_SECMCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_MIC1MCLK_SEL(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_MIC1MCLK_SEL(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_MIC1MCLK_SEL(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_MIC1MCLK_SEL(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_MIC1MCLK                              {\
            UNSG32 uMIC1MCLK_SEL                               :  1;\
            UNSG32 RSVDx8_b1                                   : 31;\
          }
    union { UNSG32 u32IOSEL_MIC1MCLK;
            struct w32IOSEL_MIC1MCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_PRIBCLK_SEL(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_PRIBCLK_SEL(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_PRIBCLK_SEL(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_PRIBCLK_SEL(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_PRIBCLK                               {\
            UNSG32 uPRIBCLK_SEL                                :  1;\
            UNSG32 RSVDxC_b1                                   : 31;\
          }
    union { UNSG32 u32IOSEL_PRIBCLK;
            struct w32IOSEL_PRIBCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_SECBCLK_SEL(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_SECBCLK_SEL(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_SECBCLK_SEL(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_SECBCLK_SEL(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_SECBCLK                               {\
            UNSG32 uSECBCLK_SEL                                :  1;\
            UNSG32 RSVDx10_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_SECBCLK;
            struct w32IOSEL_SECBCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_MIC1BCLK_SEL(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_MIC1BCLK_SEL(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_MIC1BCLK_SEL(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_MIC1BCLK_SEL(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_MIC1BCLK                              {\
            UNSG32 uMIC1BCLK_SEL                               :  1;\
            UNSG32 RSVDx14_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_MIC1BCLK;
            struct w32IOSEL_MIC1BCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_MIC2BCLK_SEL(r32)                     _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_MIC2BCLK_SEL(r32,v)                   _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_MIC2BCLK_SEL(r16)                     _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_MIC2BCLK_SEL(r16,v)                   _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_MIC2BCLK                              {\
            UNSG32 uMIC2BCLK_SEL                               :  1;\
            UNSG32 RSVDx18_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_MIC2BCLK;
            struct w32IOSEL_MIC2BCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_PRIFS_SEL(r32)                        _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_PRIFS_SEL(r32,v)                      _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_PRIFS_SEL(r16)                        _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_PRIFS_SEL(r16,v)                      _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_PRIFS                                 {\
            UNSG32 uPRIFS_SEL                                  :  1;\
            UNSG32 RSVDx1C_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_PRIFS;
            struct w32IOSEL_PRIFS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_SECFS_SEL(r32)                        _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_SECFS_SEL(r32,v)                      _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_SECFS_SEL(r16)                        _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_SECFS_SEL(r16,v)                      _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_SECFS                                 {\
            UNSG32 uSECFS_SEL                                  :  1;\
            UNSG32 RSVDx20_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_SECFS;
            struct w32IOSEL_SECFS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_MIC1FS_SEL(r32)                       _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_MIC1FS_SEL(r32,v)                     _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_MIC1FS_SEL(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_MIC1FS_SEL(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_MIC1FS                                {\
            UNSG32 uMIC1FS_SEL                                 :  1;\
            UNSG32 RSVDx24_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_MIC1FS;
            struct w32IOSEL_MIC1FS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_MIC2FS_SEL(r32)                       _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_MIC2FS_SEL(r32,v)                     _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_MIC2FS_SEL(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_MIC2FS_SEL(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_MIC2FS                                {\
            UNSG32 uMIC2FS_SEL                                 :  1;\
            UNSG32 RSVDx28_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_MIC2FS;
            struct w32IOSEL_MIC2FS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_PDMCLK_SEL(r32)                       _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_PDMCLK_SEL(r32,v)                     _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_PDMCLK_SEL(r16)                       _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_PDMCLK_SEL(r16,v)                     _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_PDMCLK                                {\
            UNSG32 uPDMCLK_SEL                                 :  1;\
            UNSG32 RSVDx2C_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_PDMCLK;
            struct w32IOSEL_PDMCLK;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32IOSEL_PDM_GENABLE(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32IOSEL_PDM_GENABLE(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16IOSEL_PDM_GENABLE(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16IOSEL_PDM_GENABLE(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define     w32IOSEL_PDM                                   {\
            UNSG32 uPDM_GENABLE                                :  1;\
            UNSG32 RSVDx30_b1                                  : 31;\
          }
    union { UNSG32 u32IOSEL_PDM;
            struct w32IOSEL_PDM;
          };
    ///////////////////////////////////////////////////////////
    } SIE_IOSEL;

    typedef union  T32IOSEL_PRIMCLK
          { UNSG32 u32;
            struct w32IOSEL_PRIMCLK;
                 } T32IOSEL_PRIMCLK;
    typedef union  T32IOSEL_SECMCLK
          { UNSG32 u32;
            struct w32IOSEL_SECMCLK;
                 } T32IOSEL_SECMCLK;
    typedef union  T32IOSEL_MIC1MCLK
          { UNSG32 u32;
            struct w32IOSEL_MIC1MCLK;
                 } T32IOSEL_MIC1MCLK;
    typedef union  T32IOSEL_PRIBCLK
          { UNSG32 u32;
            struct w32IOSEL_PRIBCLK;
                 } T32IOSEL_PRIBCLK;
    typedef union  T32IOSEL_SECBCLK
          { UNSG32 u32;
            struct w32IOSEL_SECBCLK;
                 } T32IOSEL_SECBCLK;
    typedef union  T32IOSEL_MIC1BCLK
          { UNSG32 u32;
            struct w32IOSEL_MIC1BCLK;
                 } T32IOSEL_MIC1BCLK;
    typedef union  T32IOSEL_MIC2BCLK
          { UNSG32 u32;
            struct w32IOSEL_MIC2BCLK;
                 } T32IOSEL_MIC2BCLK;
    typedef union  T32IOSEL_PRIFS
          { UNSG32 u32;
            struct w32IOSEL_PRIFS;
                 } T32IOSEL_PRIFS;
    typedef union  T32IOSEL_SECFS
          { UNSG32 u32;
            struct w32IOSEL_SECFS;
                 } T32IOSEL_SECFS;
    typedef union  T32IOSEL_MIC1FS
          { UNSG32 u32;
            struct w32IOSEL_MIC1FS;
                 } T32IOSEL_MIC1FS;
    typedef union  T32IOSEL_MIC2FS
          { UNSG32 u32;
            struct w32IOSEL_MIC2FS;
                 } T32IOSEL_MIC2FS;
    typedef union  T32IOSEL_PDMCLK
          { UNSG32 u32;
            struct w32IOSEL_PDMCLK;
                 } T32IOSEL_PDMCLK;
    typedef union  T32IOSEL_PDM
          { UNSG32 u32;
            struct w32IOSEL_PDM;
                 } T32IOSEL_PDM;
    ///////////////////////////////////////////////////////////

    typedef union  TIOSEL_PRIMCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_PRIMCLK;
                   };
                 } TIOSEL_PRIMCLK;
    typedef union  TIOSEL_SECMCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_SECMCLK;
                   };
                 } TIOSEL_SECMCLK;
    typedef union  TIOSEL_MIC1MCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_MIC1MCLK;
                   };
                 } TIOSEL_MIC1MCLK;
    typedef union  TIOSEL_PRIBCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_PRIBCLK;
                   };
                 } TIOSEL_PRIBCLK;
    typedef union  TIOSEL_SECBCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_SECBCLK;
                   };
                 } TIOSEL_SECBCLK;
    typedef union  TIOSEL_MIC1BCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_MIC1BCLK;
                   };
                 } TIOSEL_MIC1BCLK;
    typedef union  TIOSEL_MIC2BCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_MIC2BCLK;
                   };
                 } TIOSEL_MIC2BCLK;
    typedef union  TIOSEL_PRIFS
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_PRIFS;
                   };
                 } TIOSEL_PRIFS;
    typedef union  TIOSEL_SECFS
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_SECFS;
                   };
                 } TIOSEL_SECFS;
    typedef union  TIOSEL_MIC1FS
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_MIC1FS;
                   };
                 } TIOSEL_MIC1FS;
    typedef union  TIOSEL_MIC2FS
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_MIC2FS;
                   };
                 } TIOSEL_MIC2FS;
    typedef union  TIOSEL_PDMCLK
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_PDMCLK;
                   };
                 } TIOSEL_PDMCLK;
    typedef union  TIOSEL_PDM
          { UNSG32 u32[1];
            struct {
            struct w32IOSEL_PDM;
                   };
                 } TIOSEL_PDM;

    ///////////////////////////////////////////////////////////
     SIGN32 IOSEL_drvrd(SIE_IOSEL *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 IOSEL_drvwr(SIE_IOSEL *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void IOSEL_reset(SIE_IOSEL *p);
     SIGN32 IOSEL_cmp  (SIE_IOSEL *p, SIE_IOSEL *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define IOSEL_check(p,pie,pfx,hLOG) IOSEL_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define IOSEL_print(p,    pfx,hLOG) IOSEL_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: IOSEL
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE AIO                     biu              (4,4)
///     ###
///     * Audio Input Output Unit Registers
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 P71                  
///               $P71                 P71               REG          
///                                    ###
///                                    * Primary Port Registers
///                                    ###
///     @ 0x0003C                      (P)
///     # 0x0003C SEC                  
///               $SEC                 SEC               REG          
///                                    ###
///                                    * Secondary Port Registers
///                                    ###
///     @ 0x00050                      (P)
///     # 0x00050 HDMI                 
///               $HDMI                HDMI              REG          
///                                    ###
///                                    * HDMI port Registers
///                                    ###
///     @ 0x00068                      (P)
///     # 0x00068 SPDIF                
///               $SPDIF               SPDIF             REG          
///                                    ###
///                                    * S/PDIF Port Registers
///                                    ###
///     @ 0x00078                      (P)
///     # 0x00078 MIC1                 
///               $MIC                 MIC1              REG          
///     @ 0x000C4                      (P)
///     # 0x000C4 MIC2                 
///               $MIC                 MIC2              REG          
///                                    ###
///                                    * Audio input Registers
///                                    ###
///     @ 0x00110                      (P)
///     # 0x00110 IOSEL                
///               $IOSEL               IOSEL             REG          
///                                    ###
///                                    * Pad output enable control register
///                                    ###
///     @ 0x00144 IRQENABLE            (RW)
///               ###
///               * Interrupt Enable register
///               ###
///               %unsigned 1  PRIIRQ                    0x0
///                                    ###
///                                    * Primary Port Interrupt enable:
///                                    * 0: Not enabled
///                                    * 1: Enabled
///                                    ###
///               %unsigned 1  SECIRQ                    0x0
///                                    ###
///                                    * Secondary Port Interrupt enable:
///                                    * 0: Not enabled
///                                    * 1: Enabled
///                                    ###
///               %unsigned 1  MIC1IRQ                   0x0
///               %unsigned 1  MIC2IRQ                   0x0
///                                    ###
///                                    * MIC Port Interrupt enable:
///                                    * 0: Not enabled
///                                    * 1: Enabled
///                                    ###
///               %unsigned 1  SPDIFIRQ                  0x0
///                                    ###
///                                    * S/PDIF Port Interrupt enable:
///                                    * 0: Not enabled
///                                    * 1: Enabled
///                                    ###
///               %unsigned 1  HDMIIRQ                   0x0
///                                    ###
///                                    * HD port Interrupt enable:
///                                    * 0: Not enabled
///                                    * 1: Enabled
///                                    ###
///               %unsigned 1  PDMIRQ                    0x0
///                                    ###
///                                    * PDM port Interrupt enable:
///                                    * 0: Not enabled
///                                    * 1: Enabled
///                                    ###
///               %%        25         # Stuffing bits...
///     @ 0x00148 IRQSTS               (WOC-)
///               ###
///               * Interrupt status register, write 1 to clear.
///               * Interrupt is generated when corresponding data FIFO underflow. For MIC when FIFO overflow.
///               ###
///               %unsigned 1  PRISTS                    0x0
///                                    ###
///                                    * Primary port interrupt status:
///                                    * 0: No interrupt (default)
///                                    * 1: Interrupt Pending
///                                    ###
///               %unsigned 1  SECSTS                    0x0
///                                    ###
///                                    * Secondary port interrupt status:
///                                    * 0: No interrupt (default)
///                                    * 1: Interrupt Pending
///                                    ###
///               %unsigned 1  MIC1STS                   0x0
///               %unsigned 1  MIC2STS                   0x0
///                                    ###
///                                    * MIC port interrupt status:
///                                    * 0: No interrupt (default)
///                                    * 1: Interrupt Pending
///                                    ###
///               %unsigned 1  SPDIFSTS                  0x0
///                                    ###
///                                    * S/PDIF port interrupt status:
///                                    * 0: No interrupt (default)
///                                    * 1: Interrupt Pending
///                                    ###
///               %unsigned 1  HDMISTS                   0x0
///                                    ###
///                                    * HD port interrupt status:
///                                    * 0: No interrupt (default)
///                                    * 1: Interrupt Pending
///                                    ###
///               %unsigned 1  PDMSTS                    0x0
///                                    ###
///                                    * PDM port interrupt status:
///                                    * 0: No interrupt (default)
///                                    * 1: Interrupt Pending
///                                    ###
///               %%        25         # Stuffing bits...
///     @ 0x0014C HDSRC                (RW)
///               ###
///               * HBR Audio source selection register
///               ###
///               %unsigned 2  SEL                       0x0
///                                    ###
///                                    * Register to indicate number of samples per 64-bit data from DDR.
///                                    * 00 : HD data (2 samples {2pair of Left & Right} per 64-bit data from DDR) transmitted in 2 LRCK (over 2 channel)
///                                    * 01: L-PCM data (1 Sample {one pair of Left &Right} per 64-bit data from DDR) transmitted in 1 LRCK (over 2 channel)
///                                    * 10: HD data (4 samples {4pair of Left & Right } per 128-bit data from DDR) transmitter in 1 LRCK (over 8 channels)
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x00150 ADAC_CLK_CTRL        (RW)
///               %unsigned 3  mclkDiv                   0x2
///                                    : DIV1                      0x0
///                                    : DIV2                      0x1
///                                    : DIV4                      0x2
///                                    : DIV8                      0x3
///                                    : DIV16                     0x4
///                                    : DIV32                     0x5
///                                    : DIV64                     0x6
///                                    : DIV128                    0x7
///                                                 ###
///                                                 * ADAC MClk divider setting defines the divide ratio between secondary audio MCLK and ADAC MCLK.
///                                                 ###
///               %unsigned 3  pwmclkDiv                 0x2
///                                    : DIV1                      0x0
///                                    : DIV2                      0x1
///                                    : DIV4                      0x2
///                                    : DIV8                      0x3
///                                    : DIV16                     0x4
///                                    : DIV32                     0x5
///                                    : DIV64                     0x6
///                                    : DIV128                    0x7
///                                                 ###
///                                                 * ADAC PWMClk divider setting defines the divide ratio between secondary audio MCLK and ADAC PWMCLK.
///                                                 ###
///               %unsigned 1  mclkInv                   0x0
///                                    : NORMAL                    0x0
///                                    : INVERTED                  0x1
///                                                 ###
///                                                 * Invert the ADAC MCLK polarity. By default, rising edge is aligned with data, if it is 1, falling edge is aligned with data.
///                                                 ###
///               %unsigned 1  pwmclkInv                 0x0
///                                    : NORMAL                    0x0
///                                    : INVERTED                  0x1
///                                                 ###
///                                                 * Invert the ADAC PWMCLK polarity. By default, rising edge is aligned with data, if it is 1, falling edge is aligned with data.
///                                                 ###
///               %unsigned 1  inputSel                  0x0
///                                    ###
///                                    * ADAC Input Select Bit
///                                    * 0: Select Secondary outputs
///                                    * 1: Select Primary outputs
///                                    ###
///               %unsigned 2  PWMCLK_SRC_SEL            0x0
///                                    ###
///                                    *   ADAC PWMCLK source select bit
///                                    * This bit selects the ADAC PWM Clock source it can be either Primary MCLK or Secondary MCLK based on these bits.
///                                    * Bit [1]:    Valid Bit
///                                    * 1 : Bit[0] decides the PWM Clock Source
///                                    * 0 : Bit[0] does not decide the clock source instead “inputSel” bit just above these bits decides the PWM Clock Source (default)
///                                    * Bit [0]: PWM Clock Source
///                                    * 0 : MCLK Secondary   (default)
///                                    * 1 : MCLK Primary
///                                    ###
///               %unsigned 1  PRIMCLK_OUT_SRC_SEL       0x0
///                                    ###
///                                    * This bits selects the source of the MCLK out on the DV0_FID pin
///                                    * 0: Primary MCLK (Default)
///                                    * 1: Secondary MCLK
///                                    ###
///               %%        20         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     340B, bits:    1277b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_AIO
#define h_AIO (){}

    #define     RA_AIO_P71                                     0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_SEC                                     0x003C
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_HDMI                                    0x0050
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_SPDIF                                   0x0068
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_MIC1                                    0x0078
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_MIC2                                    0x00C4
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_IOSEL                                   0x0110
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_IRQENABLE                               0x0144

    #define     BA_AIO_IRQENABLE_PRIIRQ                        0x0144
    #define     B16AIO_IRQENABLE_PRIIRQ                        0x0144
    #define   LSb32AIO_IRQENABLE_PRIIRQ                           0
    #define   LSb16AIO_IRQENABLE_PRIIRQ                           0
    #define       bAIO_IRQENABLE_PRIIRQ                        1
    #define   MSK32AIO_IRQENABLE_PRIIRQ                           0x00000001

    #define     BA_AIO_IRQENABLE_SECIRQ                        0x0144
    #define     B16AIO_IRQENABLE_SECIRQ                        0x0144
    #define   LSb32AIO_IRQENABLE_SECIRQ                           1
    #define   LSb16AIO_IRQENABLE_SECIRQ                           1
    #define       bAIO_IRQENABLE_SECIRQ                        1
    #define   MSK32AIO_IRQENABLE_SECIRQ                           0x00000002

    #define     BA_AIO_IRQENABLE_MIC1IRQ                       0x0144
    #define     B16AIO_IRQENABLE_MIC1IRQ                       0x0144
    #define   LSb32AIO_IRQENABLE_MIC1IRQ                          2
    #define   LSb16AIO_IRQENABLE_MIC1IRQ                          2
    #define       bAIO_IRQENABLE_MIC1IRQ                       1
    #define   MSK32AIO_IRQENABLE_MIC1IRQ                          0x00000004

    #define     BA_AIO_IRQENABLE_MIC2IRQ                       0x0144
    #define     B16AIO_IRQENABLE_MIC2IRQ                       0x0144
    #define   LSb32AIO_IRQENABLE_MIC2IRQ                          3
    #define   LSb16AIO_IRQENABLE_MIC2IRQ                          3
    #define       bAIO_IRQENABLE_MIC2IRQ                       1
    #define   MSK32AIO_IRQENABLE_MIC2IRQ                          0x00000008

    #define     BA_AIO_IRQENABLE_SPDIFIRQ                      0x0144
    #define     B16AIO_IRQENABLE_SPDIFIRQ                      0x0144
    #define   LSb32AIO_IRQENABLE_SPDIFIRQ                         4
    #define   LSb16AIO_IRQENABLE_SPDIFIRQ                         4
    #define       bAIO_IRQENABLE_SPDIFIRQ                      1
    #define   MSK32AIO_IRQENABLE_SPDIFIRQ                         0x00000010

    #define     BA_AIO_IRQENABLE_HDMIIRQ                       0x0144
    #define     B16AIO_IRQENABLE_HDMIIRQ                       0x0144
    #define   LSb32AIO_IRQENABLE_HDMIIRQ                          5
    #define   LSb16AIO_IRQENABLE_HDMIIRQ                          5
    #define       bAIO_IRQENABLE_HDMIIRQ                       1
    #define   MSK32AIO_IRQENABLE_HDMIIRQ                          0x00000020

    #define     BA_AIO_IRQENABLE_PDMIRQ                        0x0144
    #define     B16AIO_IRQENABLE_PDMIRQ                        0x0144
    #define   LSb32AIO_IRQENABLE_PDMIRQ                           6
    #define   LSb16AIO_IRQENABLE_PDMIRQ                           6
    #define       bAIO_IRQENABLE_PDMIRQ                        1
    #define   MSK32AIO_IRQENABLE_PDMIRQ                           0x00000040
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_IRQSTS                                  0x0148

    #define     BA_AIO_IRQSTS_PRISTS                           0x0148
    #define     B16AIO_IRQSTS_PRISTS                           0x0148
    #define   LSb32AIO_IRQSTS_PRISTS                              0
    #define   LSb16AIO_IRQSTS_PRISTS                              0
    #define       bAIO_IRQSTS_PRISTS                           1
    #define   MSK32AIO_IRQSTS_PRISTS                              0x00000001

    #define     BA_AIO_IRQSTS_SECSTS                           0x0148
    #define     B16AIO_IRQSTS_SECSTS                           0x0148
    #define   LSb32AIO_IRQSTS_SECSTS                              1
    #define   LSb16AIO_IRQSTS_SECSTS                              1
    #define       bAIO_IRQSTS_SECSTS                           1
    #define   MSK32AIO_IRQSTS_SECSTS                              0x00000002

    #define     BA_AIO_IRQSTS_MIC1STS                          0x0148
    #define     B16AIO_IRQSTS_MIC1STS                          0x0148
    #define   LSb32AIO_IRQSTS_MIC1STS                             2
    #define   LSb16AIO_IRQSTS_MIC1STS                             2
    #define       bAIO_IRQSTS_MIC1STS                          1
    #define   MSK32AIO_IRQSTS_MIC1STS                             0x00000004

    #define     BA_AIO_IRQSTS_MIC2STS                          0x0148
    #define     B16AIO_IRQSTS_MIC2STS                          0x0148
    #define   LSb32AIO_IRQSTS_MIC2STS                             3
    #define   LSb16AIO_IRQSTS_MIC2STS                             3
    #define       bAIO_IRQSTS_MIC2STS                          1
    #define   MSK32AIO_IRQSTS_MIC2STS                             0x00000008

    #define     BA_AIO_IRQSTS_SPDIFSTS                         0x0148
    #define     B16AIO_IRQSTS_SPDIFSTS                         0x0148
    #define   LSb32AIO_IRQSTS_SPDIFSTS                            4
    #define   LSb16AIO_IRQSTS_SPDIFSTS                            4
    #define       bAIO_IRQSTS_SPDIFSTS                         1
    #define   MSK32AIO_IRQSTS_SPDIFSTS                            0x00000010

    #define     BA_AIO_IRQSTS_HDMISTS                          0x0148
    #define     B16AIO_IRQSTS_HDMISTS                          0x0148
    #define   LSb32AIO_IRQSTS_HDMISTS                             5
    #define   LSb16AIO_IRQSTS_HDMISTS                             5
    #define       bAIO_IRQSTS_HDMISTS                          1
    #define   MSK32AIO_IRQSTS_HDMISTS                             0x00000020

    #define     BA_AIO_IRQSTS_PDMSTS                           0x0148
    #define     B16AIO_IRQSTS_PDMSTS                           0x0148
    #define   LSb32AIO_IRQSTS_PDMSTS                              6
    #define   LSb16AIO_IRQSTS_PDMSTS                              6
    #define       bAIO_IRQSTS_PDMSTS                           1
    #define   MSK32AIO_IRQSTS_PDMSTS                              0x00000040
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_HDSRC                                   0x014C

    #define     BA_AIO_HDSRC_SEL                               0x014C
    #define     B16AIO_HDSRC_SEL                               0x014C
    #define   LSb32AIO_HDSRC_SEL                                  0
    #define   LSb16AIO_HDSRC_SEL                                  0
    #define       bAIO_HDSRC_SEL                               2
    #define   MSK32AIO_HDSRC_SEL                                  0x00000003
    ///////////////////////////////////////////////////////////
    #define     RA_AIO_ADAC_CLK_CTRL                           0x0150

    #define     BA_AIO_ADAC_CLK_CTRL_mclkDiv                   0x0150
    #define     B16AIO_ADAC_CLK_CTRL_mclkDiv                   0x0150
    #define   LSb32AIO_ADAC_CLK_CTRL_mclkDiv                      0
    #define   LSb16AIO_ADAC_CLK_CTRL_mclkDiv                      0
    #define       bAIO_ADAC_CLK_CTRL_mclkDiv                   3
    #define   MSK32AIO_ADAC_CLK_CTRL_mclkDiv                      0x00000007
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV1                           0x0
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV2                           0x1
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV4                           0x2
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV8                           0x3
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV16                          0x4
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV32                          0x5
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV64                          0x6
    #define        AIO_ADAC_CLK_CTRL_mclkDiv_DIV128                         0x7

    #define     BA_AIO_ADAC_CLK_CTRL_pwmclkDiv                 0x0150
    #define     B16AIO_ADAC_CLK_CTRL_pwmclkDiv                 0x0150
    #define   LSb32AIO_ADAC_CLK_CTRL_pwmclkDiv                    3
    #define   LSb16AIO_ADAC_CLK_CTRL_pwmclkDiv                    3
    #define       bAIO_ADAC_CLK_CTRL_pwmclkDiv                 3
    #define   MSK32AIO_ADAC_CLK_CTRL_pwmclkDiv                    0x00000038
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV1                         0x0
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV2                         0x1
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV4                         0x2
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV8                         0x3
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV16                        0x4
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV32                        0x5
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV64                        0x6
    #define        AIO_ADAC_CLK_CTRL_pwmclkDiv_DIV128                       0x7

    #define     BA_AIO_ADAC_CLK_CTRL_mclkInv                   0x0150
    #define     B16AIO_ADAC_CLK_CTRL_mclkInv                   0x0150
    #define   LSb32AIO_ADAC_CLK_CTRL_mclkInv                      6
    #define   LSb16AIO_ADAC_CLK_CTRL_mclkInv                      6
    #define       bAIO_ADAC_CLK_CTRL_mclkInv                   1
    #define   MSK32AIO_ADAC_CLK_CTRL_mclkInv                      0x00000040
    #define        AIO_ADAC_CLK_CTRL_mclkInv_NORMAL                         0x0
    #define        AIO_ADAC_CLK_CTRL_mclkInv_INVERTED                       0x1

    #define     BA_AIO_ADAC_CLK_CTRL_pwmclkInv                 0x0150
    #define     B16AIO_ADAC_CLK_CTRL_pwmclkInv                 0x0150
    #define   LSb32AIO_ADAC_CLK_CTRL_pwmclkInv                    7
    #define   LSb16AIO_ADAC_CLK_CTRL_pwmclkInv                    7
    #define       bAIO_ADAC_CLK_CTRL_pwmclkInv                 1
    #define   MSK32AIO_ADAC_CLK_CTRL_pwmclkInv                    0x00000080
    #define        AIO_ADAC_CLK_CTRL_pwmclkInv_NORMAL                       0x0
    #define        AIO_ADAC_CLK_CTRL_pwmclkInv_INVERTED                     0x1

    #define     BA_AIO_ADAC_CLK_CTRL_inputSel                  0x0151
    #define     B16AIO_ADAC_CLK_CTRL_inputSel                  0x0150
    #define   LSb32AIO_ADAC_CLK_CTRL_inputSel                     8
    #define   LSb16AIO_ADAC_CLK_CTRL_inputSel                     8
    #define       bAIO_ADAC_CLK_CTRL_inputSel                  1
    #define   MSK32AIO_ADAC_CLK_CTRL_inputSel                     0x00000100

    #define     BA_AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL            0x0151
    #define     B16AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL            0x0150
    #define   LSb32AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL               9
    #define   LSb16AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL               9
    #define       bAIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL            2
    #define   MSK32AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL               0x00000600

    #define     BA_AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL       0x0151
    #define     B16AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL       0x0150
    #define   LSb32AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL          11
    #define   LSb16AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL          11
    #define       bAIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL       1
    #define   MSK32AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL          0x00000800
    ///////////////////////////////////////////////////////////

    typedef struct SIE_AIO {
    ///////////////////////////////////////////////////////////
              SIE_P71                                          ie_P71;
    ///////////////////////////////////////////////////////////
              SIE_SEC                                          ie_SEC;
    ///////////////////////////////////////////////////////////
              SIE_HDMI                                         ie_HDMI;
    ///////////////////////////////////////////////////////////
              SIE_SPDIF                                        ie_SPDIF;
    ///////////////////////////////////////////////////////////
              SIE_MIC                                          ie_MIC1;
    ///////////////////////////////////////////////////////////
              SIE_MIC                                          ie_MIC2;
    ///////////////////////////////////////////////////////////
              SIE_IOSEL                                        ie_IOSEL;
    ///////////////////////////////////////////////////////////
    #define   GET32AIO_IRQENABLE_PRIIRQ(r32)                   _BFGET_(r32, 0, 0)
    #define   SET32AIO_IRQENABLE_PRIIRQ(r32,v)                 _BFSET_(r32, 0, 0,v)
    #define   GET16AIO_IRQENABLE_PRIIRQ(r16)                   _BFGET_(r16, 0, 0)
    #define   SET16AIO_IRQENABLE_PRIIRQ(r16,v)                 _BFSET_(r16, 0, 0,v)

    #define   GET32AIO_IRQENABLE_SECIRQ(r32)                   _BFGET_(r32, 1, 1)
    #define   SET32AIO_IRQENABLE_SECIRQ(r32,v)                 _BFSET_(r32, 1, 1,v)
    #define   GET16AIO_IRQENABLE_SECIRQ(r16)                   _BFGET_(r16, 1, 1)
    #define   SET16AIO_IRQENABLE_SECIRQ(r16,v)                 _BFSET_(r16, 1, 1,v)

    #define   GET32AIO_IRQENABLE_MIC1IRQ(r32)                  _BFGET_(r32, 2, 2)
    #define   SET32AIO_IRQENABLE_MIC1IRQ(r32,v)                _BFSET_(r32, 2, 2,v)
    #define   GET16AIO_IRQENABLE_MIC1IRQ(r16)                  _BFGET_(r16, 2, 2)
    #define   SET16AIO_IRQENABLE_MIC1IRQ(r16,v)                _BFSET_(r16, 2, 2,v)

    #define   GET32AIO_IRQENABLE_MIC2IRQ(r32)                  _BFGET_(r32, 3, 3)
    #define   SET32AIO_IRQENABLE_MIC2IRQ(r32,v)                _BFSET_(r32, 3, 3,v)
    #define   GET16AIO_IRQENABLE_MIC2IRQ(r16)                  _BFGET_(r16, 3, 3)
    #define   SET16AIO_IRQENABLE_MIC2IRQ(r16,v)                _BFSET_(r16, 3, 3,v)

    #define   GET32AIO_IRQENABLE_SPDIFIRQ(r32)                 _BFGET_(r32, 4, 4)
    #define   SET32AIO_IRQENABLE_SPDIFIRQ(r32,v)               _BFSET_(r32, 4, 4,v)
    #define   GET16AIO_IRQENABLE_SPDIFIRQ(r16)                 _BFGET_(r16, 4, 4)
    #define   SET16AIO_IRQENABLE_SPDIFIRQ(r16,v)               _BFSET_(r16, 4, 4,v)

    #define   GET32AIO_IRQENABLE_HDMIIRQ(r32)                  _BFGET_(r32, 5, 5)
    #define   SET32AIO_IRQENABLE_HDMIIRQ(r32,v)                _BFSET_(r32, 5, 5,v)
    #define   GET16AIO_IRQENABLE_HDMIIRQ(r16)                  _BFGET_(r16, 5, 5)
    #define   SET16AIO_IRQENABLE_HDMIIRQ(r16,v)                _BFSET_(r16, 5, 5,v)

    #define   GET32AIO_IRQENABLE_PDMIRQ(r32)                   _BFGET_(r32, 6, 6)
    #define   SET32AIO_IRQENABLE_PDMIRQ(r32,v)                 _BFSET_(r32, 6, 6,v)
    #define   GET16AIO_IRQENABLE_PDMIRQ(r16)                   _BFGET_(r16, 6, 6)
    #define   SET16AIO_IRQENABLE_PDMIRQ(r16,v)                 _BFSET_(r16, 6, 6,v)

    #define     w32AIO_IRQENABLE                               {\
            UNSG32 uIRQENABLE_PRIIRQ                           :  1;\
            UNSG32 uIRQENABLE_SECIRQ                           :  1;\
            UNSG32 uIRQENABLE_MIC1IRQ                          :  1;\
            UNSG32 uIRQENABLE_MIC2IRQ                          :  1;\
            UNSG32 uIRQENABLE_SPDIFIRQ                         :  1;\
            UNSG32 uIRQENABLE_HDMIIRQ                          :  1;\
            UNSG32 uIRQENABLE_PDMIRQ                           :  1;\
            UNSG32 RSVDx144_b7                                 : 25;\
          }
    union { UNSG32 u32AIO_IRQENABLE;
            struct w32AIO_IRQENABLE;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AIO_IRQSTS_PRISTS(r32)                      _BFGET_(r32, 0, 0)
    #define   SET32AIO_IRQSTS_PRISTS(r32,v)                    _BFSET_(r32, 0, 0,v)
    #define   GET16AIO_IRQSTS_PRISTS(r16)                      _BFGET_(r16, 0, 0)
    #define   SET16AIO_IRQSTS_PRISTS(r16,v)                    _BFSET_(r16, 0, 0,v)

    #define   GET32AIO_IRQSTS_SECSTS(r32)                      _BFGET_(r32, 1, 1)
    #define   SET32AIO_IRQSTS_SECSTS(r32,v)                    _BFSET_(r32, 1, 1,v)
    #define   GET16AIO_IRQSTS_SECSTS(r16)                      _BFGET_(r16, 1, 1)
    #define   SET16AIO_IRQSTS_SECSTS(r16,v)                    _BFSET_(r16, 1, 1,v)

    #define   GET32AIO_IRQSTS_MIC1STS(r32)                     _BFGET_(r32, 2, 2)
    #define   SET32AIO_IRQSTS_MIC1STS(r32,v)                   _BFSET_(r32, 2, 2,v)
    #define   GET16AIO_IRQSTS_MIC1STS(r16)                     _BFGET_(r16, 2, 2)
    #define   SET16AIO_IRQSTS_MIC1STS(r16,v)                   _BFSET_(r16, 2, 2,v)

    #define   GET32AIO_IRQSTS_MIC2STS(r32)                     _BFGET_(r32, 3, 3)
    #define   SET32AIO_IRQSTS_MIC2STS(r32,v)                   _BFSET_(r32, 3, 3,v)
    #define   GET16AIO_IRQSTS_MIC2STS(r16)                     _BFGET_(r16, 3, 3)
    #define   SET16AIO_IRQSTS_MIC2STS(r16,v)                   _BFSET_(r16, 3, 3,v)

    #define   GET32AIO_IRQSTS_SPDIFSTS(r32)                    _BFGET_(r32, 4, 4)
    #define   SET32AIO_IRQSTS_SPDIFSTS(r32,v)                  _BFSET_(r32, 4, 4,v)
    #define   GET16AIO_IRQSTS_SPDIFSTS(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16AIO_IRQSTS_SPDIFSTS(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32AIO_IRQSTS_HDMISTS(r32)                     _BFGET_(r32, 5, 5)
    #define   SET32AIO_IRQSTS_HDMISTS(r32,v)                   _BFSET_(r32, 5, 5,v)
    #define   GET16AIO_IRQSTS_HDMISTS(r16)                     _BFGET_(r16, 5, 5)
    #define   SET16AIO_IRQSTS_HDMISTS(r16,v)                   _BFSET_(r16, 5, 5,v)

    #define   GET32AIO_IRQSTS_PDMSTS(r32)                      _BFGET_(r32, 6, 6)
    #define   SET32AIO_IRQSTS_PDMSTS(r32,v)                    _BFSET_(r32, 6, 6,v)
    #define   GET16AIO_IRQSTS_PDMSTS(r16)                      _BFGET_(r16, 6, 6)
    #define   SET16AIO_IRQSTS_PDMSTS(r16,v)                    _BFSET_(r16, 6, 6,v)

    #define     w32AIO_IRQSTS                                  {\
            UNSG32 uIRQSTS_PRISTS                              :  1;\
            UNSG32 uIRQSTS_SECSTS                              :  1;\
            UNSG32 uIRQSTS_MIC1STS                             :  1;\
            UNSG32 uIRQSTS_MIC2STS                             :  1;\
            UNSG32 uIRQSTS_SPDIFSTS                            :  1;\
            UNSG32 uIRQSTS_HDMISTS                             :  1;\
            UNSG32 uIRQSTS_PDMSTS                              :  1;\
            UNSG32 RSVDx148_b7                                 : 25;\
          }
    union { UNSG32 u32AIO_IRQSTS;
            struct w32AIO_IRQSTS;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AIO_HDSRC_SEL(r32)                          _BFGET_(r32, 1, 0)
    #define   SET32AIO_HDSRC_SEL(r32,v)                        _BFSET_(r32, 1, 0,v)
    #define   GET16AIO_HDSRC_SEL(r16)                          _BFGET_(r16, 1, 0)
    #define   SET16AIO_HDSRC_SEL(r16,v)                        _BFSET_(r16, 1, 0,v)

    #define     w32AIO_HDSRC                                   {\
            UNSG32 uHDSRC_SEL                                  :  2;\
            UNSG32 RSVDx14C_b2                                 : 30;\
          }
    union { UNSG32 u32AIO_HDSRC;
            struct w32AIO_HDSRC;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32AIO_ADAC_CLK_CTRL_mclkDiv(r32)              _BFGET_(r32, 2, 0)
    #define   SET32AIO_ADAC_CLK_CTRL_mclkDiv(r32,v)            _BFSET_(r32, 2, 0,v)
    #define   GET16AIO_ADAC_CLK_CTRL_mclkDiv(r16)              _BFGET_(r16, 2, 0)
    #define   SET16AIO_ADAC_CLK_CTRL_mclkDiv(r16,v)            _BFSET_(r16, 2, 0,v)

    #define   GET32AIO_ADAC_CLK_CTRL_pwmclkDiv(r32)            _BFGET_(r32, 5, 3)
    #define   SET32AIO_ADAC_CLK_CTRL_pwmclkDiv(r32,v)          _BFSET_(r32, 5, 3,v)
    #define   GET16AIO_ADAC_CLK_CTRL_pwmclkDiv(r16)            _BFGET_(r16, 5, 3)
    #define   SET16AIO_ADAC_CLK_CTRL_pwmclkDiv(r16,v)          _BFSET_(r16, 5, 3,v)

    #define   GET32AIO_ADAC_CLK_CTRL_mclkInv(r32)              _BFGET_(r32, 6, 6)
    #define   SET32AIO_ADAC_CLK_CTRL_mclkInv(r32,v)            _BFSET_(r32, 6, 6,v)
    #define   GET16AIO_ADAC_CLK_CTRL_mclkInv(r16)              _BFGET_(r16, 6, 6)
    #define   SET16AIO_ADAC_CLK_CTRL_mclkInv(r16,v)            _BFSET_(r16, 6, 6,v)

    #define   GET32AIO_ADAC_CLK_CTRL_pwmclkInv(r32)            _BFGET_(r32, 7, 7)
    #define   SET32AIO_ADAC_CLK_CTRL_pwmclkInv(r32,v)          _BFSET_(r32, 7, 7,v)
    #define   GET16AIO_ADAC_CLK_CTRL_pwmclkInv(r16)            _BFGET_(r16, 7, 7)
    #define   SET16AIO_ADAC_CLK_CTRL_pwmclkInv(r16,v)          _BFSET_(r16, 7, 7,v)

    #define   GET32AIO_ADAC_CLK_CTRL_inputSel(r32)             _BFGET_(r32, 8, 8)
    #define   SET32AIO_ADAC_CLK_CTRL_inputSel(r32,v)           _BFSET_(r32, 8, 8,v)
    #define   GET16AIO_ADAC_CLK_CTRL_inputSel(r16)             _BFGET_(r16, 8, 8)
    #define   SET16AIO_ADAC_CLK_CTRL_inputSel(r16,v)           _BFSET_(r16, 8, 8,v)

    #define   GET32AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL(r32)       _BFGET_(r32,10, 9)
    #define   SET32AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL(r32,v)     _BFSET_(r32,10, 9,v)
    #define   GET16AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL(r16)       _BFGET_(r16,10, 9)
    #define   SET16AIO_ADAC_CLK_CTRL_PWMCLK_SRC_SEL(r16,v)     _BFSET_(r16,10, 9,v)

    #define   GET32AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL(r32)  _BFGET_(r32,11,11)
    #define   SET32AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL(r32,v) _BFSET_(r32,11,11,v)
    #define   GET16AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL(r16)  _BFGET_(r16,11,11)
    #define   SET16AIO_ADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL(r16,v) _BFSET_(r16,11,11,v)

    #define     w32AIO_ADAC_CLK_CTRL                           {\
            UNSG32 uADAC_CLK_CTRL_mclkDiv                      :  3;\
            UNSG32 uADAC_CLK_CTRL_pwmclkDiv                    :  3;\
            UNSG32 uADAC_CLK_CTRL_mclkInv                      :  1;\
            UNSG32 uADAC_CLK_CTRL_pwmclkInv                    :  1;\
            UNSG32 uADAC_CLK_CTRL_inputSel                     :  1;\
            UNSG32 uADAC_CLK_CTRL_PWMCLK_SRC_SEL               :  2;\
            UNSG32 uADAC_CLK_CTRL_PRIMCLK_OUT_SRC_SEL          :  1;\
            UNSG32 RSVDx150_b12                                : 20;\
          }
    union { UNSG32 u32AIO_ADAC_CLK_CTRL;
            struct w32AIO_ADAC_CLK_CTRL;
          };
    ///////////////////////////////////////////////////////////
    } SIE_AIO;

    typedef union  T32AIO_IRQENABLE
          { UNSG32 u32;
            struct w32AIO_IRQENABLE;
                 } T32AIO_IRQENABLE;
    typedef union  T32AIO_IRQSTS
          { UNSG32 u32;
            struct w32AIO_IRQSTS;
                 } T32AIO_IRQSTS;
    typedef union  T32AIO_HDSRC
          { UNSG32 u32;
            struct w32AIO_HDSRC;
                 } T32AIO_HDSRC;
    typedef union  T32AIO_ADAC_CLK_CTRL
          { UNSG32 u32;
            struct w32AIO_ADAC_CLK_CTRL;
                 } T32AIO_ADAC_CLK_CTRL;
    ///////////////////////////////////////////////////////////

    typedef union  TAIO_IRQENABLE
          { UNSG32 u32[1];
            struct {
            struct w32AIO_IRQENABLE;
                   };
                 } TAIO_IRQENABLE;
    typedef union  TAIO_IRQSTS
          { UNSG32 u32[1];
            struct {
            struct w32AIO_IRQSTS;
                   };
                 } TAIO_IRQSTS;
    typedef union  TAIO_HDSRC
          { UNSG32 u32[1];
            struct {
            struct w32AIO_HDSRC;
                   };
                 } TAIO_HDSRC;
    typedef union  TAIO_ADAC_CLK_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32AIO_ADAC_CLK_CTRL;
                   };
                 } TAIO_ADAC_CLK_CTRL;

    ///////////////////////////////////////////////////////////
     SIGN32 AIO_drvrd(SIE_AIO *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 AIO_drvwr(SIE_AIO *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void AIO_reset(SIE_AIO *p);
     SIGN32 AIO_cmp  (SIE_AIO *p, SIE_AIO *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define AIO_check(p,pie,pfx,hLOG) AIO_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define AIO_print(p,    pfx,hLOG) AIO_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: AIO
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: aio.h
////////////////////////////////////////////////////////////

