/********************************************************************************
 * 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: avioGbl.h
////////////////////////////////////////////////////////////
#ifndef avioGbl_h
#define avioGbl_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 avpllCh                 biu              (4,4)
///     ###
///     * AVPLL control signals for one channel
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 ctrl                 (P-)
///               %unsigned 13 POSTDIV                   0x0
///               %unsigned 1  POSTDIV_0P5               0x0
///                                    ###
///                                    * Audio clock divider program
///                                    * 1, When POSTDIV_CX[12:0]=
///                                    * 0 0000 0000 0000, then disable post divider
///                                    * 2, When POSTDIV_CX[12:0]>0:
///                                    * if POSTDIV_0P5_CX=0:
///                                    * Divider=POSTDIV_CX[12:0],
///                                    * if POSTDIV_0P5_CX=1:
///                                    * Divider=POSTDIV_CX[12:0]+0.5
///                                    * For C1-C7 only
///                                    ###
///               %unsigned 1  EN_DPLL                   0x0
///                                    ###
///                                    * 0: disable channel CX's DPLL
///                                    * 1: enable channel CX's DPLL
///                                    ###
///               %unsigned 2  EN_LP                     0x0
///                                    ###
///                                    * EN_LP_CX[1:0] FREQ_OFFSET   CK_INTG
///                                    * 00        X             CK_SSC
///                                    * 01         X*2          CK_SSC/2
///                                    * 10         X              CK_SSC
///                                    * 11          X*4                CK_SSC/4
///                                    ###
///               %%        15         # Stuffing bits...
///     # 0x00004 ctrl1                
///               %unsigned 19 FREQ_OFFSET               0x0
///                                    ###
///                                    * [18] is sign bit
///                                    * 0: PI's Frequency down
///                                    * 1: PI's Frequency up
///                                    * [17:0]: 1 LSB -> 0.25ppm,
///                                    * up to 5%
///                                    ###
///               %unsigned 1  FREQ_OFFSET_READY         0x0
///                                    ###
///                                    * Frequency offset value readiness
///                                    * indicator for FREQ_OFFSET_CX [18:0],
///                                    * the pulse need to be longer
///                                    * than 320/Fvco. For Fvco=3GHz,
///                                    * the pulse with should > 172ns;
///                                    * For Fvco=1.5GHz, pulse width >344ns
///                                    ###
///               %unsigned 1  PU                        0x0
///                                    ###
///                                    * 0: power down channel CX
///                                    * 1: power up channel CX
///                                    ###
///               %unsigned 1  PU_OFST_CTRL              0x1
///                                    ###
///                                    * 0: power down FREQ_OFFS
///                                    * 1: power up FREQ_OFFSET
///                                    ###
///               %%        10         # Stuffing bits...
///     # 0x00008 ctrl2                
///               %unsigned 20 P_SYNC1                   0x10
///                                    ###
///                                    * Set DPLL's reference divider
///                                    * Divider= P_SYNC1_CX[19:0]
///                                    * It is forbidden when N<16
///                                    ###
///               %%        12         # Stuffing bits...
///     # 0x0000C ctrl3                
///               %unsigned 20 P_SYNC2                   0x10
///                                    ###
///                                    * Set DPLL's feedback divider
///                                    * Divider= P_SYNC2_CX[19:0]
///                                    * It is forbidden when N<16
///                                    ###
///               %unsigned 1  RESET                     0x1
///                                    ###
///                                    * Reset channel CX logic:
///                                    * 0: not reset
///                                    * 1: active reset
///                                    ###
///               %unsigned 2  RESERVE_IN                0x0
///               %%        9          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      82b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_avpllCh
#define h_avpllCh (){}

    #define     RA_avpllCh_ctrl                                0x0000

    #define     BA_avpllCh_ctrl_POSTDIV                        0x0000
    #define     B16avpllCh_ctrl_POSTDIV                        0x0000
    #define   LSb32avpllCh_ctrl_POSTDIV                           0
    #define   LSb16avpllCh_ctrl_POSTDIV                           0
    #define       bavpllCh_ctrl_POSTDIV                        13
    #define   MSK32avpllCh_ctrl_POSTDIV                           0x00001FFF

    #define     BA_avpllCh_ctrl_POSTDIV_0P5                    0x0001
    #define     B16avpllCh_ctrl_POSTDIV_0P5                    0x0000
    #define   LSb32avpllCh_ctrl_POSTDIV_0P5                       13
    #define   LSb16avpllCh_ctrl_POSTDIV_0P5                       13
    #define       bavpllCh_ctrl_POSTDIV_0P5                    1
    #define   MSK32avpllCh_ctrl_POSTDIV_0P5                       0x00002000

    #define     BA_avpllCh_ctrl_EN_DPLL                        0x0001
    #define     B16avpllCh_ctrl_EN_DPLL                        0x0000
    #define   LSb32avpllCh_ctrl_EN_DPLL                           14
    #define   LSb16avpllCh_ctrl_EN_DPLL                           14
    #define       bavpllCh_ctrl_EN_DPLL                        1
    #define   MSK32avpllCh_ctrl_EN_DPLL                           0x00004000

    #define     BA_avpllCh_ctrl_EN_LP                          0x0001
    #define     B16avpllCh_ctrl_EN_LP                          0x0000
    #define   LSb32avpllCh_ctrl_EN_LP                             15
    #define   LSb16avpllCh_ctrl_EN_LP                             15
    #define       bavpllCh_ctrl_EN_LP                          2
    #define   MSK32avpllCh_ctrl_EN_LP                             0x00018000

    #define     RA_avpllCh_ctrl1                               0x0004

    #define     BA_avpllCh_ctrl_FREQ_OFFSET                    0x0004
    #define     B16avpllCh_ctrl_FREQ_OFFSET                    0x0004
    #define   LSb32avpllCh_ctrl_FREQ_OFFSET                       0
    #define   LSb16avpllCh_ctrl_FREQ_OFFSET                       0
    #define       bavpllCh_ctrl_FREQ_OFFSET                    19
    #define   MSK32avpllCh_ctrl_FREQ_OFFSET                       0x0007FFFF

    #define     BA_avpllCh_ctrl_FREQ_OFFSET_READY              0x0006
    #define     B16avpllCh_ctrl_FREQ_OFFSET_READY              0x0006
    #define   LSb32avpllCh_ctrl_FREQ_OFFSET_READY                 19
    #define   LSb16avpllCh_ctrl_FREQ_OFFSET_READY                 3
    #define       bavpllCh_ctrl_FREQ_OFFSET_READY              1
    #define   MSK32avpllCh_ctrl_FREQ_OFFSET_READY                 0x00080000

    #define     BA_avpllCh_ctrl_PU                             0x0006
    #define     B16avpllCh_ctrl_PU                             0x0006
    #define   LSb32avpllCh_ctrl_PU                                20
    #define   LSb16avpllCh_ctrl_PU                                4
    #define       bavpllCh_ctrl_PU                             1
    #define   MSK32avpllCh_ctrl_PU                                0x00100000

    #define     BA_avpllCh_ctrl_PU_OFST_CTRL                   0x0006
    #define     B16avpllCh_ctrl_PU_OFST_CTRL                   0x0006
    #define   LSb32avpllCh_ctrl_PU_OFST_CTRL                      21
    #define   LSb16avpllCh_ctrl_PU_OFST_CTRL                      5
    #define       bavpllCh_ctrl_PU_OFST_CTRL                   1
    #define   MSK32avpllCh_ctrl_PU_OFST_CTRL                      0x00200000

    #define     RA_avpllCh_ctrl2                               0x0008

    #define     BA_avpllCh_ctrl_P_SYNC1                        0x0008
    #define     B16avpllCh_ctrl_P_SYNC1                        0x0008
    #define   LSb32avpllCh_ctrl_P_SYNC1                           0
    #define   LSb16avpllCh_ctrl_P_SYNC1                           0
    #define       bavpllCh_ctrl_P_SYNC1                        20
    #define   MSK32avpllCh_ctrl_P_SYNC1                           0x000FFFFF

    #define     RA_avpllCh_ctrl3                               0x000C

    #define     BA_avpllCh_ctrl_P_SYNC2                        0x000C
    #define     B16avpllCh_ctrl_P_SYNC2                        0x000C
    #define   LSb32avpllCh_ctrl_P_SYNC2                           0
    #define   LSb16avpllCh_ctrl_P_SYNC2                           0
    #define       bavpllCh_ctrl_P_SYNC2                        20
    #define   MSK32avpllCh_ctrl_P_SYNC2                           0x000FFFFF

    #define     BA_avpllCh_ctrl_RESET                          0x000E
    #define     B16avpllCh_ctrl_RESET                          0x000E
    #define   LSb32avpllCh_ctrl_RESET                             20
    #define   LSb16avpllCh_ctrl_RESET                             4
    #define       bavpllCh_ctrl_RESET                          1
    #define   MSK32avpllCh_ctrl_RESET                             0x00100000

    #define     BA_avpllCh_ctrl_RESERVE_IN                     0x000E
    #define     B16avpllCh_ctrl_RESERVE_IN                     0x000E
    #define   LSb32avpllCh_ctrl_RESERVE_IN                        21
    #define   LSb16avpllCh_ctrl_RESERVE_IN                        5
    #define       bavpllCh_ctrl_RESERVE_IN                     2
    #define   MSK32avpllCh_ctrl_RESERVE_IN                        0x00600000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_avpllCh {
    ///////////////////////////////////////////////////////////
    #define   GET32avpllCh_ctrl_POSTDIV(r32)                   _BFGET_(r32,12, 0)
    #define   SET32avpllCh_ctrl_POSTDIV(r32,v)                 _BFSET_(r32,12, 0,v)
    #define   GET16avpllCh_ctrl_POSTDIV(r16)                   _BFGET_(r16,12, 0)
    #define   SET16avpllCh_ctrl_POSTDIV(r16,v)                 _BFSET_(r16,12, 0,v)

    #define   GET32avpllCh_ctrl_POSTDIV_0P5(r32)               _BFGET_(r32,13,13)
    #define   SET32avpllCh_ctrl_POSTDIV_0P5(r32,v)             _BFSET_(r32,13,13,v)
    #define   GET16avpllCh_ctrl_POSTDIV_0P5(r16)               _BFGET_(r16,13,13)
    #define   SET16avpllCh_ctrl_POSTDIV_0P5(r16,v)             _BFSET_(r16,13,13,v)

    #define   GET32avpllCh_ctrl_EN_DPLL(r32)                   _BFGET_(r32,14,14)
    #define   SET32avpllCh_ctrl_EN_DPLL(r32,v)                 _BFSET_(r32,14,14,v)
    #define   GET16avpllCh_ctrl_EN_DPLL(r16)                   _BFGET_(r16,14,14)
    #define   SET16avpllCh_ctrl_EN_DPLL(r16,v)                 _BFSET_(r16,14,14,v)

    #define   GET32avpllCh_ctrl_EN_LP(r32)                     _BFGET_(r32,16,15)
    #define   SET32avpllCh_ctrl_EN_LP(r32,v)                   _BFSET_(r32,16,15,v)

    #define     w32avpllCh_ctrl                                {\
            UNSG32 uctrl_POSTDIV                               : 13;\
            UNSG32 uctrl_POSTDIV_0P5                           :  1;\
            UNSG32 uctrl_EN_DPLL                               :  1;\
            UNSG32 uctrl_EN_LP                                 :  2;\
            UNSG32 RSVDx0_b17                                  : 15;\
          }
    union { UNSG32 u32avpllCh_ctrl;
            struct w32avpllCh_ctrl;
          };
    #define   GET32avpllCh_ctrl_FREQ_OFFSET(r32)               _BFGET_(r32,18, 0)
    #define   SET32avpllCh_ctrl_FREQ_OFFSET(r32,v)             _BFSET_(r32,18, 0,v)

    #define   GET32avpllCh_ctrl_FREQ_OFFSET_READY(r32)         _BFGET_(r32,19,19)
    #define   SET32avpllCh_ctrl_FREQ_OFFSET_READY(r32,v)       _BFSET_(r32,19,19,v)
    #define   GET16avpllCh_ctrl_FREQ_OFFSET_READY(r16)         _BFGET_(r16, 3, 3)
    #define   SET16avpllCh_ctrl_FREQ_OFFSET_READY(r16,v)       _BFSET_(r16, 3, 3,v)

    #define   GET32avpllCh_ctrl_PU(r32)                        _BFGET_(r32,20,20)
    #define   SET32avpllCh_ctrl_PU(r32,v)                      _BFSET_(r32,20,20,v)
    #define   GET16avpllCh_ctrl_PU(r16)                        _BFGET_(r16, 4, 4)
    #define   SET16avpllCh_ctrl_PU(r16,v)                      _BFSET_(r16, 4, 4,v)

    #define   GET32avpllCh_ctrl_PU_OFST_CTRL(r32)              _BFGET_(r32,21,21)
    #define   SET32avpllCh_ctrl_PU_OFST_CTRL(r32,v)            _BFSET_(r32,21,21,v)
    #define   GET16avpllCh_ctrl_PU_OFST_CTRL(r16)              _BFGET_(r16, 5, 5)
    #define   SET16avpllCh_ctrl_PU_OFST_CTRL(r16,v)            _BFSET_(r16, 5, 5,v)

    #define     w32avpllCh_ctrl1                               {\
            UNSG32 uctrl_FREQ_OFFSET                           : 19;\
            UNSG32 uctrl_FREQ_OFFSET_READY                     :  1;\
            UNSG32 uctrl_PU                                    :  1;\
            UNSG32 uctrl_PU_OFST_CTRL                          :  1;\
            UNSG32 RSVDx4_b22                                  : 10;\
          }
    union { UNSG32 u32avpllCh_ctrl1;
            struct w32avpllCh_ctrl1;
          };
    #define   GET32avpllCh_ctrl_P_SYNC1(r32)                   _BFGET_(r32,19, 0)
    #define   SET32avpllCh_ctrl_P_SYNC1(r32,v)                 _BFSET_(r32,19, 0,v)

    #define     w32avpllCh_ctrl2                               {\
            UNSG32 uctrl_P_SYNC1                               : 20;\
            UNSG32 RSVDx8_b20                                  : 12;\
          }
    union { UNSG32 u32avpllCh_ctrl2;
            struct w32avpllCh_ctrl2;
          };
    #define   GET32avpllCh_ctrl_P_SYNC2(r32)                   _BFGET_(r32,19, 0)
    #define   SET32avpllCh_ctrl_P_SYNC2(r32,v)                 _BFSET_(r32,19, 0,v)

    #define   GET32avpllCh_ctrl_RESET(r32)                     _BFGET_(r32,20,20)
    #define   SET32avpllCh_ctrl_RESET(r32,v)                   _BFSET_(r32,20,20,v)
    #define   GET16avpllCh_ctrl_RESET(r16)                     _BFGET_(r16, 4, 4)
    #define   SET16avpllCh_ctrl_RESET(r16,v)                   _BFSET_(r16, 4, 4,v)

    #define   GET32avpllCh_ctrl_RESERVE_IN(r32)                _BFGET_(r32,22,21)
    #define   SET32avpllCh_ctrl_RESERVE_IN(r32,v)              _BFSET_(r32,22,21,v)
    #define   GET16avpllCh_ctrl_RESERVE_IN(r16)                _BFGET_(r16, 6, 5)
    #define   SET16avpllCh_ctrl_RESERVE_IN(r16,v)              _BFSET_(r16, 6, 5,v)

    #define     w32avpllCh_ctrl3                               {\
            UNSG32 uctrl_P_SYNC2                               : 20;\
            UNSG32 uctrl_RESET                                 :  1;\
            UNSG32 uctrl_RESERVE_IN                            :  2;\
            UNSG32 RSVDxC_b23                                  :  9;\
          }
    union { UNSG32 u32avpllCh_ctrl3;
            struct w32avpllCh_ctrl3;
          };
    ///////////////////////////////////////////////////////////
    } SIE_avpllCh;

    typedef union  T32avpllCh_ctrl
          { UNSG32 u32;
            struct w32avpllCh_ctrl;
                 } T32avpllCh_ctrl;
    typedef union  T32avpllCh_ctrl1
          { UNSG32 u32;
            struct w32avpllCh_ctrl1;
                 } T32avpllCh_ctrl1;
    typedef union  T32avpllCh_ctrl2
          { UNSG32 u32;
            struct w32avpllCh_ctrl2;
                 } T32avpllCh_ctrl2;
    typedef union  T32avpllCh_ctrl3
          { UNSG32 u32;
            struct w32avpllCh_ctrl3;
                 } T32avpllCh_ctrl3;
    ///////////////////////////////////////////////////////////

    typedef union  TavpllCh_ctrl
          { UNSG32 u32[4];
            struct {
            struct w32avpllCh_ctrl;
            struct w32avpllCh_ctrl1;
            struct w32avpllCh_ctrl2;
            struct w32avpllCh_ctrl3;
                   };
                 } TavpllCh_ctrl;

    ///////////////////////////////////////////////////////////
     SIGN32 avpllCh_drvrd(SIE_avpllCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 avpllCh_drvwr(SIE_avpllCh *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void avpllCh_reset(SIE_avpllCh *p);
     SIGN32 avpllCh_cmp  (SIE_avpllCh *p, SIE_avpllCh *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define avpllCh_check(p,pie,pfx,hLOG) avpllCh_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define avpllCh_print(p,    pfx,hLOG) avpllCh_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: avpllCh
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE avpllCh8                biu              (4,4)
///     ###
///     * AVPLL control signals for channel 8 (Channel inside PLL)
///     ###
///     # # ----------------------------------------------------------
///     @ 0x00000 ctrl                 (P-)
///               %unsigned 13 POSTDIV                   0x0
///               %unsigned 1  POSTDIV_0P5               0x0
///                                    ###
///                                    * Audio clock divider program
///                                    * 1, When POSTDIV_CX[12:0]=
///                                    * 0 0000 0000 0000, then disable post divider
///                                    * 2, When POSTDIV_CX[12:0]>0:
///                                    * if POSTDIV_0P5_CX=0:
///                                    * Divider=POSTDIV_CX[12:0],
///                                    * if POSTDIV_0P5_CX=1:
///                                    * Divider=POSTDIV_CX[12:0]+0.5
///                                    * For C1-C7 only
///                                    ###
///               %unsigned 1  EN_DPLL                   0x0
///                                    ###
///                                    * 0: disable channel CX's DPLL
///                                    * 1: enable channel CX's DPLL
///                                    ###
///               %unsigned 2  EN_LP                     0x0
///                                    ###
///                                    * EN_LP_CX[1:0] FREQ_OFFSET   CK_INTG
///                                    * 00        X             CK_SSC
///                                    * 01         X*2          CK_SSC/2
///                                    * 10         X              CK_SSC
///                                    * 11          X*4                CK_SSC/4
///                                    ###
///               %%        15         # Stuffing bits...
///     # 0x00004 ctrl1                
///               %unsigned 19 FREQ_OFFSET               0x0
///                                    ###
///                                    * [18] is sign bit
///                                    * 0: PI's Frequency down
///                                    * 1: PI's Frequency up
///                                    * [17:0]: 1 LSB -> 0.25ppm,
///                                    * up to 5%
///                                    ###
///               %unsigned 1  FREQ_OFFSET_READY         0x0
///                                    ###
///                                    * Frequency offset value readiness
///                                    * indicator for FREQ_OFFSET_CX [18:0],
///                                    * the pulse need to be longer
///                                    * than 320/Fvco. For Fvco=3GHz,
///                                    * the pulse with should > 172ns;
///                                    * For Fvco=1.5GHz, pulse width >344ns
///                                    ###
///               %unsigned 1  PU                        0x0
///                                    ###
///                                    * 0: power down channel CX
///                                    * 1: power up channel CX
///                                    ###
///               %unsigned 1  PU_OFST_CTRL              0x1
///                                    ###
///                                    * 0: power down FREQ_OFFS
///                                    * 1: power up FREQ_OFFSET
///                                    ###
///               %%        10         # Stuffing bits...
///     # 0x00008 ctrl2                
///               %unsigned 20 P_SYNC1                   0x10
///                                    ###
///                                    * Set DPLL's reference divider
///                                    * Divider= P_SYNC1_CX[19:0]
///                                    * It is forbidden when N<16
///                                    ###
///               %%        12         # Stuffing bits...
///     # 0x0000C ctrl3                
///               %unsigned 20 P_SYNC2                   0x10
///                                    ###
///                                    * Set DPLL's feedback divider
///                                    * Divider= P_SYNC2_CX[19:0]
///                                    * It is forbidden when N<16
///                                    ###
///               %unsigned 1  RESET                     0x0
///                                    ###
///                                    * Reset channel CX logic:
///                                    * 0: not reset
///                                    * 1: active reset
///                                    ###
///               %unsigned 2  RESERVE_IN                0x1
///               %%        9          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:      16B, bits:      82b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_avpllCh8
#define h_avpllCh8 (){}

    #define     RA_avpllCh8_ctrl                               0x0000

    #define     BA_avpllCh8_ctrl_POSTDIV                       0x0000
    #define     B16avpllCh8_ctrl_POSTDIV                       0x0000
    #define   LSb32avpllCh8_ctrl_POSTDIV                          0
    #define   LSb16avpllCh8_ctrl_POSTDIV                          0
    #define       bavpllCh8_ctrl_POSTDIV                       13
    #define   MSK32avpllCh8_ctrl_POSTDIV                          0x00001FFF

    #define     BA_avpllCh8_ctrl_POSTDIV_0P5                   0x0001
    #define     B16avpllCh8_ctrl_POSTDIV_0P5                   0x0000
    #define   LSb32avpllCh8_ctrl_POSTDIV_0P5                      13
    #define   LSb16avpllCh8_ctrl_POSTDIV_0P5                      13
    #define       bavpllCh8_ctrl_POSTDIV_0P5                   1
    #define   MSK32avpllCh8_ctrl_POSTDIV_0P5                      0x00002000

    #define     BA_avpllCh8_ctrl_EN_DPLL                       0x0001
    #define     B16avpllCh8_ctrl_EN_DPLL                       0x0000
    #define   LSb32avpllCh8_ctrl_EN_DPLL                          14
    #define   LSb16avpllCh8_ctrl_EN_DPLL                          14
    #define       bavpllCh8_ctrl_EN_DPLL                       1
    #define   MSK32avpllCh8_ctrl_EN_DPLL                          0x00004000

    #define     BA_avpllCh8_ctrl_EN_LP                         0x0001
    #define     B16avpllCh8_ctrl_EN_LP                         0x0000
    #define   LSb32avpllCh8_ctrl_EN_LP                            15
    #define   LSb16avpllCh8_ctrl_EN_LP                            15
    #define       bavpllCh8_ctrl_EN_LP                         2
    #define   MSK32avpllCh8_ctrl_EN_LP                            0x00018000

    #define     RA_avpllCh8_ctrl1                              0x0004

    #define     BA_avpllCh8_ctrl_FREQ_OFFSET                   0x0004
    #define     B16avpllCh8_ctrl_FREQ_OFFSET                   0x0004
    #define   LSb32avpllCh8_ctrl_FREQ_OFFSET                      0
    #define   LSb16avpllCh8_ctrl_FREQ_OFFSET                      0
    #define       bavpllCh8_ctrl_FREQ_OFFSET                   19
    #define   MSK32avpllCh8_ctrl_FREQ_OFFSET                      0x0007FFFF

    #define     BA_avpllCh8_ctrl_FREQ_OFFSET_READY             0x0006
    #define     B16avpllCh8_ctrl_FREQ_OFFSET_READY             0x0006
    #define   LSb32avpllCh8_ctrl_FREQ_OFFSET_READY                19
    #define   LSb16avpllCh8_ctrl_FREQ_OFFSET_READY                3
    #define       bavpllCh8_ctrl_FREQ_OFFSET_READY             1
    #define   MSK32avpllCh8_ctrl_FREQ_OFFSET_READY                0x00080000

    #define     BA_avpllCh8_ctrl_PU                            0x0006
    #define     B16avpllCh8_ctrl_PU                            0x0006
    #define   LSb32avpllCh8_ctrl_PU                               20
    #define   LSb16avpllCh8_ctrl_PU                               4
    #define       bavpllCh8_ctrl_PU                            1
    #define   MSK32avpllCh8_ctrl_PU                               0x00100000

    #define     BA_avpllCh8_ctrl_PU_OFST_CTRL                  0x0006
    #define     B16avpllCh8_ctrl_PU_OFST_CTRL                  0x0006
    #define   LSb32avpllCh8_ctrl_PU_OFST_CTRL                     21
    #define   LSb16avpllCh8_ctrl_PU_OFST_CTRL                     5
    #define       bavpllCh8_ctrl_PU_OFST_CTRL                  1
    #define   MSK32avpllCh8_ctrl_PU_OFST_CTRL                     0x00200000

    #define     RA_avpllCh8_ctrl2                              0x0008

    #define     BA_avpllCh8_ctrl_P_SYNC1                       0x0008
    #define     B16avpllCh8_ctrl_P_SYNC1                       0x0008
    #define   LSb32avpllCh8_ctrl_P_SYNC1                          0
    #define   LSb16avpllCh8_ctrl_P_SYNC1                          0
    #define       bavpllCh8_ctrl_P_SYNC1                       20
    #define   MSK32avpllCh8_ctrl_P_SYNC1                          0x000FFFFF

    #define     RA_avpllCh8_ctrl3                              0x000C

    #define     BA_avpllCh8_ctrl_P_SYNC2                       0x000C
    #define     B16avpllCh8_ctrl_P_SYNC2                       0x000C
    #define   LSb32avpllCh8_ctrl_P_SYNC2                          0
    #define   LSb16avpllCh8_ctrl_P_SYNC2                          0
    #define       bavpllCh8_ctrl_P_SYNC2                       20
    #define   MSK32avpllCh8_ctrl_P_SYNC2                          0x000FFFFF

    #define     BA_avpllCh8_ctrl_RESET                         0x000E
    #define     B16avpllCh8_ctrl_RESET                         0x000E
    #define   LSb32avpllCh8_ctrl_RESET                            20
    #define   LSb16avpllCh8_ctrl_RESET                            4
    #define       bavpllCh8_ctrl_RESET                         1
    #define   MSK32avpllCh8_ctrl_RESET                            0x00100000

    #define     BA_avpllCh8_ctrl_RESERVE_IN                    0x000E
    #define     B16avpllCh8_ctrl_RESERVE_IN                    0x000E
    #define   LSb32avpllCh8_ctrl_RESERVE_IN                       21
    #define   LSb16avpllCh8_ctrl_RESERVE_IN                       5
    #define       bavpllCh8_ctrl_RESERVE_IN                    2
    #define   MSK32avpllCh8_ctrl_RESERVE_IN                       0x00600000
    ///////////////////////////////////////////////////////////

    typedef struct SIE_avpllCh8 {
    ///////////////////////////////////////////////////////////
    #define   GET32avpllCh8_ctrl_POSTDIV(r32)                  _BFGET_(r32,12, 0)
    #define   SET32avpllCh8_ctrl_POSTDIV(r32,v)                _BFSET_(r32,12, 0,v)
    #define   GET16avpllCh8_ctrl_POSTDIV(r16)                  _BFGET_(r16,12, 0)
    #define   SET16avpllCh8_ctrl_POSTDIV(r16,v)                _BFSET_(r16,12, 0,v)

    #define   GET32avpllCh8_ctrl_POSTDIV_0P5(r32)              _BFGET_(r32,13,13)
    #define   SET32avpllCh8_ctrl_POSTDIV_0P5(r32,v)            _BFSET_(r32,13,13,v)
    #define   GET16avpllCh8_ctrl_POSTDIV_0P5(r16)              _BFGET_(r16,13,13)
    #define   SET16avpllCh8_ctrl_POSTDIV_0P5(r16,v)            _BFSET_(r16,13,13,v)

    #define   GET32avpllCh8_ctrl_EN_DPLL(r32)                  _BFGET_(r32,14,14)
    #define   SET32avpllCh8_ctrl_EN_DPLL(r32,v)                _BFSET_(r32,14,14,v)
    #define   GET16avpllCh8_ctrl_EN_DPLL(r16)                  _BFGET_(r16,14,14)
    #define   SET16avpllCh8_ctrl_EN_DPLL(r16,v)                _BFSET_(r16,14,14,v)

    #define   GET32avpllCh8_ctrl_EN_LP(r32)                    _BFGET_(r32,16,15)
    #define   SET32avpllCh8_ctrl_EN_LP(r32,v)                  _BFSET_(r32,16,15,v)

    #define     w32avpllCh8_ctrl                               {\
            UNSG32 uctrl_POSTDIV                               : 13;\
            UNSG32 uctrl_POSTDIV_0P5                           :  1;\
            UNSG32 uctrl_EN_DPLL                               :  1;\
            UNSG32 uctrl_EN_LP                                 :  2;\
            UNSG32 RSVDx0_b17                                  : 15;\
          }
    union { UNSG32 u32avpllCh8_ctrl;
            struct w32avpllCh8_ctrl;
          };
    #define   GET32avpllCh8_ctrl_FREQ_OFFSET(r32)              _BFGET_(r32,18, 0)
    #define   SET32avpllCh8_ctrl_FREQ_OFFSET(r32,v)            _BFSET_(r32,18, 0,v)

    #define   GET32avpllCh8_ctrl_FREQ_OFFSET_READY(r32)        _BFGET_(r32,19,19)
    #define   SET32avpllCh8_ctrl_FREQ_OFFSET_READY(r32,v)      _BFSET_(r32,19,19,v)
    #define   GET16avpllCh8_ctrl_FREQ_OFFSET_READY(r16)        _BFGET_(r16, 3, 3)
    #define   SET16avpllCh8_ctrl_FREQ_OFFSET_READY(r16,v)      _BFSET_(r16, 3, 3,v)

    #define   GET32avpllCh8_ctrl_PU(r32)                       _BFGET_(r32,20,20)
    #define   SET32avpllCh8_ctrl_PU(r32,v)                     _BFSET_(r32,20,20,v)
    #define   GET16avpllCh8_ctrl_PU(r16)                       _BFGET_(r16, 4, 4)
    #define   SET16avpllCh8_ctrl_PU(r16,v)                     _BFSET_(r16, 4, 4,v)

    #define   GET32avpllCh8_ctrl_PU_OFST_CTRL(r32)             _BFGET_(r32,21,21)
    #define   SET32avpllCh8_ctrl_PU_OFST_CTRL(r32,v)           _BFSET_(r32,21,21,v)
    #define   GET16avpllCh8_ctrl_PU_OFST_CTRL(r16)             _BFGET_(r16, 5, 5)
    #define   SET16avpllCh8_ctrl_PU_OFST_CTRL(r16,v)           _BFSET_(r16, 5, 5,v)

    #define     w32avpllCh8_ctrl1                              {\
            UNSG32 uctrl_FREQ_OFFSET                           : 19;\
            UNSG32 uctrl_FREQ_OFFSET_READY                     :  1;\
            UNSG32 uctrl_PU                                    :  1;\
            UNSG32 uctrl_PU_OFST_CTRL                          :  1;\
            UNSG32 RSVDx4_b22                                  : 10;\
          }
    union { UNSG32 u32avpllCh8_ctrl1;
            struct w32avpllCh8_ctrl1;
          };
    #define   GET32avpllCh8_ctrl_P_SYNC1(r32)                  _BFGET_(r32,19, 0)
    #define   SET32avpllCh8_ctrl_P_SYNC1(r32,v)                _BFSET_(r32,19, 0,v)

    #define     w32avpllCh8_ctrl2                              {\
            UNSG32 uctrl_P_SYNC1                               : 20;\
            UNSG32 RSVDx8_b20                                  : 12;\
          }
    union { UNSG32 u32avpllCh8_ctrl2;
            struct w32avpllCh8_ctrl2;
          };
    #define   GET32avpllCh8_ctrl_P_SYNC2(r32)                  _BFGET_(r32,19, 0)
    #define   SET32avpllCh8_ctrl_P_SYNC2(r32,v)                _BFSET_(r32,19, 0,v)

    #define   GET32avpllCh8_ctrl_RESET(r32)                    _BFGET_(r32,20,20)
    #define   SET32avpllCh8_ctrl_RESET(r32,v)                  _BFSET_(r32,20,20,v)
    #define   GET16avpllCh8_ctrl_RESET(r16)                    _BFGET_(r16, 4, 4)
    #define   SET16avpllCh8_ctrl_RESET(r16,v)                  _BFSET_(r16, 4, 4,v)

    #define   GET32avpllCh8_ctrl_RESERVE_IN(r32)               _BFGET_(r32,22,21)
    #define   SET32avpllCh8_ctrl_RESERVE_IN(r32,v)             _BFSET_(r32,22,21,v)
    #define   GET16avpllCh8_ctrl_RESERVE_IN(r16)               _BFGET_(r16, 6, 5)
    #define   SET16avpllCh8_ctrl_RESERVE_IN(r16,v)             _BFSET_(r16, 6, 5,v)

    #define     w32avpllCh8_ctrl3                              {\
            UNSG32 uctrl_P_SYNC2                               : 20;\
            UNSG32 uctrl_RESET                                 :  1;\
            UNSG32 uctrl_RESERVE_IN                            :  2;\
            UNSG32 RSVDxC_b23                                  :  9;\
          }
    union { UNSG32 u32avpllCh8_ctrl3;
            struct w32avpllCh8_ctrl3;
          };
    ///////////////////////////////////////////////////////////
    } SIE_avpllCh8;

    typedef union  T32avpllCh8_ctrl
          { UNSG32 u32;
            struct w32avpllCh8_ctrl;
                 } T32avpllCh8_ctrl;
    typedef union  T32avpllCh8_ctrl1
          { UNSG32 u32;
            struct w32avpllCh8_ctrl1;
                 } T32avpllCh8_ctrl1;
    typedef union  T32avpllCh8_ctrl2
          { UNSG32 u32;
            struct w32avpllCh8_ctrl2;
                 } T32avpllCh8_ctrl2;
    typedef union  T32avpllCh8_ctrl3
          { UNSG32 u32;
            struct w32avpllCh8_ctrl3;
                 } T32avpllCh8_ctrl3;
    ///////////////////////////////////////////////////////////

    typedef union  TavpllCh8_ctrl
          { UNSG32 u32[4];
            struct {
            struct w32avpllCh8_ctrl;
            struct w32avpllCh8_ctrl1;
            struct w32avpllCh8_ctrl2;
            struct w32avpllCh8_ctrl3;
                   };
                 } TavpllCh8_ctrl;

    ///////////////////////////////////////////////////////////
     SIGN32 avpllCh8_drvrd(SIE_avpllCh8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 avpllCh8_drvwr(SIE_avpllCh8 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void avpllCh8_reset(SIE_avpllCh8 *p);
     SIGN32 avpllCh8_cmp  (SIE_avpllCh8 *p, SIE_avpllCh8 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define avpllCh8_check(p,pie,pfx,hLOG) avpllCh8_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define avpllCh8_print(p,    pfx,hLOG) avpllCh8_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: avpllCh8
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE avPll                   biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000 ctrlPLL              (P-)
///               ###
///               * AVPLL Control Registers
///               * The AVPLL is designed to generate clocks for digital Audio and Video applications. It consists of only one core PLL which generates clock outputs covering the frequency range from 1.5GHz to 2.97GHz. There are totally 8 PIs, with 1 PI used inside PLL, 7 PIs used in output clock channels. The PI used inside PLL is referred to C8.
///               * Other PIs in each channel provides 7 channels output clock signal:
///               * a), The other five channels (C1..C5) can be programmed as audio/video clock. They are single end output clock.
///               * b), In contrast with C1..C5, CHANNEL6 provide clock of lower jitter. They are proposed to be programmed as video DAC or other higher performance clock (Of course, they also can be programmed as audio clock). C6 are differential output clock.
///               * c), CHANNEL7 (C7) is dedicated HDMI clock. C7 is differential output clock.
///               ###
///               %unsigned 1  RESET                     0x1
///                                    ###
///                                    * 0
///                                    * De-asserted
///                                    * 1
///                                    * Asserted
///                                    * Reset PLL
///                                    * Must be de-asserted after 10us from the time when PU is set to 1.
///                                    * Note: Firmware should first set PU then de-assert PLL reset after 10us and then enable the video and audio clocks using the clk enable register.
///                                    ###
///               %unsigned 1  PU                        0x0
///                                    ###
///                                    * Power up signal for AVPLL
///                                    * 0=power down
///                                    * 1=active
///                                    * When PU=0, all circuits including IVREF, INTP, REGULATOR and PLL are POWERED OFF
///                                    ###
///               %unsigned 3  PLL_VDDRA_SEL             0x3
///                                    ###
///                                    * Select gate voltage for
///                                    * VDDBUF
///                                    * 000   1,16v
///                                    * 001   1.18v
///                                    * 010   1.20v
///                                    * 011   1.22v
///                                    * 100      1.24v
///                                    * 101     1.26v
///                                    * 110      1.28v
///                                    * 111   1.30v
///                                    * VGATE=1.22V,
///                                    * range from 1.16-1.3,
///                                    * 20mv/step
///                                    ###
///               %unsigned 1  REG_RING_EXTRA_I_EN       0x0
///                                    ###
///                                    * "1" : turn on extra current for
///                                    * the oscillator of vdda23 charge pump
///                                    ###
///               %unsigned 2  VCO_REF1P45_SEL           0x1
///                                    ###
///                                    * Select VREF1P0V_VCO1P45
///                                    * 00        0.975v
///                                    * 01        1.0v
///                                    * 10        1.025v
///                                    * 11 1.05v
///                                    ###
///               %unsigned 2  VDDA23_PUMP_SEL           0x1
///                                    ###
///                                    * Select VREF0P96_VDDA23PUMP
///                                    * 00 0.925v
///                                    * 01 0.95v
///                                    * 10 1.0v
///                                    * 11 1.05v
///                                    ###
///               %unsigned 3  VDDBUF_ADJ                0x0
///                                    ###
///                                    * Adjust for VDDVDOFBUF
///                                    * VDDBUF_ADJ[2:1] are reserved
///                                    * VDDBUF[0]:
///                                    * 0: vddvcofbuf=vddvco
///                                    * 1: vddvcofbuf=1.08*vddvco
///                                    ###
///               %unsigned 4  VDDL                      0xC
///                                    ###
///                                    * Internal regulated VDD supply
///                                    * 0001:   0.88v
///                                    * 0010:   0.90v
///                                    * 0011:   0.92v
///                                    * 0100:   0.94 v
///                                    * 0101:   0.96 v
///                                    * 0110:   0.98 v
///                                    * 0111:   1.00 v
///                                    * 1000:   1.02 v
///                                    * 1001:   1.04 v
///                                    * 1010:   1.06 v
///                                    * 1011:   1.08 v
///                                    * 1100:   1.10v
///                                    * 1101:   1.12v
///                                    * 1110:   1.14v
///                                    * 1111:   1.16v
///                                    ###
///               %unsigned 9  FBDIV                     0x10
///                                    ###
///                                    * Feedback clock divider select
///                                    * Divider= FBDIV [8:0], start from 16.
///                                    ###
///               %unsigned 4  ICP                       0x5
///                                    ###
///                                    * Charge-pump current con
///                                    * 0000   30uA
///                                    * 0001   37.5uA
///                                    * 0010   45uA
///                                    * 0011   52.5uA
///                                    * 0100   60uA
///                                    * 0101   75uA
///                                    * 0110   90uA
///                                    * 0111   105uA
///                                    * 1000   120uA
///                                    * 1001   150uA
///                                    * 1010   180uA
///                                    * 1011   210uA
///                                    * 1100   240uA
///                                    * 1101   300uA
///                                    * 1110   360uA
///                                    * 1111   420uA
///                                    ###
///               %unsigned 1  PLL_LPFC2_LESS            0x0
///                                    ###
///                                    * PLL_LPFC1=1, C2=1.2pf
///                                    * PLL_LPFC1=0, C2=1.4pf
///                                    ###
///               %%        1          # Stuffing bits...
///     # 0x00004 ctrlPLL1             
///               %unsigned 7  REFDIV                    0x1
///                                    ###
///                                    * Reference clock divider select
///                                    * [5:0]
///                                    * 0000000: not used.
///                                    * 0000001: div1.
///                                    * 0000010: div2
///                                    * 0000011: div3
///                                    * 0000100: div4
///                                    * .
///                                    * .
///                                    * Divider=REFDIV[5:0], for N>=2
///                                    ###
///               %unsigned 6  RESERVE_PLL_IN            0x0
///               %unsigned 4  EXT_SPEED                 0x0
///                                    ###
///                                    * External VCO speed control for
///                                    * different VCO frequencies. The following table is for simulation purpose, it matches the verilog model. The actual VCO speed setting is coming from the calibration result.
///                                    * SPEED[3:0]: typical freq range
///                                    * 0000   reserved
///                                    * 0001   reserved
///                                    * 0010   1.5G~1.7GHz
///                                    * 0011   1.7G~1.9GHz
///                                    * 0100   1.9G~2.1GHz
///                                    * 0101   2.1G~2.3GHz
///                                    * 0110   2.3G~2.45GHz
///                                    * 0111   2.45G~2.6GHz
///                                    * 1000   2.6G~2.75GHz
///                                    * 1001   2.75G~2.9GHz
///                                    * 1010   2.9G~3.0GHz
///                                    * 1011   reserved
///                                    * 1100   reserved
///                                    * 1101   reserved
///                                    * 1110   reserved
///                                    ###
///               %unsigned 4  SPEED_FBRES               0x0
///                                    ###
///                                    * External feedback resistor (VCO ring) set up bits
///                                    ###
///               %unsigned 1  UPDATE_SEL                0x0
///                                    ###
///                                    * Select the PLL update_rate:
///                                    * 0: 19M~26MHz
///                                    * for refclk 19.2M, 38.4M 2
///                                    * 1: 13MHz for refclk 13MHz
///                                    ###
///               %%        10         # Stuffing bits...
///     @ 0x00008 ctrlCAL              (P-)
///               %unsigned 9  CAL_FBDIV                 0x64
///                                    ###
///                                    * During calibration, count Fvco/CAL_FBDIV cycles in 1us, and compare it with SPEED_THRESH[5:0] to decide fvco is higher or lower than the expected frequency, set to dec100.
///                                    ###
///               %unsigned 1  EXT_SLLP_DAC_EN           0x0
///                                    ###
///                                    * 0: use the calibrated code SLLP_DAC_RD[6:0]
///                                    * 1: use the external input EXT_SLLP_DAC[6:0]
///                                    ###
///               %unsigned 1  EXT_SPEED_EN              0x0
///                                    ###
///                                    * 0: use the calibrated code SPEED_RD[3:0]
///                                    * 1: use the external input SPEED[3:0]
///                                    ###
///               %unsigned 1  EXT_SP_FBRES_EN           0x0
///                                    ###
///                                    * External speed enable pin
///                                    * 0: take SPEED_RD[3:0] for feedback resistor
///                                    * 1: take SPEED_FBRES[3:0]
///                                    ###
///               %unsigned 5  PLL_CALCLK_DIV            0x19
///                                    ###
///                                    * Divider to generate around 1MHz calibration clock from the internal update clock:
///                                    * 00000: not used.
///                                    * 00001: div1.
///                                    * 00010: div2
///                                    * 00011: div3
///                                    * 00100: div4
///                                    * .. .
///                                    * Divider=PLL_CALCLK_DIV[4:0], for N>=2
///                                    * D13 for refclk 13MHz
///                                    * D19 for refclk 19.2MHz/38.4MHz
///                                    * D25 for refclk 25MHz
///                                    * D26 for refclk 26MHz
///                                    ###
///               %unsigned 1  PLL_CAL_START             0x0
///                                    ###
///                                    * Rising edge to start PLL calibration
///                                    ###
///               %unsigned 4  REG_SETTLE_LIMIT          0x8
///                                    ###
///                                    * Select waiting time before calibration logic start to take action after PLL_CAL_START is issued, default is 8us
///                                    ###
///               %unsigned 1  SEL_VTHVCOCONT            0x1
///                                    ###
///                                    * Select the source of threshold
///                                    * 0: select IPP+IPTAT generated threshold voltage
///                                    * 1: select IPP generated threshold voltage
///                                    ###
///               %unsigned 6  SPEED_THRESH              0x1E
///                                    ###
///                                    * Digital counter threshold for VCO speed setting calibration loop, threshold value varies with the target VCO frequency.
///                                    * if CAL_FBDIV=dec100,
///                                    * speed_thresh[5:0]   VCO_frequency
///                                    * dec15                    1.5GHz
///                                    * dec20                    2.0GHz
///                                    * dec30                    3.0GHz
///                                    ###
///               %unsigned 2  VCON_SEL                  0x2
///                                    ###
///                                    * Used to set VCON value during PLL Open loop calibration
///                                    * 00: 0.6
///                                    * 01: 0.65
///                                    * 10: 0.7
///                                    * 11: 0.75
///                                    ###
///               %%        1          # Stuffing bits...
///     # 0x0000C ctrlCAL1             
///               %unsigned 7  EXT_SLLP_DAC              0x32
///                                    ###
///                                    * External input used to set VDDVCO value. Used to set Vcon reference value during PLL normal calibration.
///                                    * Vcon: 0.35 + 0.01125*VSET_SLLP_DAC[6:0] default: 01,1011 -------- Vcon=0.697V
///                                    ###
///               %unsigned 2  VTH_VCO_CAL               0x2
///                                    ###
///                                    * 2 bits to select the threshold for calibrated VDDVCO voltage
///                                    * When SEL_VTHVCOCON=1, select IPP generated threshold:
///                                    * 00 1.05v
///                                    * 01 1.075v
///                                    * 10 1.1v
///                                    * 11 1.125v
///                                    * When SEL_VTHVCOCON=0, select IPP portion for IPP+IPTAT generated threshold:
///                                    * 00: 31uA
///                                    * 01: 33uA
///                                    * 10: 35uA
///                                    * 11: 37uA
///                                    ###
///               %unsigned 2  VTH_VCO_PTAT              0x1
///                                    ###
///                                    * 2 bits to select IPTAT curren
///                                    * IPTAT current
///                                    * 00      0uA
///                                    * 01      2uA
///                                    * 10         4uA
///                                    * 11         6uA
///                                    ###
///               %%        21         # Stuffing bits...
///     @ 0x00010 ctrlSlowLoop         (P-)
///               %unsigned 3  PW_SLLP                   0x3
///                                    ###
///                                    * This set of signals define PLL
///                                    * 000: 2T_vco
///                                    * 001: 4T_vco
///                                    * 010: 8T_vco
///                                    * 011: 16T_vco
///                                    * 100: 32T_vco
///                                    * 101: 64T_vco
///                                    * 110:128T_vco
///                                    * 111:256T_vco
///                                    ###
///               %unsigned 1  SLLP_CLK_DIV5EN           0x0
///                                    ###
///                                    * Enable slow loop
///                                    * clock=200KHz, default is 100KHz
///                                    * SLLP_CLK_DIV5EN=0,
///                                    * slow loop clock is 100KHz;
///                                    * SLLP_CLK_DIV5EN=1,
///                                    * slow loop clock is 200KHz
///                                    ###
///               %unsigned 1  SLLP_EN_DIS               0x0
///                                    ###
///                                    * 0: Enable slow loop
///                                    * 1: Disable slow loop
///                                    ###
///               %unsigned 3  SLLP_PSF_LEVEL            0x1
///                                    ###
///                                    * IPP current control to genera
///                                    * SLLP_PSF_LEVEL[2] is re
///                                    * [1:0]   IPP current
///                                    * 00             2uA
///                                    * 01             4uA
///                                    * 10              6uA
///                                    * 11              8uA
///                                    ###
///               %%        24         # Stuffing bits...
///     @ 0x00014 ctrlINTP             (P-)
///               %unsigned 1  CLK_DET_EN                0x1
///                                    ###
///                                    * Enables PI output clock for internal reset circuit.
///                                    * 0: disable
///                                    * 1: enable
///                                    ###
///               %unsigned 2  DPHER_DLY_SEL             0x2
///                                    ###
///                                    * Tuning DPHERCK delay
///                                    * 00: smallest
///                                    * 01
///                                    * 10
///                                    * 11: largest
///                                    ###
///               %unsigned 4  INTPI                     0xB
///                                    ###
///                                    * Select PI bias current:
///                                    * INTPI[3:0] CURRENT VCO's Freq
///                                    * 0000       20uA
///                                    * 0001       22.5uA
///                                    * 0010       25uA     1.5GHz
///                                    * 0011       27.5uA
///                                    * 0100       30uA
///                                    * 0101       32.5uA 2.0GHz
///                                    * 0110       35uA
///                                    * 0111       37.5uA 2.3Ghz
///                                    * 1000       40uA
///                                    * 1001       42.5uA     2.65GHz
///                                    * 1010       45uA
///                                    * 1011       47.5uA     3GHz
///                                    * 1100       50uA
///                                    * 1101       52.5uA     3.3GHz
///                                    * 1110       55uA
///                                    * 1111      57.5uA     3.6GHz
///                                    * Use high frequency band on boarder
///                                    * Default setting is for 3.0GHz
///                                    ###
///               %unsigned 3  INTPR                     0x2
///                                    ###
///                                    * Used for PI Rload resistor se
///                                    * INTPR[2:0]   RES   VCO's Freq
///                                    * 000       650
///                                    * 001      750    3.3~4GHz
///                                    * 010       900   2.65~3.3GHz
///                                    * 011       1150 2.0~2.65GHz
///                                    * 100       1500   1.5~2GHz
///                                    * 101        2300   1~1.5GHz
///                                    * 110        4600
///                                    * 111          RESERVED
///                                    * Use high frequency band on boarder
///                                    * Default setting is for 3.0GHz
///                                    ###
///               %%        22         # Stuffing bits...
///     @ 0x00018 ctrlC8AddOn          (P-)
///               %unsigned 1  MASTER_SLAVEB             0x1
///                                    ###
///                                    * Used to sync frequencies
///                                    * if using 2 PLLs.
///                                    * 1 ' Master PLL
///                                    * 0 ' Slave PLL
///                                    ###
///               %unsigned 2  MODE                      0x0
///                                    ###
///                                    * Mode[1:0] cali_done fbclk
///                                    * 0x         0         fb_vco
///                                    * 0x         1         fb_pi
///                                    * 10         x         fb_vco
///                                    * 11         x         fb_pi
///                                    ###
///               %%        29         # Stuffing bits...
///     @ 0x0001C                      (P)
///     # 0x0001C C1                   
///               $avpllCh             C1                REG          
///     @ 0x0002C                      (P)
///     # 0x0002C C2                   
///               $avpllCh             C2                REG          
///     @ 0x0003C                      (P)
///     # 0x0003C C3                   
///               $avpllCh             C3                REG          
///     @ 0x0004C                      (P)
///     # 0x0004C C4                   
///               $avpllCh             C4                REG          
///     @ 0x0005C                      (P)
///     # 0x0005C C5                   
///               $avpllCh             C5                REG          
///     @ 0x0006C                      (P)
///     # 0x0006C C6                   
///               $avpllCh             C6                REG          
///     @ 0x0007C                      (P)
///     # 0x0007C C7                   
///               $avpllCh             C7                REG          
///     @ 0x0008C                      (P)
///     # 0x0008C C8                   
///               $avpllCh8            C8                REG          
///     @ 0x0009C ctrlTest             (P-)
///               %unsigned 1  CLKOUT_TST_EN             0x0
///                                    ###
///                                    * 0: CLKOUT_TST=0
///                                    * 1: Enable CLKOUT_TST output
///                                    ###
///               %unsigned 6  TEST_MON                  0x0
///                                    ###
///                                    * TEST_MON[5]:
///                                    * 0: TP = high Z
///                                    * 1: enable test point
///                                    * If TEST_MON[5]=1 :
///                                    * TEST_MON[4:0]      TP
///                                    * 0 0000              DVSS
///                                    * 0 0001              AVDD
///                                    * 0 0010              AVSS
///                                    * 0 0011~0 1001       AVSS
///                                    * 0 1010           TP_V0P7
///                                    * 0 1011           TP_VCOVTH
///                                    * 0 1100           VDDR_VCOFBUF
///                                    * 0 1101           TP_CHGPMP_
///                                    * 0 1110           TP_CHGPMP_
///                                    * 0 1111           VDDR_REFDIV
///                                    * 1 0000           VDDR_FBDIV
///                                    * 1 0001           VDDR_INTP_LA
///                                    * 1 0010           VDDR_INTP_LA
///                                    * 1 0011           TP_NBIAS_INTP
///                                    * 1 0100           DVDD
///                                    * 1 0101           PLL_LOCK
///                                    * 1 0110           PLL_CAL_EN
///                                    * 1 0111          PLL_CAL_DONE
///                                    * 1 1000          TP_VCTL_SLOW
///                                    * 1 1001          TP_VDAC_OUT
///                                    * 1 1010          TP_VDDVCO
///                                    * 1 1011          TP_VCON
///                                    * 1 1100~1 1111    AVSS
///                                    ###
///               %%        25         # Stuffing bits...
///     @ 0x000A0 status               (R-)
///               ###
///               * PLL status register
///               ###
///               %unsigned 1  PLL_LOCK                  
///                                    ###
///                                    * PLL Lock
///                                    * 1: PLL locked.
///                                    * 0: PLL not locked.
///                                    ###
///               %unsigned 6  RESERVE_PLL_OUT           
///               %unsigned 9  FBDIV_RD                  
///                                    ###
///                                    * Output register bits for calibrated FBDIV[8:0]
///                                    ###
///               %unsigned 1  PLL_CAL_DONE              
///                                    ###
///                                    * Rising edge indicate the end of PLL calibration
///                                    ###
///               %unsigned 6  SPEED_CNT                 
///                                    ###
///                                    * Output register bits for speed counter in calibration
///                                    ###
///               %unsigned 4  SPEED_RD                  
///                                    ###
///                                    * Output register bits for calibrated SPEED[3:0]
///                                    ###
///               %%        5          # Stuffing bits...
///     # 0x000A4 status1              
///               %unsigned 7  SLLP_DAC_RD               
///                                    ###
///                                    * Output register bits for calibrated SLLP_DAC[6:0]
///                                    ###
///               %%        25         # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     168B, bits:     813b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_avPll
#define h_avPll (){}

    #define     RA_avPll_ctrlPLL                               0x0000

    #define     BA_avPll_ctrlPLL_RESET                         0x0000
    #define     B16avPll_ctrlPLL_RESET                         0x0000
    #define   LSb32avPll_ctrlPLL_RESET                            0
    #define   LSb16avPll_ctrlPLL_RESET                            0
    #define       bavPll_ctrlPLL_RESET                         1
    #define   MSK32avPll_ctrlPLL_RESET                            0x00000001

    #define     BA_avPll_ctrlPLL_PU                            0x0000
    #define     B16avPll_ctrlPLL_PU                            0x0000
    #define   LSb32avPll_ctrlPLL_PU                               1
    #define   LSb16avPll_ctrlPLL_PU                               1
    #define       bavPll_ctrlPLL_PU                            1
    #define   MSK32avPll_ctrlPLL_PU                               0x00000002

    #define     BA_avPll_ctrlPLL_PLL_VDDRA_SEL                 0x0000
    #define     B16avPll_ctrlPLL_PLL_VDDRA_SEL                 0x0000
    #define   LSb32avPll_ctrlPLL_PLL_VDDRA_SEL                    2
    #define   LSb16avPll_ctrlPLL_PLL_VDDRA_SEL                    2
    #define       bavPll_ctrlPLL_PLL_VDDRA_SEL                 3
    #define   MSK32avPll_ctrlPLL_PLL_VDDRA_SEL                    0x0000001C

    #define     BA_avPll_ctrlPLL_REG_RING_EXTRA_I_EN           0x0000
    #define     B16avPll_ctrlPLL_REG_RING_EXTRA_I_EN           0x0000
    #define   LSb32avPll_ctrlPLL_REG_RING_EXTRA_I_EN              5
    #define   LSb16avPll_ctrlPLL_REG_RING_EXTRA_I_EN              5
    #define       bavPll_ctrlPLL_REG_RING_EXTRA_I_EN           1
    #define   MSK32avPll_ctrlPLL_REG_RING_EXTRA_I_EN              0x00000020

    #define     BA_avPll_ctrlPLL_VCO_REF1P45_SEL               0x0000
    #define     B16avPll_ctrlPLL_VCO_REF1P45_SEL               0x0000
    #define   LSb32avPll_ctrlPLL_VCO_REF1P45_SEL                  6
    #define   LSb16avPll_ctrlPLL_VCO_REF1P45_SEL                  6
    #define       bavPll_ctrlPLL_VCO_REF1P45_SEL               2
    #define   MSK32avPll_ctrlPLL_VCO_REF1P45_SEL                  0x000000C0

    #define     BA_avPll_ctrlPLL_VDDA23_PUMP_SEL               0x0001
    #define     B16avPll_ctrlPLL_VDDA23_PUMP_SEL               0x0000
    #define   LSb32avPll_ctrlPLL_VDDA23_PUMP_SEL                  8
    #define   LSb16avPll_ctrlPLL_VDDA23_PUMP_SEL                  8
    #define       bavPll_ctrlPLL_VDDA23_PUMP_SEL               2
    #define   MSK32avPll_ctrlPLL_VDDA23_PUMP_SEL                  0x00000300

    #define     BA_avPll_ctrlPLL_VDDBUF_ADJ                    0x0001
    #define     B16avPll_ctrlPLL_VDDBUF_ADJ                    0x0000
    #define   LSb32avPll_ctrlPLL_VDDBUF_ADJ                       10
    #define   LSb16avPll_ctrlPLL_VDDBUF_ADJ                       10
    #define       bavPll_ctrlPLL_VDDBUF_ADJ                    3
    #define   MSK32avPll_ctrlPLL_VDDBUF_ADJ                       0x00001C00

    #define     BA_avPll_ctrlPLL_VDDL                          0x0001
    #define     B16avPll_ctrlPLL_VDDL                          0x0000
    #define   LSb32avPll_ctrlPLL_VDDL                             13
    #define   LSb16avPll_ctrlPLL_VDDL                             13
    #define       bavPll_ctrlPLL_VDDL                          4
    #define   MSK32avPll_ctrlPLL_VDDL                             0x0001E000

    #define     BA_avPll_ctrlPLL_FBDIV                         0x0002
    #define     B16avPll_ctrlPLL_FBDIV                         0x0002
    #define   LSb32avPll_ctrlPLL_FBDIV                            17
    #define   LSb16avPll_ctrlPLL_FBDIV                            1
    #define       bavPll_ctrlPLL_FBDIV                         9
    #define   MSK32avPll_ctrlPLL_FBDIV                            0x03FE0000

    #define     BA_avPll_ctrlPLL_ICP                           0x0003
    #define     B16avPll_ctrlPLL_ICP                           0x0002
    #define   LSb32avPll_ctrlPLL_ICP                              26
    #define   LSb16avPll_ctrlPLL_ICP                              10
    #define       bavPll_ctrlPLL_ICP                           4
    #define   MSK32avPll_ctrlPLL_ICP                              0x3C000000

    #define     BA_avPll_ctrlPLL_PLL_LPFC2_LESS                0x0003
    #define     B16avPll_ctrlPLL_PLL_LPFC2_LESS                0x0002
    #define   LSb32avPll_ctrlPLL_PLL_LPFC2_LESS                   30
    #define   LSb16avPll_ctrlPLL_PLL_LPFC2_LESS                   14
    #define       bavPll_ctrlPLL_PLL_LPFC2_LESS                1
    #define   MSK32avPll_ctrlPLL_PLL_LPFC2_LESS                   0x40000000

    #define     RA_avPll_ctrlPLL1                              0x0004

    #define     BA_avPll_ctrlPLL_REFDIV                        0x0004
    #define     B16avPll_ctrlPLL_REFDIV                        0x0004
    #define   LSb32avPll_ctrlPLL_REFDIV                           0
    #define   LSb16avPll_ctrlPLL_REFDIV                           0
    #define       bavPll_ctrlPLL_REFDIV                        7
    #define   MSK32avPll_ctrlPLL_REFDIV                           0x0000007F

    #define     BA_avPll_ctrlPLL_RESERVE_PLL_IN                0x0004
    #define     B16avPll_ctrlPLL_RESERVE_PLL_IN                0x0004
    #define   LSb32avPll_ctrlPLL_RESERVE_PLL_IN                   7
    #define   LSb16avPll_ctrlPLL_RESERVE_PLL_IN                   7
    #define       bavPll_ctrlPLL_RESERVE_PLL_IN                6
    #define   MSK32avPll_ctrlPLL_RESERVE_PLL_IN                   0x00001F80

    #define     BA_avPll_ctrlPLL_EXT_SPEED                     0x0005
    #define     B16avPll_ctrlPLL_EXT_SPEED                     0x0004
    #define   LSb32avPll_ctrlPLL_EXT_SPEED                        13
    #define   LSb16avPll_ctrlPLL_EXT_SPEED                        13
    #define       bavPll_ctrlPLL_EXT_SPEED                     4
    #define   MSK32avPll_ctrlPLL_EXT_SPEED                        0x0001E000

    #define     BA_avPll_ctrlPLL_SPEED_FBRES                   0x0006
    #define     B16avPll_ctrlPLL_SPEED_FBRES                   0x0006
    #define   LSb32avPll_ctrlPLL_SPEED_FBRES                      17
    #define   LSb16avPll_ctrlPLL_SPEED_FBRES                      1
    #define       bavPll_ctrlPLL_SPEED_FBRES                   4
    #define   MSK32avPll_ctrlPLL_SPEED_FBRES                      0x001E0000

    #define     BA_avPll_ctrlPLL_UPDATE_SEL                    0x0006
    #define     B16avPll_ctrlPLL_UPDATE_SEL                    0x0006
    #define   LSb32avPll_ctrlPLL_UPDATE_SEL                       21
    #define   LSb16avPll_ctrlPLL_UPDATE_SEL                       5
    #define       bavPll_ctrlPLL_UPDATE_SEL                    1
    #define   MSK32avPll_ctrlPLL_UPDATE_SEL                       0x00200000
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_ctrlCAL                               0x0008

    #define     BA_avPll_ctrlCAL_CAL_FBDIV                     0x0008
    #define     B16avPll_ctrlCAL_CAL_FBDIV                     0x0008
    #define   LSb32avPll_ctrlCAL_CAL_FBDIV                        0
    #define   LSb16avPll_ctrlCAL_CAL_FBDIV                        0
    #define       bavPll_ctrlCAL_CAL_FBDIV                     9
    #define   MSK32avPll_ctrlCAL_CAL_FBDIV                        0x000001FF

    #define     BA_avPll_ctrlCAL_EXT_SLLP_DAC_EN               0x0009
    #define     B16avPll_ctrlCAL_EXT_SLLP_DAC_EN               0x0008
    #define   LSb32avPll_ctrlCAL_EXT_SLLP_DAC_EN                  9
    #define   LSb16avPll_ctrlCAL_EXT_SLLP_DAC_EN                  9
    #define       bavPll_ctrlCAL_EXT_SLLP_DAC_EN               1
    #define   MSK32avPll_ctrlCAL_EXT_SLLP_DAC_EN                  0x00000200

    #define     BA_avPll_ctrlCAL_EXT_SPEED_EN                  0x0009
    #define     B16avPll_ctrlCAL_EXT_SPEED_EN                  0x0008
    #define   LSb32avPll_ctrlCAL_EXT_SPEED_EN                     10
    #define   LSb16avPll_ctrlCAL_EXT_SPEED_EN                     10
    #define       bavPll_ctrlCAL_EXT_SPEED_EN                  1
    #define   MSK32avPll_ctrlCAL_EXT_SPEED_EN                     0x00000400

    #define     BA_avPll_ctrlCAL_EXT_SP_FBRES_EN               0x0009
    #define     B16avPll_ctrlCAL_EXT_SP_FBRES_EN               0x0008
    #define   LSb32avPll_ctrlCAL_EXT_SP_FBRES_EN                  11
    #define   LSb16avPll_ctrlCAL_EXT_SP_FBRES_EN                  11
    #define       bavPll_ctrlCAL_EXT_SP_FBRES_EN               1
    #define   MSK32avPll_ctrlCAL_EXT_SP_FBRES_EN                  0x00000800

    #define     BA_avPll_ctrlCAL_PLL_CALCLK_DIV                0x0009
    #define     B16avPll_ctrlCAL_PLL_CALCLK_DIV                0x0008
    #define   LSb32avPll_ctrlCAL_PLL_CALCLK_DIV                   12
    #define   LSb16avPll_ctrlCAL_PLL_CALCLK_DIV                   12
    #define       bavPll_ctrlCAL_PLL_CALCLK_DIV                5
    #define   MSK32avPll_ctrlCAL_PLL_CALCLK_DIV                   0x0001F000

    #define     BA_avPll_ctrlCAL_PLL_CAL_START                 0x000A
    #define     B16avPll_ctrlCAL_PLL_CAL_START                 0x000A
    #define   LSb32avPll_ctrlCAL_PLL_CAL_START                    17
    #define   LSb16avPll_ctrlCAL_PLL_CAL_START                    1
    #define       bavPll_ctrlCAL_PLL_CAL_START                 1
    #define   MSK32avPll_ctrlCAL_PLL_CAL_START                    0x00020000

    #define     BA_avPll_ctrlCAL_REG_SETTLE_LIMIT              0x000A
    #define     B16avPll_ctrlCAL_REG_SETTLE_LIMIT              0x000A
    #define   LSb32avPll_ctrlCAL_REG_SETTLE_LIMIT                 18
    #define   LSb16avPll_ctrlCAL_REG_SETTLE_LIMIT                 2
    #define       bavPll_ctrlCAL_REG_SETTLE_LIMIT              4
    #define   MSK32avPll_ctrlCAL_REG_SETTLE_LIMIT                 0x003C0000

    #define     BA_avPll_ctrlCAL_SEL_VTHVCOCONT                0x000A
    #define     B16avPll_ctrlCAL_SEL_VTHVCOCONT                0x000A
    #define   LSb32avPll_ctrlCAL_SEL_VTHVCOCONT                   22
    #define   LSb16avPll_ctrlCAL_SEL_VTHVCOCONT                   6
    #define       bavPll_ctrlCAL_SEL_VTHVCOCONT                1
    #define   MSK32avPll_ctrlCAL_SEL_VTHVCOCONT                   0x00400000

    #define     BA_avPll_ctrlCAL_SPEED_THRESH                  0x000A
    #define     B16avPll_ctrlCAL_SPEED_THRESH                  0x000A
    #define   LSb32avPll_ctrlCAL_SPEED_THRESH                     23
    #define   LSb16avPll_ctrlCAL_SPEED_THRESH                     7
    #define       bavPll_ctrlCAL_SPEED_THRESH                  6
    #define   MSK32avPll_ctrlCAL_SPEED_THRESH                     0x1F800000

    #define     BA_avPll_ctrlCAL_VCON_SEL                      0x000B
    #define     B16avPll_ctrlCAL_VCON_SEL                      0x000A
    #define   LSb32avPll_ctrlCAL_VCON_SEL                         29
    #define   LSb16avPll_ctrlCAL_VCON_SEL                         13
    #define       bavPll_ctrlCAL_VCON_SEL                      2
    #define   MSK32avPll_ctrlCAL_VCON_SEL                         0x60000000

    #define     RA_avPll_ctrlCAL1                              0x000C

    #define     BA_avPll_ctrlCAL_EXT_SLLP_DAC                  0x000C
    #define     B16avPll_ctrlCAL_EXT_SLLP_DAC                  0x000C
    #define   LSb32avPll_ctrlCAL_EXT_SLLP_DAC                     0
    #define   LSb16avPll_ctrlCAL_EXT_SLLP_DAC                     0
    #define       bavPll_ctrlCAL_EXT_SLLP_DAC                  7
    #define   MSK32avPll_ctrlCAL_EXT_SLLP_DAC                     0x0000007F

    #define     BA_avPll_ctrlCAL_VTH_VCO_CAL                   0x000C
    #define     B16avPll_ctrlCAL_VTH_VCO_CAL                   0x000C
    #define   LSb32avPll_ctrlCAL_VTH_VCO_CAL                      7
    #define   LSb16avPll_ctrlCAL_VTH_VCO_CAL                      7
    #define       bavPll_ctrlCAL_VTH_VCO_CAL                   2
    #define   MSK32avPll_ctrlCAL_VTH_VCO_CAL                      0x00000180

    #define     BA_avPll_ctrlCAL_VTH_VCO_PTAT                  0x000D
    #define     B16avPll_ctrlCAL_VTH_VCO_PTAT                  0x000C
    #define   LSb32avPll_ctrlCAL_VTH_VCO_PTAT                     9
    #define   LSb16avPll_ctrlCAL_VTH_VCO_PTAT                     9
    #define       bavPll_ctrlCAL_VTH_VCO_PTAT                  2
    #define   MSK32avPll_ctrlCAL_VTH_VCO_PTAT                     0x00000600
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_ctrlSlowLoop                          0x0010

    #define     BA_avPll_ctrlSlowLoop_PW_SLLP                  0x0010
    #define     B16avPll_ctrlSlowLoop_PW_SLLP                  0x0010
    #define   LSb32avPll_ctrlSlowLoop_PW_SLLP                     0
    #define   LSb16avPll_ctrlSlowLoop_PW_SLLP                     0
    #define       bavPll_ctrlSlowLoop_PW_SLLP                  3
    #define   MSK32avPll_ctrlSlowLoop_PW_SLLP                     0x00000007

    #define     BA_avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN          0x0010
    #define     B16avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN          0x0010
    #define   LSb32avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN             3
    #define   LSb16avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN             3
    #define       bavPll_ctrlSlowLoop_SLLP_CLK_DIV5EN          1
    #define   MSK32avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN             0x00000008

    #define     BA_avPll_ctrlSlowLoop_SLLP_EN_DIS              0x0010
    #define     B16avPll_ctrlSlowLoop_SLLP_EN_DIS              0x0010
    #define   LSb32avPll_ctrlSlowLoop_SLLP_EN_DIS                 4
    #define   LSb16avPll_ctrlSlowLoop_SLLP_EN_DIS                 4
    #define       bavPll_ctrlSlowLoop_SLLP_EN_DIS              1
    #define   MSK32avPll_ctrlSlowLoop_SLLP_EN_DIS                 0x00000010

    #define     BA_avPll_ctrlSlowLoop_SLLP_PSF_LEVEL           0x0010
    #define     B16avPll_ctrlSlowLoop_SLLP_PSF_LEVEL           0x0010
    #define   LSb32avPll_ctrlSlowLoop_SLLP_PSF_LEVEL              5
    #define   LSb16avPll_ctrlSlowLoop_SLLP_PSF_LEVEL              5
    #define       bavPll_ctrlSlowLoop_SLLP_PSF_LEVEL           3
    #define   MSK32avPll_ctrlSlowLoop_SLLP_PSF_LEVEL              0x000000E0
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_ctrlINTP                              0x0014

    #define     BA_avPll_ctrlINTP_CLK_DET_EN                   0x0014
    #define     B16avPll_ctrlINTP_CLK_DET_EN                   0x0014
    #define   LSb32avPll_ctrlINTP_CLK_DET_EN                      0
    #define   LSb16avPll_ctrlINTP_CLK_DET_EN                      0
    #define       bavPll_ctrlINTP_CLK_DET_EN                   1
    #define   MSK32avPll_ctrlINTP_CLK_DET_EN                      0x00000001

    #define     BA_avPll_ctrlINTP_DPHER_DLY_SEL                0x0014
    #define     B16avPll_ctrlINTP_DPHER_DLY_SEL                0x0014
    #define   LSb32avPll_ctrlINTP_DPHER_DLY_SEL                   1
    #define   LSb16avPll_ctrlINTP_DPHER_DLY_SEL                   1
    #define       bavPll_ctrlINTP_DPHER_DLY_SEL                2
    #define   MSK32avPll_ctrlINTP_DPHER_DLY_SEL                   0x00000006

    #define     BA_avPll_ctrlINTP_INTPI                        0x0014
    #define     B16avPll_ctrlINTP_INTPI                        0x0014
    #define   LSb32avPll_ctrlINTP_INTPI                           3
    #define   LSb16avPll_ctrlINTP_INTPI                           3
    #define       bavPll_ctrlINTP_INTPI                        4
    #define   MSK32avPll_ctrlINTP_INTPI                           0x00000078

    #define     BA_avPll_ctrlINTP_INTPR                        0x0014
    #define     B16avPll_ctrlINTP_INTPR                        0x0014
    #define   LSb32avPll_ctrlINTP_INTPR                           7
    #define   LSb16avPll_ctrlINTP_INTPR                           7
    #define       bavPll_ctrlINTP_INTPR                        3
    #define   MSK32avPll_ctrlINTP_INTPR                           0x00000380
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_ctrlC8AddOn                           0x0018

    #define     BA_avPll_ctrlC8AddOn_MASTER_SLAVEB             0x0018
    #define     B16avPll_ctrlC8AddOn_MASTER_SLAVEB             0x0018
    #define   LSb32avPll_ctrlC8AddOn_MASTER_SLAVEB                0
    #define   LSb16avPll_ctrlC8AddOn_MASTER_SLAVEB                0
    #define       bavPll_ctrlC8AddOn_MASTER_SLAVEB             1
    #define   MSK32avPll_ctrlC8AddOn_MASTER_SLAVEB                0x00000001

    #define     BA_avPll_ctrlC8AddOn_MODE                      0x0018
    #define     B16avPll_ctrlC8AddOn_MODE                      0x0018
    #define   LSb32avPll_ctrlC8AddOn_MODE                         1
    #define   LSb16avPll_ctrlC8AddOn_MODE                         1
    #define       bavPll_ctrlC8AddOn_MODE                      2
    #define   MSK32avPll_ctrlC8AddOn_MODE                         0x00000006
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C1                                    0x001C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C2                                    0x002C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C3                                    0x003C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C4                                    0x004C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C5                                    0x005C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C6                                    0x006C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C7                                    0x007C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_C8                                    0x008C
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_ctrlTest                              0x009C

    #define     BA_avPll_ctrlTest_CLKOUT_TST_EN                0x009C
    #define     B16avPll_ctrlTest_CLKOUT_TST_EN                0x009C
    #define   LSb32avPll_ctrlTest_CLKOUT_TST_EN                   0
    #define   LSb16avPll_ctrlTest_CLKOUT_TST_EN                   0
    #define       bavPll_ctrlTest_CLKOUT_TST_EN                1
    #define   MSK32avPll_ctrlTest_CLKOUT_TST_EN                   0x00000001

    #define     BA_avPll_ctrlTest_TEST_MON                     0x009C
    #define     B16avPll_ctrlTest_TEST_MON                     0x009C
    #define   LSb32avPll_ctrlTest_TEST_MON                        1
    #define   LSb16avPll_ctrlTest_TEST_MON                        1
    #define       bavPll_ctrlTest_TEST_MON                     6
    #define   MSK32avPll_ctrlTest_TEST_MON                        0x0000007E
    ///////////////////////////////////////////////////////////
    #define     RA_avPll_status                                0x00A0

    #define     BA_avPll_status_PLL_LOCK                       0x00A0
    #define     B16avPll_status_PLL_LOCK                       0x00A0
    #define   LSb32avPll_status_PLL_LOCK                          0
    #define   LSb16avPll_status_PLL_LOCK                          0
    #define       bavPll_status_PLL_LOCK                       1
    #define   MSK32avPll_status_PLL_LOCK                          0x00000001

    #define     BA_avPll_status_RESERVE_PLL_OUT                0x00A0
    #define     B16avPll_status_RESERVE_PLL_OUT                0x00A0
    #define   LSb32avPll_status_RESERVE_PLL_OUT                   1
    #define   LSb16avPll_status_RESERVE_PLL_OUT                   1
    #define       bavPll_status_RESERVE_PLL_OUT                6
    #define   MSK32avPll_status_RESERVE_PLL_OUT                   0x0000007E

    #define     BA_avPll_status_FBDIV_RD                       0x00A0
    #define     B16avPll_status_FBDIV_RD                       0x00A0
    #define   LSb32avPll_status_FBDIV_RD                          7
    #define   LSb16avPll_status_FBDIV_RD                          7
    #define       bavPll_status_FBDIV_RD                       9
    #define   MSK32avPll_status_FBDIV_RD                          0x0000FF80

    #define     BA_avPll_status_PLL_CAL_DONE                   0x00A2
    #define     B16avPll_status_PLL_CAL_DONE                   0x00A2
    #define   LSb32avPll_status_PLL_CAL_DONE                      16
    #define   LSb16avPll_status_PLL_CAL_DONE                      0
    #define       bavPll_status_PLL_CAL_DONE                   1
    #define   MSK32avPll_status_PLL_CAL_DONE                      0x00010000

    #define     BA_avPll_status_SPEED_CNT                      0x00A2
    #define     B16avPll_status_SPEED_CNT                      0x00A2
    #define   LSb32avPll_status_SPEED_CNT                         17
    #define   LSb16avPll_status_SPEED_CNT                         1
    #define       bavPll_status_SPEED_CNT                      6
    #define   MSK32avPll_status_SPEED_CNT                         0x007E0000

    #define     BA_avPll_status_SPEED_RD                       0x00A2
    #define     B16avPll_status_SPEED_RD                       0x00A2
    #define   LSb32avPll_status_SPEED_RD                          23
    #define   LSb16avPll_status_SPEED_RD                          7
    #define       bavPll_status_SPEED_RD                       4
    #define   MSK32avPll_status_SPEED_RD                          0x07800000

    #define     RA_avPll_status1                               0x00A4

    #define     BA_avPll_status_SLLP_DAC_RD                    0x00A4
    #define     B16avPll_status_SLLP_DAC_RD                    0x00A4
    #define   LSb32avPll_status_SLLP_DAC_RD                       0
    #define   LSb16avPll_status_SLLP_DAC_RD                       0
    #define       bavPll_status_SLLP_DAC_RD                    7
    #define   MSK32avPll_status_SLLP_DAC_RD                       0x0000007F
    ///////////////////////////////////////////////////////////

    typedef struct SIE_avPll {
    ///////////////////////////////////////////////////////////
    #define   GET32avPll_ctrlPLL_RESET(r32)                    _BFGET_(r32, 0, 0)
    #define   SET32avPll_ctrlPLL_RESET(r32,v)                  _BFSET_(r32, 0, 0,v)
    #define   GET16avPll_ctrlPLL_RESET(r16)                    _BFGET_(r16, 0, 0)
    #define   SET16avPll_ctrlPLL_RESET(r16,v)                  _BFSET_(r16, 0, 0,v)

    #define   GET32avPll_ctrlPLL_PU(r32)                       _BFGET_(r32, 1, 1)
    #define   SET32avPll_ctrlPLL_PU(r32,v)                     _BFSET_(r32, 1, 1,v)
    #define   GET16avPll_ctrlPLL_PU(r16)                       _BFGET_(r16, 1, 1)
    #define   SET16avPll_ctrlPLL_PU(r16,v)                     _BFSET_(r16, 1, 1,v)

    #define   GET32avPll_ctrlPLL_PLL_VDDRA_SEL(r32)            _BFGET_(r32, 4, 2)
    #define   SET32avPll_ctrlPLL_PLL_VDDRA_SEL(r32,v)          _BFSET_(r32, 4, 2,v)
    #define   GET16avPll_ctrlPLL_PLL_VDDRA_SEL(r16)            _BFGET_(r16, 4, 2)
    #define   SET16avPll_ctrlPLL_PLL_VDDRA_SEL(r16,v)          _BFSET_(r16, 4, 2,v)

    #define   GET32avPll_ctrlPLL_REG_RING_EXTRA_I_EN(r32)      _BFGET_(r32, 5, 5)
    #define   SET32avPll_ctrlPLL_REG_RING_EXTRA_I_EN(r32,v)    _BFSET_(r32, 5, 5,v)
    #define   GET16avPll_ctrlPLL_REG_RING_EXTRA_I_EN(r16)      _BFGET_(r16, 5, 5)
    #define   SET16avPll_ctrlPLL_REG_RING_EXTRA_I_EN(r16,v)    _BFSET_(r16, 5, 5,v)

    #define   GET32avPll_ctrlPLL_VCO_REF1P45_SEL(r32)          _BFGET_(r32, 7, 6)
    #define   SET32avPll_ctrlPLL_VCO_REF1P45_SEL(r32,v)        _BFSET_(r32, 7, 6,v)
    #define   GET16avPll_ctrlPLL_VCO_REF1P45_SEL(r16)          _BFGET_(r16, 7, 6)
    #define   SET16avPll_ctrlPLL_VCO_REF1P45_SEL(r16,v)        _BFSET_(r16, 7, 6,v)

    #define   GET32avPll_ctrlPLL_VDDA23_PUMP_SEL(r32)          _BFGET_(r32, 9, 8)
    #define   SET32avPll_ctrlPLL_VDDA23_PUMP_SEL(r32,v)        _BFSET_(r32, 9, 8,v)
    #define   GET16avPll_ctrlPLL_VDDA23_PUMP_SEL(r16)          _BFGET_(r16, 9, 8)
    #define   SET16avPll_ctrlPLL_VDDA23_PUMP_SEL(r16,v)        _BFSET_(r16, 9, 8,v)

    #define   GET32avPll_ctrlPLL_VDDBUF_ADJ(r32)               _BFGET_(r32,12,10)
    #define   SET32avPll_ctrlPLL_VDDBUF_ADJ(r32,v)             _BFSET_(r32,12,10,v)
    #define   GET16avPll_ctrlPLL_VDDBUF_ADJ(r16)               _BFGET_(r16,12,10)
    #define   SET16avPll_ctrlPLL_VDDBUF_ADJ(r16,v)             _BFSET_(r16,12,10,v)

    #define   GET32avPll_ctrlPLL_VDDL(r32)                     _BFGET_(r32,16,13)
    #define   SET32avPll_ctrlPLL_VDDL(r32,v)                   _BFSET_(r32,16,13,v)

    #define   GET32avPll_ctrlPLL_FBDIV(r32)                    _BFGET_(r32,25,17)
    #define   SET32avPll_ctrlPLL_FBDIV(r32,v)                  _BFSET_(r32,25,17,v)
    #define   GET16avPll_ctrlPLL_FBDIV(r16)                    _BFGET_(r16, 9, 1)
    #define   SET16avPll_ctrlPLL_FBDIV(r16,v)                  _BFSET_(r16, 9, 1,v)

    #define   GET32avPll_ctrlPLL_ICP(r32)                      _BFGET_(r32,29,26)
    #define   SET32avPll_ctrlPLL_ICP(r32,v)                    _BFSET_(r32,29,26,v)
    #define   GET16avPll_ctrlPLL_ICP(r16)                      _BFGET_(r16,13,10)
    #define   SET16avPll_ctrlPLL_ICP(r16,v)                    _BFSET_(r16,13,10,v)

    #define   GET32avPll_ctrlPLL_PLL_LPFC2_LESS(r32)           _BFGET_(r32,30,30)
    #define   SET32avPll_ctrlPLL_PLL_LPFC2_LESS(r32,v)         _BFSET_(r32,30,30,v)
    #define   GET16avPll_ctrlPLL_PLL_LPFC2_LESS(r16)           _BFGET_(r16,14,14)
    #define   SET16avPll_ctrlPLL_PLL_LPFC2_LESS(r16,v)         _BFSET_(r16,14,14,v)

    #define     w32avPll_ctrlPLL                               {\
            UNSG32 uctrlPLL_RESET                              :  1;\
            UNSG32 uctrlPLL_PU                                 :  1;\
            UNSG32 uctrlPLL_PLL_VDDRA_SEL                      :  3;\
            UNSG32 uctrlPLL_REG_RING_EXTRA_I_EN                :  1;\
            UNSG32 uctrlPLL_VCO_REF1P45_SEL                    :  2;\
            UNSG32 uctrlPLL_VDDA23_PUMP_SEL                    :  2;\
            UNSG32 uctrlPLL_VDDBUF_ADJ                         :  3;\
            UNSG32 uctrlPLL_VDDL                               :  4;\
            UNSG32 uctrlPLL_FBDIV                              :  9;\
            UNSG32 uctrlPLL_ICP                                :  4;\
            UNSG32 uctrlPLL_PLL_LPFC2_LESS                     :  1;\
            UNSG32 RSVDx0_b31                                  :  1;\
          }
    union { UNSG32 u32avPll_ctrlPLL;
            struct w32avPll_ctrlPLL;
          };
    #define   GET32avPll_ctrlPLL_REFDIV(r32)                   _BFGET_(r32, 6, 0)
    #define   SET32avPll_ctrlPLL_REFDIV(r32,v)                 _BFSET_(r32, 6, 0,v)
    #define   GET16avPll_ctrlPLL_REFDIV(r16)                   _BFGET_(r16, 6, 0)
    #define   SET16avPll_ctrlPLL_REFDIV(r16,v)                 _BFSET_(r16, 6, 0,v)

    #define   GET32avPll_ctrlPLL_RESERVE_PLL_IN(r32)           _BFGET_(r32,12, 7)
    #define   SET32avPll_ctrlPLL_RESERVE_PLL_IN(r32,v)         _BFSET_(r32,12, 7,v)
    #define   GET16avPll_ctrlPLL_RESERVE_PLL_IN(r16)           _BFGET_(r16,12, 7)
    #define   SET16avPll_ctrlPLL_RESERVE_PLL_IN(r16,v)         _BFSET_(r16,12, 7,v)

    #define   GET32avPll_ctrlPLL_EXT_SPEED(r32)                _BFGET_(r32,16,13)
    #define   SET32avPll_ctrlPLL_EXT_SPEED(r32,v)              _BFSET_(r32,16,13,v)

    #define   GET32avPll_ctrlPLL_SPEED_FBRES(r32)              _BFGET_(r32,20,17)
    #define   SET32avPll_ctrlPLL_SPEED_FBRES(r32,v)            _BFSET_(r32,20,17,v)
    #define   GET16avPll_ctrlPLL_SPEED_FBRES(r16)              _BFGET_(r16, 4, 1)
    #define   SET16avPll_ctrlPLL_SPEED_FBRES(r16,v)            _BFSET_(r16, 4, 1,v)

    #define   GET32avPll_ctrlPLL_UPDATE_SEL(r32)               _BFGET_(r32,21,21)
    #define   SET32avPll_ctrlPLL_UPDATE_SEL(r32,v)             _BFSET_(r32,21,21,v)
    #define   GET16avPll_ctrlPLL_UPDATE_SEL(r16)               _BFGET_(r16, 5, 5)
    #define   SET16avPll_ctrlPLL_UPDATE_SEL(r16,v)             _BFSET_(r16, 5, 5,v)

    #define     w32avPll_ctrlPLL1                              {\
            UNSG32 uctrlPLL_REFDIV                             :  7;\
            UNSG32 uctrlPLL_RESERVE_PLL_IN                     :  6;\
            UNSG32 uctrlPLL_EXT_SPEED                          :  4;\
            UNSG32 uctrlPLL_SPEED_FBRES                        :  4;\
            UNSG32 uctrlPLL_UPDATE_SEL                         :  1;\
            UNSG32 RSVDx4_b22                                  : 10;\
          }
    union { UNSG32 u32avPll_ctrlPLL1;
            struct w32avPll_ctrlPLL1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avPll_ctrlCAL_CAL_FBDIV(r32)                _BFGET_(r32, 8, 0)
    #define   SET32avPll_ctrlCAL_CAL_FBDIV(r32,v)              _BFSET_(r32, 8, 0,v)
    #define   GET16avPll_ctrlCAL_CAL_FBDIV(r16)                _BFGET_(r16, 8, 0)
    #define   SET16avPll_ctrlCAL_CAL_FBDIV(r16,v)              _BFSET_(r16, 8, 0,v)

    #define   GET32avPll_ctrlCAL_EXT_SLLP_DAC_EN(r32)          _BFGET_(r32, 9, 9)
    #define   SET32avPll_ctrlCAL_EXT_SLLP_DAC_EN(r32,v)        _BFSET_(r32, 9, 9,v)
    #define   GET16avPll_ctrlCAL_EXT_SLLP_DAC_EN(r16)          _BFGET_(r16, 9, 9)
    #define   SET16avPll_ctrlCAL_EXT_SLLP_DAC_EN(r16,v)        _BFSET_(r16, 9, 9,v)

    #define   GET32avPll_ctrlCAL_EXT_SPEED_EN(r32)             _BFGET_(r32,10,10)
    #define   SET32avPll_ctrlCAL_EXT_SPEED_EN(r32,v)           _BFSET_(r32,10,10,v)
    #define   GET16avPll_ctrlCAL_EXT_SPEED_EN(r16)             _BFGET_(r16,10,10)
    #define   SET16avPll_ctrlCAL_EXT_SPEED_EN(r16,v)           _BFSET_(r16,10,10,v)

    #define   GET32avPll_ctrlCAL_EXT_SP_FBRES_EN(r32)          _BFGET_(r32,11,11)
    #define   SET32avPll_ctrlCAL_EXT_SP_FBRES_EN(r32,v)        _BFSET_(r32,11,11,v)
    #define   GET16avPll_ctrlCAL_EXT_SP_FBRES_EN(r16)          _BFGET_(r16,11,11)
    #define   SET16avPll_ctrlCAL_EXT_SP_FBRES_EN(r16,v)        _BFSET_(r16,11,11,v)

    #define   GET32avPll_ctrlCAL_PLL_CALCLK_DIV(r32)           _BFGET_(r32,16,12)
    #define   SET32avPll_ctrlCAL_PLL_CALCLK_DIV(r32,v)         _BFSET_(r32,16,12,v)

    #define   GET32avPll_ctrlCAL_PLL_CAL_START(r32)            _BFGET_(r32,17,17)
    #define   SET32avPll_ctrlCAL_PLL_CAL_START(r32,v)          _BFSET_(r32,17,17,v)
    #define   GET16avPll_ctrlCAL_PLL_CAL_START(r16)            _BFGET_(r16, 1, 1)
    #define   SET16avPll_ctrlCAL_PLL_CAL_START(r16,v)          _BFSET_(r16, 1, 1,v)

    #define   GET32avPll_ctrlCAL_REG_SETTLE_LIMIT(r32)         _BFGET_(r32,21,18)
    #define   SET32avPll_ctrlCAL_REG_SETTLE_LIMIT(r32,v)       _BFSET_(r32,21,18,v)
    #define   GET16avPll_ctrlCAL_REG_SETTLE_LIMIT(r16)         _BFGET_(r16, 5, 2)
    #define   SET16avPll_ctrlCAL_REG_SETTLE_LIMIT(r16,v)       _BFSET_(r16, 5, 2,v)

    #define   GET32avPll_ctrlCAL_SEL_VTHVCOCONT(r32)           _BFGET_(r32,22,22)
    #define   SET32avPll_ctrlCAL_SEL_VTHVCOCONT(r32,v)         _BFSET_(r32,22,22,v)
    #define   GET16avPll_ctrlCAL_SEL_VTHVCOCONT(r16)           _BFGET_(r16, 6, 6)
    #define   SET16avPll_ctrlCAL_SEL_VTHVCOCONT(r16,v)         _BFSET_(r16, 6, 6,v)

    #define   GET32avPll_ctrlCAL_SPEED_THRESH(r32)             _BFGET_(r32,28,23)
    #define   SET32avPll_ctrlCAL_SPEED_THRESH(r32,v)           _BFSET_(r32,28,23,v)
    #define   GET16avPll_ctrlCAL_SPEED_THRESH(r16)             _BFGET_(r16,12, 7)
    #define   SET16avPll_ctrlCAL_SPEED_THRESH(r16,v)           _BFSET_(r16,12, 7,v)

    #define   GET32avPll_ctrlCAL_VCON_SEL(r32)                 _BFGET_(r32,30,29)
    #define   SET32avPll_ctrlCAL_VCON_SEL(r32,v)               _BFSET_(r32,30,29,v)
    #define   GET16avPll_ctrlCAL_VCON_SEL(r16)                 _BFGET_(r16,14,13)
    #define   SET16avPll_ctrlCAL_VCON_SEL(r16,v)               _BFSET_(r16,14,13,v)

    #define     w32avPll_ctrlCAL                               {\
            UNSG32 uctrlCAL_CAL_FBDIV                          :  9;\
            UNSG32 uctrlCAL_EXT_SLLP_DAC_EN                    :  1;\
            UNSG32 uctrlCAL_EXT_SPEED_EN                       :  1;\
            UNSG32 uctrlCAL_EXT_SP_FBRES_EN                    :  1;\
            UNSG32 uctrlCAL_PLL_CALCLK_DIV                     :  5;\
            UNSG32 uctrlCAL_PLL_CAL_START                      :  1;\
            UNSG32 uctrlCAL_REG_SETTLE_LIMIT                   :  4;\
            UNSG32 uctrlCAL_SEL_VTHVCOCONT                     :  1;\
            UNSG32 uctrlCAL_SPEED_THRESH                       :  6;\
            UNSG32 uctrlCAL_VCON_SEL                           :  2;\
            UNSG32 RSVDx8_b31                                  :  1;\
          }
    union { UNSG32 u32avPll_ctrlCAL;
            struct w32avPll_ctrlCAL;
          };
    #define   GET32avPll_ctrlCAL_EXT_SLLP_DAC(r32)             _BFGET_(r32, 6, 0)
    #define   SET32avPll_ctrlCAL_EXT_SLLP_DAC(r32,v)           _BFSET_(r32, 6, 0,v)
    #define   GET16avPll_ctrlCAL_EXT_SLLP_DAC(r16)             _BFGET_(r16, 6, 0)
    #define   SET16avPll_ctrlCAL_EXT_SLLP_DAC(r16,v)           _BFSET_(r16, 6, 0,v)

    #define   GET32avPll_ctrlCAL_VTH_VCO_CAL(r32)              _BFGET_(r32, 8, 7)
    #define   SET32avPll_ctrlCAL_VTH_VCO_CAL(r32,v)            _BFSET_(r32, 8, 7,v)
    #define   GET16avPll_ctrlCAL_VTH_VCO_CAL(r16)              _BFGET_(r16, 8, 7)
    #define   SET16avPll_ctrlCAL_VTH_VCO_CAL(r16,v)            _BFSET_(r16, 8, 7,v)

    #define   GET32avPll_ctrlCAL_VTH_VCO_PTAT(r32)             _BFGET_(r32,10, 9)
    #define   SET32avPll_ctrlCAL_VTH_VCO_PTAT(r32,v)           _BFSET_(r32,10, 9,v)
    #define   GET16avPll_ctrlCAL_VTH_VCO_PTAT(r16)             _BFGET_(r16,10, 9)
    #define   SET16avPll_ctrlCAL_VTH_VCO_PTAT(r16,v)           _BFSET_(r16,10, 9,v)

    #define     w32avPll_ctrlCAL1                              {\
            UNSG32 uctrlCAL_EXT_SLLP_DAC                       :  7;\
            UNSG32 uctrlCAL_VTH_VCO_CAL                        :  2;\
            UNSG32 uctrlCAL_VTH_VCO_PTAT                       :  2;\
            UNSG32 RSVDxC_b11                                  : 21;\
          }
    union { UNSG32 u32avPll_ctrlCAL1;
            struct w32avPll_ctrlCAL1;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avPll_ctrlSlowLoop_PW_SLLP(r32)             _BFGET_(r32, 2, 0)
    #define   SET32avPll_ctrlSlowLoop_PW_SLLP(r32,v)           _BFSET_(r32, 2, 0,v)
    #define   GET16avPll_ctrlSlowLoop_PW_SLLP(r16)             _BFGET_(r16, 2, 0)
    #define   SET16avPll_ctrlSlowLoop_PW_SLLP(r16,v)           _BFSET_(r16, 2, 0,v)

    #define   GET32avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN(r32)     _BFGET_(r32, 3, 3)
    #define   SET32avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN(r32,v)   _BFSET_(r32, 3, 3,v)
    #define   GET16avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN(r16)     _BFGET_(r16, 3, 3)
    #define   SET16avPll_ctrlSlowLoop_SLLP_CLK_DIV5EN(r16,v)   _BFSET_(r16, 3, 3,v)

    #define   GET32avPll_ctrlSlowLoop_SLLP_EN_DIS(r32)         _BFGET_(r32, 4, 4)
    #define   SET32avPll_ctrlSlowLoop_SLLP_EN_DIS(r32,v)       _BFSET_(r32, 4, 4,v)
    #define   GET16avPll_ctrlSlowLoop_SLLP_EN_DIS(r16)         _BFGET_(r16, 4, 4)
    #define   SET16avPll_ctrlSlowLoop_SLLP_EN_DIS(r16,v)       _BFSET_(r16, 4, 4,v)

    #define   GET32avPll_ctrlSlowLoop_SLLP_PSF_LEVEL(r32)      _BFGET_(r32, 7, 5)
    #define   SET32avPll_ctrlSlowLoop_SLLP_PSF_LEVEL(r32,v)    _BFSET_(r32, 7, 5,v)
    #define   GET16avPll_ctrlSlowLoop_SLLP_PSF_LEVEL(r16)      _BFGET_(r16, 7, 5)
    #define   SET16avPll_ctrlSlowLoop_SLLP_PSF_LEVEL(r16,v)    _BFSET_(r16, 7, 5,v)

    #define     w32avPll_ctrlSlowLoop                          {\
            UNSG32 uctrlSlowLoop_PW_SLLP                       :  3;\
            UNSG32 uctrlSlowLoop_SLLP_CLK_DIV5EN               :  1;\
            UNSG32 uctrlSlowLoop_SLLP_EN_DIS                   :  1;\
            UNSG32 uctrlSlowLoop_SLLP_PSF_LEVEL                :  3;\
            UNSG32 RSVDx10_b8                                  : 24;\
          }
    union { UNSG32 u32avPll_ctrlSlowLoop;
            struct w32avPll_ctrlSlowLoop;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avPll_ctrlINTP_CLK_DET_EN(r32)              _BFGET_(r32, 0, 0)
    #define   SET32avPll_ctrlINTP_CLK_DET_EN(r32,v)            _BFSET_(r32, 0, 0,v)
    #define   GET16avPll_ctrlINTP_CLK_DET_EN(r16)              _BFGET_(r16, 0, 0)
    #define   SET16avPll_ctrlINTP_CLK_DET_EN(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32avPll_ctrlINTP_DPHER_DLY_SEL(r32)           _BFGET_(r32, 2, 1)
    #define   SET32avPll_ctrlINTP_DPHER_DLY_SEL(r32,v)         _BFSET_(r32, 2, 1,v)
    #define   GET16avPll_ctrlINTP_DPHER_DLY_SEL(r16)           _BFGET_(r16, 2, 1)
    #define   SET16avPll_ctrlINTP_DPHER_DLY_SEL(r16,v)         _BFSET_(r16, 2, 1,v)

    #define   GET32avPll_ctrlINTP_INTPI(r32)                   _BFGET_(r32, 6, 3)
    #define   SET32avPll_ctrlINTP_INTPI(r32,v)                 _BFSET_(r32, 6, 3,v)
    #define   GET16avPll_ctrlINTP_INTPI(r16)                   _BFGET_(r16, 6, 3)
    #define   SET16avPll_ctrlINTP_INTPI(r16,v)                 _BFSET_(r16, 6, 3,v)

    #define   GET32avPll_ctrlINTP_INTPR(r32)                   _BFGET_(r32, 9, 7)
    #define   SET32avPll_ctrlINTP_INTPR(r32,v)                 _BFSET_(r32, 9, 7,v)
    #define   GET16avPll_ctrlINTP_INTPR(r16)                   _BFGET_(r16, 9, 7)
    #define   SET16avPll_ctrlINTP_INTPR(r16,v)                 _BFSET_(r16, 9, 7,v)

    #define     w32avPll_ctrlINTP                              {\
            UNSG32 uctrlINTP_CLK_DET_EN                        :  1;\
            UNSG32 uctrlINTP_DPHER_DLY_SEL                     :  2;\
            UNSG32 uctrlINTP_INTPI                             :  4;\
            UNSG32 uctrlINTP_INTPR                             :  3;\
            UNSG32 RSVDx14_b10                                 : 22;\
          }
    union { UNSG32 u32avPll_ctrlINTP;
            struct w32avPll_ctrlINTP;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avPll_ctrlC8AddOn_MASTER_SLAVEB(r32)        _BFGET_(r32, 0, 0)
    #define   SET32avPll_ctrlC8AddOn_MASTER_SLAVEB(r32,v)      _BFSET_(r32, 0, 0,v)
    #define   GET16avPll_ctrlC8AddOn_MASTER_SLAVEB(r16)        _BFGET_(r16, 0, 0)
    #define   SET16avPll_ctrlC8AddOn_MASTER_SLAVEB(r16,v)      _BFSET_(r16, 0, 0,v)

    #define   GET32avPll_ctrlC8AddOn_MODE(r32)                 _BFGET_(r32, 2, 1)
    #define   SET32avPll_ctrlC8AddOn_MODE(r32,v)               _BFSET_(r32, 2, 1,v)
    #define   GET16avPll_ctrlC8AddOn_MODE(r16)                 _BFGET_(r16, 2, 1)
    #define   SET16avPll_ctrlC8AddOn_MODE(r16,v)               _BFSET_(r16, 2, 1,v)

    #define     w32avPll_ctrlC8AddOn                           {\
            UNSG32 uctrlC8AddOn_MASTER_SLAVEB                  :  1;\
            UNSG32 uctrlC8AddOn_MODE                           :  2;\
            UNSG32 RSVDx18_b3                                  : 29;\
          }
    union { UNSG32 u32avPll_ctrlC8AddOn;
            struct w32avPll_ctrlC8AddOn;
          };
    ///////////////////////////////////////////////////////////
              SIE_avpllCh                                      ie_C1;
    ///////////////////////////////////////////////////////////
              SIE_avpllCh                                      ie_C2;
    ///////////////////////////////////////////////////////////
              SIE_avpllCh                                      ie_C3;
    ///////////////////////////////////////////////////////////
              SIE_avpllCh                                      ie_C4;
    ///////////////////////////////////////////////////////////
              SIE_avpllCh                                      ie_C5;
    ///////////////////////////////////////////////////////////
              SIE_avpllCh                                      ie_C6;
    ///////////////////////////////////////////////////////////
              SIE_avpllCh                                      ie_C7;
    ///////////////////////////////////////////////////////////
              SIE_avpllCh8                                     ie_C8;
    ///////////////////////////////////////////////////////////
    #define   GET32avPll_ctrlTest_CLKOUT_TST_EN(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avPll_ctrlTest_CLKOUT_TST_EN(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avPll_ctrlTest_CLKOUT_TST_EN(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avPll_ctrlTest_CLKOUT_TST_EN(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avPll_ctrlTest_TEST_MON(r32)                _BFGET_(r32, 6, 1)
    #define   SET32avPll_ctrlTest_TEST_MON(r32,v)              _BFSET_(r32, 6, 1,v)
    #define   GET16avPll_ctrlTest_TEST_MON(r16)                _BFGET_(r16, 6, 1)
    #define   SET16avPll_ctrlTest_TEST_MON(r16,v)              _BFSET_(r16, 6, 1,v)

    #define     w32avPll_ctrlTest                              {\
            UNSG32 uctrlTest_CLKOUT_TST_EN                     :  1;\
            UNSG32 uctrlTest_TEST_MON                          :  6;\
            UNSG32 RSVDx9C_b7                                  : 25;\
          }
    union { UNSG32 u32avPll_ctrlTest;
            struct w32avPll_ctrlTest;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avPll_status_PLL_LOCK(r32)                  _BFGET_(r32, 0, 0)
    #define   SET32avPll_status_PLL_LOCK(r32,v)                _BFSET_(r32, 0, 0,v)
    #define   GET16avPll_status_PLL_LOCK(r16)                  _BFGET_(r16, 0, 0)
    #define   SET16avPll_status_PLL_LOCK(r16,v)                _BFSET_(r16, 0, 0,v)

    #define   GET32avPll_status_RESERVE_PLL_OUT(r32)           _BFGET_(r32, 6, 1)
    #define   SET32avPll_status_RESERVE_PLL_OUT(r32,v)         _BFSET_(r32, 6, 1,v)
    #define   GET16avPll_status_RESERVE_PLL_OUT(r16)           _BFGET_(r16, 6, 1)
    #define   SET16avPll_status_RESERVE_PLL_OUT(r16,v)         _BFSET_(r16, 6, 1,v)

    #define   GET32avPll_status_FBDIV_RD(r32)                  _BFGET_(r32,15, 7)
    #define   SET32avPll_status_FBDIV_RD(r32,v)                _BFSET_(r32,15, 7,v)
    #define   GET16avPll_status_FBDIV_RD(r16)                  _BFGET_(r16,15, 7)
    #define   SET16avPll_status_FBDIV_RD(r16,v)                _BFSET_(r16,15, 7,v)

    #define   GET32avPll_status_PLL_CAL_DONE(r32)              _BFGET_(r32,16,16)
    #define   SET32avPll_status_PLL_CAL_DONE(r32,v)            _BFSET_(r32,16,16,v)
    #define   GET16avPll_status_PLL_CAL_DONE(r16)              _BFGET_(r16, 0, 0)
    #define   SET16avPll_status_PLL_CAL_DONE(r16,v)            _BFSET_(r16, 0, 0,v)

    #define   GET32avPll_status_SPEED_CNT(r32)                 _BFGET_(r32,22,17)
    #define   SET32avPll_status_SPEED_CNT(r32,v)               _BFSET_(r32,22,17,v)
    #define   GET16avPll_status_SPEED_CNT(r16)                 _BFGET_(r16, 6, 1)
    #define   SET16avPll_status_SPEED_CNT(r16,v)               _BFSET_(r16, 6, 1,v)

    #define   GET32avPll_status_SPEED_RD(r32)                  _BFGET_(r32,26,23)
    #define   SET32avPll_status_SPEED_RD(r32,v)                _BFSET_(r32,26,23,v)
    #define   GET16avPll_status_SPEED_RD(r16)                  _BFGET_(r16,10, 7)
    #define   SET16avPll_status_SPEED_RD(r16,v)                _BFSET_(r16,10, 7,v)

    #define     w32avPll_status                                {\
            UNSG32 ustatus_PLL_LOCK                            :  1;\
            UNSG32 ustatus_RESERVE_PLL_OUT                     :  6;\
            UNSG32 ustatus_FBDIV_RD                            :  9;\
            UNSG32 ustatus_PLL_CAL_DONE                        :  1;\
            UNSG32 ustatus_SPEED_CNT                           :  6;\
            UNSG32 ustatus_SPEED_RD                            :  4;\
            UNSG32 RSVDxA0_b27                                 :  5;\
          }
    union { UNSG32 u32avPll_status;
            struct w32avPll_status;
          };
    #define   GET32avPll_status_SLLP_DAC_RD(r32)               _BFGET_(r32, 6, 0)
    #define   SET32avPll_status_SLLP_DAC_RD(r32,v)             _BFSET_(r32, 6, 0,v)
    #define   GET16avPll_status_SLLP_DAC_RD(r16)               _BFGET_(r16, 6, 0)
    #define   SET16avPll_status_SLLP_DAC_RD(r16,v)             _BFSET_(r16, 6, 0,v)

    #define     w32avPll_status1                               {\
            UNSG32 ustatus_SLLP_DAC_RD                         :  7;\
            UNSG32 RSVDxA4_b7                                  : 25;\
          }
    union { UNSG32 u32avPll_status1;
            struct w32avPll_status1;
          };
    ///////////////////////////////////////////////////////////
    } SIE_avPll;

    typedef union  T32avPll_ctrlPLL
          { UNSG32 u32;
            struct w32avPll_ctrlPLL;
                 } T32avPll_ctrlPLL;
    typedef union  T32avPll_ctrlPLL1
          { UNSG32 u32;
            struct w32avPll_ctrlPLL1;
                 } T32avPll_ctrlPLL1;
    typedef union  T32avPll_ctrlCAL
          { UNSG32 u32;
            struct w32avPll_ctrlCAL;
                 } T32avPll_ctrlCAL;
    typedef union  T32avPll_ctrlCAL1
          { UNSG32 u32;
            struct w32avPll_ctrlCAL1;
                 } T32avPll_ctrlCAL1;
    typedef union  T32avPll_ctrlSlowLoop
          { UNSG32 u32;
            struct w32avPll_ctrlSlowLoop;
                 } T32avPll_ctrlSlowLoop;
    typedef union  T32avPll_ctrlINTP
          { UNSG32 u32;
            struct w32avPll_ctrlINTP;
                 } T32avPll_ctrlINTP;
    typedef union  T32avPll_ctrlC8AddOn
          { UNSG32 u32;
            struct w32avPll_ctrlC8AddOn;
                 } T32avPll_ctrlC8AddOn;
    typedef union  T32avPll_ctrlTest
          { UNSG32 u32;
            struct w32avPll_ctrlTest;
                 } T32avPll_ctrlTest;
    typedef union  T32avPll_status
          { UNSG32 u32;
            struct w32avPll_status;
                 } T32avPll_status;
    typedef union  T32avPll_status1
          { UNSG32 u32;
            struct w32avPll_status1;
                 } T32avPll_status1;
    ///////////////////////////////////////////////////////////

    typedef union  TavPll_ctrlPLL
          { UNSG32 u32[2];
            struct {
            struct w32avPll_ctrlPLL;
            struct w32avPll_ctrlPLL1;
                   };
                 } TavPll_ctrlPLL;
    typedef union  TavPll_ctrlCAL
          { UNSG32 u32[2];
            struct {
            struct w32avPll_ctrlCAL;
            struct w32avPll_ctrlCAL1;
                   };
                 } TavPll_ctrlCAL;
    typedef union  TavPll_ctrlSlowLoop
          { UNSG32 u32[1];
            struct {
            struct w32avPll_ctrlSlowLoop;
                   };
                 } TavPll_ctrlSlowLoop;
    typedef union  TavPll_ctrlINTP
          { UNSG32 u32[1];
            struct {
            struct w32avPll_ctrlINTP;
                   };
                 } TavPll_ctrlINTP;
    typedef union  TavPll_ctrlC8AddOn
          { UNSG32 u32[1];
            struct {
            struct w32avPll_ctrlC8AddOn;
                   };
                 } TavPll_ctrlC8AddOn;
    typedef union  TavPll_ctrlTest
          { UNSG32 u32[1];
            struct {
            struct w32avPll_ctrlTest;
                   };
                 } TavPll_ctrlTest;
    typedef union  TavPll_status
          { UNSG32 u32[2];
            struct {
            struct w32avPll_status;
            struct w32avPll_status1;
                   };
                 } TavPll_status;

    ///////////////////////////////////////////////////////////
     SIGN32 avPll_drvrd(SIE_avPll *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 avPll_drvwr(SIE_avPll *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void avPll_reset(SIE_avPll *p);
     SIGN32 avPll_cmp  (SIE_avPll *p, SIE_avPll *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define avPll_check(p,pie,pfx,hLOG) avPll_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define avPll_print(p,    pfx,hLOG) avPll_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: avPll
////////////////////////////////////////////////////////////

//////
/// 
/// $INTERFACE avioGbl                 biu              (4,4)
///     # # ----------------------------------------------------------
///     @ 0x00000                      (P)
///     # 0x00000 AVPLLA               
///               $avPll               AVPLLA            REG          
///                                    ###
///                                    * All the registers for AVPLL-A.
///                                    ###
///     @ 0x000A8 AVPLLA_CLK_EN        (P)
///               %unsigned 6  ctrl                      0x0
///                                    ###
///                                    * Gates the output of AVPLL-A before it is passed to any logic. One bit for each channel. Bit#0 is for Channel1, Bit#1 is for Channel2, ... Bit#5 is for Channel6. Channel7 is for HDMI PHY and there is no gating on that clock.
///                                    * 0: Disable channel output
///                                    * 1: Enable channel output
///                                    * SW should program this bit as 1 after programming the respective AVPLL-A channel to make sure that clean clock is passed to the logic.
///                                    ###
///               %unsigned 1  dbg_mux_sel               0x0
///                                    ###
///                                    * 0: CLKOUT_TSTfrom AVPLL is connected to Clock Debug pin.
///                                    * 1:CLKOUT_C1 from AVPLL is connected to Clock Debug pin.
///                                    ###
///               %%        25         # Stuffing bits...
///     @ 0x000AC VCLK0_CTRL           (P)
///               %unsigned 1  extClkSel                 0x0
///                                    ###
///                                    * Select External clock source or PLL output for vClk0.
///                                    * 0: Select AVPLL output
///                                    * 1: Select external clock source (please refer to pinlist to know which pin is used for bypass clock)
///                                    ###
///               %%        31         # Stuffing bits...
///     @ 0x000B0 VCLK1_CTRL           (P)
///               %unsigned 1  extClkSel                 0x0
///                                    ###
///                                    * Select External clock source or PLL output for vClk1.
///                                    * 0: Select AVPLL output
///                                    * 1: Select external clock source (please refer to pinlist to know which pin is used for bypass clock)
///                                    ###
///               %unsigned 1  pllSel                    0x0
///                                    ###
///                                    * Select Video Source for vClk1 (CPCB1 clock)
///                                    * 0: Select AVPLL-A[2] as source
///                                    * 1: Select AVPLL-B[2] as source
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x000B4 VCLK2_CTRL           (P)
///               %unsigned 1  extClkSel                 0x0
///                                    ###
///                                    * Select External clock source or PLL output for vClk2.
///                                    * 0: Select AVPLL output
///                                    * 1: Select external clock source (please refer to pinlist to know which pin is used for bypass clock)
///                                    ###
///               %unsigned 1  pllSel                    0x0
///                                    ###
///                                    * Select Video source for vClk1 (CPCB2 clock)
///                                    * 0: Select AVPLL-B[1] as source
///                                    * 1: Select AVPLL-A[5] as source
///                                    ###
///               %%        30         # Stuffing bits...
///     @ 0x000B8 ACLK0_CTRL           (P)
///               ###
///               * Clock controls for Audio0 clock (Primary Audio Output – I2S0),
///               ###
///               %unsigned 1  clkSwitch                 0x0
///                                    ###
///                                    * 0: use source clock
///                                    * 1: use divided clock (decided by clkD3Switch and clkSel)
///                                    ###
///               %unsigned 1  clkD3Switch               0x0
///                                    ###
///                                    * 0 : divide factor is decided by clkSwitch and clkSel
///                                    * 1: use divide by 3 clock when clkSwitch = 1
///                                    ###
///               %unsigned 3  clkSel                    0x0
///                                    ###
///                                    * Use the following divide factor if clkD3Switch=0.
///                                    ###
///                                    : d2                        0x1
///                                    : d4                        0x2
///                                    : d6                        0x3
///                                    : d8                        0x4
///                                    : d12                       0x5
///               %unsigned 1  srcSel                    0x0
///                                    ###
///                                    * 0: AVPLL-A[3] is used as clock source
///                                    * 1: AVPLL-A[4] is used as clock source
///                                    ###
///               %%        26         # Stuffing bits...
///     @ 0x000BC ACLK1_CTRL           (P)
///               ###
///               * Clock controls for Audio1 clock (Secondary Audio Output – I2S1).
///               ###
///               %unsigned 1  clkSwitch                 0x0
///                                    ###
///                                    * 0: use source clock
///                                    * 1: use divided clock (decided by clkD3Switch and clkSel)
///                                    ###
///               %unsigned 1  clkD3Switch               0x0
///                                    ###
///                                    * 0 : divide factor is decided by clkSwitch and clkSel
///                                    * 1: use divide by 3 clock when clkSwitch = 1
///                                    ###
///               %unsigned 3  clkSel                    0x0
///                                    ###
///                                    * Use the following divide factor if clkD3Switch=0.
///                                    ###
///                                    : d2                        0x1
///                                    : d4                        0x2
///                                    : d6                        0x3
///                                    : d8                        0x4
///                                    : d12                       0x5
///               %unsigned 1  pllSel                    0x0
///                                    ###
///                                    * 0: Select AVPLL-B[3] as source
///                                    * 1: Select AVPLL-A[3] as source
///                                    ###
///               %%        26         # Stuffing bits...
///     @ 0x000C0 ACLK2_CTRL           (P)
///               ###
///               * Clock Controls for Audio2 clock (Audio input – I2S2).
///               ###
///               %unsigned 1  clkSwitch                 0x0
///                                    ###
///                                    * 0: use source clock
///                                    * 1: use divided clock (decided by clkD3Switch and clkSel)
///                                    ###
///               %unsigned 1  clkD3Switch               0x0
///                                    ###
///                                    * 0 : divide factor is decided by clkSwitch and clkSel
///                                    * 1: use divide by 3 clock when clkSwitch = 1
///                                    ###
///               %unsigned 3  clkSel                    0x0
///                                    ###
///                                    * Use the following divide factor if clkD3Switch=0.
///                                    ###
///                                    : d2                        0x1
///                                    : d4                        0x2
///                                    : d6                        0x3
///                                    : d8                        0x4
///                                    : d12                       0x5
///               %%        27         # Stuffing bits...
///     @ 0x000C4 ACLK3_CTRL           (P)
///               ###
///               * Clock controls for Audio3 clock (SPDIF output)
///               ###
///               %unsigned 1  clkSwitch                 0x0
///                                    ###
///                                    * 0: use source clock
///                                    * 1: use divided clock (decided by clkD3Switch and clkSel)
///                                    ###
///               %unsigned 1  clkD3Switch               0x0
///                                    ###
///                                    * 0 : divide factor is decided by clkSwitch and clkSel
///                                    * 1: use divide by 3 clock when clkSwitch = 1
///                                    ###
///               %unsigned 3  clkSel                    0x0
///                                    ###
///                                    * Use the following divide factor if clkD3Switch=0.
///                                    ###
///                                    : d2                        0x1
///                                    : d4                        0x2
///                                    : d6                        0x3
///                                    : d8                        0x4
///                                    : d12                       0x5
///               %%        27         # Stuffing bits...
///     @ 0x000C8 ACLK4_CTRL           (P)
///               ###
///               * Clock controls for Audio4clock (4-ch MIC output)
///               ###
///               %unsigned 1  clkSwitch                 0x0
///                                    ###
///                                    * 0: use source clock
///                                    * 1: use divided clock (decided by clkD3Switch and clkSel)
///                                    ###
///               %unsigned 1  clkD3Switch               0x0
///                                    ###
///                                    * 0 : divide factor is decided by clkSwitch and clkSel
///                                    * 1: use divide by 3 clock when clkSwitch = 1
///                                    ###
///               %unsigned 3  clkSel                    0x0
///                                    ###
///                                    * Use the following divide factor if clkD3Switch=0.
///                                    ###
///                                    : d2                        0x1
///                                    : d4                        0x2
///                                    : d6                        0x3
///                                    : d8                        0x4
///                                    : d12                       0x5
///               %%        27         # Stuffing bits...
///     @ 0x000CC SWRST_CTRL           (P-)
///               ###
///               * Soft resets for various blocks inside AVIO.
///               ###
///               %unsigned 1  audio0SyncRstn            0x1
///                                    ###
///                                    * Reset control for Primary Audio Output (I2S0).
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  audio1SyncRstn            0x1
///                                    ###
///                                    * Reset for Secondary Audio Output (I2S1).
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  audio2SyncRstn            0x1
///                                    ###
///                                    * Reset for 7.1 Audio Input (I2S2).
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  audio3SyncRstn            0x1
///                                    ###
///                                    * Reset for SPDIF Output.
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  audio4SyncRstn            0x1
///                                    ###
///                                    * Reset for 4-channel Audio Input (I2S3).
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  audioHdSyncRstn           0x1
///                                    ###
///                                    * Reset for HDMI Audio Output.
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  spdifRxSyncRstn           0x1
///                                    ###
///                                    * Reset for SPDIF Input.
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  vppSyncRstn               0x1
///                                    ###
///                                    * Reset for all the logic that works on vppSysClk (FE and SCL)
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  vipSyncRstn               0x1
///                                    ###
///                                    * Reset for VIP module.
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %unsigned 1  appSyncRstn               0x1
///                                    ###
///                                    * Reset for APP module.
///                                    * 1: de-assert reset
///                                    * 0: Assert reset
///                                    ###
///               %%        22         # Stuffing bits...
///     @ 0x000D0 RWTC_31to0           (P)
///               ###
///               * rwtcBus[31:0]
///               * *INTERNAL_ONLY**
///               ###
///               %unsigned 32 value                     0xAAAA99AA
///                                    ###
///                                    * RTWC [31:0] value for AVIO internal memories.
///                                    ###
///     @ 0x000D4 RWTC_57to32          (P)
///               ###
///               * rwtcBus[57:32]
///               * *INTERNAL_ONLY**
///               ###
///               %unsigned 26 value                     0x2A95B5A
///                                    ###
///                                    * RTWC [57:32] value for AVIO internal memories.
///                                    ###
///               %%        6          # Stuffing bits...
///     # # ----------------------------------------------------------
/// $ENDOFINTERFACE  # size:     216B, bits:     920b, padding:     0B
////////////////////////////////////////////////////////////
#ifndef h_avioGbl
#define h_avioGbl (){}

    #define     RA_avioGbl_AVPLLA                              0x0000
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_AVPLLA_CLK_EN                       0x00A8

    #define     BA_avioGbl_AVPLLA_CLK_EN_ctrl                  0x00A8
    #define     B16avioGbl_AVPLLA_CLK_EN_ctrl                  0x00A8
    #define   LSb32avioGbl_AVPLLA_CLK_EN_ctrl                     0
    #define   LSb16avioGbl_AVPLLA_CLK_EN_ctrl                     0
    #define       bavioGbl_AVPLLA_CLK_EN_ctrl                  6
    #define   MSK32avioGbl_AVPLLA_CLK_EN_ctrl                     0x0000003F

    #define     BA_avioGbl_AVPLLA_CLK_EN_dbg_mux_sel           0x00A8
    #define     B16avioGbl_AVPLLA_CLK_EN_dbg_mux_sel           0x00A8
    #define   LSb32avioGbl_AVPLLA_CLK_EN_dbg_mux_sel              6
    #define   LSb16avioGbl_AVPLLA_CLK_EN_dbg_mux_sel              6
    #define       bavioGbl_AVPLLA_CLK_EN_dbg_mux_sel           1
    #define   MSK32avioGbl_AVPLLA_CLK_EN_dbg_mux_sel              0x00000040
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_VCLK0_CTRL                          0x00AC

    #define     BA_avioGbl_VCLK0_CTRL_extClkSel                0x00AC
    #define     B16avioGbl_VCLK0_CTRL_extClkSel                0x00AC
    #define   LSb32avioGbl_VCLK0_CTRL_extClkSel                   0
    #define   LSb16avioGbl_VCLK0_CTRL_extClkSel                   0
    #define       bavioGbl_VCLK0_CTRL_extClkSel                1
    #define   MSK32avioGbl_VCLK0_CTRL_extClkSel                   0x00000001
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_VCLK1_CTRL                          0x00B0

    #define     BA_avioGbl_VCLK1_CTRL_extClkSel                0x00B0
    #define     B16avioGbl_VCLK1_CTRL_extClkSel                0x00B0
    #define   LSb32avioGbl_VCLK1_CTRL_extClkSel                   0
    #define   LSb16avioGbl_VCLK1_CTRL_extClkSel                   0
    #define       bavioGbl_VCLK1_CTRL_extClkSel                1
    #define   MSK32avioGbl_VCLK1_CTRL_extClkSel                   0x00000001

    #define     BA_avioGbl_VCLK1_CTRL_pllSel                   0x00B0
    #define     B16avioGbl_VCLK1_CTRL_pllSel                   0x00B0
    #define   LSb32avioGbl_VCLK1_CTRL_pllSel                      1
    #define   LSb16avioGbl_VCLK1_CTRL_pllSel                      1
    #define       bavioGbl_VCLK1_CTRL_pllSel                   1
    #define   MSK32avioGbl_VCLK1_CTRL_pllSel                      0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_VCLK2_CTRL                          0x00B4

    #define     BA_avioGbl_VCLK2_CTRL_extClkSel                0x00B4
    #define     B16avioGbl_VCLK2_CTRL_extClkSel                0x00B4
    #define   LSb32avioGbl_VCLK2_CTRL_extClkSel                   0
    #define   LSb16avioGbl_VCLK2_CTRL_extClkSel                   0
    #define       bavioGbl_VCLK2_CTRL_extClkSel                1
    #define   MSK32avioGbl_VCLK2_CTRL_extClkSel                   0x00000001

    #define     BA_avioGbl_VCLK2_CTRL_pllSel                   0x00B4
    #define     B16avioGbl_VCLK2_CTRL_pllSel                   0x00B4
    #define   LSb32avioGbl_VCLK2_CTRL_pllSel                      1
    #define   LSb16avioGbl_VCLK2_CTRL_pllSel                      1
    #define       bavioGbl_VCLK2_CTRL_pllSel                   1
    #define   MSK32avioGbl_VCLK2_CTRL_pllSel                      0x00000002
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_ACLK0_CTRL                          0x00B8

    #define     BA_avioGbl_ACLK0_CTRL_clkSwitch                0x00B8
    #define     B16avioGbl_ACLK0_CTRL_clkSwitch                0x00B8
    #define   LSb32avioGbl_ACLK0_CTRL_clkSwitch                   0
    #define   LSb16avioGbl_ACLK0_CTRL_clkSwitch                   0
    #define       bavioGbl_ACLK0_CTRL_clkSwitch                1
    #define   MSK32avioGbl_ACLK0_CTRL_clkSwitch                   0x00000001

    #define     BA_avioGbl_ACLK0_CTRL_clkD3Switch              0x00B8
    #define     B16avioGbl_ACLK0_CTRL_clkD3Switch              0x00B8
    #define   LSb32avioGbl_ACLK0_CTRL_clkD3Switch                 1
    #define   LSb16avioGbl_ACLK0_CTRL_clkD3Switch                 1
    #define       bavioGbl_ACLK0_CTRL_clkD3Switch              1
    #define   MSK32avioGbl_ACLK0_CTRL_clkD3Switch                 0x00000002

    #define     BA_avioGbl_ACLK0_CTRL_clkSel                   0x00B8
    #define     B16avioGbl_ACLK0_CTRL_clkSel                   0x00B8
    #define   LSb32avioGbl_ACLK0_CTRL_clkSel                      2
    #define   LSb16avioGbl_ACLK0_CTRL_clkSel                      2
    #define       bavioGbl_ACLK0_CTRL_clkSel                   3
    #define   MSK32avioGbl_ACLK0_CTRL_clkSel                      0x0000001C
    #define        avioGbl_ACLK0_CTRL_clkSel_d2                             0x1
    #define        avioGbl_ACLK0_CTRL_clkSel_d4                             0x2
    #define        avioGbl_ACLK0_CTRL_clkSel_d6                             0x3
    #define        avioGbl_ACLK0_CTRL_clkSel_d8                             0x4
    #define        avioGbl_ACLK0_CTRL_clkSel_d12                            0x5

    #define     BA_avioGbl_ACLK0_CTRL_srcSel                   0x00B8
    #define     B16avioGbl_ACLK0_CTRL_srcSel                   0x00B8
    #define   LSb32avioGbl_ACLK0_CTRL_srcSel                      5
    #define   LSb16avioGbl_ACLK0_CTRL_srcSel                      5
    #define       bavioGbl_ACLK0_CTRL_srcSel                   1
    #define   MSK32avioGbl_ACLK0_CTRL_srcSel                      0x00000020
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_ACLK1_CTRL                          0x00BC

    #define     BA_avioGbl_ACLK1_CTRL_clkSwitch                0x00BC
    #define     B16avioGbl_ACLK1_CTRL_clkSwitch                0x00BC
    #define   LSb32avioGbl_ACLK1_CTRL_clkSwitch                   0
    #define   LSb16avioGbl_ACLK1_CTRL_clkSwitch                   0
    #define       bavioGbl_ACLK1_CTRL_clkSwitch                1
    #define   MSK32avioGbl_ACLK1_CTRL_clkSwitch                   0x00000001

    #define     BA_avioGbl_ACLK1_CTRL_clkD3Switch              0x00BC
    #define     B16avioGbl_ACLK1_CTRL_clkD3Switch              0x00BC
    #define   LSb32avioGbl_ACLK1_CTRL_clkD3Switch                 1
    #define   LSb16avioGbl_ACLK1_CTRL_clkD3Switch                 1
    #define       bavioGbl_ACLK1_CTRL_clkD3Switch              1
    #define   MSK32avioGbl_ACLK1_CTRL_clkD3Switch                 0x00000002

    #define     BA_avioGbl_ACLK1_CTRL_clkSel                   0x00BC
    #define     B16avioGbl_ACLK1_CTRL_clkSel                   0x00BC
    #define   LSb32avioGbl_ACLK1_CTRL_clkSel                      2
    #define   LSb16avioGbl_ACLK1_CTRL_clkSel                      2
    #define       bavioGbl_ACLK1_CTRL_clkSel                   3
    #define   MSK32avioGbl_ACLK1_CTRL_clkSel                      0x0000001C
    #define        avioGbl_ACLK1_CTRL_clkSel_d2                             0x1
    #define        avioGbl_ACLK1_CTRL_clkSel_d4                             0x2
    #define        avioGbl_ACLK1_CTRL_clkSel_d6                             0x3
    #define        avioGbl_ACLK1_CTRL_clkSel_d8                             0x4
    #define        avioGbl_ACLK1_CTRL_clkSel_d12                            0x5

    #define     BA_avioGbl_ACLK1_CTRL_pllSel                   0x00BC
    #define     B16avioGbl_ACLK1_CTRL_pllSel                   0x00BC
    #define   LSb32avioGbl_ACLK1_CTRL_pllSel                      5
    #define   LSb16avioGbl_ACLK1_CTRL_pllSel                      5
    #define       bavioGbl_ACLK1_CTRL_pllSel                   1
    #define   MSK32avioGbl_ACLK1_CTRL_pllSel                      0x00000020
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_ACLK2_CTRL                          0x00C0

    #define     BA_avioGbl_ACLK2_CTRL_clkSwitch                0x00C0
    #define     B16avioGbl_ACLK2_CTRL_clkSwitch                0x00C0
    #define   LSb32avioGbl_ACLK2_CTRL_clkSwitch                   0
    #define   LSb16avioGbl_ACLK2_CTRL_clkSwitch                   0
    #define       bavioGbl_ACLK2_CTRL_clkSwitch                1
    #define   MSK32avioGbl_ACLK2_CTRL_clkSwitch                   0x00000001

    #define     BA_avioGbl_ACLK2_CTRL_clkD3Switch              0x00C0
    #define     B16avioGbl_ACLK2_CTRL_clkD3Switch              0x00C0
    #define   LSb32avioGbl_ACLK2_CTRL_clkD3Switch                 1
    #define   LSb16avioGbl_ACLK2_CTRL_clkD3Switch                 1
    #define       bavioGbl_ACLK2_CTRL_clkD3Switch              1
    #define   MSK32avioGbl_ACLK2_CTRL_clkD3Switch                 0x00000002

    #define     BA_avioGbl_ACLK2_CTRL_clkSel                   0x00C0
    #define     B16avioGbl_ACLK2_CTRL_clkSel                   0x00C0
    #define   LSb32avioGbl_ACLK2_CTRL_clkSel                      2
    #define   LSb16avioGbl_ACLK2_CTRL_clkSel                      2
    #define       bavioGbl_ACLK2_CTRL_clkSel                   3
    #define   MSK32avioGbl_ACLK2_CTRL_clkSel                      0x0000001C
    #define        avioGbl_ACLK2_CTRL_clkSel_d2                             0x1
    #define        avioGbl_ACLK2_CTRL_clkSel_d4                             0x2
    #define        avioGbl_ACLK2_CTRL_clkSel_d6                             0x3
    #define        avioGbl_ACLK2_CTRL_clkSel_d8                             0x4
    #define        avioGbl_ACLK2_CTRL_clkSel_d12                            0x5
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_ACLK3_CTRL                          0x00C4

    #define     BA_avioGbl_ACLK3_CTRL_clkSwitch                0x00C4
    #define     B16avioGbl_ACLK3_CTRL_clkSwitch                0x00C4
    #define   LSb32avioGbl_ACLK3_CTRL_clkSwitch                   0
    #define   LSb16avioGbl_ACLK3_CTRL_clkSwitch                   0
    #define       bavioGbl_ACLK3_CTRL_clkSwitch                1
    #define   MSK32avioGbl_ACLK3_CTRL_clkSwitch                   0x00000001

    #define     BA_avioGbl_ACLK3_CTRL_clkD3Switch              0x00C4
    #define     B16avioGbl_ACLK3_CTRL_clkD3Switch              0x00C4
    #define   LSb32avioGbl_ACLK3_CTRL_clkD3Switch                 1
    #define   LSb16avioGbl_ACLK3_CTRL_clkD3Switch                 1
    #define       bavioGbl_ACLK3_CTRL_clkD3Switch              1
    #define   MSK32avioGbl_ACLK3_CTRL_clkD3Switch                 0x00000002

    #define     BA_avioGbl_ACLK3_CTRL_clkSel                   0x00C4
    #define     B16avioGbl_ACLK3_CTRL_clkSel                   0x00C4
    #define   LSb32avioGbl_ACLK3_CTRL_clkSel                      2
    #define   LSb16avioGbl_ACLK3_CTRL_clkSel                      2
    #define       bavioGbl_ACLK3_CTRL_clkSel                   3
    #define   MSK32avioGbl_ACLK3_CTRL_clkSel                      0x0000001C
    #define        avioGbl_ACLK3_CTRL_clkSel_d2                             0x1
    #define        avioGbl_ACLK3_CTRL_clkSel_d4                             0x2
    #define        avioGbl_ACLK3_CTRL_clkSel_d6                             0x3
    #define        avioGbl_ACLK3_CTRL_clkSel_d8                             0x4
    #define        avioGbl_ACLK3_CTRL_clkSel_d12                            0x5
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_ACLK4_CTRL                          0x00C8

    #define     BA_avioGbl_ACLK4_CTRL_clkSwitch                0x00C8
    #define     B16avioGbl_ACLK4_CTRL_clkSwitch                0x00C8
    #define   LSb32avioGbl_ACLK4_CTRL_clkSwitch                   0
    #define   LSb16avioGbl_ACLK4_CTRL_clkSwitch                   0
    #define       bavioGbl_ACLK4_CTRL_clkSwitch                1
    #define   MSK32avioGbl_ACLK4_CTRL_clkSwitch                   0x00000001

    #define     BA_avioGbl_ACLK4_CTRL_clkD3Switch              0x00C8
    #define     B16avioGbl_ACLK4_CTRL_clkD3Switch              0x00C8
    #define   LSb32avioGbl_ACLK4_CTRL_clkD3Switch                 1
    #define   LSb16avioGbl_ACLK4_CTRL_clkD3Switch                 1
    #define       bavioGbl_ACLK4_CTRL_clkD3Switch              1
    #define   MSK32avioGbl_ACLK4_CTRL_clkD3Switch                 0x00000002

    #define     BA_avioGbl_ACLK4_CTRL_clkSel                   0x00C8
    #define     B16avioGbl_ACLK4_CTRL_clkSel                   0x00C8
    #define   LSb32avioGbl_ACLK4_CTRL_clkSel                      2
    #define   LSb16avioGbl_ACLK4_CTRL_clkSel                      2
    #define       bavioGbl_ACLK4_CTRL_clkSel                   3
    #define   MSK32avioGbl_ACLK4_CTRL_clkSel                      0x0000001C
    #define        avioGbl_ACLK4_CTRL_clkSel_d2                             0x1
    #define        avioGbl_ACLK4_CTRL_clkSel_d4                             0x2
    #define        avioGbl_ACLK4_CTRL_clkSel_d6                             0x3
    #define        avioGbl_ACLK4_CTRL_clkSel_d8                             0x4
    #define        avioGbl_ACLK4_CTRL_clkSel_d12                            0x5
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_SWRST_CTRL                          0x00CC

    #define     BA_avioGbl_SWRST_CTRL_audio0SyncRstn           0x00CC
    #define     B16avioGbl_SWRST_CTRL_audio0SyncRstn           0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_audio0SyncRstn              0
    #define   LSb16avioGbl_SWRST_CTRL_audio0SyncRstn              0
    #define       bavioGbl_SWRST_CTRL_audio0SyncRstn           1
    #define   MSK32avioGbl_SWRST_CTRL_audio0SyncRstn              0x00000001

    #define     BA_avioGbl_SWRST_CTRL_audio1SyncRstn           0x00CC
    #define     B16avioGbl_SWRST_CTRL_audio1SyncRstn           0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_audio1SyncRstn              1
    #define   LSb16avioGbl_SWRST_CTRL_audio1SyncRstn              1
    #define       bavioGbl_SWRST_CTRL_audio1SyncRstn           1
    #define   MSK32avioGbl_SWRST_CTRL_audio1SyncRstn              0x00000002

    #define     BA_avioGbl_SWRST_CTRL_audio2SyncRstn           0x00CC
    #define     B16avioGbl_SWRST_CTRL_audio2SyncRstn           0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_audio2SyncRstn              2
    #define   LSb16avioGbl_SWRST_CTRL_audio2SyncRstn              2
    #define       bavioGbl_SWRST_CTRL_audio2SyncRstn           1
    #define   MSK32avioGbl_SWRST_CTRL_audio2SyncRstn              0x00000004

    #define     BA_avioGbl_SWRST_CTRL_audio3SyncRstn           0x00CC
    #define     B16avioGbl_SWRST_CTRL_audio3SyncRstn           0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_audio3SyncRstn              3
    #define   LSb16avioGbl_SWRST_CTRL_audio3SyncRstn              3
    #define       bavioGbl_SWRST_CTRL_audio3SyncRstn           1
    #define   MSK32avioGbl_SWRST_CTRL_audio3SyncRstn              0x00000008

    #define     BA_avioGbl_SWRST_CTRL_audio4SyncRstn           0x00CC
    #define     B16avioGbl_SWRST_CTRL_audio4SyncRstn           0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_audio4SyncRstn              4
    #define   LSb16avioGbl_SWRST_CTRL_audio4SyncRstn              4
    #define       bavioGbl_SWRST_CTRL_audio4SyncRstn           1
    #define   MSK32avioGbl_SWRST_CTRL_audio4SyncRstn              0x00000010

    #define     BA_avioGbl_SWRST_CTRL_audioHdSyncRstn          0x00CC
    #define     B16avioGbl_SWRST_CTRL_audioHdSyncRstn          0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_audioHdSyncRstn             5
    #define   LSb16avioGbl_SWRST_CTRL_audioHdSyncRstn             5
    #define       bavioGbl_SWRST_CTRL_audioHdSyncRstn          1
    #define   MSK32avioGbl_SWRST_CTRL_audioHdSyncRstn             0x00000020

    #define     BA_avioGbl_SWRST_CTRL_spdifRxSyncRstn          0x00CC
    #define     B16avioGbl_SWRST_CTRL_spdifRxSyncRstn          0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_spdifRxSyncRstn             6
    #define   LSb16avioGbl_SWRST_CTRL_spdifRxSyncRstn             6
    #define       bavioGbl_SWRST_CTRL_spdifRxSyncRstn          1
    #define   MSK32avioGbl_SWRST_CTRL_spdifRxSyncRstn             0x00000040

    #define     BA_avioGbl_SWRST_CTRL_vppSyncRstn              0x00CC
    #define     B16avioGbl_SWRST_CTRL_vppSyncRstn              0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_vppSyncRstn                 7
    #define   LSb16avioGbl_SWRST_CTRL_vppSyncRstn                 7
    #define       bavioGbl_SWRST_CTRL_vppSyncRstn              1
    #define   MSK32avioGbl_SWRST_CTRL_vppSyncRstn                 0x00000080

    #define     BA_avioGbl_SWRST_CTRL_vipSyncRstn              0x00CD
    #define     B16avioGbl_SWRST_CTRL_vipSyncRstn              0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_vipSyncRstn                 8
    #define   LSb16avioGbl_SWRST_CTRL_vipSyncRstn                 8
    #define       bavioGbl_SWRST_CTRL_vipSyncRstn              1
    #define   MSK32avioGbl_SWRST_CTRL_vipSyncRstn                 0x00000100

    #define     BA_avioGbl_SWRST_CTRL_appSyncRstn              0x00CD
    #define     B16avioGbl_SWRST_CTRL_appSyncRstn              0x00CC
    #define   LSb32avioGbl_SWRST_CTRL_appSyncRstn                 9
    #define   LSb16avioGbl_SWRST_CTRL_appSyncRstn                 9
    #define       bavioGbl_SWRST_CTRL_appSyncRstn              1
    #define   MSK32avioGbl_SWRST_CTRL_appSyncRstn                 0x00000200
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_RWTC_31to0                          0x00D0

    #define     BA_avioGbl_RWTC_31to0_value                    0x00D0
    #define     B16avioGbl_RWTC_31to0_value                    0x00D0
    #define   LSb32avioGbl_RWTC_31to0_value                       0
    #define   LSb16avioGbl_RWTC_31to0_value                       0
    #define       bavioGbl_RWTC_31to0_value                    32
    #define   MSK32avioGbl_RWTC_31to0_value                       0xFFFFFFFF
    ///////////////////////////////////////////////////////////
    #define     RA_avioGbl_RWTC_57to32                         0x00D4

    #define     BA_avioGbl_RWTC_57to32_value                   0x00D4
    #define     B16avioGbl_RWTC_57to32_value                   0x00D4
    #define   LSb32avioGbl_RWTC_57to32_value                      0
    #define   LSb16avioGbl_RWTC_57to32_value                      0
    #define       bavioGbl_RWTC_57to32_value                   26
    #define   MSK32avioGbl_RWTC_57to32_value                      0x03FFFFFF
    ///////////////////////////////////////////////////////////

    typedef struct SIE_avioGbl {
    ///////////////////////////////////////////////////////////
              SIE_avPll                                        ie_AVPLLA;
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_AVPLLA_CLK_EN_ctrl(r32)             _BFGET_(r32, 5, 0)
    #define   SET32avioGbl_AVPLLA_CLK_EN_ctrl(r32,v)           _BFSET_(r32, 5, 0,v)
    #define   GET16avioGbl_AVPLLA_CLK_EN_ctrl(r16)             _BFGET_(r16, 5, 0)
    #define   SET16avioGbl_AVPLLA_CLK_EN_ctrl(r16,v)           _BFSET_(r16, 5, 0,v)

    #define   GET32avioGbl_AVPLLA_CLK_EN_dbg_mux_sel(r32)      _BFGET_(r32, 6, 6)
    #define   SET32avioGbl_AVPLLA_CLK_EN_dbg_mux_sel(r32,v)    _BFSET_(r32, 6, 6,v)
    #define   GET16avioGbl_AVPLLA_CLK_EN_dbg_mux_sel(r16)      _BFGET_(r16, 6, 6)
    #define   SET16avioGbl_AVPLLA_CLK_EN_dbg_mux_sel(r16,v)    _BFSET_(r16, 6, 6,v)

    #define     w32avioGbl_AVPLLA_CLK_EN                       {\
            UNSG32 uAVPLLA_CLK_EN_ctrl                         :  6;\
            UNSG32 uAVPLLA_CLK_EN_dbg_mux_sel                  :  1;\
            UNSG32 RSVDxA8_b7                                  : 25;\
          }
    union { UNSG32 u32avioGbl_AVPLLA_CLK_EN;
            struct w32avioGbl_AVPLLA_CLK_EN;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_VCLK0_CTRL_extClkSel(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_VCLK0_CTRL_extClkSel(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_VCLK0_CTRL_extClkSel(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_VCLK0_CTRL_extClkSel(r16,v)         _BFSET_(r16, 0, 0,v)

    #define     w32avioGbl_VCLK0_CTRL                          {\
            UNSG32 uVCLK0_CTRL_extClkSel                       :  1;\
            UNSG32 RSVDxAC_b1                                  : 31;\
          }
    union { UNSG32 u32avioGbl_VCLK0_CTRL;
            struct w32avioGbl_VCLK0_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_VCLK1_CTRL_extClkSel(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_VCLK1_CTRL_extClkSel(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_VCLK1_CTRL_extClkSel(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_VCLK1_CTRL_extClkSel(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_VCLK1_CTRL_pllSel(r32)              _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_VCLK1_CTRL_pllSel(r32,v)            _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_VCLK1_CTRL_pllSel(r16)              _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_VCLK1_CTRL_pllSel(r16,v)            _BFSET_(r16, 1, 1,v)

    #define     w32avioGbl_VCLK1_CTRL                          {\
            UNSG32 uVCLK1_CTRL_extClkSel                       :  1;\
            UNSG32 uVCLK1_CTRL_pllSel                          :  1;\
            UNSG32 RSVDxB0_b2                                  : 30;\
          }
    union { UNSG32 u32avioGbl_VCLK1_CTRL;
            struct w32avioGbl_VCLK1_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_VCLK2_CTRL_extClkSel(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_VCLK2_CTRL_extClkSel(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_VCLK2_CTRL_extClkSel(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_VCLK2_CTRL_extClkSel(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_VCLK2_CTRL_pllSel(r32)              _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_VCLK2_CTRL_pllSel(r32,v)            _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_VCLK2_CTRL_pllSel(r16)              _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_VCLK2_CTRL_pllSel(r16,v)            _BFSET_(r16, 1, 1,v)

    #define     w32avioGbl_VCLK2_CTRL                          {\
            UNSG32 uVCLK2_CTRL_extClkSel                       :  1;\
            UNSG32 uVCLK2_CTRL_pllSel                          :  1;\
            UNSG32 RSVDxB4_b2                                  : 30;\
          }
    union { UNSG32 u32avioGbl_VCLK2_CTRL;
            struct w32avioGbl_VCLK2_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_ACLK0_CTRL_clkSwitch(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_ACLK0_CTRL_clkSwitch(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_ACLK0_CTRL_clkSwitch(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_ACLK0_CTRL_clkSwitch(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_ACLK0_CTRL_clkD3Switch(r32)         _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_ACLK0_CTRL_clkD3Switch(r32,v)       _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_ACLK0_CTRL_clkD3Switch(r16)         _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_ACLK0_CTRL_clkD3Switch(r16,v)       _BFSET_(r16, 1, 1,v)

    #define   GET32avioGbl_ACLK0_CTRL_clkSel(r32)              _BFGET_(r32, 4, 2)
    #define   SET32avioGbl_ACLK0_CTRL_clkSel(r32,v)            _BFSET_(r32, 4, 2,v)
    #define   GET16avioGbl_ACLK0_CTRL_clkSel(r16)              _BFGET_(r16, 4, 2)
    #define   SET16avioGbl_ACLK0_CTRL_clkSel(r16,v)            _BFSET_(r16, 4, 2,v)

    #define   GET32avioGbl_ACLK0_CTRL_srcSel(r32)              _BFGET_(r32, 5, 5)
    #define   SET32avioGbl_ACLK0_CTRL_srcSel(r32,v)            _BFSET_(r32, 5, 5,v)
    #define   GET16avioGbl_ACLK0_CTRL_srcSel(r16)              _BFGET_(r16, 5, 5)
    #define   SET16avioGbl_ACLK0_CTRL_srcSel(r16,v)            _BFSET_(r16, 5, 5,v)

    #define     w32avioGbl_ACLK0_CTRL                          {\
            UNSG32 uACLK0_CTRL_clkSwitch                       :  1;\
            UNSG32 uACLK0_CTRL_clkD3Switch                     :  1;\
            UNSG32 uACLK0_CTRL_clkSel                          :  3;\
            UNSG32 uACLK0_CTRL_srcSel                          :  1;\
            UNSG32 RSVDxB8_b6                                  : 26;\
          }
    union { UNSG32 u32avioGbl_ACLK0_CTRL;
            struct w32avioGbl_ACLK0_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_ACLK1_CTRL_clkSwitch(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_ACLK1_CTRL_clkSwitch(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_ACLK1_CTRL_clkSwitch(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_ACLK1_CTRL_clkSwitch(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_ACLK1_CTRL_clkD3Switch(r32)         _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_ACLK1_CTRL_clkD3Switch(r32,v)       _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_ACLK1_CTRL_clkD3Switch(r16)         _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_ACLK1_CTRL_clkD3Switch(r16,v)       _BFSET_(r16, 1, 1,v)

    #define   GET32avioGbl_ACLK1_CTRL_clkSel(r32)              _BFGET_(r32, 4, 2)
    #define   SET32avioGbl_ACLK1_CTRL_clkSel(r32,v)            _BFSET_(r32, 4, 2,v)
    #define   GET16avioGbl_ACLK1_CTRL_clkSel(r16)              _BFGET_(r16, 4, 2)
    #define   SET16avioGbl_ACLK1_CTRL_clkSel(r16,v)            _BFSET_(r16, 4, 2,v)

    #define   GET32avioGbl_ACLK1_CTRL_pllSel(r32)              _BFGET_(r32, 5, 5)
    #define   SET32avioGbl_ACLK1_CTRL_pllSel(r32,v)            _BFSET_(r32, 5, 5,v)
    #define   GET16avioGbl_ACLK1_CTRL_pllSel(r16)              _BFGET_(r16, 5, 5)
    #define   SET16avioGbl_ACLK1_CTRL_pllSel(r16,v)            _BFSET_(r16, 5, 5,v)

    #define     w32avioGbl_ACLK1_CTRL                          {\
            UNSG32 uACLK1_CTRL_clkSwitch                       :  1;\
            UNSG32 uACLK1_CTRL_clkD3Switch                     :  1;\
            UNSG32 uACLK1_CTRL_clkSel                          :  3;\
            UNSG32 uACLK1_CTRL_pllSel                          :  1;\
            UNSG32 RSVDxBC_b6                                  : 26;\
          }
    union { UNSG32 u32avioGbl_ACLK1_CTRL;
            struct w32avioGbl_ACLK1_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_ACLK2_CTRL_clkSwitch(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_ACLK2_CTRL_clkSwitch(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_ACLK2_CTRL_clkSwitch(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_ACLK2_CTRL_clkSwitch(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_ACLK2_CTRL_clkD3Switch(r32)         _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_ACLK2_CTRL_clkD3Switch(r32,v)       _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_ACLK2_CTRL_clkD3Switch(r16)         _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_ACLK2_CTRL_clkD3Switch(r16,v)       _BFSET_(r16, 1, 1,v)

    #define   GET32avioGbl_ACLK2_CTRL_clkSel(r32)              _BFGET_(r32, 4, 2)
    #define   SET32avioGbl_ACLK2_CTRL_clkSel(r32,v)            _BFSET_(r32, 4, 2,v)
    #define   GET16avioGbl_ACLK2_CTRL_clkSel(r16)              _BFGET_(r16, 4, 2)
    #define   SET16avioGbl_ACLK2_CTRL_clkSel(r16,v)            _BFSET_(r16, 4, 2,v)

    #define     w32avioGbl_ACLK2_CTRL                          {\
            UNSG32 uACLK2_CTRL_clkSwitch                       :  1;\
            UNSG32 uACLK2_CTRL_clkD3Switch                     :  1;\
            UNSG32 uACLK2_CTRL_clkSel                          :  3;\
            UNSG32 RSVDxC0_b5                                  : 27;\
          }
    union { UNSG32 u32avioGbl_ACLK2_CTRL;
            struct w32avioGbl_ACLK2_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_ACLK3_CTRL_clkSwitch(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_ACLK3_CTRL_clkSwitch(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_ACLK3_CTRL_clkSwitch(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_ACLK3_CTRL_clkSwitch(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_ACLK3_CTRL_clkD3Switch(r32)         _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_ACLK3_CTRL_clkD3Switch(r32,v)       _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_ACLK3_CTRL_clkD3Switch(r16)         _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_ACLK3_CTRL_clkD3Switch(r16,v)       _BFSET_(r16, 1, 1,v)

    #define   GET32avioGbl_ACLK3_CTRL_clkSel(r32)              _BFGET_(r32, 4, 2)
    #define   SET32avioGbl_ACLK3_CTRL_clkSel(r32,v)            _BFSET_(r32, 4, 2,v)
    #define   GET16avioGbl_ACLK3_CTRL_clkSel(r16)              _BFGET_(r16, 4, 2)
    #define   SET16avioGbl_ACLK3_CTRL_clkSel(r16,v)            _BFSET_(r16, 4, 2,v)

    #define     w32avioGbl_ACLK3_CTRL                          {\
            UNSG32 uACLK3_CTRL_clkSwitch                       :  1;\
            UNSG32 uACLK3_CTRL_clkD3Switch                     :  1;\
            UNSG32 uACLK3_CTRL_clkSel                          :  3;\
            UNSG32 RSVDxC4_b5                                  : 27;\
          }
    union { UNSG32 u32avioGbl_ACLK3_CTRL;
            struct w32avioGbl_ACLK3_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_ACLK4_CTRL_clkSwitch(r32)           _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_ACLK4_CTRL_clkSwitch(r32,v)         _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_ACLK4_CTRL_clkSwitch(r16)           _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_ACLK4_CTRL_clkSwitch(r16,v)         _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_ACLK4_CTRL_clkD3Switch(r32)         _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_ACLK4_CTRL_clkD3Switch(r32,v)       _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_ACLK4_CTRL_clkD3Switch(r16)         _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_ACLK4_CTRL_clkD3Switch(r16,v)       _BFSET_(r16, 1, 1,v)

    #define   GET32avioGbl_ACLK4_CTRL_clkSel(r32)              _BFGET_(r32, 4, 2)
    #define   SET32avioGbl_ACLK4_CTRL_clkSel(r32,v)            _BFSET_(r32, 4, 2,v)
    #define   GET16avioGbl_ACLK4_CTRL_clkSel(r16)              _BFGET_(r16, 4, 2)
    #define   SET16avioGbl_ACLK4_CTRL_clkSel(r16,v)            _BFSET_(r16, 4, 2,v)

    #define     w32avioGbl_ACLK4_CTRL                          {\
            UNSG32 uACLK4_CTRL_clkSwitch                       :  1;\
            UNSG32 uACLK4_CTRL_clkD3Switch                     :  1;\
            UNSG32 uACLK4_CTRL_clkSel                          :  3;\
            UNSG32 RSVDxC8_b5                                  : 27;\
          }
    union { UNSG32 u32avioGbl_ACLK4_CTRL;
            struct w32avioGbl_ACLK4_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_SWRST_CTRL_audio0SyncRstn(r32)      _BFGET_(r32, 0, 0)
    #define   SET32avioGbl_SWRST_CTRL_audio0SyncRstn(r32,v)    _BFSET_(r32, 0, 0,v)
    #define   GET16avioGbl_SWRST_CTRL_audio0SyncRstn(r16)      _BFGET_(r16, 0, 0)
    #define   SET16avioGbl_SWRST_CTRL_audio0SyncRstn(r16,v)    _BFSET_(r16, 0, 0,v)

    #define   GET32avioGbl_SWRST_CTRL_audio1SyncRstn(r32)      _BFGET_(r32, 1, 1)
    #define   SET32avioGbl_SWRST_CTRL_audio1SyncRstn(r32,v)    _BFSET_(r32, 1, 1,v)
    #define   GET16avioGbl_SWRST_CTRL_audio1SyncRstn(r16)      _BFGET_(r16, 1, 1)
    #define   SET16avioGbl_SWRST_CTRL_audio1SyncRstn(r16,v)    _BFSET_(r16, 1, 1,v)

    #define   GET32avioGbl_SWRST_CTRL_audio2SyncRstn(r32)      _BFGET_(r32, 2, 2)
    #define   SET32avioGbl_SWRST_CTRL_audio2SyncRstn(r32,v)    _BFSET_(r32, 2, 2,v)
    #define   GET16avioGbl_SWRST_CTRL_audio2SyncRstn(r16)      _BFGET_(r16, 2, 2)
    #define   SET16avioGbl_SWRST_CTRL_audio2SyncRstn(r16,v)    _BFSET_(r16, 2, 2,v)

    #define   GET32avioGbl_SWRST_CTRL_audio3SyncRstn(r32)      _BFGET_(r32, 3, 3)
    #define   SET32avioGbl_SWRST_CTRL_audio3SyncRstn(r32,v)    _BFSET_(r32, 3, 3,v)
    #define   GET16avioGbl_SWRST_CTRL_audio3SyncRstn(r16)      _BFGET_(r16, 3, 3)
    #define   SET16avioGbl_SWRST_CTRL_audio3SyncRstn(r16,v)    _BFSET_(r16, 3, 3,v)

    #define   GET32avioGbl_SWRST_CTRL_audio4SyncRstn(r32)      _BFGET_(r32, 4, 4)
    #define   SET32avioGbl_SWRST_CTRL_audio4SyncRstn(r32,v)    _BFSET_(r32, 4, 4,v)
    #define   GET16avioGbl_SWRST_CTRL_audio4SyncRstn(r16)      _BFGET_(r16, 4, 4)
    #define   SET16avioGbl_SWRST_CTRL_audio4SyncRstn(r16,v)    _BFSET_(r16, 4, 4,v)

    #define   GET32avioGbl_SWRST_CTRL_audioHdSyncRstn(r32)     _BFGET_(r32, 5, 5)
    #define   SET32avioGbl_SWRST_CTRL_audioHdSyncRstn(r32,v)   _BFSET_(r32, 5, 5,v)
    #define   GET16avioGbl_SWRST_CTRL_audioHdSyncRstn(r16)     _BFGET_(r16, 5, 5)
    #define   SET16avioGbl_SWRST_CTRL_audioHdSyncRstn(r16,v)   _BFSET_(r16, 5, 5,v)

    #define   GET32avioGbl_SWRST_CTRL_spdifRxSyncRstn(r32)     _BFGET_(r32, 6, 6)
    #define   SET32avioGbl_SWRST_CTRL_spdifRxSyncRstn(r32,v)   _BFSET_(r32, 6, 6,v)
    #define   GET16avioGbl_SWRST_CTRL_spdifRxSyncRstn(r16)     _BFGET_(r16, 6, 6)
    #define   SET16avioGbl_SWRST_CTRL_spdifRxSyncRstn(r16,v)   _BFSET_(r16, 6, 6,v)

    #define   GET32avioGbl_SWRST_CTRL_vppSyncRstn(r32)         _BFGET_(r32, 7, 7)
    #define   SET32avioGbl_SWRST_CTRL_vppSyncRstn(r32,v)       _BFSET_(r32, 7, 7,v)
    #define   GET16avioGbl_SWRST_CTRL_vppSyncRstn(r16)         _BFGET_(r16, 7, 7)
    #define   SET16avioGbl_SWRST_CTRL_vppSyncRstn(r16,v)       _BFSET_(r16, 7, 7,v)

    #define   GET32avioGbl_SWRST_CTRL_vipSyncRstn(r32)         _BFGET_(r32, 8, 8)
    #define   SET32avioGbl_SWRST_CTRL_vipSyncRstn(r32,v)       _BFSET_(r32, 8, 8,v)
    #define   GET16avioGbl_SWRST_CTRL_vipSyncRstn(r16)         _BFGET_(r16, 8, 8)
    #define   SET16avioGbl_SWRST_CTRL_vipSyncRstn(r16,v)       _BFSET_(r16, 8, 8,v)

    #define   GET32avioGbl_SWRST_CTRL_appSyncRstn(r32)         _BFGET_(r32, 9, 9)
    #define   SET32avioGbl_SWRST_CTRL_appSyncRstn(r32,v)       _BFSET_(r32, 9, 9,v)
    #define   GET16avioGbl_SWRST_CTRL_appSyncRstn(r16)         _BFGET_(r16, 9, 9)
    #define   SET16avioGbl_SWRST_CTRL_appSyncRstn(r16,v)       _BFSET_(r16, 9, 9,v)

    #define     w32avioGbl_SWRST_CTRL                          {\
            UNSG32 uSWRST_CTRL_audio0SyncRstn                  :  1;\
            UNSG32 uSWRST_CTRL_audio1SyncRstn                  :  1;\
            UNSG32 uSWRST_CTRL_audio2SyncRstn                  :  1;\
            UNSG32 uSWRST_CTRL_audio3SyncRstn                  :  1;\
            UNSG32 uSWRST_CTRL_audio4SyncRstn                  :  1;\
            UNSG32 uSWRST_CTRL_audioHdSyncRstn                 :  1;\
            UNSG32 uSWRST_CTRL_spdifRxSyncRstn                 :  1;\
            UNSG32 uSWRST_CTRL_vppSyncRstn                     :  1;\
            UNSG32 uSWRST_CTRL_vipSyncRstn                     :  1;\
            UNSG32 uSWRST_CTRL_appSyncRstn                     :  1;\
            UNSG32 RSVDxCC_b10                                 : 22;\
          }
    union { UNSG32 u32avioGbl_SWRST_CTRL;
            struct w32avioGbl_SWRST_CTRL;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_RWTC_31to0_value(r32)               _BFGET_(r32,31, 0)
    #define   SET32avioGbl_RWTC_31to0_value(r32,v)             _BFSET_(r32,31, 0,v)

    #define     w32avioGbl_RWTC_31to0                          {\
            UNSG32 uRWTC_31to0_value                           : 32;\
          }
    union { UNSG32 u32avioGbl_RWTC_31to0;
            struct w32avioGbl_RWTC_31to0;
          };
    ///////////////////////////////////////////////////////////
    #define   GET32avioGbl_RWTC_57to32_value(r32)              _BFGET_(r32,25, 0)
    #define   SET32avioGbl_RWTC_57to32_value(r32,v)            _BFSET_(r32,25, 0,v)

    #define     w32avioGbl_RWTC_57to32                         {\
            UNSG32 uRWTC_57to32_value                          : 26;\
            UNSG32 RSVDxD4_b26                                 :  6;\
          }
    union { UNSG32 u32avioGbl_RWTC_57to32;
            struct w32avioGbl_RWTC_57to32;
          };
    ///////////////////////////////////////////////////////////
    } SIE_avioGbl;

    typedef union  T32avioGbl_AVPLLA_CLK_EN
          { UNSG32 u32;
            struct w32avioGbl_AVPLLA_CLK_EN;
                 } T32avioGbl_AVPLLA_CLK_EN;
    typedef union  T32avioGbl_VCLK0_CTRL
          { UNSG32 u32;
            struct w32avioGbl_VCLK0_CTRL;
                 } T32avioGbl_VCLK0_CTRL;
    typedef union  T32avioGbl_VCLK1_CTRL
          { UNSG32 u32;
            struct w32avioGbl_VCLK1_CTRL;
                 } T32avioGbl_VCLK1_CTRL;
    typedef union  T32avioGbl_VCLK2_CTRL
          { UNSG32 u32;
            struct w32avioGbl_VCLK2_CTRL;
                 } T32avioGbl_VCLK2_CTRL;
    typedef union  T32avioGbl_ACLK0_CTRL
          { UNSG32 u32;
            struct w32avioGbl_ACLK0_CTRL;
                 } T32avioGbl_ACLK0_CTRL;
    typedef union  T32avioGbl_ACLK1_CTRL
          { UNSG32 u32;
            struct w32avioGbl_ACLK1_CTRL;
                 } T32avioGbl_ACLK1_CTRL;
    typedef union  T32avioGbl_ACLK2_CTRL
          { UNSG32 u32;
            struct w32avioGbl_ACLK2_CTRL;
                 } T32avioGbl_ACLK2_CTRL;
    typedef union  T32avioGbl_ACLK3_CTRL
          { UNSG32 u32;
            struct w32avioGbl_ACLK3_CTRL;
                 } T32avioGbl_ACLK3_CTRL;
    typedef union  T32avioGbl_ACLK4_CTRL
          { UNSG32 u32;
            struct w32avioGbl_ACLK4_CTRL;
                 } T32avioGbl_ACLK4_CTRL;
    typedef union  T32avioGbl_SWRST_CTRL
          { UNSG32 u32;
            struct w32avioGbl_SWRST_CTRL;
                 } T32avioGbl_SWRST_CTRL;
    typedef union  T32avioGbl_RWTC_31to0
          { UNSG32 u32;
            struct w32avioGbl_RWTC_31to0;
                 } T32avioGbl_RWTC_31to0;
    typedef union  T32avioGbl_RWTC_57to32
          { UNSG32 u32;
            struct w32avioGbl_RWTC_57to32;
                 } T32avioGbl_RWTC_57to32;
    ///////////////////////////////////////////////////////////

    typedef union  TavioGbl_AVPLLA_CLK_EN
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_AVPLLA_CLK_EN;
                   };
                 } TavioGbl_AVPLLA_CLK_EN;
    typedef union  TavioGbl_VCLK0_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_VCLK0_CTRL;
                   };
                 } TavioGbl_VCLK0_CTRL;
    typedef union  TavioGbl_VCLK1_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_VCLK1_CTRL;
                   };
                 } TavioGbl_VCLK1_CTRL;
    typedef union  TavioGbl_VCLK2_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_VCLK2_CTRL;
                   };
                 } TavioGbl_VCLK2_CTRL;
    typedef union  TavioGbl_ACLK0_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_ACLK0_CTRL;
                   };
                 } TavioGbl_ACLK0_CTRL;
    typedef union  TavioGbl_ACLK1_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_ACLK1_CTRL;
                   };
                 } TavioGbl_ACLK1_CTRL;
    typedef union  TavioGbl_ACLK2_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_ACLK2_CTRL;
                   };
                 } TavioGbl_ACLK2_CTRL;
    typedef union  TavioGbl_ACLK3_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_ACLK3_CTRL;
                   };
                 } TavioGbl_ACLK3_CTRL;
    typedef union  TavioGbl_ACLK4_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_ACLK4_CTRL;
                   };
                 } TavioGbl_ACLK4_CTRL;
    typedef union  TavioGbl_SWRST_CTRL
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_SWRST_CTRL;
                   };
                 } TavioGbl_SWRST_CTRL;
    typedef union  TavioGbl_RWTC_31to0
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_RWTC_31to0;
                   };
                 } TavioGbl_RWTC_31to0;
    typedef union  TavioGbl_RWTC_57to32
          { UNSG32 u32[1];
            struct {
            struct w32avioGbl_RWTC_57to32;
                   };
                 } TavioGbl_RWTC_57to32;

    ///////////////////////////////////////////////////////////
     SIGN32 avioGbl_drvrd(SIE_avioGbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
     SIGN32 avioGbl_drvwr(SIE_avioGbl *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
       void avioGbl_reset(SIE_avioGbl *p);
     SIGN32 avioGbl_cmp  (SIE_avioGbl *p, SIE_avioGbl *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
    #define avioGbl_check(p,pie,pfx,hLOG) avioGbl_cmp(p,pie,pfx,(void*)(hLOG),0,0)
    #define avioGbl_print(p,    pfx,hLOG) avioGbl_cmp(p,0,  pfx,(void*)(hLOG),0,0)

#endif
//////
/// ENDOFINTERFACE: avioGbl
////////////////////////////////////////////////////////////



#ifdef __cplusplus
  }
#endif
#pragma  pack()

#endif
//////
/// ENDOFFILE: avioGbl.h
////////////////////////////////////////////////////////////

