Changeset 97fa2f1b in rtems


Ignore:
Timestamp:
Aug 31, 2011, 3:50:30 PM (10 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
e635abf
Parents:
b2aa729
Message:

2011-08-31 Sebastian Huber <sebastian.huber@…>

  • mpc55xx/include/fsl-mpc551x.h, mpc55xx/include/fsl-mpc555x.h, mpc55xx/include/fsl-mpc556x.h, mpc55xx/include/fsl-mpc567x.h, mpc55xx/include/regs-edma.h, mpc55xx/include/regs-mmu.h: New files.
  • Makefile.am, M preinstall.am: Reflect changes above.
  • mpc55xx/dspi/dspi.c: Update due to API changes.
  • mpc55xx/include/edma.h, mpc55xx/edma/edma.c: Rework to support multiple eDMA modules. Removed complex error interrupt handling.
  • mpc55xx/include/esci.h, mpc55xx/esci/esci.c: Support interrupt mode and printk(). Use configure options.
  • mpc55xx/include/irq.h: More defines. API changes.
  • mpc55xx/include/mpc55xx.h: API changes.
  • mpc55xx/include/reg-defs.h: Added register defines.
  • mpc55xx/include/regs.h: Use new register header files.
  • mpc55xx/include/siu.h: Fixed includes.
  • mpc55xx/misc/fmpll.S, mpc55xx/misc/copy.S, mpc55xx/misc/flash.S: Changed sections. API changes. Support MPC5674F.
Location:
c/src/lib/libcpu/powerpc
Files:
6 added
16 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libcpu/powerpc/ChangeLog

    rb2aa729 r97fa2f1b  
     12011-08-31      Sebastian Huber <sebastian.huber@embedded-brains.de>
     2
     3        * mpc55xx/include/fsl-mpc551x.h, mpc55xx/include/fsl-mpc555x.h,
     4        mpc55xx/include/fsl-mpc556x.h, mpc55xx/include/fsl-mpc567x.h,
     5        mpc55xx/include/regs-edma.h, mpc55xx/include/regs-mmu.h: New files.
     6        * Makefile.am, M preinstall.am: Reflect changes above.
     7        * mpc55xx/dspi/dspi.c: Update due to API changes.
     8        * mpc55xx/include/edma.h, mpc55xx/edma/edma.c: Rework to support
     9        multiple eDMA modules.  Removed complex error interrupt handling.
     10        * mpc55xx/include/esci.h, mpc55xx/esci/esci.c: Support interrupt mode
     11        and printk().  Use configure options.
     12        * mpc55xx/include/irq.h: More defines.  API changes.
     13        * mpc55xx/include/mpc55xx.h: API changes.
     14        * mpc55xx/include/reg-defs.h: Added register defines.
     15        * mpc55xx/include/regs.h: Use new register header files.
     16        * mpc55xx/include/siu.h: Fixed includes.
     17        * mpc55xx/misc/fmpll.S, mpc55xx/misc/copy.S, mpc55xx/misc/flash.S:
     18        Changed sections.  API changes. Support MPC5674F.
     19
    1202011-08-31      Sebastian Huber <sebastian.huber@embedded-brains.de>
    221
  • c/src/lib/libcpu/powerpc/Makefile.am

    rb2aa729 r97fa2f1b  
    412412include_mpc55xxdir = $(includedir)/mpc55xx
    413413
    414 include_mpc55xx_HEADERS = mpc55xx/include/regs.h \
    415         mpc55xx/include/reg-defs.h \
    416         mpc55xx/include/dspi.h \
    417         mpc55xx/include/edma.h \
    418         mpc55xx/include/emios.h \
    419         mpc55xx/include/mpc55xx.h \
    420         mpc55xx/include/esci.h \
    421         mpc55xx/include/siu.h \
    422         mpc55xx/include/watchdog.h
     414include_mpc55xx_HEADERS =
     415include_mpc55xx_HEADERS += mpc55xx/include/regs.h
     416include_mpc55xx_HEADERS += mpc55xx/include/reg-defs.h
     417include_mpc55xx_HEADERS += mpc55xx/include/dspi.h
     418include_mpc55xx_HEADERS += mpc55xx/include/edma.h
     419include_mpc55xx_HEADERS += mpc55xx/include/emios.h
     420include_mpc55xx_HEADERS += mpc55xx/include/mpc55xx.h
     421include_mpc55xx_HEADERS += mpc55xx/include/esci.h
     422include_mpc55xx_HEADERS += mpc55xx/include/siu.h
     423include_mpc55xx_HEADERS += mpc55xx/include/irq.h
     424include_mpc55xx_HEADERS += mpc55xx/include/watchdog.h
     425include_mpc55xx_HEADERS += mpc55xx/include/fsl-mpc551x.h
     426include_mpc55xx_HEADERS += mpc55xx/include/fsl-mpc555x.h
     427include_mpc55xx_HEADERS += mpc55xx/include/fsl-mpc556x.h
     428include_mpc55xx_HEADERS += mpc55xx/include/fsl-mpc567x.h
     429include_mpc55xx_HEADERS += mpc55xx/include/regs-edma.h
     430include_mpc55xx_HEADERS += mpc55xx/include/regs-mmu.h
    423431
    424432include_bsp_HEADERS += mpc55xx/include/irq.h
  • c/src/lib/libcpu/powerpc/mpc55xx/dspi/dspi.c

    rb2aa729 r97fa2f1b  
    2222#include <mpc55xx/dspi.h>
    2323#include <mpc55xx/mpc55xx.h>
     24
     25#include <bsp/irq.h>
    2426
    2527#include <libcpu/powerpc-utility.h>
     
    173175        RTEMS_CHECK_SC( sc, "create receive update semaphore");
    174176
    175         sc = mpc55xx_edma_obtain_channel( &e->edma_receive);
     177        sc = mpc55xx_edma_obtain_channel( &e->edma_receive, MPC55XX_INTC_DEFAULT_PRIORITY);
    176178        RTEMS_CHECK_SC( sc, "obtain receive eDMA channel");
    177179
     
    186188        RTEMS_CHECK_SC( sc, "create transmit update semaphore");
    187189
    188         sc = mpc55xx_edma_obtain_channel( &e->edma_transmit);
     190        sc = mpc55xx_edma_obtain_channel( &e->edma_transmit, MPC55XX_INTC_DEFAULT_PRIORITY);
    189191        RTEMS_CHECK_SC( sc, "obtain transmit eDMA channel");
    190192
    191         sc = mpc55xx_edma_obtain_channel( &e->edma_push);
     193        sc = mpc55xx_edma_obtain_channel( &e->edma_push, MPC55XX_INTC_DEFAULT_PRIORITY);
    192194        RTEMS_CHECK_SC( sc, "obtain push eDMA channel");
    193195
  • c/src/lib/libcpu/powerpc/mpc55xx/edma/edma.c

    rb2aa729 r97fa2f1b  
    2323#include <mpc55xx/mpc55xx.h>
    2424
     25#include <assert.h>
    2526#include <string.h>
    2627
    2728#include <bsp/irq.h>
    2829
    29 #define RTEMS_STATUS_CHECKS_USE_PRINTK
    30 
    31 #include <rtems/status-checks.h>
    32 
    33 #if   ((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517))
    34 #define MPC55XX_EDMA_CHANNEL_COUNT 16U
    35 #else /* ((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517)) */
    36 #define MPC55XX_EDMA_CHANNEL_COUNT 64U
    37 #endif /* ((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517)) */
    38 
    39 #define MPC55XX_EDMA_INVALID_CHANNEL MPC55XX_EDMA_CHANNEL_COUNT
    40 
    41 #define MPC55XX_EDMA_IS_CHANNEL_INVALID( i) ((unsigned) (i) >= MPC55XX_EDMA_CHANNEL_COUNT)
    42 
    43 #define MPC55XX_EDMA_IS_CHANNEL_VALID( i) ((unsigned) (i) < MPC55XX_EDMA_CHANNEL_COUNT)
    44 
    45 #define MPC55XX_EDMA_IRQ_PRIORITY MPC55XX_INTC_DEFAULT_PRIORITY
    46 
    47 #define MPC55XX_EDMA_CHANNEL_FLAG( channel) ((uint64_t) 1 << (channel))
    48 
    49 static uint64_t mpc55xx_edma_channel_occupation = 0;
    50 
    51 static rtems_chain_control mpc55xx_edma_channel_chain;
    52 
    53 static void mpc55xx_edma_interrupt_handler( void *arg)
    54 {
    55         mpc55xx_edma_channel_entry *e = (mpc55xx_edma_channel_entry *) arg;
    56 
    57 #ifdef DEBUG
    58         uint32_t citer = EDMA.TCD [e->channel].CITERE_LINK ? EDMA.TCD [e->channel].CITER & EDMA_TCD_BITER_LINKED_MASK : EDMA.TCD [e->channel].CITER;
    59         RTEMS_DEBUG_PRINT( "channel %i (CITER = %i)\n", e->channel, citer);
    60 #endif /* DEBUG */
    61 
    62         /* Clear interrupt */
    63         EDMA.CIRQR.R = (uint8_t) e->channel;
    64 
    65         /* Notify user */
    66         e->done( e, 0);
    67 }
    68 
    69 static void mpc55xx_edma_interrupt_error_handler( void *arg)
    70 {
    71         rtems_chain_control *chain = &mpc55xx_edma_channel_chain;
    72         rtems_chain_node *node = rtems_chain_first( chain );
    73         unsigned i = 0;
    74         uint64_t error_status = EDMA.ESR.R;
    75         uint64_t error_channels = ((uint64_t) EDMA.ERH.R << 32) | EDMA.ERL.R;
    76         uint64_t error_channels_update = 0;
    77 
    78         RTEMS_DEBUG_PRINT( "error channels: %08x %08x\n", (unsigned) (error_channels >> 32), (unsigned) error_channels);
    79 
    80         /* Mark all channels that are linked to a channel with errors */
    81         do {
    82                 error_channels_update = 0;
    83 
    84                 for (i = 0; i < MPC55XX_EDMA_CHANNEL_COUNT; ++i) {
    85                         uint64_t channel_flags = 0;
    86                         unsigned minor_link = i;
    87                         unsigned major_link = i;
    88 
    89                         /* Check if we have linked channels */
    90                         if (EDMA.TCD [i].BMF.B.BITERE_LINK) {
    91                                 minor_link = EDMA_TCD_BITER_LINK( i);
    92                         }
    93                         if (EDMA.TCD [i].BMF.B.MAJORE_LINK) {
    94                                 major_link = EDMA.TCD [i].BMF.B.MAJORLINKCH;
    95                         }
    96 
    97                         /* Set flags related to this channel */
    98                         channel_flags = MPC55XX_EDMA_CHANNEL_FLAG( i) | MPC55XX_EDMA_CHANNEL_FLAG( minor_link) | MPC55XX_EDMA_CHANNEL_FLAG( major_link);
    99 
    100                         /* Any errors in these channels? */
    101                         if ( error_channels & channel_flags ) {
    102                                 /* Get new error channels */
    103                                 uint64_t update = (error_channels & channel_flags) ^ channel_flags;
    104 
    105                                 /* Update error channels */
    106                                 error_channels |= channel_flags;
    107 
    108                                 /* Contribute to the update of this round */
    109                                 error_channels_update |=  update;
    110                         }
    111                 }
    112         } while (error_channels_update != 0);
    113 
    114         RTEMS_DEBUG_PRINT( "error channels (all): %08x %08x\n", (unsigned) (error_channels >> 32), (unsigned) error_channels);
    115 
    116         /* Process the channels related to errors */
    117         while (!rtems_chain_is_tail( chain, node)) {
    118                 mpc55xx_edma_channel_entry *e = (mpc55xx_edma_channel_entry *) node;
    119 
    120                 if ( error_channels & MPC55XX_EDMA_CHANNEL_FLAG( e->channel)) {
    121                         mpc55xx_edma_enable_hardware_requests( e->channel, false);
    122 
    123                         /* Notify user */
    124                         e->done( e, error_status);
    125                 }
    126 
    127                 node = node->next;
    128         }
    129 
    130         /* Clear the error interrupt requests */
    131         for (i = 0; i < MPC55XX_EDMA_CHANNEL_COUNT; ++i) {
    132                 if ( error_channels & MPC55XX_EDMA_CHANNEL_FLAG( i)) {
    133                         EDMA.CER.R = (uint8_t) i;
    134                 }
    135         }
    136 }
    137 
    138 void mpc55xx_edma_enable_hardware_requests( unsigned channel, bool enable)
    139 {
    140         if (MPC55XX_EDMA_IS_CHANNEL_VALID( channel)) {
    141                 if (enable) {
    142                         EDMA.SERQR.R = (uint8_t) channel;
    143                 } else {
    144                         EDMA.CERQR.R = (uint8_t) channel;
    145                 }
    146         } else {
    147                 RTEMS_SYSLOG_ERROR( "invalid channel number\n");
    148         }
    149 }
    150 
    151 void mpc55xx_edma_enable_error_interrupts( unsigned channel, bool enable)
    152 {
    153         if (MPC55XX_EDMA_IS_CHANNEL_VALID( channel)) {
    154                 if (enable) {
    155                         EDMA.SEEIR.R = (uint8_t) channel;
    156                 } else {
    157                         EDMA.CEEIR.R = (uint8_t) channel;
    158                 }
    159         } else {
    160                 RTEMS_SYSLOG_ERROR( "invalid channel number\n");
    161         }
    162 }
    163 
    164 rtems_status_code mpc55xx_edma_init(void)
    165 {
    166         rtems_status_code sc = RTEMS_SUCCESSFUL;
    167 
    168         /* Initialize channel chain */
    169         rtems_chain_initialize_empty( &mpc55xx_edma_channel_chain);
    170 
    171         /* Arbitration mode: round robin */
    172         EDMA.CR.B.ERCA = 1;
    173         EDMA.CR.B.ERGA = 1;
    174 
    175         /* Clear TCDs */
    176         memset( (void *)&EDMA.TCD [0], 0,
    177                 MPC55XX_EDMA_CHANNEL_COUNT * sizeof( EDMA.TCD[0]));
    178 
    179         /* Error interrupt handlers */
    180         sc = mpc55xx_interrupt_handler_install(
    181                 MPC55XX_IRQ_EDMA_ERROR_LOW,
    182                 "eDMA Error (Low)",
    183                 RTEMS_INTERRUPT_UNIQUE,
    184                 MPC55XX_EDMA_IRQ_PRIORITY,
    185                 mpc55xx_edma_interrupt_error_handler,
    186                 NULL
    187         );
    188         RTEMS_CHECK_SC( sc, "install low error interrupt handler");
    189 
    190 #if defined(MPC55XX_IRQ_EDMA_ERROR_HIGH)
    191         sc = mpc55xx_interrupt_handler_install(
    192                 MPC55XX_IRQ_EDMA_ERROR_HIGH,
    193                 "eDMA Error (High)",
    194                 RTEMS_INTERRUPT_UNIQUE,
    195                 MPC55XX_EDMA_IRQ_PRIORITY,
    196                 mpc55xx_edma_interrupt_error_handler,
    197                 NULL
    198         );
    199         RTEMS_CHECK_SC( sc, "install high error interrupt handler");
    200 #endif /* defined(MPC55XX_IRQ_EDMA_ERROR_HIGH) */
    201 
    202         return RTEMS_SUCCESSFUL;
    203 }
    204 
    205 rtems_status_code mpc55xx_edma_obtain_channel( mpc55xx_edma_channel_entry *e)
    206 {
    207         rtems_status_code sc = RTEMS_SUCCESSFUL;
    208         rtems_interrupt_level level;
    209         uint64_t channel_occupation = 0;
    210 
    211         if (MPC55XX_EDMA_IS_CHANNEL_INVALID( e->channel)) {
    212                 return RTEMS_INVALID_NUMBER;
    213         }
    214 
    215         /* Test and set channel occupation flag */
    216         rtems_interrupt_disable( level);
    217         channel_occupation = mpc55xx_edma_channel_occupation;
    218         if ( (channel_occupation & MPC55XX_EDMA_CHANNEL_FLAG( e->channel)) == 0 ) {
    219                 mpc55xx_edma_channel_occupation = channel_occupation | MPC55XX_EDMA_CHANNEL_FLAG( e->channel);
    220         }
    221         rtems_interrupt_enable( level);
    222 
    223         /* Check channel occupation flag */
    224         if ( channel_occupation & MPC55XX_EDMA_CHANNEL_FLAG( e->channel)) {
    225                 return RTEMS_RESOURCE_IN_USE;
    226         }
    227 
    228         /* Interrupt handler */
    229         sc = mpc55xx_interrupt_handler_install(
    230                 MPC55XX_IRQ_EDMA_GET_REQUEST( e->channel),
    231                 "eDMA Channel",
    232                 RTEMS_INTERRUPT_SHARED,
    233                 MPC55XX_EDMA_IRQ_PRIORITY,
    234                 mpc55xx_edma_interrupt_handler,
    235                 e
    236         );
    237         RTEMS_CHECK_SC( sc, "install channel interrupt handler");
    238 
    239         /* Enable error interrupts */
    240         mpc55xx_edma_enable_error_interrupts( e->channel, true);
    241 
    242         /* Prepend channel entry to channel list */
    243         rtems_chain_prepend( &mpc55xx_edma_channel_chain, &e->node);
    244 
    245         return RTEMS_SUCCESSFUL;
    246 }
    247 
    248 rtems_status_code mpc55xx_edma_release_channel( mpc55xx_edma_channel_entry *e)
    249 {
    250         rtems_status_code sc = RTEMS_SUCCESSFUL;
    251         rtems_interrupt_level level;
    252 
    253         /* Clear channel occupation flag */
    254         rtems_interrupt_disable( level);
    255         mpc55xx_edma_channel_occupation &= ~MPC55XX_EDMA_CHANNEL_FLAG( e->channel);
    256         rtems_interrupt_enable( level);
    257 
    258         /* Disable hardware requests */
    259         mpc55xx_edma_enable_hardware_requests( e->channel, false);
    260 
    261         /* Disable error interrupts */
    262         mpc55xx_edma_enable_error_interrupts( e->channel, false);
    263 
    264         /* Extract channel entry from channel chain */
    265         rtems_chain_extract( &e->node);
    266 
    267         /* Remove interrupt handler */
    268         sc = rtems_interrupt_handler_remove(
    269                 MPC55XX_IRQ_EDMA_GET_REQUEST( e->channel),
    270                 mpc55xx_edma_interrupt_handler,
    271                 e
    272         );
    273         RTEMS_CHECK_SC( sc, "remove channel interrupt handler");
    274 
    275         /* Notify user */
    276         e->done( e, 0);
    277 
    278         return RTEMS_SUCCESSFUL;
    279 }
     30#if MPC55XX_CHIP_TYPE / 10 == 551
     31  #define EDMA_CHANNEL_COUNT 16U
     32#elif MPC55XX_CHIP_TYPE / 10 == 567
     33  #define EDMA_CHANNEL_COUNT 96U
     34#else
     35  #define EDMA_CHANNEL_COUNT 64U
     36#endif
     37
     38#define EDMA_CHANNELS_PER_GROUP 32U
     39
     40#define EDMA_CHANNELS_PER_MODULE 64U
     41
     42#define EDMA_GROUP_COUNT ((EDMA_CHANNEL_COUNT + 31U) / 32U)
     43
     44#define EDMA_MODULE_COUNT ((EDMA_CHANNEL_COUNT + 63U) / 64U)
     45
     46#define EDMA_INVALID_CHANNEL EDMA_CHANNEL_COUNT
     47
     48#define EDMA_IS_CHANNEL_INVALID(i) ((unsigned) (i) >= EDMA_CHANNEL_COUNT)
     49
     50#define EDMA_IS_CHANNEL_VALID(i) ((unsigned) (i) < EDMA_CHANNEL_COUNT)
     51
     52#define EDMA_GROUP_INDEX(channel) ((channel) / EDMA_CHANNELS_PER_GROUP)
     53
     54#define EDMA_GROUP_BIT(channel) (1U << ((channel) % EDMA_CHANNELS_PER_GROUP))
     55
     56#define EDMA_MODULE_INDEX(channel) ((channel) / EDMA_CHANNELS_PER_MODULE)
     57
     58#define EDMA_MODULE_BIT(channel) (1U << ((channel) % EDMA_CHANNELS_PER_MODULE))
     59
     60static uint32_t edma_channel_occupation [EDMA_GROUP_COUNT];
     61
     62static RTEMS_CHAIN_DEFINE_EMPTY(edma_channel_chain);
     63
     64volatile struct EDMA_tag *edma_get_regs_by_channel(unsigned channel)
     65{
     66#if EDMA_MODULE_COUNT == 1
     67  return &EDMA;
     68#elif EDMA_MODULE_COUNT == 2
     69  return channel < EDMA_CHANNELS_PER_MODULE ? &EDMA_A : &EDMA_B;
     70#else
     71  #error "unsupported module count"
     72#endif
     73}
     74
     75volatile struct EDMA_tag *edma_get_regs_by_module(unsigned module)
     76{
     77#if EDMA_MODULE_COUNT == 1
     78  return &EDMA;
     79#elif EDMA_MODULE_COUNT == 2
     80  return module == 0 ? &EDMA_A : &EDMA_B;
     81#else
     82  #error "unsupported module count"
     83#endif
     84}
     85
     86static uint32_t edma_bit_array_set(unsigned channel, uint32_t *bit_array)
     87{
     88  unsigned array = channel / 32;
     89  uint32_t bit = 1U << (channel % 32);
     90  uint32_t previous = bit_array [array];
     91
     92  bit_array [array] = previous | bit;
     93
     94  return previous;
     95}
     96
     97static uint32_t edma_bit_array_clear(unsigned channel, uint32_t *bit_array)
     98{
     99  unsigned array = channel / 32;
     100  uint32_t bit = 1U << (channel % 32);
     101  uint32_t previous = bit_array [array];
     102
     103  bit_array [array] = previous & ~bit;
     104
     105  return previous;
     106}
     107
     108static void edma_interrupt_handler(void *arg)
     109{
     110  mpc55xx_edma_channel_entry *e = arg;
     111  unsigned channel = e->channel;
     112  volatile struct EDMA_tag *edma = edma_get_regs_by_channel(channel);
     113
     114  edma->CIRQR.R = (uint8_t) channel;
     115
     116  e->done(e, 0);
     117}
     118
     119static void edma_interrupt_error_handler(void *arg)
     120{
     121  rtems_chain_control *chain = &edma_channel_chain;
     122  rtems_chain_node *node = rtems_chain_first(chain);
     123  uint32_t error_channels [] = {
     124#if EDMA_GROUP_COUNT >= 1
     125    EDMA.ERL.R
     126#endif
     127#if EDMA_GROUP_COUNT >= 2
     128    , EDMA.ERH.R
     129#endif
     130#if EDMA_GROUP_COUNT >= 3
     131    , EDMA_B.ERL.R
     132#endif
     133  };
     134  uint32_t error_status [] = {
     135#if EDMA_GROUP_COUNT >= 1
     136    EDMA.ESR.R
     137#endif
     138#if EDMA_GROUP_COUNT >= 3
     139    , EDMA_B.ESR.R
     140#endif
     141  };
     142
     143#if EDMA_GROUP_COUNT >= 1
     144  EDMA.ERL.R = error_channels [0];
     145#endif
     146#if EDMA_GROUP_COUNT >= 2
     147  EDMA.ERH.R = error_channels [1];
     148#endif
     149#if EDMA_GROUP_COUNT >= 3
     150  EDMA_B.ERL.R = error_channels [2];
     151#endif
     152
     153  while (!rtems_chain_is_tail(chain, node)) {
     154    mpc55xx_edma_channel_entry *e = (mpc55xx_edma_channel_entry *) node;
     155    unsigned channel = e->channel;
     156    unsigned group_index = EDMA_GROUP_INDEX(channel);
     157    unsigned group_bit = EDMA_GROUP_BIT(channel);
     158
     159    if ((error_channels [group_index] & group_bit) != 0) {
     160      unsigned module_index = EDMA_MODULE_INDEX(channel);
     161
     162      e->done(e, error_status [module_index]);
     163    }
     164
     165    node = rtems_chain_next(node);
     166  }
     167}
     168
     169void mpc55xx_edma_enable_hardware_requests(unsigned channel, bool enable)
     170{
     171  volatile struct EDMA_tag *edma = edma_get_regs_by_channel(channel);
     172
     173  assert(EDMA_IS_CHANNEL_VALID(channel));
     174
     175  if (enable) {
     176    edma->SERQR.R = (uint8_t) channel;
     177  } else {
     178    edma->CERQR.R = (uint8_t) channel;
     179  }
     180}
     181
     182void mpc55xx_edma_enable_error_interrupts(unsigned channel, bool enable)
     183{
     184  volatile struct EDMA_tag *edma = edma_get_regs_by_channel(channel);
     185
     186  assert(EDMA_IS_CHANNEL_VALID(channel));
     187
     188  if (enable) {
     189    edma->SEEIR.R = (uint8_t) channel;
     190  } else {
     191    edma->CEEIR.R = (uint8_t) channel;
     192  }
     193}
     194
     195void mpc55xx_edma_init(void)
     196{
     197  rtems_status_code sc = RTEMS_SUCCESSFUL;
     198  unsigned channel_remaining = EDMA_CHANNEL_COUNT;
     199  unsigned module = 0;
     200  unsigned group = 0;
     201
     202  for (module = 0; module < EDMA_MODULE_COUNT; ++module) {
     203    volatile struct EDMA_tag *edma = edma_get_regs_by_module(module);
     204    unsigned channel_count = channel_remaining < EDMA_CHANNELS_PER_MODULE ?
     205      channel_remaining : EDMA_CHANNELS_PER_MODULE;
     206    unsigned channel = 0;
     207
     208    channel_remaining -= channel_count;
     209
     210    /* Arbitration mode: group round robin, channel fixed */
     211    edma->CR.B.ERGA = 1;
     212    edma->CR.B.ERCA = 0;
     213    for (channel = 0; channel < channel_count; ++channel) {
     214      edma->CPR [channel].R = 0x80U | (channel & 0xfU);
     215    }
     216
     217    /* Clear TCDs */
     218    memset((void *) &edma->TCD [0], 0, channel_count * sizeof(edma->TCD [0]));
     219  }
     220
     221  for (group = 0; group < EDMA_GROUP_COUNT; ++group) {
     222    sc = mpc55xx_interrupt_handler_install(
     223      MPC55XX_IRQ_EDMA_ERROR(group),
     224      "eDMA Error",
     225      RTEMS_INTERRUPT_UNIQUE,
     226      MPC55XX_INTC_DEFAULT_PRIORITY,
     227      edma_interrupt_error_handler,
     228      NULL
     229    );
     230    if (sc != RTEMS_SUCCESSFUL) {
     231      /* FIXME */
     232      rtems_fatal_error_occurred(0xdeadbeef);
     233    }
     234  }
     235}
     236
     237rtems_status_code mpc55xx_edma_obtain_channel(
     238  mpc55xx_edma_channel_entry *e,
     239  unsigned irq_priority
     240)
     241{
     242  rtems_status_code sc = RTEMS_SUCCESSFUL;
     243  rtems_interrupt_level level;
     244  unsigned channel = e->channel;
     245  uint32_t channel_occupation = 0;
     246
     247  if (EDMA_IS_CHANNEL_INVALID(channel)) {
     248    return RTEMS_INVALID_ID;
     249  }
     250
     251  rtems_interrupt_disable(level);
     252  channel_occupation = edma_bit_array_set(
     253    channel,
     254    &edma_channel_occupation [0]
     255  );
     256  rtems_interrupt_enable(level);
     257
     258  if ((channel_occupation & EDMA_GROUP_BIT(channel))) {
     259    return RTEMS_RESOURCE_IN_USE;
     260  }
     261
     262  sc = mpc55xx_interrupt_handler_install(
     263    MPC55XX_IRQ_EDMA(channel),
     264    "eDMA Channel",
     265    RTEMS_INTERRUPT_SHARED,
     266    irq_priority,
     267    edma_interrupt_handler,
     268    e
     269  );
     270  if (sc != RTEMS_SUCCESSFUL) {
     271    rtems_interrupt_disable(level);
     272    edma_bit_array_clear(channel, &edma_channel_occupation [0]);
     273    rtems_interrupt_enable(level);
     274
     275    return RTEMS_IO_ERROR;
     276  }
     277
     278  rtems_chain_prepend(&edma_channel_chain, &e->node);
     279  mpc55xx_edma_enable_error_interrupts(channel, true);
     280
     281  return RTEMS_SUCCESSFUL;
     282}
     283
     284void mpc55xx_edma_release_channel(mpc55xx_edma_channel_entry *e)
     285{
     286  rtems_status_code sc = RTEMS_SUCCESSFUL;
     287  rtems_interrupt_level level;
     288  unsigned channel = e->channel;
     289
     290  rtems_interrupt_disable(level);
     291  edma_bit_array_clear(channel, &edma_channel_occupation [0]);
     292  rtems_interrupt_enable(level);
     293
     294  mpc55xx_edma_enable_hardware_requests(channel, false);
     295  mpc55xx_edma_enable_error_interrupts(channel, false);
     296  rtems_chain_extract(&e->node);
     297
     298  sc = rtems_interrupt_handler_remove(
     299    MPC55XX_IRQ_EDMA(e->channel),
     300    edma_interrupt_handler,
     301    e
     302  );
     303  if (sc != RTEMS_SUCCESSFUL) {
     304    /* FIXME */
     305    rtems_fatal_error_occurred(0xdeadbeef);
     306  }
     307
     308  e->done(e, 0);
     309}
  • c/src/lib/libcpu/powerpc/mpc55xx/esci/esci.c

    rb2aa729 r97fa2f1b  
    88
    99/*
    10  * Copyright (c) 2008
    11  * Embedded Brains GmbH
    12  * Obere Lagerstr. 30
    13  * D-82178 Puchheim
    14  * Germany
    15  * rtems@embedded-brains.de
    16  *
    17  * The license and distribution terms for this file may be found in the file
    18  * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
     10 * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
     11 *
     12 *  embedded brains GmbH
     13 *  Obere Lagerstr. 30
     14 *  82178 Puchheim
     15 *  Germany
     16 *  <rtems@embedded-brains.de>
     17 *
     18 * The license and distribution terms for this file may be
     19 * found in the file LICENSE in this distribution or at
     20 * http://www.rtems.com/license/LICENSE.
     21 *
     22 * $Id$
    1923 */
    2024
     
    2428#include <bsp/irq.h>
    2529
     30#include <assert.h>
    2631#include <unistd.h>
    2732#include <termios.h>
     
    3237#include <rtems/bspIo.h>
    3338
    34 #define RTEMS_STATUS_CHECKS_USE_PRINTK
    35 
    36 #include <rtems/status-checks.h>
     39#include <bspopts.h>
    3740
    3841/* Evil define conflicts */
     
    4649#define MPC55XX_ESCI_IS_MINOR_INVALD(minor) ((minor) < 0 || (minor) >= MPC55XX_ESCI_NUMBER)
    4750
    48 #define MPC55XX_ESCI_USE_INTERRUPTS(e) (!(e)->console && (e)->use_interrupts)
    49 
    5051/**
    5152 * @brief eSCI driver table.
     
    5354mpc55xx_esci_driver_entry mpc55xx_esci_driver_table [MPC55XX_ESCI_NUMBER] = { {
    5455                .regs = &ESCI_A,
    55                 .device_name = "/dev/tty1",
     56                .device_name = "/dev/ttyS0",
    5657                .use_termios = 1,
    57                 .use_interrupts = 0,
    58                 .console = 1,
     58                .use_interrupts = MPC55XX_ESCI_USE_INTERRUPTS,
    5959                .tty = NULL,
    60                 .irq_number = 146
     60                .irq_number = MPC55XX_IRQ_ESCI(0)
    6161        }, {
    6262                .regs = &ESCI_B,
    63                 .device_name = "/dev/tty2",
     63                .device_name = "/dev/ttyS1",
    6464                .use_termios = 1,
    65                 .use_interrupts = 0,
    66                 .console = 0,
     65                .use_interrupts = MPC55XX_ESCI_USE_INTERRUPTS,
    6766                .tty = NULL,
    68                 .irq_number = 149
     67                .irq_number = MPC55XX_IRQ_ESCI(1)
    6968        }
    7069};
     
    105104}
    106105
    107 /**
    108  * @brief Writes the character @a c to the transmit register.
    109  *
    110  * @note Waits for the transmit data register empty flag.
    111  */
    112 static inline void mpc55xx_esci_write_char( mpc55xx_esci_driver_entry *e, uint8_t c)
    113 {
    114         volatile union ESCI_SR_tag *status = &e->regs->SR;
    115         volatile union ESCI_DR_tag *data = &e->regs->DR;
    116         union ESCI_SR_tag sr = MPC55XX_ZERO_FLAGS;
     106static inline void mpc55xx_esci_write_char(mpc55xx_esci_driver_entry *e, char c)
     107{
     108        static const union ESCI_SR_tag clear_tdre = { .B = { .TDRE = 1 } };
     109        volatile struct ESCI_tag *esci = e->regs;
    117110        rtems_interrupt_level level;
    118 
    119         /* Set clear flag */
    120         sr.B.TDRE = 1;
    121 
    122         while (true) {
    123                 rtems_interrupt_disable( level);
    124                 if (status->B.TDRE != 0) {
    125                         /* Clear flag */
    126                         status->R = sr.R;
    127 
    128                         /* Write */
    129                         data->B.D = c;
    130 
    131                         /* Done */
    132                         rtems_interrupt_enable( level);
    133                         break;
    134                 }
    135                 rtems_interrupt_enable( level);
    136 
    137                 while (status->B.TDRE == 0) {
    138                         /* Wait */
    139                 }
    140         }
     111        bool done = false;
     112
     113        rtems_interrupt_disable(level);
     114        if (e->transmit_nest_level == 0) {
     115                union ESCI_CR1_tag cr1 = { .R = esci->CR1.R };
     116
     117                if (cr1.B.TIE != 0) {
     118                        cr1.B.TIE = 0;
     119                        e->transmit_nest_level = 1;
     120                        esci->CR1.R = cr1.R;
     121                }
     122        } else {
     123                ++e->transmit_nest_level;
     124        }
     125        rtems_interrupt_enable(level);
     126
     127        while (!done) {
     128                rtems_interrupt_disable(level);
     129                bool tx = e->transmit_in_progress;
     130                if (!tx || (tx && esci->SR.B.TDRE)) {
     131                        esci->SR.R = clear_tdre.R;
     132                        esci->DR.B.D = c;
     133                        e->transmit_in_progress = true;
     134                        done = true;
     135                }
     136                rtems_interrupt_enable(level);
     137        }
     138
     139        rtems_interrupt_disable(level);
     140        if (e->transmit_nest_level > 0) {
     141                --e->transmit_nest_level;
     142
     143                if (e->transmit_nest_level == 0) {
     144                        union ESCI_CR1_tag cr1 = { .R = esci->CR1.R };
     145
     146                        cr1.B.TIE = 1;
     147                        esci->CR1.R = cr1.R;
     148                }
     149        }
     150        rtems_interrupt_enable(level);
    141151}
    142152
     
    187197        /* Check minor number */
    188198        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    189                 return RTEMS_INVALID_NUMBER;
     199                return RTEMS_INVALID_ID;
    190200        }
    191201
     
    194204
    195205        /* Enable interrupts */
    196         if (MPC55XX_ESCI_USE_INTERRUPTS( e)) {
     206        if (e->use_interrupts) {
    197207                mpc55xx_esci_interrupts_enable( e);
    198208        }
    199209
    200210        rv = rtems_termios_set_initial_baud( e->tty, 115200);
    201         RTEMS_CHECK_RV_SC( rv, "Set initial baud");
    202 
    203         return RTEMS_SUCCESSFUL;
     211        assert(rv == 0);
     212
     213        return 0;
    204214}
    205215
     
    215225        /* Check minor number */
    216226        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    217                 return RTEMS_INVALID_NUMBER;
     227                return RTEMS_INVALID_ID;
    218228        }
    219229
     
    256266 * @return Returns number of chars sent on success or -1 otherwise.
    257267 */
    258 static int mpc55xx_esci_termios_poll_write( int minor, const char *out, 
     268static int mpc55xx_esci_termios_poll_write( int minor, const char *out,
    259269                                            size_t n)
    260270{
     
    286296{
    287297        mpc55xx_esci_driver_entry *e = &mpc55xx_esci_driver_table [minor];
    288 
    289         /* Write */
     298        rtems_interrupt_level level;
     299
     300        rtems_interrupt_disable(level);
    290301        e->regs->DR.B.D = out [0];
     302        e->transmit_in_progress = true;
     303        rtems_interrupt_enable(level);
    291304
    292305        return 0;
     
    311324        /* Check minor number */
    312325        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    313                 return RTEMS_INVALID_NUMBER;
     326                return RTEMS_INVALID_ID;
    314327        }
    315328
     
    318331
    319332        /* Interrupts */
    320         if (MPC55XX_ESCI_USE_INTERRUPTS( e) && e->tty != NULL) {
     333        if (e->use_interrupts && e->tty != NULL) {
    321334                cr1.B.RIE = 1;
    322335                cr1.B.TIE = 1;
     
    419432        union ESCI_SR_tag sr = MPC55XX_ZERO_FLAGS;
    420433        union ESCI_SR_tag active = MPC55XX_ZERO_FLAGS;
     434        rtems_interrupt_level level;
    421435
    422436        /* Status */
     
    434448
    435449        /* Clear flags */
     450        rtems_interrupt_disable(level);
    436451        status->R = active.R;
     452        e->transmit_in_progress = false;
     453        rtems_interrupt_enable(level);
    437454
    438455        /* Enqueue */
     
    486503{
    487504        rtems_status_code sc = RTEMS_SUCCESSFUL;
    488         int console_done = 0;
    489505        int termios_do_init = 1;
    490506        rtems_device_minor_number i = 0;
     
    494510                e = &mpc55xx_esci_driver_table [i];
    495511                sc = rtems_io_register_name ( e->device_name, major, i);
    496                 RTEMS_CHECK_SC( sc, "Register IO device");
    497                 if (e->console) {
    498                         if (console_done) {
    499                                 RTEMS_SYSLOG_WARNING( "Multiple console ports defined\n");
    500                         } else {
    501                                 console_done = 1;
    502                                 if (e->use_interrupts) {
    503                                         RTEMS_SYSLOG_WARNING( "Cannot use interrupts for console port\n");
    504                                 }
    505                                 sc = rtems_io_register_name( CONSOLE_DEVICE_NAME, major, i);
    506                                 RTEMS_CHECK_SC( sc, "Register IO device");
     512                if (sc != RTEMS_SUCCESSFUL) {
     513                        /* FIXME */
     514                        rtems_fatal_error_occurred(0xdeadbeef);
     515                }
     516                if (i == MPC55XX_ESCI_CONSOLE_MINOR) {
     517                        sc = rtems_io_register_name( CONSOLE_DEVICE_NAME, major, i);
     518                        if (sc != RTEMS_SUCCESSFUL) {
     519                                /* FIXME */
     520                                rtems_fatal_error_occurred(0xdeadbeef);
    507521                        }
    508522                }
     
    512526                                rtems_termios_initialize();
    513527                        }
    514                         if (MPC55XX_ESCI_USE_INTERRUPTS( e)) {
     528                        if (e->use_interrupts) {
    515529                                sc = mpc55xx_interrupt_handler_install(
    516530                                        e->irq_number,
     
    521535                                        e
    522536                                );
    523                                 RTEMS_CHECK_SC( sc, "Install IRQ handler");
     537                                if (sc != RTEMS_SUCCESSFUL) {
     538                                        /* FIXME */
     539                                        rtems_fatal_error_occurred(0xdeadbeef);
     540                                }
    524541                        }
    525542                }
     
    537554        /* Check minor number */
    538555        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    539                 return RTEMS_INVALID_NUMBER;
     556                return RTEMS_INVALID_ID;
    540557        }
    541558
    542559        if (e->use_termios) {
    543                 if (MPC55XX_ESCI_USE_INTERRUPTS( e)) {
     560                if (e->use_interrupts) {
    544561                        sc =  rtems_termios_open( major, minor, arg, &mpc55xx_esci_termios_callbacks);
    545562                } else {
    546563                        sc =  rtems_termios_open( major, minor, arg, &mpc55xx_esci_termios_callbacks_polled);
    547564                }
    548                 RTEMS_CHECK_SC( sc, "Open");
    549         }
    550 
    551         return RTEMS_SUCCESSFUL;
     565        }
     566
     567        return sc;
    552568}
    553569
     
    558574        /* Check minor number */
    559575        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    560                 return RTEMS_INVALID_NUMBER;
     576                return RTEMS_INVALID_ID;
    561577        }
    562578
     
    574590        /* Check minor number */
    575591        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    576                 return RTEMS_INVALID_NUMBER;
     592                return RTEMS_INVALID_ID;
    577593        }
    578594
     
    598614        /* Check minor number */
    599615        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    600                 return RTEMS_INVALID_NUMBER;
     616                return RTEMS_INVALID_ID;
    601617        }
    602618
     
    607623                uint32_t i = 0;
    608624                while (i < rw->count) {
    609                         mpc55xx_esci_write_char( e, rw->buffer [i]);
    610625                        if (rw->buffer [i] == '\n') {
    611626                                mpc55xx_esci_write_char( e, '\r');
    612627                        }
     628                        mpc55xx_esci_write_char( e, rw->buffer [i]);
    613629                        ++i;
    614630                }
     
    625641        /* Check minor number */
    626642        if (MPC55XX_ESCI_IS_MINOR_INVALD( minor)) {
    627                 return RTEMS_INVALID_NUMBER;
     643                return RTEMS_INVALID_ID;
    628644        }
    629645
     
    638654
    639655/**
    640  * @brief Port number for the BSP character output function.
    641  *
    642  * The correct value will be set by mpc55xx_esci_output_char_init().
    643  */
    644 static int mpc55xx_esci_output_char_minor = 0;
    645 
    646 /**
    647656 * @name BSP Character Output
    648657 * @{
     
    651660static void mpc55xx_esci_output_char( char c)
    652661{
    653         mpc55xx_esci_driver_entry *e = &mpc55xx_esci_driver_table [mpc55xx_esci_output_char_minor];
     662        mpc55xx_esci_driver_entry *e = &mpc55xx_esci_driver_table [MPC55XX_ESCI_CONSOLE_MINOR];
    654663
    655664        mpc55xx_esci_interrupts_disable( e);
    656         mpc55xx_esci_write_char( e, c);
    657665        if (c == '\n') {
    658666                mpc55xx_esci_write_char( e, '\r');
    659667        }
     668        mpc55xx_esci_write_char( e, c);
    660669        mpc55xx_esci_interrupts_enable( e);
    661670}
    662671
    663 static void mpc55xx_esci_output_char_nop( char c)
    664 {
    665         /* Do nothing */
    666 }
    667 
    668672static void mpc55xx_esci_output_char_init( char c)
    669673{
    670         bool console_found = false;
    671         int i = 0;
    672 
    673         for (i = 0; i < MPC55XX_ESCI_NUMBER; ++i) {
    674                 if (mpc55xx_esci_driver_table [i].console) {
    675                         console_found = true;
    676                         mpc55xx_esci_output_char_minor = i;
    677                         break;
    678                 }
    679         }
    680 
    681         if (console_found) {
    682                 BSP_output_char = mpc55xx_esci_output_char;
    683                 mpc55xx_esci_termios_set_attributes( mpc55xx_esci_output_char_minor, &mpc55xx_esci_termios_default);
    684                 mpc55xx_esci_output_char( c);
    685         } else {
    686                 BSP_output_char = mpc55xx_esci_output_char_nop;
    687         }
     674        mpc55xx_esci_termios_set_attributes( MPC55XX_ESCI_CONSOLE_MINOR, &mpc55xx_esci_termios_default);
     675        mpc55xx_esci_output_char( c);
     676        BSP_output_char = mpc55xx_esci_output_char;
    688677}
    689678
  • c/src/lib/libcpu/powerpc/mpc55xx/include/edma.h

    rb2aa729 r97fa2f1b  
    3333
    3434typedef struct mpc55xx_edma_channel_entry {
    35         rtems_chain_node node;
    36         unsigned channel;
    37         void (*done)( struct mpc55xx_edma_channel_entry *, uint32_t);
    38         rtems_id id;
     35  rtems_chain_node node;
     36  unsigned channel;
     37  void (*done)( struct mpc55xx_edma_channel_entry *, uint32_t);
     38  rtems_id id;
    3939} mpc55xx_edma_channel_entry;
    4040
    41 rtems_status_code mpc55xx_edma_init();
     41void mpc55xx_edma_init(void);
    4242
    43 rtems_status_code mpc55xx_edma_obtain_channel( mpc55xx_edma_channel_entry *e);
     43rtems_status_code mpc55xx_edma_obtain_channel( mpc55xx_edma_channel_entry *e, unsigned irq_priority);
    4444
    45 rtems_status_code mpc55xx_edma_release_channel( mpc55xx_edma_channel_entry *e);
     45void mpc55xx_edma_release_channel( mpc55xx_edma_channel_entry *e);
    4646
    4747void mpc55xx_edma_enable_hardware_requests( unsigned channel, bool enable);
  • c/src/lib/libcpu/powerpc/mpc55xx/include/esci.h

    rb2aa729 r97fa2f1b  
    2828#define LIBCPU_POWERPC_MPC55XX_ESCI_H
    2929
     30#include <rtems.h>
    3031#include <rtems/termiostypes.h>
    3132
     
    3637#define MPC55XX_ESCI_NUMBER 2
    3738
    38 struct ESCI_tag;
    39 
    4039typedef struct {
    4140        volatile struct ESCI_tag *regs;
     41        struct rtems_termios_tty *tty;
    4242        const char *device_name;
    43         int use_termios;
    44         int use_interrupts;
    45         int console;
    46         struct rtems_termios_tty *tty;
    47         unsigned irq_number;
     43        rtems_vector_number irq_number;
     44        int transmit_nest_level;
     45        bool transmit_in_progress;
     46        bool use_termios;
     47        bool use_interrupts;
    4848} mpc55xx_esci_driver_entry;
    4949
  • c/src/lib/libcpu/powerpc/mpc55xx/include/irq.h

    rb2aa729 r97fa2f1b  
    3535 */
    3636
    37 /* Basics */
     37#define MPC55XX_IRQ_INVALID 0x10000U
    3838#define MPC55XX_IRQ_MIN 0U
    39 #define MPC55XX_IRQ_MAX 328U
    40 #define MPC55XX_IRQ_MIN 0U
    41 #define MPC55XX_IRQ_MAX 328U
    42 #define MPC55XX_IRQ_BASE MPC55XX_IRQ_MIN
    43 #define MPC55XX_IRQ_NUMBER (MPC55XX_IRQ_MAX + 1U)
    4439
    4540/* Software interrupts */
     
    5045#define MPC55XX_IRQ_SOFTWARE_NUMBER (MPC55XX_IRQ_SOFTWARE_MAX + 1U)
    5146
    52 #if MPC55XX_CHIP_TYPE >= 5510 && MPC55XX_CHIP_TYPE <= 5517
    53   /* eDMA interrupts */
    54   #define MPC55XX_IRQ_EDMA_ERROR_LOW 10U
    55   #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN 11U
    56   #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX 26U
    57 
    58   #define MPC55XX_IRQ_EDMA_GET_CHANNEL(v) \
    59     ((v) - MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN)
    60   #define MPC55XX_IRQ_EDMA_GET_REQUEST(c) \
    61     ((c) + MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN)
    62 
    63   /* I2C interrupt */
    64   #define MPC55XX_IRQ_I2C 48U
     47#if MPC55XX_CHIP_TYPE / 10 == 551
     48  #define MPC55XX_IRQ_MAX 293U
     49
     50  /* eDMA */
     51  #define MPC55XX_IRQ_EDMA_ERROR(group) \
     52    ((group) == 0 ? 10U : MPC55XX_IRQ_INVALID)
     53  #define MPC55XX_IRQ_EDMA(ch) \
     54    ((unsigned) (ch) < 16U ? 11U + (ch) : MPC55XX_IRQ_INVALID)
     55
     56  /* I2C */
     57  #define MPC55XX_IRQ_I2C(mod) \
     58    ((mod) == 0 ? 48U : MPC55XX_IRQ_INVALID)
    6559
    6660  /* SIU external interrupts */
     
    7165  #define MPC55XX_IRQ_SIU_EXTERNAL_4_15 57U
    7266
    73   /* eMIOS interrupts */
    74   #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN 58U
    75   #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX 81U
    76   #define MPC55XX_IRQ_EMIOS_GET_CHANNEL(v) \
    77     ((v) - MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN)
    78   #define MPC55XX_IRQ_EMIOS_GET_REQUEST(c) \
    79     ((c) + MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN)
    80 #elif MPC55XX_CHIP_TYPE >= 5554 && MPC55XX_CHIP_TYPE <= 5567
    81   /* eDMA interrupts */
    82   #define MPC55XX_IRQ_EDMA_ERROR_LOW 10U
    83   #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN 11U
    84   #define MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX 42U
    85 
    86   #define MPC55XX_IRQ_EDMA_ERROR_HIGH 210U
    87   #define MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN 211U
    88   #define MPC55XX_IRQ_EDMA_REQUEST_HIGH_MAX 242U
    89 
    90   #define MPC55XX_IRQ_EDMA_GET_CHANNEL(v) \
    91     (((v) > MPC55XX_IRQ_EDMA_REQUEST_LOW_MAX) \
    92       ? ((v) + 32U - MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN) \
    93       : ((v) - MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN))
    94   #define MPC55XX_IRQ_EDMA_GET_REQUEST(c) \
    95     (((c) >= 32U) \
    96       ? ((c) - 32U + MPC55XX_IRQ_EDMA_REQUEST_HIGH_MIN) \
    97       : ((c) + MPC55XX_IRQ_EDMA_REQUEST_LOW_MIN))
     67  /* PIT */
     68  #define MPC55XX_IRQ_RTI 148U
     69  #define MPC55XX_IRQ_PIT(timer) (148U + (timer))
     70
     71  /* eTPU */
     72  #define MPC55XX_IRQ_ETPU_BASE(mod) MPC55XX_IRQ_INVALID
     73
     74  /* DSPI */
     75  #define MPC55XX_IRQ_DSPI_BASE(mod) \
     76    ((mod) == 0 ? 117U : \
     77      ((mod) == 1 ? 122U : \
     78        ((mod) == 2 ? 274U : \
     79          ((mod) == 3 ? 279U : MPC55XX_IRQ_INVALID))))
     80
     81  /* eMIOS */
     82  #define MPC55XX_IRQ_EMIOS(ch) \
     83    ((unsigned) (ch) < 24U ? 58U + (ch) : MPC55XX_IRQ_INVALID)
     84
     85  /* eQADC */
     86  #define MPC55XX_IRQ_EQADC_BASE(mod) \
     87    ((mod) == 0 ? 82U : MPC55XX_IRQ_INVALID)
     88
     89  /* eSCI */
     90  #define MPC55XX_IRQ_ESCI_BASE(mod) \
     91    ((mod) == 0 ? 113U : \
     92      ((mod) == 1 ? 114U : \
     93        ((mod) == 2 ? 115U : \
     94          ((mod) == 3 ? 116U : \
     95            ((mod) == 4 ? 270U : \
     96              ((mod) == 5 ? 271U : \
     97                ((mod) == 6 ? 272U : \
     98                  ((mod) == 7 ? 273U : MPC55XX_IRQ_INVALID))))))))
     99
     100  /* FlexCAN */
     101  #define MPC55XX_IRQ_CAN_BASE(mod) \
     102    ((mod) == 0 ? 127U : \
     103      ((mod) == 1 ? 157U : \
     104        ((mod) == 2 ? 178U : \
     105          ((mod) == 3 ? 199U : \
     106            ((mod) == 4 ? 220U : \
     107              ((mod) == 5 ? 241U : MPC55XX_IRQ_INVALID))))))
     108
     109  /* FlexRay */
     110  #define MPC55XX_IRQ_FLEXRAY_BASE(mod) \
     111    ((mod) == 0 ? 284U : MPC55XX_IRQ_INVALID)
     112#else
     113  #if MPC55XX_CHIP_TYPE / 10 == 555
     114    #define MPC55XX_IRQ_MAX 307U
     115  #elif MPC55XX_CHIP_TYPE / 10 == 556
     116    #define MPC55XX_IRQ_MAX 360U
     117  #elif MPC55XX_CHIP_TYPE / 10 == 567
     118    #define MPC55XX_IRQ_MAX 479U
     119  #else
     120    #error "unsupported chip type"
     121  #endif
     122
     123  /* eDMA */
     124  #define MPC55XX_IRQ_EDMA_ERROR(group) \
     125    ((group) == 0 ? 10U : \
     126      ((group) == 1 ? 210U : \
     127        ((group) == 2 ? 425U : MPC55XX_IRQ_INVALID)))
     128  #define MPC55XX_IRQ_EDMA(ch) \
     129    ((unsigned) (ch) < 32U ? 11U + (ch) : \
     130      ((unsigned) (ch) < 64U ? 179U + (ch) : \
     131        ((unsigned) (ch) < 96U ? 362U + (ch) : MPC55XX_IRQ_INVALID)))
     132
     133  /* I2C */
     134  #define MPC55XX_IRQ_I2C(mod) MPC55XX_IRQ_INVALID
    98135
    99136  /* SIU external interrupts */
     
    104141  #define MPC55XX_IRQ_SIU_EXTERNAL_4_15 50U
    105142
    106   /* eMIOS interrupts */
    107   #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN 51U
    108   #define MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX 66U
    109   #define MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN 202U
    110   #define MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MAX 209U
    111 
    112   #define MPC55XX_IRQ_EMIOS_GET_CHANNEL(v) \
    113     (((v) > MPC55XX_IRQ_EMIOS_REQUEST_LOW_MAX) \
    114       ? ((v) + 16U - MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN) \
    115       : ((v) - MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN))
    116 
    117   #define MPC55XX_IRQ_EMIOS_GET_REQUEST(c) \
    118     (((c) >= 16U) \
    119       ? ((c) - 16U + MPC55XX_IRQ_EMIOS_REQUEST_HIGH_MIN) \
    120       : ((c) + MPC55XX_IRQ_EMIOS_REQUEST_LOW_MIN))
    121 #else
    122   #error "unexpected chip type"
     143  /* PIT */
     144  #define MPC55XX_IRQ_RTI 305U
     145  #define MPC55XX_IRQ_PIT(ch) (301U + (ch))
     146
     147  /* eTPU */
     148  #define MPC55XX_IRQ_ETPU_BASE(mod) \
     149    ((mod) == 0 ? 67U : \
     150      ((mod) == 1 ? 243U : MPC55XX_IRQ_INVALID))
     151
     152  /* DSPI */
     153  #define MPC55XX_IRQ_DSPI_BASE(mod) \
     154    ((mod) == 0 ? 275U : \
     155      ((mod) == 1 ? 131U : \
     156        ((mod) == 2 ? 136U : \
     157          ((mod) == 3 ? 141U : MPC55XX_IRQ_INVALID))))
     158
     159  /* eMIOS */
     160  #define MPC55XX_IRQ_EMIOS(ch) \
     161    ((unsigned) (ch) < 16U ? 51U + (ch) : \
     162      ((unsigned) (ch) < 24U ? 186U + (ch) : \
     163        ((unsigned) (ch) < 32U ? 435U + (ch) : MPC55XX_IRQ_INVALID)))
     164
     165  /* eQADC */
     166  #define MPC55XX_IRQ_EQADC_BASE(mod) \
     167    ((mod) == 0 ? 100U : \
     168      ((mod) == 1 ? 394U : MPC55XX_IRQ_INVALID))
     169
     170  /* eSCI */
     171  #define MPC55XX_IRQ_ESCI_BASE(mod) \
     172    ((mod) == 0 ? 146U : \
     173      ((mod) == 1 ? 149U : \
     174        ((mod) == 2 ? 473U : MPC55XX_IRQ_INVALID)))
     175
     176  /* FlexCAN */
     177  #define MPC55XX_IRQ_CAN_BASE(mod) \
     178    ((mod) == 0 ? 152U : \
     179      ((mod) == 1 ? 280U : \
     180        ((mod) == 2 ? 173U : \
     181          ((mod) == 3 ? 308U : \
     182            ((mod) == 4 ? 329U : MPC55XX_IRQ_INVALID)))))
     183
     184  /* FlexRay */
     185  #define MPC55XX_IRQ_FLEXRAY_BASE(mod) \
     186    ((mod) == 0 ? 350U : MPC55XX_IRQ_INVALID)
    123187#endif
     188
     189#define MPC55XX_IRQ_NUMBER (MPC55XX_IRQ_MAX + 1U)
     190
     191/* eTPU */
     192#define MPC55XX_IRQ_ETPU(mod) \
     193  (MPC55XX_IRQ_ETPU_BASE(mod) + 0U)
     194#define MPC55XX_IRQ_ETPU_CHANNEL(mod, ch) \
     195  (MPC55XX_IRQ_ETPU_BASE(mod) + 1U + (ch))
     196
     197/* DSPI */
     198#define MPC55XX_IRQ_DSPI_TFUF_RFOF(mod) (MPC55XX_IRQ_DSPI_BASE(mod) + 0U)
     199#define MPC55XX_IRQ_DSPI_EOQF(mod) (MPC55XX_IRQ_DSPI_BASE(mod) + 1U)
     200#define MPC55XX_IRQ_DSPI_TFFF(mod) (MPC55XX_IRQ_DSPI_BASE(mod) + 2U)
     201#define MPC55XX_IRQ_DSPI_TCF(mod) (MPC55XX_IRQ_DSPI_BASE(mod) + 3U)
     202#define MPC55XX_IRQ_DSPI_RFDF(mod) (MPC55XX_IRQ_DSPI_BASE(mod) + 4U)
     203
     204/* eQADC */
     205#define MPC55XX_IRQ_EQADC_TORF_RFOF_CFUF(mod) \
     206  (MPC55XX_IRQ_EQADC_BASE(mod) + 0U)
     207#define MPC55XX_IRQ_EQADC_NCF(mod, fifo) \
     208  (MPC55XX_IRQ_EQADC_BASE(mod) + 1U + (fifo) * 5U + 0U)
     209#define MPC55XX_IRQ_EQADC_PF(mod, fifo) \
     210  (MPC55XX_IRQ_EQADC_BASE(mod) + 1U + (fifo) * 5U + 1U)
     211#define MPC55XX_IRQ_EQADC_EOQF(mod, fifo) \
     212  (MPC55XX_IRQ_EQADC_BASE(mod) + 1U + (fifo) * 5U + 2U)
     213#define MPC55XX_IRQ_EQADC_CFFF(mod, fifo) \
     214  (MPC55XX_IRQ_EQADC_BASE(mod) + 1U + (fifo) * 5U + 3U)
     215#define MPC55XX_IRQ_EQADC_RFDF(mod, fifo) \
     216  (MPC55XX_IRQ_EQADC_BASE(mod) + 1U + (fifo) * 5U + 4U)
     217
     218/* eSCI */
     219#define MPC55XX_IRQ_ESCI(mod) (MPC55XX_IRQ_ESCI_BASE(mod) + 0U)
     220
     221/* FlexCAN */
     222#define MPC55XX_IRQ_CAN_BOFF_TWRN_RWRN(mod) (MPC55XX_IRQ_CAN(mod) + 0U)
     223#define MPC55XX_IRQ_CAN_ERR(mod) (MPC55XX_IRQ_CAN(mod) + 1U)
     224#define MPC55XX_IRQ_CAN_BUF_0(mod) (MPC55XX_IRQ_CAN(mod) + 3U)
     225#define MPC55XX_IRQ_CAN_BUF_1(mod) (MPC55XX_IRQ_CAN(mod) + 4U)
     226#define MPC55XX_IRQ_CAN_BUF_2(mod) (MPC55XX_IRQ_CAN(mod) + 5U)
     227#define MPC55XX_IRQ_CAN_BUF_3(mod) (MPC55XX_IRQ_CAN(mod) + 6U)
     228#define MPC55XX_IRQ_CAN_BUF_4(mod) (MPC55XX_IRQ_CAN(mod) + 7U)
     229#define MPC55XX_IRQ_CAN_BUF_5(mod) (MPC55XX_IRQ_CAN(mod) + 8U)
     230#define MPC55XX_IRQ_CAN_BUF_6(mod) (MPC55XX_IRQ_CAN(mod) + 9U)
     231#define MPC55XX_IRQ_CAN_BUF_7(mod) (MPC55XX_IRQ_CAN(mod) + 10U)
     232#define MPC55XX_IRQ_CAN_BUF_8(mod) (MPC55XX_IRQ_CAN(mod) + 12U)
     233#define MPC55XX_IRQ_CAN_BUF_9(mod) (MPC55XX_IRQ_CAN(mod) + 12U)
     234#define MPC55XX_IRQ_CAN_BUF_10(mod) (MPC55XX_IRQ_CAN(mod) + 13U)
     235#define MPC55XX_IRQ_CAN_BUF_11(mod) (MPC55XX_IRQ_CAN(mod) + 14U)
     236#define MPC55XX_IRQ_CAN_BUF_12(mod) (MPC55XX_IRQ_CAN(mod) + 15U)
     237#define MPC55XX_IRQ_CAN_BUF_13(mod) (MPC55XX_IRQ_CAN(mod) + 16U)
     238#define MPC55XX_IRQ_CAN_BUF_14(mod) (MPC55XX_IRQ_CAN(mod) + 17U)
     239#define MPC55XX_IRQ_CAN_BUF_15(mod) (MPC55XX_IRQ_CAN(mod) + 18U)
     240#define MPC55XX_IRQ_CAN_BUF_16_31(mod) (MPC55XX_IRQ_CAN(mod) + 19U)
     241#define MPC55XX_IRQ_CAN_BUF_32_63(mod) (MPC55XX_IRQ_CAN(mod) + 20U)
     242
     243/* FlexRay */
     244#define MPC55XX_IRQ_FLEXRAY_MIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 0U)
     245#define MPC55XX_IRQ_FLEXRAY_PRIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 1U)
     246#define MPC55XX_IRQ_FLEXRAY_CHIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 2U)
     247#define MPC55XX_IRQ_FLEXRAY_WUP_IF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 3U)
     248#define MPC55XX_IRQ_FLEXRAY_FBNE_F(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 4U)
     249#define MPC55XX_IRQ_FLEXRAY_FANE_F(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 5U)
     250#define MPC55XX_IRQ_FLEXRAY_RBIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 6U)
     251#define MPC55XX_IRQ_FLEXRAY_TBIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 7U)
    124252
    125253/* Checks */
     
    172300 */
    173301
    174 #define BSP_INTERRUPT_VECTOR_MIN 0
    175 
    176 #define BSP_INTERRUPT_VECTOR_MAX 328
     302#define BSP_INTERRUPT_VECTOR_MIN MPC55XX_IRQ_MIN
     303
     304#define BSP_INTERRUPT_VECTOR_MAX MPC55XX_IRQ_MAX
    177305
    178306#define BSP_INTERRUPT_USE_INDEX_TABLE
     
    187315/** @} */
    188316
     317/* Legacy API */
     318#define MPC55XX_IRQ_EDMA_GET_REQUEST(ch) MPC55XX_IRQ_EDMA(ch)
     319#define MPC55XX_IRQ_EMIOS_GET_REQUEST(ch) MPC55XX_IRQ_EMIOS(ch)
     320
    189321#ifdef __cplusplus
    190322};
  • c/src/lib/libcpu/powerpc/mpc55xx/include/mpc55xx.h

    rb2aa729 r97fa2f1b  
    88
    99/*
    10  * Copyright (c) 2008
    11  * Embedded Brains GmbH
    12  * Obere Lagerstr. 30
    13  * D-82178 Puchheim
    14  * Germany
    15  * rtems@embedded-brains.de
     10 * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
    1611 *
    17  * The license and distribution terms for this file may be found in the file
    18  * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
     12 *  embedded brains GmbH
     13 *  Obere Lagerstr. 30
     14 *  82178 Puchheim
     15 *  Germany
     16 *  <rtems@embedded-brains.de>
     17 *
     18 * The license and distribution terms for this file may be
     19 * found in the file LICENSE in this distribution or at
     20 * http://www.rtems.com/license/LICENSE.
     21 *
     22 * $Id$
    1923 */
    2024
     
    4448#include <stdint.h>
    4549
    46 /* Defined in copy.S */
    47 int mpc55xx_copy_8( const void *src, void *dest, size_t n);
     50/* Defined in fmpll.S */
     51int mpc55xx_get_system_clock(void);
    4852
    4953/* Defined in fmpll.S */
    50 void mpc55xx_fmpll_reset_config();
    51 
    52 /* Defined in fmpll.S */
    53 void mpc55xx_fmpll_wait_for_lock();
    54 
    55 /* Defined in fmpll.S */
    56 int mpc55xx_get_system_clock();
    57 
    58 /* Defined in fmpll.S */
    59 void mpc55xx_system_reset();
    60 
    61 /* Defined in flash.S */
    62 void mpc55xx_flash_config();
     54void mpc55xx_system_reset(void);
    6355
    6456int mpc55xx_flash_copy(void *dest, const void *src, size_t nbytes);
  • c/src/lib/libcpu/powerpc/mpc55xx/include/reg-defs.h

    rb2aa729 r97fa2f1b  
    88
    99/*
    10  * Copyright (c) 2008
    11  * Embedded Brains GmbH
    12  * Obere Lagerstr. 30
    13  * D-82178 Puchheim
    14  * Germany
    15  * rtems@embedded-brains.de
    16  *
    17  * The license and distribution terms for this file may be found in the file
    18  * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
     10 * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
     11 *
     12 *  embedded brains GmbH
     13 *  Obere Lagerstr. 30
     14 *  82178 Puchheim
     15 *  Germany
     16 *  <rtems@embedded-brains.de>
     17 *
     18 * The license and distribution terms for this file may be
     19 * found in the file LICENSE in this distribution or at
     20 * http://www.rtems.com/license/LICENSE.
     21 *
     22 * $Id$
    1923 */
    2024
     
    4852#define FMPLL_SYNCR 0xC3F80000
    4953#define FMPLL_SYNSR 0xC3F80004
     54#define FMPLL_ESYNCR1 0XC3F80008
     55#define FMPLL_ESYNCR2 0XC3F8000C
    5056#define FLASH_BIUCR 0xC3F8801C
    5157#define SIU_ECCR 0xC3F90984
    5258#define SIU_SRCR 0xC3F90010
     59#define SIU_SYSDIV 0xC3F909A0
    5360
    5461#endif /*((MPC55XX_CHIP_TYPE >= 5510) && (MPC55XX_CHIP_TYPE <= 5517))*/
  • c/src/lib/libcpu/powerpc/mpc55xx/include/regs.h

    rb2aa729 r97fa2f1b  
    44 * @ingroup mpc55xx
    55 *
    6  * @brief Register definitions for the MPC55XX microcontroller family
    7  *
    8  * This file is based on the mpc5566.h header file provided by Freescale Semiconductor, INC.
    9  * with some added fields/structures/definitions for MPC5510
     6 * @brief Register definitions for the MPC55xx and MPC56xx microcontroller
     7 * family.
    108 */
    119
    12 /* to get the chip derivate... */
    13 #include <bspopts.h>
    14 
    1510/*
    16  * Copyright (c) 2008
    17  * Embedded Brains GmbH
    18  * Obere Lagerstr. 30
    19  * D-82178 Puchheim
    20  * Germany
    21  * rtems@embedded-brains.de
     11 * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
    2212 *
    23  * The license and distribution terms for this file may be found in the file
    24  * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
     13 *  embedded brains GmbH
     14 *  Obere Lagerstr. 30
     15 *  82178 Puchheim
     16 *  Germany
     17 *  <rtems@embedded-brains.de>
     18 *
     19 * The license and distribution terms for this file may be
     20 * found in the file LICENSE in this distribution or at
     21 * http://www.rtems.com/license/LICENSE.
     22 *
     23 * $Id$
    2524 */
    26 
    27 /**************************************************************************/
    28 /* FILE NAME: mpc5566.h                      COPYRIGHT (c) Freescale 2006 */
    29 /* VERSION:  1.2                                  All Rights Reserved     */
    30 /*                                                                        */
    31 /* DESCRIPTION:                                                           */
    32 /* This file contain all of the register and bit field definitions for    */
    33 /* MPC5566.                                                               */
    34 /*========================================================================*/
    35 /* UPDATE HISTORY                                                         */
    36 /* REV      AUTHOR      DATE       DESCRIPTION OF CHANGE                  */
    37 /* ---   -----------  ---------    ---------------------                  */
    38 /* 1.0   S. Mathieson   12/Jul/06    Initial version.                     */
    39 /* 1.1   S. Mathieson   28/Jul/06    Change Flexcan BCC bit to MBFEN      */
    40 /*                                   Add Flexcan bits WRNEN, SRXDIS,      */
    41 /*                                   TWRNMSK, RWRNMSK,TWRNINT,RWRNINT     */
    42 /* 1.2   S. Mathieson   10/Aug/06    Removed reference to FlexCAN E       */
    43 /*                                   SPR: L1CSR0[WAM] & L1CSR0[CORG] Added*/
    44 /* 1.3   S. Mathieson 30/Aug/06    SPR: L1SCR0, updated bit name from DPP */
    45 /*                                 to DPB to align with documentation.    */
    46 /**************************************************************************/
    4725
    4826#ifndef LIBCPU_POWERPC_MPC55XX_REGS_H
    4927#define LIBCPU_POWERPC_MPC55XX_REGS_H
    5028
    51 #include <stdint.h>
     29#include <bspopts.h>
    5230
    53 #ifdef  __cplusplus
    54 extern "C" {
    55 #endif
    56 
    57 /****************************************************************************/
    58 /*                          MODULE : PBRIDGE_A Peripheral Bridge            */
    59 /****************************************************************************/
    60     struct PBRIDGE_A_tag {
    61         union {
    62             uint32_t R;
    63             struct {
    64                 uint32_t MBW0:1;
    65                 uint32_t MTR0:1;
    66                 uint32_t MTW0:1;
    67                 uint32_t MPL0:1;
    68                 uint32_t MBW1:1;
    69                 uint32_t MTR1:1;
    70                 uint32_t MTW1:1;
    71                 uint32_t MPL1:1;
    72                 uint32_t MBW2:1;
    73                 uint32_t MTR2:1;
    74                 uint32_t MTW2:1;
    75                 uint32_t MPL2:1;
    76                 uint32_t MBW3:1;
    77                 uint32_t MTR3:1;
    78                 uint32_t MTW3:1;
    79                 uint32_t MPL3:1;
    80 
    81                 uint32_t MBW4:1;       /* FEC */
    82                 uint32_t MTR4:1;
    83                 uint32_t MTW4:1;
    84                 uint32_t MPL4:1;
    85 
    86                   uint32_t:4;
    87 
    88                   uint32_t:4;
    89 
    90                   uint32_t:4;
    91             } B;
    92         } MPCR;                 /* Master Privilege Control Register */
    93 
    94         uint32_t pbridge_a_reserved2[7];
    95 
    96         union {
    97             uint32_t R;
    98             struct {
    99                 uint32_t BW0:1;
    100                 uint32_t SP0:1;
    101                 uint32_t WP0:1;
    102                 uint32_t TP0:1;
    103                   uint32_t:28;
    104             } B;
    105         } PACR0;
    106 
    107         uint32_t pbridge_a_reserved3[7];
    108 
    109         union {
    110             uint32_t R;
    111             struct {
    112                 uint32_t BW0:1;
    113                 uint32_t SP0:1;
    114                 uint32_t WP0:1;
    115                 uint32_t TP0:1;
    116                 uint32_t BW1:1;
    117                 uint32_t SP1:1;
    118                 uint32_t WP1:1;
    119                 uint32_t TP1:1;
    120                 uint32_t BW2:1;
    121                 uint32_t SP2:1;
    122                 uint32_t WP2:1;
    123                 uint32_t TP2:1;
    124                   uint32_t:4;
    125                 uint32_t BW4:1;
    126                 uint32_t SP4:1;
    127                 uint32_t WP4:1;
    128                 uint32_t TP4:1;
    129                   uint32_t:12;
    130             } B;
    131         } OPACR0;
    132 
    133         union {
    134             uint32_t R;
    135             struct {
    136 
    137                 uint32_t BW0:1;        /* EMIOS */
    138                 uint32_t SP0:1;
    139                 uint32_t WP0:1;
    140                 uint32_t TP0:1;
    141 
    142                   uint32_t:28;
    143             } B;
    144         } OPACR1;
    145 
    146         union {
    147             uint32_t R;
    148             struct {
    149                 uint32_t BW0:1;
    150                 uint32_t SP0:1;
    151                 uint32_t WP0:1;
    152                 uint32_t TP0:1;
    153                   uint32_t:4;
    154                 uint32_t BW2:1;
    155                 uint32_t SP2:1;
    156                 uint32_t WP2:1;
    157                 uint32_t TP2:1;
    158                 uint32_t BW3:1;
    159                 uint32_t SP3:1;
    160                 uint32_t WP3:1;
    161                 uint32_t TP3:1;
    162                 uint32_t BW4:1;
    163                 uint32_t SP4:1;
    164                 uint32_t WP4:1;
    165                 uint32_t TP4:1;
    166                   uint32_t:12;
    167             } B;
    168         } OPACR2;
    169 
    170     };
    171 
    172 /****************************************************************************/
    173 /*                          MODULE : PBRIDGE_B Peripheral Bridge            */
    174 /****************************************************************************/
    175     struct PBRIDGE_B_tag {
    176         union {
    177             uint32_t R;
    178             struct {
    179                 uint32_t MBW0:1;
    180                 uint32_t MTR0:1;
    181                 uint32_t MTW0:1;
    182                 uint32_t MPL0:1;
    183                 uint32_t MBW1:1;
    184                 uint32_t MTR1:1;
    185                 uint32_t MTW1:1;
    186                 uint32_t MPL1:1;
    187                 uint32_t MBW2:1;
    188                 uint32_t MTR2:1;
    189                 uint32_t MTW2:1;
    190                 uint32_t MPL2:1;
    191                 uint32_t MBW3:1;
    192                 uint32_t MTR3:1;
    193                 uint32_t MTW3:1;
    194                 uint32_t MPL3:1;
    195 
    196                 uint32_t MBW4:1;       /* FEC */
    197                 uint32_t MTR4:1;
    198                 uint32_t MTW4:1;
    199                 uint32_t MPL4:1;
    200 
    201                   uint32_t:4;
    202 
    203                   uint32_t:4;
    204 
    205                   uint32_t:4;
    206             } B;
    207         } MPCR;                 /* Master Privilege Control Register */
    208 
    209         uint32_t pbridge_b_reserved2[7];
    210 
    211         union {
    212             uint32_t R;
    213             struct {
    214                 uint32_t BW0:1;
    215                 uint32_t SP0:1;
    216                 uint32_t WP0:1;
    217                 uint32_t TP0:1;
    218                 uint32_t BW1:1;
    219                 uint32_t SP1:1;
    220                 uint32_t WP1:1;
    221                 uint32_t TP1:1;
    222                   uint32_t:24;
    223             } B;
    224         } PACR0;
    225 
    226         uint32_t pbridge_b_reserved3;
    227 
    228         union {
    229             uint32_t R;
    230             struct {
    231                 uint32_t BW0:1;
    232                 uint32_t SP0:1;
    233                 uint32_t WP0:1;
    234                 uint32_t TP0:1;
    235                 uint32_t BW1:1;
    236                 uint32_t SP1:1;
    237                 uint32_t WP1:1;
    238                 uint32_t TP1:1;
    239                 uint32_t BW2:1;
    240                 uint32_t SP2:1;
    241                 uint32_t WP2:1;
    242                 uint32_t TP2:1;
    243 
    244                 uint32_t BW3:1;        /* FEC */
    245                 uint32_t SP3:1;
    246                 uint32_t WP3:1;
    247                 uint32_t TP3:1;
    248 
    249                   uint32_t:16;
    250 
    251             } B;
    252         } PACR2;
    253 
    254         uint32_t pbridge_b_reserved4[5];
    255 
    256         union {
    257             uint32_t R;
    258             struct {
    259                 uint32_t BW0:1;
    260                 uint32_t SP0:1;
    261                 uint32_t WP0:1;
    262                 uint32_t TP0:1;
    263                   uint32_t:12;
    264 
    265                 uint32_t BW4:1;        /* DSPI_A */
    266                 uint32_t SP4:1;
    267                 uint32_t WP4:1;
    268                 uint32_t TP4:1;
    269 
    270                 uint32_t BW5:1;        /* DSPI_B */
    271                 uint32_t SP5:1;
    272                 uint32_t WP5:1;
    273                 uint32_t TP5:1;
    274 
    275                 uint32_t BW6:1;
    276                 uint32_t SP6:1;
    277                 uint32_t WP6:1;
    278                 uint32_t TP6:1;
    279                 uint32_t BW7:1;
    280                 uint32_t SP7:1;
    281                 uint32_t WP7:1;
    282                 uint32_t TP7:1;
    283             } B;
    284         } OPACR0;
    285 
    286         union {
    287             uint32_t R;
    288             struct {
    289                 uint32_t:16;
    290                 uint32_t BW4:1;
    291                 uint32_t SP4:1;
    292                 uint32_t WP4:1;
    293                 uint32_t TP4:1;
    294 
    295                 uint32_t BW5:1;        /* ESCI_B */
    296                 uint32_t SP5:1;
    297                 uint32_t WP5:1;
    298                 uint32_t TP5:1;
    299 
    300                   uint32_t:8;
    301             } B;
    302         } OPACR1;
    303 
    304         union {
    305             uint32_t R;
    306             struct {
    307                 uint32_t BW0:1;
    308                 uint32_t SP0:1;
    309                 uint32_t WP0:1;
    310                 uint32_t TP0:1;
    311 
    312                 uint32_t BW1:1;        /* CAN_B */
    313                 uint32_t SP1:1;
    314                 uint32_t WP1:1;
    315                 uint32_t TP1:1;
    316 
    317                 uint32_t BW2:1;
    318                 uint32_t SP2:1;
    319                 uint32_t WP2:1;
    320                 uint32_t TP2:1;
    321 
    322                 uint32_t BW3:1;        /* CAN_D */
    323                 uint32_t SP3:1;
    324                 uint32_t WP3:1;
    325                 uint32_t TP3:1;
    326                   uint32_t:4;
    327 
    328                   uint32_t:12;
    329             } B;
    330         } OPACR2;
    331 
    332         union {
    333             uint32_t R;
    334             struct {
    335 
    336                 uint32_t:4;
    337 
    338                 uint32_t:24;
    339                 uint32_t BW7:1;
    340                 uint32_t SP7:1;
    341                 uint32_t WP7:1;
    342                 uint32_t TP7:1;
    343             } B;
    344         } OPACR3;
    345 
    346     };
    347 /****************************************************************************/
    348 /*                     MODULE : FMPLL                                       */
    349 /****************************************************************************/
    350     struct FMPLL_tag {
    351         union SYNCR_tag {
    352             uint32_t R;
    353             struct {
    354                 uint32_t:1;
    355                 uint32_t PREDIV:3;
    356                 uint32_t MFD:5;
    357                   uint32_t:1;
    358                 uint32_t RFD:3;
    359                 uint32_t LOCEN:1;
    360                 uint32_t LOLRE:1;
    361                 uint32_t LOCRE:1;
    362                 uint32_t DISCLK:1;
    363                 uint32_t LOLIRQ:1;
    364                 uint32_t LOCIRQ:1;
    365                 uint32_t RATE:1;
    366                 uint32_t DEPTH:2;
    367                 uint32_t EXP:10;
    368             } B;
    369         } SYNCR; /* not present on MPC551x */
    370 
    371         union {
    372             uint32_t R;
    373             struct {
    374                 uint32_t:22;
    375                 uint32_t LOLF:1;
    376                 uint32_t LOC:1;
    377                 uint32_t MODE:1;
    378                 uint32_t PLLSEL:1;
    379                 uint32_t PLLREF:1;
    380                 uint32_t LOCKS:1;
    381                 uint32_t LOCK:1;
    382                 uint32_t LOCF:1;
    383                 uint32_t CALDONE:1;
    384                 uint32_t CALPASS:1;
    385             } B;
    386         } SYNSR;
    387 
    388         union ESYNCR1_tag {
    389             uint32_t R;
    390             struct  {
    391                 uint32_t:1;
    392                 uint32_t CLKCFG:3;
    393                 uint32_t:8;
    394                 uint32_t EPREDIV:4;
    395                 uint32_t :8;
    396                 uint32_t EMFD:8;
    397             } B;
    398         } ESYNCR1; /* present on MPC551x */
    399 
    400         union ESYNCR2_tag{
    401             uint32_t R;
    402             struct {
    403                 uint32_t:8;
    404                 uint32_t LOCEN:1;
    405                 uint32_t LOLRE:1;
    406                 uint32_t LOCRE:1;
    407                 uint32_t LOLIRQ:1;
    408                 uint32_t LOCIRQ:1;
    409                 uint32_t:1;
    410                 uint32_t ERATE:2;
    411                 uint32_t:5;
    412                 uint32_t DEPTH:3;
    413                 uint32_t:2;
    414                 uint32_t ERFD:6;
    415             } B;
    416         } ESYNCR2; /* present on MPC551x */
    417 
    418     };
    419 /****************************************************************************/
    420 /*                     MODULE : External Bus Interface (EBI)                */
    421 /****************************************************************************/
    422     struct EBI_CS_tag {
    423         union {                 /* Base Register Bank */
    424             uint32_t R;
    425             struct {
    426                 uint32_t BA:17;
    427                   uint32_t:3;
    428                 uint32_t PS:1;
    429                   uint32_t:3;
    430                 uint32_t AD_MUX:1; /* only MPC551x */
    431                 uint32_t BL:1;
    432                 uint32_t WEBS:1;
    433                 uint32_t TBDIP:1;
    434                   uint32_t:2;
    435                 uint32_t BI:1;
    436                 uint32_t V:1;
    437             } B;
    438         } BR;
    439 
    440         union {                 /* Option Register Bank */
    441             uint32_t R;
    442             struct {
    443                 uint32_t AM:17;
    444                   uint32_t:7;
    445                 uint32_t SCY:4;
    446                   uint32_t:1;
    447                 uint32_t BSCY:2;
    448                   uint32_t:1;
    449             } B;
    450         } OR;
    451     };
    452 
    453     struct EBI_CAL_CS_tag {
    454         union {                 /* Calibration Base Register Bank */
    455             uint32_t R;
    456             struct {
    457                 uint32_t BA:17;
    458                   uint32_t:3;
    459                 uint32_t PS:1;
    460                   uint32_t:4;
    461                 uint32_t BL:1;
    462                 uint32_t WEBS:1;
    463                 uint32_t TBDIP:1;
    464                   uint32_t:2;
    465                 uint32_t BI:1;
    466                 uint32_t V:1;
    467             } B;
    468         } BR;
    469 
    470         union {                 /* Calibration Option Register Bank */
    471             uint32_t R;
    472             struct {
    473                 uint32_t AM:17;
    474                   uint32_t:7;
    475                 uint32_t SCY:4;
    476                   uint32_t:1;
    477                 uint32_t BSCY:2;
    478                   uint32_t:1;
    479             } B;
    480         } OR;
    481     };
    482 
    483     struct EBI_tag {
    484         union {                 /* Module Configuration Register */
    485             uint32_t R;
    486             struct {
    487                 uint32_t:5;
    488                 uint32_t SIZEEN:1;
    489                 uint32_t SIZE:2;
    490                   uint32_t:8;
    491                 uint32_t ACGE:1;
    492                 uint32_t EXTM:1;
    493                 uint32_t EARB:1;
    494                 uint32_t EARP:2;
    495                   uint32_t:4;
    496                 uint32_t MDIS:1;
    497                   uint32_t:3;
    498                 uint32_t D16_32:1; /* only for MPC551x */
    499                 uint32_t ADMUX:1;  /* only for MPC551x */
    500                 uint32_t DBM:1;
    501             } B;
    502         } MCR;
    503 
    504         uint32_t EBI_reserved1;
    505 
    506         union {                 /* Transfer Error Status Register */
    507             uint32_t R;
    508             struct {
    509                 uint32_t:30;
    510                 uint32_t TEAF:1;
    511                 uint32_t BMTF:1;
    512             } B;
    513         } TESR;
    514 
    515         union {                 /* Bus Monitor Control Register */
    516             uint32_t R;
    517             struct {
    518                 uint32_t:16;
    519                 uint32_t BMT:8;
    520                 uint32_t BME:1;
    521                   uint32_t:7;
    522             } B;
    523         } BMCR;
    524 
    525         struct EBI_CS_tag CS[4];
    526 
    527 /* Calibration registers */
    528         uint32_t EBI_reserved2[4];
    529         struct EBI_CAL_CS_tag CAL_CS[4];
    530 
    531     };
    532 /****************************************************************************/
    533 /*                     MODULE : FLASH                                       */
    534 /****************************************************************************/
    535     struct FLASH_tag {
    536         union {                 /* Module Configuration Register */
    537             uint32_t R;
    538             struct {
    539                 uint32_t:4;
    540                 uint32_t SIZE:4;
    541                   uint32_t:1;
    542                 uint32_t LAS:3;
    543                   uint32_t:3;
    544                 uint32_t MAS:1;
    545                 uint32_t EER:1;
    546                 uint32_t RWE:1;
    547                 uint32_t BBEPE:1;
    548                 uint32_t EPE:1;
    549                 uint32_t PEAS:1;
    550                 uint32_t DONE:1;
    551                 uint32_t PEG:1;
    552 
    553                   uint32_t:2;
    554 
    555                 uint32_t STOP:1;
    556                   uint32_t:1;
    557                 uint32_t PGM:1;
    558                 uint32_t PSUS:1;
    559                 uint32_t ERS:1;
    560                 uint32_t ESUS:1;
    561                 uint32_t EHV:1;
    562             } B;
    563         } MCR;
    564 
    565         union LMLR_tag {                 /* LML Register */
    566             uint32_t R;
    567             struct {
    568                 uint32_t LME:1;
    569                   uint32_t:10;
    570                 uint32_t SLOCK:1;
    571                 uint32_t MLOCK:4;
    572                 uint32_t LLOCK:16;
    573             } B;
    574         } LMLR;
    575 
    576         union HLR_tag {                 /* HL Register */
    577             uint32_t R;
    578             struct {
    579                 uint32_t HBE:1;
    580                   uint32_t:3;
    581                 uint32_t HBLOCK:28;
    582             } B;
    583         } HLR;
    584 
    585         union SLMLR_tag {                 /* SLML Register */
    586             uint32_t R;
    587             struct {
    588                 uint32_t SLE:1;
    589                   uint32_t:10;
    590                 uint32_t SSLOCK:1;
    591                 uint32_t SMLOCK:4;
    592                 uint32_t SLLOCK:16;
    593             } B;
    594         } SLMLR;
    595 
    596         union {                 /* LMS Register */
    597             uint32_t R;
    598             struct {
    599                 uint32_t:12;
    600                 uint32_t MSEL:4;
    601                 uint32_t LSEL:16;
    602             } B;
    603         } LMSR;
    604 
    605         union {
    606             uint32_t R;
    607             struct {
    608                 uint32_t:4;
    609                 uint32_t HBSEL:28;
    610             } B;
    611         } HSR;
    612 
    613         union {
    614             uint32_t R;
    615             struct {
    616                 uint32_t:10;
    617                 uint32_t ADDR:19;
    618                   uint32_t:3;
    619             } B;
    620         } AR;
    621 
    622         union {
    623             uint32_t R;
    624             struct {
    625 
    626                 uint32_t:11;
    627 
    628                 uint32_t M4PFE:1;      /* FEC */
    629 
    630                 uint32_t M3PFE:1;
    631                 uint32_t M2PFE:1;
    632                 uint32_t M1PFE:1;
    633                 uint32_t M0PFE:1;
    634                 uint32_t APC:3;
    635                 uint32_t WWSC:2;
    636                 uint32_t RWSC:3;
    637 
    638                 uint32_t DPFEN:2;
    639                 uint32_t IPFEN:2;
    640 
    641                 uint32_t PFLIM:3;
    642                 uint32_t BFEN:1;
    643             } B;
    644         } BIUCR;
    645 
    646         union {
    647             uint32_t R;
    648             struct {
    649 
    650                 uint32_t:22;
    651 
    652                 uint32_t M4AP:2;       /* FEC */
    653 
    654                 uint32_t M3AP:2;
    655                 uint32_t M2AP:2;
    656                 uint32_t M1AP:2;
    657                 uint32_t M0AP:2;
    658             } B;
    659         } BIUAPR;
    660     };
    661 /****************************************************************************/
    662 /*                     MODULE : SIU                                         */
    663 /****************************************************************************/
    664     struct SIU_tag {
    665         int32_t SIU_reserved0;
    666 
    667         union {                 /* MCU ID Register */
    668             uint32_t R;
    669             struct {
    670                 uint32_t PARTNUM:16;
    671                 uint32_t MASKNUM:16;
    672             } B;
    673         } MIDR;
    674         int32_t SIU_reserved00;
    675 
    676         union {                 /* Reset Status Register */
    677             uint32_t R;
    678             struct {
    679                 uint32_t PORS:1;
    680                 uint32_t ERS:1;
    681                 uint32_t LLRS:1;
    682                 uint32_t LCRS:1;
    683                 uint32_t WDRS:1;
    684                 uint32_t CRS:1;
    685                   uint32_t:8;
    686                 uint32_t SSRS:1;
    687                 uint32_t SERF:1;
    688                 uint32_t WKPCFG:1;
    689                   uint32_t:12;
    690                 uint32_t BOOTCFG:2;
    691                 uint32_t RGF:1;
    692             } B;
    693         } RSR;
    694 
    695         union {                 /* System Reset Control Register */
    696             uint32_t R;
    697             struct {
    698                 uint32_t SSR:1;
    699                 uint32_t SER:1;
    700                   uint32_t:14;
    701                 uint32_t CRE:1;
    702                   uint32_t:15;
    703             } B;
    704         } SRCR;
    705 
    706         union SIU_EISR_tag {    /* External Interrupt Status Register */
    707             uint32_t R;
    708             struct {
    709                 uint32_t:16;
    710                 uint32_t EIF15:1;
    711                 uint32_t EIF14:1;
    712                 uint32_t EIF13:1;
    713                 uint32_t EIF12:1;
    714                 uint32_t EIF11:1;
    715                 uint32_t EIF10:1;
    716                 uint32_t EIF9:1;
    717                 uint32_t EIF8:1;
    718                 uint32_t EIF7:1;
    719                 uint32_t EIF6:1;
    720                 uint32_t EIF5:1;
    721                 uint32_t EIF4:1;
    722                 uint32_t EIF3:1;
    723                 uint32_t EIF2:1;
    724                 uint32_t EIF1:1;
    725                 uint32_t EIF0:1;
    726             } B;
    727         } EISR;
    728 
    729         union SIU_DIRER_tag {   /* DMA/Interrupt Request Enable Register */
    730             uint32_t R;
    731             struct {
    732                 uint32_t:16;
    733                 uint32_t EIRE15:1;
    734                 uint32_t EIRE14:1;
    735                 uint32_t EIRE13:1;
    736                 uint32_t EIRE12:1;
    737                 uint32_t EIRE11:1;
    738                 uint32_t EIRE10:1;
    739                 uint32_t EIRE9:1;
    740                 uint32_t EIRE8:1;
    741                 uint32_t EIRE7:1;
    742                 uint32_t EIRE6:1;
    743                 uint32_t EIRE5:1;
    744                 uint32_t EIRE4:1;
    745                 uint32_t EIRE3:1;
    746                 uint32_t EIRE2:1;
    747                 uint32_t EIRE1:1;
    748                 uint32_t EIRE0:1;
    749             } B;
    750         } DIRER;
    751 
    752         union SIU_DIRSR_tag {   /* DMA/Interrupt Select Register */
    753             uint32_t R;
    754             struct {
    755                 uint32_t:28;
    756                 uint32_t DIRS3:1;
    757                 uint32_t DIRS2:1;
    758                 uint32_t DIRS1:1;
    759                 uint32_t DIRS0:1;
    760             } B;
    761         } DIRSR;
    762 
    763         union SIU_OSR_tag {     /* Overrun Status Register */
    764             uint32_t R;
    765             struct {
    766                 uint32_t:16;
    767                 uint32_t OVF15:1;
    768                 uint32_t OVF14:1;
    769                 uint32_t OVF13:1;
    770                 uint32_t OVF12:1;
    771                 uint32_t OVF11:1;
    772                 uint32_t OVF10:1;
    773                 uint32_t OVF9:1;
    774                 uint32_t OVF8:1;
    775                 uint32_t OVF7:1;
    776                 uint32_t OVF6:1;
    777                 uint32_t OVF5:1;
    778                 uint32_t OVF4:1;
    779                 uint32_t OVF3:1;
    780                 uint32_t OVF2:1;
    781                 uint32_t OVF1:1;
    782                 uint32_t OVF0:1;
    783             } B;
    784         } OSR;
    785 
    786         union SIU_ORER_tag {    /* Overrun Request Enable Register */
    787             uint32_t R;
    788             struct {
    789                 uint32_t:16;
    790                 uint32_t ORE15:1;
    791                 uint32_t ORE14:1;
    792                 uint32_t ORE13:1;
    793                 uint32_t ORE12:1;
    794                 uint32_t ORE11:1;
    795                 uint32_t ORE10:1;
    796                 uint32_t ORE9:1;
    797                 uint32_t ORE8:1;
    798                 uint32_t ORE7:1;
    799                 uint32_t ORE6:1;
    800                 uint32_t ORE5:1;
    801                 uint32_t ORE4:1;
    802                 uint32_t ORE3:1;
    803                 uint32_t ORE2:1;
    804                 uint32_t ORE1:1;
    805                 uint32_t ORE0:1;
    806             } B;
    807         } ORER;
    808 
    809         union SIU_IREER_tag {   /* External IRQ Rising-Edge Event Enable Register */
    810             uint32_t R;
    811             struct {
    812                 uint32_t:16;
    813                 uint32_t IREE15:1;
    814                 uint32_t IREE14:1;
    815                 uint32_t IREE13:1;
    816                 uint32_t IREE12:1;
    817                 uint32_t IREE11:1;
    818                 uint32_t IREE10:1;
    819                 uint32_t IREE9:1;
    820                 uint32_t IREE8:1;
    821                 uint32_t IREE7:1;
    822                 uint32_t IREE6:1;
    823                 uint32_t IREE5:1;
    824                 uint32_t IREE4:1;
    825                 uint32_t IREE3:1;
    826                 uint32_t IREE2:1;
    827                 uint32_t IREE1:1;
    828                 uint32_t IREE0:1;
    829             } B;
    830         } IREER;
    831 
    832         union SIU_IFEER_tag {   /* External IRQ Falling-Edge Event Enable Register */
    833             uint32_t R;
    834             struct {
    835                 uint32_t:16;
    836                 uint32_t IFEE15:1;
    837                 uint32_t IFEE14:1;
    838                 uint32_t IFEE13:1;
    839                 uint32_t IFEE12:1;
    840                 uint32_t IFEE11:1;
    841                 uint32_t IFEE10:1;
    842                 uint32_t IFEE9:1;
    843                 uint32_t IFEE8:1;
    844                 uint32_t IFEE7:1;
    845                 uint32_t IFEE6:1;
    846                 uint32_t IFEE5:1;
    847                 uint32_t IFEE4:1;
    848                 uint32_t IFEE3:1;
    849                 uint32_t IFEE2:1;
    850                 uint32_t IFEE1:1;
    851                 uint32_t IFEE0:1;
    852             } B;
    853         } IFEER;
    854 
    855         union SIU_IDFR_tag {    /* External IRQ Digital Filter Register */
    856             uint32_t R;
    857             struct {
    858                 uint32_t:28;
    859                 uint32_t DFL:4;
    860             } B;
    861         } IDFR;
    862 
    863         int32_t SIU_reserved1[3];
    864 
    865         union SIU_PCR_tag {                 /* Pad Configuration Registers */
    866             uint16_t R;
    867             struct {
    868                 uint16_t:3;
    869                 uint16_t PA:3;
    870                 uint16_t OBE:1;
    871                 uint16_t IBE:1;
    872                 uint16_t DSC:2;
    873                 uint16_t ODE:1;
    874                 uint16_t HYS:1;
    875                 uint16_t SRC:2;
    876                 uint16_t WPE:1;
    877                 uint16_t WPS:1;
    878             } B;
    879         } PCR[512];
    880 
    881         int16_t SIU_reserved_0[224];
    882 
    883         union {                 /* GPIO Pin Data Output Registers */
    884             uint8_t R;
    885             struct {
    886                 uint8_t:7;
    887                 uint8_t PDO:1;
    888             } B;
    889         } GPDO[256];
    890 
    891         int32_t SIU_reserved_3[64];
    892 
    893         union {                 /* GPIO Pin Data Input Registers */
    894             uint8_t R;
    895             struct {
    896                 uint8_t:7;
    897                 uint8_t PDI:1;
    898             } B;
    899         } GPDI[256];
    900 
    901         union {                 /* IMUX Register */
    902             uint32_t R;
    903             struct {
    904                 uint32_t TSEL5:2;
    905                 uint32_t TSEL4:2;
    906                 uint32_t TSEL3:2;
    907                 uint32_t TSEL2:2;
    908                 uint32_t TSEL1:2;
    909                 uint32_t TSEL0:2;
    910                   uint32_t:20;
    911             } B;
    912         } ETISR;
    913 
    914         union {                 /* IMUX Register */
    915             uint32_t R;
    916             struct {
    917                 uint32_t ESEL15:2;
    918                 uint32_t ESEL14:2;
    919                 uint32_t ESEL13:2;
    920                 uint32_t ESEL12:2;
    921                 uint32_t ESEL11:2;
    922                 uint32_t ESEL10:2;
    923                 uint32_t ESEL9:2;
    924                 uint32_t ESEL8:2;
    925                 uint32_t ESEL7:2;
    926                 uint32_t ESEL6:2;
    927                 uint32_t ESEL5:2;
    928                 uint32_t ESEL4:2;
    929                 uint32_t ESEL3:2;
    930                 uint32_t ESEL2:2;
    931                 uint32_t ESEL1:2;
    932                 uint32_t ESEL0:2;
    933             } B;
    934         } EIISR;
    935 
    936         union {                 /* IMUX Register */
    937             uint32_t R;
    938             struct {
    939                 uint32_t SINSELA:2;
    940                 uint32_t SSSELA:2;
    941                 uint32_t SCKSELA:2;
    942                 uint32_t TRIGSELA:2;
    943                 uint32_t SINSELB:2;
    944                 uint32_t SSSELB:2;
    945                 uint32_t SCKSELB:2;
    946                 uint32_t TRIGSELB:2;
    947                 uint32_t SINSELC:2;
    948                 uint32_t SSSELC:2;
    949                 uint32_t SCKSELC:2;
    950                 uint32_t TRIGSELC:2;
    951                 uint32_t SINSELD:2;
    952                 uint32_t SSSELD:2;
    953                 uint32_t SCKSELD:2;
    954                 uint32_t TRIGSELD:2;
    955             } B;
    956         } DISR;
    957 
    958         int32_t SIU_reserved2[29];
    959 
    960         union {                 /* Chip Configuration Register Register */
    961             uint32_t R;
    962             struct {
    963                 uint32_t:14;
    964                 uint32_t MATCH:1;
    965                 uint32_t DISNEX:1;
    966                   uint32_t:16;
    967             } B;
    968         } CCR;
    969 
    970         union {                 /* External Clock Configuration Register Register */
    971             uint32_t R;
    972             struct {
    973                 uint32_t:18;
    974                 uint32_t ENGDIV:6;
    975                   uint32_t:4;
    976                 uint32_t EBTS:1;
    977                   uint32_t:1;
    978                 uint32_t EBDF:2;
    979             } B;
    980         } ECCR;
    981 
    982         union {
    983             uint32_t R;
    984         } CARH;
    985 
    986         union {
    987             uint32_t R;
    988         } CARL;
    989 
    990         union {
    991             uint32_t R;
    992         } CBRH;
    993 
    994         union {
    995             uint32_t R;
    996         } CBRL;
    997 
    998     };
    999 /****************************************************************************/
    1000 /*                          MODULE : EMIOS                                  */
    1001 /****************************************************************************/
    1002     struct EMIOS_tag {
    1003         union EMIOS_MCR_tag {
    1004             uint32_t R;
    1005             struct {
    1006                 uint32_t:1;
    1007                 uint32_t MDIS:1;
    1008                 uint32_t FRZ:1;
    1009                 uint32_t GTBE:1;
    1010                 uint32_t ETB:1;
    1011                 uint32_t GPREN:1;
    1012                   uint32_t:6;
    1013                 uint32_t SRV:4;
    1014                 uint32_t GPRE:8;
    1015                   uint32_t:8;
    1016             } B;
    1017         } MCR;                  /* Module Configuration Register */
    1018 
    1019         union EMIOS_GFR_tag {
    1020             uint32_t R;
    1021             struct {
    1022                 uint32_t:8;
    1023                 uint32_t F23:1;
    1024                 uint32_t F22:1;
    1025                 uint32_t F21:1;
    1026                 uint32_t F20:1;
    1027                 uint32_t F19:1;
    1028                 uint32_t F18:1;
    1029                 uint32_t F17:1;
    1030                 uint32_t F16:1;
    1031                 uint32_t F15:1;
    1032                 uint32_t F14:1;
    1033                 uint32_t F13:1;
    1034                 uint32_t F12:1;
    1035                 uint32_t F11:1;
    1036                 uint32_t F10:1;
    1037                 uint32_t F9:1;
    1038                 uint32_t F8:1;
    1039                 uint32_t F7:1;
    1040                 uint32_t F6:1;
    1041                 uint32_t F5:1;
    1042                 uint32_t F4:1;
    1043                 uint32_t F3:1;
    1044                 uint32_t F2:1;
    1045                 uint32_t F1:1;
    1046                 uint32_t F0:1;
    1047             } B;
    1048         } GFR;                  /* Global FLAG Register */
    1049 
    1050         union EMIOS_OUDR_tag {
    1051             uint32_t R;
    1052             struct {
    1053                 uint32_t:8;
    1054                 uint32_t OU23:1;
    1055                 uint32_t OU22:1;
    1056                 uint32_t OU21:1;
    1057                 uint32_t OU20:1;
    1058                 uint32_t OU19:1;
    1059                 uint32_t OU18:1;
    1060                 uint32_t OU17:1;
    1061                 uint32_t OU16:1;
    1062                 uint32_t OU15:1;
    1063                 uint32_t OU14:1;
    1064                 uint32_t OU13:1;
    1065                 uint32_t OU12:1;
    1066                 uint32_t OU11:1;
    1067                 uint32_t OU10:1;
    1068                 uint32_t OU9:1;
    1069                 uint32_t OU8:1;
    1070                 uint32_t OU7:1;
    1071                 uint32_t OU6:1;
    1072                 uint32_t OU5:1;
    1073                 uint32_t OU4:1;
    1074                 uint32_t OU3:1;
    1075                 uint32_t OU2:1;
    1076                 uint32_t OU1:1;
    1077                 uint32_t OU0:1;
    1078             } B;
    1079         } OUDR;                 /* Output Update Disable Register */
    1080 
    1081         uint32_t emios_reserved[5];
    1082 
    1083         struct EMIOS_CH_tag {
    1084             union {
    1085                 uint32_t R;    /* Channel A Data Register */
    1086             } CADR;
    1087 
    1088             union {
    1089                 uint32_t R;    /* Channel B Data Register */
    1090             } CBDR;
    1091 
    1092             union {
    1093                 uint32_t R;    /* Channel Counter Register */
    1094             } CCNTR;
    1095 
    1096             union EMIOS_CCR_tag {
    1097                 uint32_t R;
    1098                 struct {
    1099                     uint32_t FREN:1;
    1100                     uint32_t ODIS:1;
    1101                     uint32_t ODISSL:2;
    1102                     uint32_t UCPRE:2;
    1103                     uint32_t UCPREN:1;
    1104                     uint32_t DMA:1;
    1105                       uint32_t:1;
    1106                     uint32_t IF:4;
    1107                     uint32_t FCK:1;
    1108                     uint32_t FEN:1;
    1109                       uint32_t:3;
    1110                     uint32_t FORCMA:1;
    1111                     uint32_t FORCMB:1;
    1112                       uint32_t:1;
    1113                     uint32_t BSL:2;
    1114                     uint32_t EDSEL:1;
    1115                     uint32_t EDPOL:1;
    1116                     uint32_t MODE:7;
    1117                 } B;
    1118             } CCR;              /* Channel Control Register */
    1119 
    1120             union EMIOS_CSR_tag {
    1121                 uint32_t R;
    1122                 struct {
    1123                     uint32_t OVR:1;
    1124                       uint32_t:15;
    1125                     uint32_t OVFL:1;
    1126                       uint32_t:12;
    1127                     uint32_t UCIN:1;
    1128                     uint32_t UCOUT:1;
    1129                     uint32_t FLAG:1;
    1130                 } B;
    1131             } CSR;              /* Channel Status Register */
    1132 
    1133 #if MPC55XX_CHIP_TYPE == 5554
    1134           /* ALTCADR is reserved on the MPC5554 and writes will cause an exception.
    1135            */
    1136             uint32_t altcadr_reserved;
     31#if MPC55XX_CHIP_TYPE / 10 == 551
     32  #include <mpc55xx/fsl-mpc551x.h>
     33#elif MPC55XX_CHIP_TYPE / 10 == 555
     34  #include <mpc55xx/fsl-mpc555x.h>
     35#elif MPC55XX_CHIP_TYPE / 10 == 556
     36  #include <mpc55xx/fsl-mpc556x.h>
     37#elif MPC55XX_CHIP_TYPE / 10 == 567
     38  #include <mpc55xx/fsl-mpc567x.h>
    113739#else
    1138             union {
    1139                 uint32_t R;    /* Alternate Channel A Data Register */
    1140             } ALTCADR;
    1141 #endif
    1142 
    1143             uint32_t emios_channel_reserved[2];
    1144 
    1145         } CH[24];
    1146 
    1147     };
    1148 /****************************************************************************/
    1149 /*                              MODULE :ETPU                                */
    1150 /****************************************************************************/
    1151 
    1152 /***************************Configuration Registers**************************/
    1153 
    1154     struct ETPU_tag {
    1155         union {                 /* MODULE CONFIGURATION REGISTER */
    1156             uint32_t R;
    1157             struct {
    1158                 uint32_t GEC:1;        /* Global Exception Clear */
    1159                   uint32_t:3;
    1160                 uint32_t MGE1:1;       /* Microcode Global Exception-ETPU_A */
    1161 
    1162                 uint32_t MGE2:1;       /* Microcode Global Exception-ETPU_B */
    1163 
    1164                 uint32_t ILF1:1;       /* Illegal Instruction Flag-ETPU_A */
    1165 
    1166                 uint32_t ILF2:1;       /* Illegal Instruction Flag-ETPU_B */
    1167 
    1168                   uint32_t:3;
    1169                 uint32_t SCMSIZE:5;    /* Shared Code Memory size */
    1170                   uint32_t:5;
    1171                 uint32_t SCMMISF:1;    /* SCM MISC Flag */
    1172                 uint32_t SCMMISEN:1;   /* SCM MISC Enable */
    1173                   uint32_t:2;
    1174                 uint32_t VIS:1;        /* SCM Visability */
    1175                   uint32_t:5;
    1176                 uint32_t GTBE:1;       /* Global Time Base Enable */
    1177             } B;
    1178         } MCR;
    1179 
    1180         union {                 /* COHERENT DUAL-PARAMETER CONTROL */
    1181             uint32_t R;
    1182             struct {
    1183                 uint32_t STS:1;        /* Start Status bit */
    1184                 uint32_t CTBASE:5;     /* Channel Transfer Base */
    1185                 uint32_t PBASE:10;     /* Parameter Buffer Base Address */
    1186                 uint32_t PWIDTH:1;     /* Parameter Width */
    1187                 uint32_t PARAM0:7;     /* Channel Parameter 0 */
    1188                 uint32_t WR:1;
    1189                 uint32_t PARAM1:7;     /* Channel Parameter 1 */
    1190             } B;
    1191         } CDCR;
    1192 
    1193         uint32_t etpu_reserved1;
    1194 
    1195         union {                 /* MISC Compare Register */
    1196             uint32_t R;
    1197         } MISCCMPR;
    1198 
    1199         union {                 /* SCM off-range Date Register */
    1200             uint32_t R;
    1201         } SCMOFFDATAR;
    1202 
    1203         union {                 /* ETPU_A Configuration Register */
    1204             uint32_t R;
    1205             struct {
    1206                 uint32_t FEND:1;       /* Force END */
    1207                 uint32_t MDIS:1;       /* Low power Stop */
    1208                   uint32_t:1;
    1209                 uint32_t STF:1;        /* Stop Flag */
    1210                   uint32_t:4;
    1211                 uint32_t HLTF:1;       /* Halt Mode Flag */
    1212                   uint32_t:4;
    1213                 uint32_t FPSCK:3;      /* Filter Prescaler Clock Control */
    1214                 uint32_t CDFC:2;
    1215                   uint32_t:9;
    1216                 uint32_t ETB:5;        /* Entry Table Base */
    1217             } B;
    1218         } ECR_A;
    1219 
    1220         union {                 /* ETPU_B Configuration Register */
    1221             uint32_t R;
    1222             struct {
    1223                 uint32_t FEND:1;       /* Force END */
    1224                 uint32_t MDIS:1;       /* Low power Stop */
    1225                   uint32_t:1;
    1226                 uint32_t STF:1;        /* Stop Flag */
    1227                   uint32_t:4;
    1228                 uint32_t HLTF:1;       /* Halt Mode Flag */
    1229                   uint32_t:4;
    1230                 uint32_t FPSCK:3;      /* Filter Prescaler Clock Control */
    1231                 uint32_t CDFC:2;
    1232                   uint32_t:9;
    1233                 uint32_t ETB:5;        /* Entry Table Base */
    1234             } B;
    1235         } ECR_B;
    1236 
    1237         uint32_t etpu_reserved4;
    1238 
    1239         union {                 /* ETPU_A Timebase Configuration Register */
    1240             uint32_t R;
    1241             struct {
    1242                 uint32_t TCR2CTL:3;     /* TCR2 Clock/Gate Control */
    1243                 uint32_t TCRCF:2;       /* TCRCLK Signal Filter Control */
    1244                   uint32_t:1;
    1245                 uint32_t AM:1;  /* Angle Mode */
    1246                   uint32_t:3;
    1247                 uint32_t TCR2P:6;       /* TCR2 Prescaler Control */
    1248                 uint32_t TCR1CTL:2;     /* TCR1 Clock/Gate Control */
    1249                   uint32_t:6;
    1250                 uint32_t TCR1P:8;       /* TCR1 Prescaler Control */
    1251             } B;
    1252         } TBCR_A;
    1253 
    1254         union {                 /* ETPU_A TCR1 Visibility Register */
    1255             uint32_t R;
    1256         } TB1R_A;
    1257 
    1258         union {                 /* ETPU_A TCR2 Visibility Register */
    1259             uint32_t R;
    1260         } TB2R_A;
    1261 
    1262         union {                 /* ETPU_A STAC Configuration Register */
    1263             uint32_t R;
    1264             struct {
    1265                 uint32_t REN1:1;       /* Resource Enable TCR1 */
    1266                 uint32_t RSC1:1;       /* Resource Control TCR1 */
    1267                   uint32_t:2;
    1268                 uint32_t SERVER_ID1:4;
    1269                   uint32_t:4;
    1270                 uint32_t SRV1:4;       /* Resource Server Slot */
    1271                 uint32_t REN2:1;       /* Resource Enable TCR2 */
    1272                 uint32_t RSC2:1;       /* Resource Control TCR2 */
    1273                   uint32_t:2;
    1274                 uint32_t SERVER_ID2:4;
    1275                   uint32_t:4;
    1276                 uint32_t SRV2:4;       /* Resource Server Slot */
    1277             } B;
    1278         } REDCR_A;
    1279 
    1280         uint32_t etpu_reserved5[4];
    1281 
    1282         union {                 /* ETPU_B Timebase Configuration Register */
    1283             uint32_t R;
    1284             struct {
    1285                 uint32_t TCR2CTL:3;     /* TCR2 Clock/Gate Control */
    1286                 uint32_t TCRCF:2;       /* TCRCLK Signal Filter Control */
    1287                   uint32_t:1;
    1288                 uint32_t AM:1;  /* Angle Mode */
    1289                   uint32_t:3;
    1290                 uint32_t TCR2P:6;       /* TCR2 Prescaler Control */
    1291                 uint32_t TCR1CTL:2;     /* TCR1 Clock/Gate Control */
    1292                   uint32_t:6;
    1293                 uint32_t TCR1P:8;       /* TCR1 Prescaler Control */
    1294             } B;
    1295         } TBCR_B;
    1296 
    1297         union {                 /* ETPU_B TCR1 Visibility Register */
    1298             uint32_t R;
    1299         } TB1R_B;
    1300 
    1301         union {                 /* ETPU_B TCR2 Visibility Register */
    1302             uint32_t R;
    1303         } TB2R_B;
    1304 
    1305         union {                 /* ETPU_B STAC Configuration Register */
    1306             uint32_t R;
    1307             struct {
    1308                 uint32_t REN1:1;       /* Resource Enable TCR1 */
    1309                 uint32_t RSC1:1;       /* Resource Control TCR1 */
    1310                   uint32_t:2;
    1311                 uint32_t SERVER_ID1:4;
    1312                   uint32_t:4;
    1313                 uint32_t SRV1:4;       /* Resource Server Slot */
    1314                 uint32_t REN2:1;       /* Resource Enable TCR2 */
    1315                 uint32_t RSC2:1;       /* Resource Control TCR2 */
    1316                   uint32_t:2;
    1317                 uint32_t SERVER_ID2:4;
    1318                   uint32_t:4;
    1319                 uint32_t SRV2:4;       /* Resource Server Slot */
    1320             } B;
    1321         } REDCR_B;
    1322 
    1323         uint32_t etpu_reserved7[108];
    1324 
    1325 /*****************************Status and Control Registers**************************/
    1326 
    1327         union {                 /* ETPU_A Channel Interrut Status */
    1328             uint32_t R;
    1329             struct {
    1330                 uint32_t CIS31:1;      /* Channel 31 Interrut Status */
    1331                 uint32_t CIS30:1;      /* Channel 30 Interrut Status */
    1332                 uint32_t CIS29:1;      /* Channel 29 Interrut Status */
    1333                 uint32_t CIS28:1;      /* Channel 28 Interrut Status */
    1334                 uint32_t CIS27:1;      /* Channel 27 Interrut Status */
    1335                 uint32_t CIS26:1;      /* Channel 26 Interrut Status */
    1336                 uint32_t CIS25:1;      /* Channel 25 Interrut Status */
    1337                 uint32_t CIS24:1;      /* Channel 24 Interrut Status */
    1338                 uint32_t CIS23:1;      /* Channel 23 Interrut Status */
    1339                 uint32_t CIS22:1;      /* Channel 22 Interrut Status */
    1340                 uint32_t CIS21:1;      /* Channel 21 Interrut Status */
    1341                 uint32_t CIS20:1;      /* Channel 20 Interrut Status */
    1342                 uint32_t CIS19:1;      /* Channel 19 Interrut Status */
    1343                 uint32_t CIS18:1;      /* Channel 18 Interrut Status */
    1344                 uint32_t CIS17:1;      /* Channel 17 Interrut Status */
    1345                 uint32_t CIS16:1;      /* Channel 16 Interrut Status */
    1346                 uint32_t CIS15:1;      /* Channel 15 Interrut Status */
    1347                 uint32_t CIS14:1;      /* Channel 14 Interrut Status */
    1348                 uint32_t CIS13:1;      /* Channel 13 Interrut Status */
    1349                 uint32_t CIS12:1;      /* Channel 12 Interrut Status */
    1350                 uint32_t CIS11:1;      /* Channel 11 Interrut Status */
    1351                 uint32_t CIS10:1;      /* Channel 10 Interrut Status */
    1352                 uint32_t CIS9:1;       /* Channel 9 Interrut Status */
    1353                 uint32_t CIS8:1;       /* Channel 8 Interrut Status */
    1354                 uint32_t CIS7:1;       /* Channel 7 Interrut Status */
    1355                 uint32_t CIS6:1;       /* Channel 6 Interrut Status */
    1356                 uint32_t CIS5:1;       /* Channel 5 Interrut Status */
    1357                 uint32_t CIS4:1;       /* Channel 4 Interrut Status */
    1358                 uint32_t CIS3:1;       /* Channel 3 Interrut Status */
    1359                 uint32_t CIS2:1;       /* Channel 2 Interrut Status */
    1360                 uint32_t CIS1:1;       /* Channel 1 Interrut Status */
    1361                 uint32_t CIS0:1;       /* Channel 0 Interrut Status */
    1362             } B;
    1363         } CISR_A;
    1364 
    1365         union {                 /* ETPU_B Channel Interruput Status */
    1366             uint32_t R;
    1367             struct {
    1368                 uint32_t CIS31:1;      /* Channel 31 Interrut Status */
    1369                 uint32_t CIS30:1;      /* Channel 30 Interrut Status */
    1370                 uint32_t CIS29:1;      /* Channel 29 Interrut Status */
    1371                 uint32_t CIS28:1;      /* Channel 28 Interrut Status */
    1372                 uint32_t CIS27:1;      /* Channel 27 Interrut Status */
    1373                 uint32_t CIS26:1;      /* Channel 26 Interrut Status */
    1374                 uint32_t CIS25:1;      /* Channel 25 Interrut Status */
    1375                 uint32_t CIS24:1;      /* Channel 24 Interrut Status */
    1376                 uint32_t CIS23:1;      /* Channel 23 Interrut Status */
    1377                 uint32_t CIS22:1;      /* Channel 22 Interrut Status */
    1378                 uint32_t CIS21:1;      /* Channel 21 Interrut Status */
    1379                 uint32_t CIS20:1;      /* Channel 20 Interrut Status */
    1380                 uint32_t CIS19:1;      /* Channel 19 Interrut Status */
    1381                 uint32_t CIS18:1;      /* Channel 18 Interrut Status */
    1382                 uint32_t CIS17:1;      /* Channel 17 Interrut Status */
    1383                 uint32_t CIS16:1;      /* Channel 16 Interrut Status */
    1384                 uint32_t CIS15:1;      /* Channel 15 Interrut Status */
    1385                 uint32_t CIS14:1;      /* Channel 14 Interrut Status */
    1386                 uint32_t CIS13:1;      /* Channel 13 Interrut Status */
    1387                 uint32_t CIS12:1;      /* Channel 12 Interrut Status */
    1388                 uint32_t CIS11:1;      /* Channel 11 Interrut Status */
    1389                 uint32_t CIS10:1;      /* Channel 10 Interrut Status */
    1390                 uint32_t CIS9:1;       /* Channel 9 Interrut Status */
    1391                 uint32_t CIS8:1;       /* Channel 8 Interrut Status */
    1392                 uint32_t CIS7:1;       /* Channel 7 Interrut Status */
    1393                 uint32_t CIS6:1;       /* Channel 6 Interrut Status */
    1394                 uint32_t CIS5:1;       /* Channel 5 Interrut Status */
    1395                 uint32_t CIS4:1;       /* Channel 4 Interrut Status */
    1396                 uint32_t CIS3:1;       /* Channel 3 Interrut Status */
    1397                 uint32_t CIS2:1;       /* Channel 2 Interrut Status */
    1398                 uint32_t CIS1:1;       /* Channel 1 Interrupt Status */
    1399                 uint32_t CIS0:1;       /* Channel 0 Interrupt Status */
    1400             } B;
    1401         } CISR_B;
    1402 
    1403         uint32_t etpu_reserved9[2];
    1404 
    1405         union {                 /* ETPU_A Data Transfer Request Status */
    1406             uint32_t R;
    1407             struct {
    1408                 uint32_t DTRS31:1;     /* Channel 31 Data Transfer Request Status */
    1409                 uint32_t DTRS30:1;     /* Channel 30 Data Transfer Request Status */
    1410                 uint32_t DTRS29:1;     /* Channel 29 Data Transfer Request Status */
    1411                 uint32_t DTRS28:1;     /* Channel 28 Data Transfer Request Status */
    1412                 uint32_t DTRS27:1;     /* Channel 27 Data Transfer Request Status */
    1413                 uint32_t DTRS26:1;     /* Channel 26 Data Transfer Request Status */
    1414                 uint32_t DTRS25:1;     /* Channel 25 Data Transfer Request Status */
    1415                 uint32_t DTRS24:1;     /* Channel 24 Data Transfer Request Status */
    1416                 uint32_t DTRS23:1;     /* Channel 23 Data Transfer Request Status */
    1417                 uint32_t DTRS22:1;     /* Channel 22 Data Transfer Request Status */
    1418                 uint32_t DTRS21:1;     /* Channel 21 Data Transfer Request Status */
    1419                 uint32_t DTRS20:1;     /* Channel 20 Data Transfer Request Status */
    1420                 uint32_t DTRS19:1;     /* Channel 19 Data Transfer Request Status */
    1421                 uint32_t DTRS18:1;     /* Channel 18 Data Transfer Request Status */
    1422                 uint32_t DTRS17:1;     /* Channel 17 Data Transfer Request Status */
    1423                 uint32_t DTRS16:1;     /* Channel 16 Data Transfer Request Status */
    1424                 uint32_t DTRS15:1;     /* Channel 15 Data Transfer Request Status */
    1425                 uint32_t DTRS14:1;     /* Channel 14 Data Transfer Request Status */
    1426                 uint32_t DTRS13:1;     /* Channel 13 Data Transfer Request Status */
    1427                 uint32_t DTRS12:1;     /* Channel 12 Data Transfer Request Status */
    1428                 uint32_t DTRS11:1;     /* Channel 11 Data Transfer Request Status */
    1429                 uint32_t DTRS10:1;     /* Channel 10 Data Transfer Request Status */
    1430                 uint32_t DTRS9:1;      /* Channel 9 Data Transfer Request Status */
    1431                 uint32_t DTRS8:1;      /* Channel 8 Data Transfer Request Status */
    1432                 uint32_t DTRS7:1;      /* Channel 7 Data Transfer Request Status */
    1433                 uint32_t DTRS6:1;      /* Channel 6 Data Transfer Request Status */
    1434                 uint32_t DTRS5:1;      /* Channel 5 Data Transfer Request Status */
    1435                 uint32_t DTRS4:1;      /* Channel 4 Data Transfer Request Status */
    1436                 uint32_t DTRS3:1;      /* Channel 3 Data Transfer Request Status */
    1437                 uint32_t DTRS2:1;      /* Channel 2 Data Transfer Request Status */
    1438                 uint32_t DTRS1:1;      /* Channel 1 Data Transfer Request Status */
    1439                 uint32_t DTRS0:1;      /* Channel 0 Data Transfer Request Status */
    1440             } B;
    1441         } CDTRSR_A;
    1442 
    1443         union {                 /* ETPU_B Data Transfer Request Status */
    1444             uint32_t R;
    1445             struct {
    1446                 uint32_t DTRS31:1;     /* Channel 31 Data Transfer Request Status */
    1447                 uint32_t DTRS30:1;     /* Channel 30 Data Transfer Request Status */
    1448                 uint32_t DTRS29:1;     /* Channel 29 Data Transfer Request Status */
    1449                 uint32_t DTRS28:1;     /* Channel 28 Data Transfer Request Status */
    1450                 uint32_t DTRS27:1;     /* Channel 27 Data Transfer Request Status */
    1451                 uint32_t DTRS26:1;     /* Channel 26 Data Transfer Request Status */
    1452                 uint32_t DTRS25:1;     /* Channel 25 Data Transfer Request Status */
    1453                 uint32_t DTRS24:1;     /* Channel 24 Data Transfer Request Status */
    1454                 uint32_t DTRS23:1;     /* Channel 23 Data Transfer Request Status */
    1455                 uint32_t DTRS22:1;     /* Channel 22 Data Transfer Request Status */
    1456                 uint32_t DTRS21:1;     /* Channel 21 Data Transfer Request Status */
    1457                 uint32_t DTRS20:1;     /* Channel 20 Data Transfer Request Status */
    1458                 uint32_t DTRS19:1;     /* Channel 19 Data Transfer Request Status */
    1459                 uint32_t DTRS18:1;     /* Channel 18 Data Transfer Request Status */
    1460                 uint32_t DTRS17:1;     /* Channel 17 Data Transfer Request Status */
    1461                 uint32_t DTRS16:1;     /* Channel 16 Data Transfer Request Status */
    1462                 uint32_t DTRS15:1;     /* Channel 15 Data Transfer Request Status */
    1463                 uint32_t DTRS14:1;     /* Channel 14 Data Transfer Request Status */
    1464                 uint32_t DTRS13:1;     /* Channel 13 Data Transfer Request Status */
    1465                 uint32_t DTRS12:1;     /* Channel 12 Data Transfer Request Status */
    1466                 uint32_t DTRS11:1;     /* Channel 11 Data Transfer Request Status */
    1467                 uint32_t DTRS10:1;     /* Channel 10 Data Transfer Request Status */
    1468                 uint32_t DTRS9:1;      /* Channel 9 Data Transfer Request Status */
    1469                 uint32_t DTRS8:1;      /* Channel 8 Data Transfer Request Status */
    1470                 uint32_t DTRS7:1;      /* Channel 7 Data Transfer Request Status */
    1471                 uint32_t DTRS6:1;      /* Channel 6 Data Transfer Request Status */
    1472                 uint32_t DTRS5:1;      /* Channel 5 Data Transfer Request Status */
    1473                 uint32_t DTRS4:1;      /* Channel 4 Data Transfer Request Status */
    1474                 uint32_t DTRS3:1;      /* Channel 3 Data Transfer Request Status */
    1475                 uint32_t DTRS2:1;      /* Channel 2 Data Transfer Request Status */
    1476                 uint32_t DTRS1:1;      /* Channel 1 Data Transfer Request Status */
    1477                 uint32_t DTRS0:1;      /* Channel 0 Data Transfer Request Status */
    1478             } B;
    1479         } CDTRSR_B;
    1480 
    1481         uint32_t etpu_reserved11[2];
    1482 
    1483         union {                 /* ETPU_A Interruput Overflow Status */
    1484             uint32_t R;
    1485             struct {
    1486                 uint32_t CIOS31:1;     /* Channel 31 Interruput Overflow Status */
    1487                 uint32_t CIOS30:1;     /* Channel 30 Interruput Overflow Status */
    1488                 uint32_t CIOS29:1;     /* Channel 29 Interruput Overflow Status */
    1489                 uint32_t CIOS28:1;     /* Channel 28 Interruput Overflow Status */
    1490                 uint32_t CIOS27:1;     /* Channel 27 Interruput Overflow Status */
    1491                 uint32_t CIOS26:1;     /* Channel 26 Interruput Overflow Status */
    1492                 uint32_t CIOS25:1;     /* Channel 25 Interruput Overflow Status */
    1493                 uint32_t CIOS24:1;     /* Channel 24 Interruput Overflow Status */
    1494                 uint32_t CIOS23:1;     /* Channel 23 Interruput Overflow Status */
    1495                 uint32_t CIOS22:1;     /* Channel 22 Interruput Overflow Status */
    1496                 uint32_t CIOS21:1;     /* Channel 21 Interruput Overflow Status */
    1497                 uint32_t CIOS20:1;     /* Channel 20 Interruput Overflow Status */
    1498                 uint32_t CIOS19:1;     /* Channel 19 Interruput Overflow Status */
    1499                 uint32_t CIOS18:1;     /* Channel 18 Interruput Overflow Status */
    1500                 uint32_t CIOS17:1;     /* Channel 17 Interruput Overflow Status */
    1501                 uint32_t CIOS16:1;     /* Channel 16 Interruput Overflow Status */
    1502                 uint32_t CIOS15:1;     /* Channel 15 Interruput Overflow Status */
    1503                 uint32_t CIOS14:1;     /* Channel 14 Interruput Overflow Status */
    1504                 uint32_t CIOS13:1;     /* Channel 13 Interruput Overflow Status */
    1505                 uint32_t CIOS12:1;     /* Channel 12 Interruput Overflow Status */
    1506                 uint32_t CIOS11:1;     /* Channel 11 Interruput Overflow Status */
    1507                 uint32_t CIOS10:1;     /* Channel 10 Interruput Overflow Status */
    1508                 uint32_t CIOS9:1;      /* Channel 9 Interruput Overflow Status */
    1509                 uint32_t CIOS8:1;      /* Channel 8 Interruput Overflow Status */
    1510                 uint32_t CIOS7:1;      /* Channel 7 Interruput Overflow Status */
    1511                 uint32_t CIOS6:1;      /* Channel 6 Interruput Overflow Status */
    1512                 uint32_t CIOS5:1;      /* Channel 5 Interruput Overflow Status */
    1513                 uint32_t CIOS4:1;      /* Channel 4 Interruput Overflow Status */
    1514                 uint32_t CIOS3:1;      /* Channel 3 Interruput Overflow Status */
    1515                 uint32_t CIOS2:1;      /* Channel 2 Interruput Overflow Status */
    1516                 uint32_t CIOS1:1;      /* Channel 1 Interruput Overflow Status */
    1517                 uint32_t CIOS0:1;      /* Channel 0 Interruput Overflow Status */
    1518             } B;
    1519         } CIOSR_A;
    1520 
    1521         union {                 /* ETPU_B Interruput Overflow Status */
    1522             uint32_t R;
    1523             struct {
    1524                 uint32_t CIOS31:1;     /* Channel 31 Interruput Overflow Status */
    1525                 uint32_t CIOS30:1;     /* Channel 30 Interruput Overflow Status */
    1526                 uint32_t CIOS29:1;     /* Channel 29 Interruput Overflow Status */
    1527                 uint32_t CIOS28:1;     /* Channel 28 Interruput Overflow Status */
    1528                 uint32_t CIOS27:1;     /* Channel 27 Interruput Overflow Status */
    1529                 uint32_t CIOS26:1;     /* Channel 26 Interruput Overflow Status */
    1530                 uint32_t CIOS25:1;     /* Channel 25 Interruput Overflow Status */
    1531                 uint32_t CIOS24:1;     /* Channel 24 Interruput Overflow Status */
    1532                 uint32_t CIOS23:1;     /* Channel 23 Interruput Overflow Status */
    1533                 uint32_t CIOS22:1;     /* Channel 22 Interruput Overflow Status */
    1534                 uint32_t CIOS21:1;     /* Channel 21 Interruput Overflow Status */
    1535                 uint32_t CIOS20:1;     /* Channel 20 Interruput Overflow Status */
    1536                 uint32_t CIOS19:1;     /* Channel 19 Interruput Overflow Status */
    1537                 uint32_t CIOS18:1;     /* Channel 18 Interruput Overflow Status */
    1538                 uint32_t CIOS17:1;     /* Channel 17 Interruput Overflow Status */
    1539                 uint32_t CIOS16:1;     /* Channel 16 Interruput Overflow Status */
    1540                 uint32_t CIOS15:1;     /* Channel 15 Interruput Overflow Status */
    1541                 uint32_t CIOS14:1;     /* Channel 14 Interruput Overflow Status */
    1542                 uint32_t CIOS13:1;     /* Channel 13 Interruput Overflow Status */
    1543                 uint32_t CIOS12:1;     /* Channel 12 Interruput Overflow Status */
    1544                 uint32_t CIOS11:1;     /* Channel 11 Interruput Overflow Status */
    1545                 uint32_t CIOS10:1;     /* Channel 10 Interruput Overflow Status */
    1546                 uint32_t CIOS9:1;      /* Channel 9 Interruput Overflow Status */
    1547                 uint32_t CIOS8:1;      /* Channel 8 Interruput Overflow Status */
    1548                 uint32_t CIOS7:1;      /* Channel 7 Interruput Overflow Status */
    1549                 uint32_t CIOS6:1;      /* Channel 6 Interruput Overflow Status */
    1550                 uint32_t CIOS5:1;      /* Channel 5 Interruput Overflow Status */
    1551                 uint32_t CIOS4:1;      /* Channel 4 Interruput Overflow Status */
    1552                 uint32_t CIOS3:1;      /* Channel 3 Interruput Overflow Status */
    1553                 uint32_t CIOS2:1;      /* Channel 2 Interruput Overflow Status */
    1554                 uint32_t CIOS1:1;      /* Channel 1 Interruput Overflow Status */
    1555                 uint32_t CIOS0:1;      /* Channel 0 Interruput Overflow Status */
    1556             } B;
    1557         } CIOSR_B;
    1558 
    1559         uint32_t etpu_reserved13[2];
    1560 
    1561         union {                 /* ETPU_A Data Transfer Overflow Status */
    1562             uint32_t R;
    1563             struct {
    1564                 uint32_t DTROS31:1;    /* Channel 31 Data Transfer Overflow Status */
    1565                 uint32_t DTROS30:1;    /* Channel 30 Data Transfer Overflow Status */
    1566                 uint32_t DTROS29:1;    /* Channel 29 Data Transfer Overflow Status */
    1567                 uint32_t DTROS28:1;    /* Channel 28 Data Transfer Overflow Status */
    1568                 uint32_t DTROS27:1;    /* Channel 27 Data Transfer Overflow Status */
    1569                 uint32_t DTROS26:1;    /* Channel 26 Data Transfer Overflow Status */
    1570                 uint32_t DTROS25:1;    /* Channel 25 Data Transfer Overflow Status */
    1571                 uint32_t DTROS24:1;    /* Channel 24 Data Transfer Overflow Status */
    1572                 uint32_t DTROS23:1;    /* Channel 23 Data Transfer Overflow Status */
    1573                 uint32_t DTROS22:1;    /* Channel 22 Data Transfer Overflow Status */
    1574                 uint32_t DTROS21:1;    /* Channel 21 Data Transfer Overflow Status */
    1575                 uint32_t DTROS20:1;    /* Channel 20 Data Transfer Overflow Status */
    1576                 uint32_t DTROS19:1;    /* Channel 19 Data Transfer Overflow Status */
    1577                 uint32_t DTROS18:1;    /* Channel 18 Data Transfer Overflow Status */
    1578                 uint32_t DTROS17:1;    /* Channel 17 Data Transfer Overflow Status */
    1579                 uint32_t DTROS16:1;    /* Channel 16 Data Transfer Overflow Status */
    1580                 uint32_t DTROS15:1;    /* Channel 15 Data Transfer Overflow Status */
    1581                 uint32_t DTROS14:1;    /* Channel 14 Data Transfer Overflow Status */
    1582                 uint32_t DTROS13:1;    /* Channel 13 Data Transfer Overflow Status */
    1583                 uint32_t DTROS12:1;    /* Channel 12 Data Transfer Overflow Status */
    1584                 uint32_t DTROS11:1;    /* Channel 11 Data Transfer Overflow Status */
    1585                 uint32_t DTROS10:1;    /* Channel 10 Data Transfer Overflow Status */
    1586                 uint32_t DTROS9:1;     /* Channel 9 Data Transfer Overflow Status */
    1587                 uint32_t DTROS8:1;     /* Channel 8 Data Transfer Overflow Status */
    1588                 uint32_t DTROS7:1;     /* Channel 7 Data Transfer Overflow Status */
    1589                 uint32_t DTROS6:1;     /* Channel 6 Data Transfer Overflow Status */
    1590                 uint32_t DTROS5:1;     /* Channel 5 Data Transfer Overflow Status */
    1591                 uint32_t DTROS4:1;     /* Channel 4 Data Transfer Overflow Status */
    1592                 uint32_t DTROS3:1;     /* Channel 3 Data Transfer Overflow Status */
    1593                 uint32_t DTROS2:1;     /* Channel 2 Data Transfer Overflow Status */
    1594                 uint32_t DTROS1:1;     /* Channel 1 Data Transfer Overflow Status */
    1595                 uint32_t DTROS0:1;     /* Channel 0 Data Transfer Overflow Status */
    1596             } B;
    1597         } CDTROSR_A;
    1598 
    1599         union {                 /* ETPU_B Data Transfer Overflow Status */
    1600             uint32_t R;
    1601             struct {
    1602                 uint32_t DTROS31:1;    /* Channel 31 Data Transfer Overflow Status */
    1603                 uint32_t DTROS30:1;    /* Channel 30 Data Transfer Overflow Status */
    1604                 uint32_t DTROS29:1;    /* Channel 29 Data Transfer Overflow Status */
    1605                 uint32_t DTROS28:1;    /* Channel 28 Data Transfer Overflow Status */
    1606                 uint32_t DTROS27:1;    /* Channel 27 Data Transfer Overflow Status */
    1607                 uint32_t DTROS26:1;    /* Channel 26 Data Transfer Overflow Status */
    1608                 uint32_t DTROS25:1;    /* Channel 25 Data Transfer Overflow Status */
    1609                 uint32_t DTROS24:1;    /* Channel 24 Data Transfer Overflow Status */
    1610                 uint32_t DTROS23:1;    /* Channel 23 Data Transfer Overflow Status */
    1611                 uint32_t DTROS22:1;    /* Channel 22 Data Transfer Overflow Status */
    1612                 uint32_t DTROS21:1;    /* Channel 21 Data Transfer Overflow Status */
    1613                 uint32_t DTROS20:1;    /* Channel 20 Data Transfer Overflow Status */
    1614                 uint32_t DTROS19:1;    /* Channel 19 Data Transfer Overflow Status */
    1615                 uint32_t DTROS18:1;    /* Channel 18 Data Transfer Overflow Status */
    1616                 uint32_t DTROS17:1;    /* Channel 17 Data Transfer Overflow Status */
    1617                 uint32_t DTROS16:1;    /* Channel 16 Data Transfer Overflow Status */
    1618                 uint32_t DTROS15:1;    /* Channel 15 Data Transfer Overflow Status */
    1619                 uint32_t DTROS14:1;    /* Channel 14 Data Transfer Overflow Status */
    1620                 uint32_t DTROS13:1;    /* Channel 13 Data Transfer Overflow Status */
    1621                 uint32_t DTROS12:1;    /* Channel 12 Data Transfer Overflow Status */
    1622                 uint32_t DTROS11:1;    /* Channel 11 Data Transfer Overflow Status */
    1623                 uint32_t DTROS10:1;    /* Channel 10 Data Transfer Overflow Status */
    1624                 uint32_t DTROS9:1;     /* Channel 9 Data Transfer Overflow Status */
    1625                 uint32_t DTROS8:1;     /* Channel 8 Data Transfer Overflow Status */
    1626                 uint32_t DTROS7:1;     /* Channel 7 Data Transfer Overflow Status */
    1627                 uint32_t DTROS6:1;     /* Channel 6 Data Transfer Overflow Status */
    1628                 uint32_t DTROS5:1;     /* Channel 5 Data Transfer Overflow Status */
    1629                 uint32_t DTROS4:1;     /* Channel 4 Data Transfer Overflow Status */
    1630                 uint32_t DTROS3:1;     /* Channel 3 Data Transfer Overflow Status */
    1631                 uint32_t DTROS2:1;     /* Channel 2 Data Transfer Overflow Status */
    1632                 uint32_t DTROS1:1;     /* Channel 1 Data Transfer Overflow Status */
    1633                 uint32_t DTROS0:1;     /* Channel 0 Data Transfer Overflow Status */
    1634             } B;
    1635         } CDTROSR_B;
    1636 
    1637         uint32_t etpu_reserved15[2];
    1638 
    1639         union {                 /* ETPU_A Channel Interruput Enable */
    1640             uint32_t R;
    1641             struct {
    1642                 uint32_t CIE31:1;      /* Channel 31 Interruput Enable */
    1643                 uint32_t CIE30:1;      /* Channel 30 Interruput Enable */
    1644                 uint32_t CIE29:1;      /* Channel 29 Interruput Enable */
    1645                 uint32_t CIE28:1;      /* Channel 28 Interruput Enable */
    1646                 uint32_t CIE27:1;      /* Channel 27 Interruput Enable */
    1647                 uint32_t CIE26:1;      /* Channel 26 Interruput Enable */
    1648                 uint32_t CIE25:1;      /* Channel 25 Interruput Enable */
    1649                 uint32_t CIE24:1;      /* Channel 24 Interruput Enable */
    1650                 uint32_t CIE23:1;      /* Channel 23 Interruput Enable */
    1651                 uint32_t CIE22:1;      /* Channel 22 Interruput Enable */
    1652                 uint32_t CIE21:1;      /* Channel 21 Interruput Enable */
    1653                 uint32_t CIE20:1;      /* Channel 20 Interruput Enable */
    1654                 uint32_t CIE19:1;      /* Channel 19 Interruput Enable */
    1655                 uint32_t CIE18:1;      /* Channel 18 Interruput Enable */
    1656                 uint32_t CIE17:1;      /* Channel 17 Interruput Enable */
    1657                 uint32_t CIE16:1;      /* Channel 16 Interruput Enable */
    1658                 uint32_t CIE15:1;      /* Channel 15 Interruput Enable */
    1659                 uint32_t CIE14:1;      /* Channel 14 Interruput Enable */
    1660                 uint32_t CIE13:1;      /* Channel 13 Interruput Enable */
    1661                 uint32_t CIE12:1;      /* Channel 12 Interruput Enable */
    1662                 uint32_t CIE11:1;      /* Channel 11 Interruput Enable */
    1663                 uint32_t CIE10:1;      /* Channel 10 Interruput Enable */
    1664                 uint32_t CIE9:1;       /* Channel 9 Interruput Enable */
    1665                 uint32_t CIE8:1;       /* Channel 8 Interruput Enable */
    1666                 uint32_t CIE7:1;       /* Channel 7 Interruput Enable */
    1667                 uint32_t CIE6:1;       /* Channel 6 Interruput Enable */
    1668                 uint32_t CIE5:1;       /* Channel 5 Interruput Enable */
    1669                 uint32_t CIE4:1;       /* Channel 4 Interruput Enable */
    1670                 uint32_t CIE3:1;       /* Channel 3 Interruput Enable */
    1671                 uint32_t CIE2:1;       /* Channel 2 Interruput Enable */
    1672                 uint32_t CIE1:1;       /* Channel 1 Interruput Enable */
    1673                 uint32_t CIE0:1;       /* Channel 0 Interruput Enable */
    1674             } B;
    1675         } CIER_A;
    1676 
    1677         union {                 /* ETPU_B Channel Interruput Enable */
    1678             uint32_t R;
    1679             struct {
    1680                 uint32_t CIE31:1;      /* Channel 31 Interruput Enable */
    1681                 uint32_t CIE30:1;      /* Channel 30 Interruput Enable */
    1682                 uint32_t CIE29:1;      /* Channel 29 Interruput Enable */
    1683                 uint32_t CIE28:1;      /* Channel 28 Interruput Enable */
    1684                 uint32_t CIE27:1;      /* Channel 27 Interruput Enable */
    1685                 uint32_t CIE26:1;      /* Channel 26 Interruput Enable */
    1686                 uint32_t CIE25:1;      /* Channel 25 Interruput Enable */
    1687                 uint32_t CIE24:1;      /* Channel 24 Interruput Enable */
    1688                 uint32_t CIE23:1;      /* Channel 23 Interruput Enable */
    1689                 uint32_t CIE22:1;      /* Channel 22 Interruput Enable */
    1690                 uint32_t CIE21:1;      /* Channel 21 Interruput Enable */
    1691                 uint32_t CIE20:1;      /* Channel 20 Interruput Enable */
    1692                 uint32_t CIE19:1;      /* Channel 19 Interruput Enable */
    1693                 uint32_t CIE18:1;      /* Channel 18 Interruput Enable */
    1694                 uint32_t CIE17:1;      /* Channel 17 Interruput Enable */
    1695                 uint32_t CIE16:1;      /* Channel 16 Interruput Enable */
    1696                 uint32_t CIE15:1;      /* Channel 15 Interruput Enable */
    1697                 uint32_t CIE14:1;      /* Channel 14 Interruput Enable */
    1698                 uint32_t CIE13:1;      /* Channel 13 Interruput Enable */
    1699                 uint32_t CIE12:1;      /* Channel 12 Interruput Enable */
    1700                 uint32_t CIE11:1;      /* Channel 11 Interruput Enable */
    1701                 uint32_t CIE10:1;      /* Channel 10 Interruput Enable */
    1702                 uint32_t CIE9:1;       /* Channel 9 Interruput Enable */
    1703                 uint32_t CIE8:1;       /* Channel 8 Interruput Enable */
    1704                 uint32_t CIE7:1;       /* Channel 7 Interruput Enable */
    1705                 uint32_t CIE6:1;       /* Channel 6 Interruput Enable */
    1706                 uint32_t CIE5:1;       /* Channel 5 Interruput Enable */
    1707                 uint32_t CIE4:1;       /* Channel 4 Interruput Enable */
    1708                 uint32_t CIE3:1;       /* Channel 3 Interruput Enable */
    1709                 uint32_t CIE2:1;       /* Channel 2 Interruput Enable */
    1710                 uint32_t CIE1:1;       /* Channel 1 Interruput Enable */
    1711                 uint32_t CIE0:1;       /* Channel 0 Interruput Enable */
    1712             } B;
    1713         } CIER_B;
    1714 
    1715         uint32_t etpu_reserved17[2];
    1716 
    1717         union {                 /* ETPU_A Channel Data Transfer Request Enable */
    1718             uint32_t R;
    1719             struct {
    1720                 uint32_t DTRE31:1;     /* Channel 31 Data Transfer Request Enable */
    1721                 uint32_t DTRE30:1;     /* Channel 30 Data Transfer Request Enable */
    1722                 uint32_t DTRE29:1;     /* Channel 29 Data Transfer Request Enable */
    1723                 uint32_t DTRE28:1;     /* Channel 28 Data Transfer Request Enable */
    1724                 uint32_t DTRE27:1;     /* Channel 27 Data Transfer Request Enable */
    1725                 uint32_t DTRE26:1;     /* Channel 26 Data Transfer Request Enable */
    1726                 uint32_t DTRE25:1;     /* Channel 25 Data Transfer Request Enable */
    1727                 uint32_t DTRE24:1;     /* Channel 24 Data Transfer Request Enable */
    1728                 uint32_t DTRE23:1;     /* Channel 23 Data Transfer Request Enable */
    1729                 uint32_t DTRE22:1;     /* Channel 22 Data Transfer Request Enable */
    1730                 uint32_t DTRE21:1;     /* Channel 21 Data Transfer Request Enable */
    1731                 uint32_t DTRE20:1;     /* Channel 20 Data Transfer Request Enable */
    1732                 uint32_t DTRE19:1;     /* Channel 19 Data Transfer Request Enable */
    1733                 uint32_t DTRE18:1;     /* Channel 18 Data Transfer Request Enable */
    1734                 uint32_t DTRE17:1;     /* Channel 17 Data Transfer Request Enable */
    1735                 uint32_t DTRE16:1;     /* Channel 16 Data Transfer Request Enable */
    1736                 uint32_t DTRE15:1;     /* Channel 15 Data Transfer Request Enable */
    1737                 uint32_t DTRE14:1;     /* Channel 14 Data Transfer Request Enable */
    1738                 uint32_t DTRE13:1;     /* Channel 13 Data Transfer Request Enable */
    1739                 uint32_t DTRE12:1;     /* Channel 12 Data Transfer Request Enable */
    1740                 uint32_t DTRE11:1;     /* Channel 11 Data Transfer Request Enable */
    1741                 uint32_t DTRE10:1;     /* Channel 10 Data Transfer Request Enable */
    1742                 uint32_t DTRE9:1;      /* Channel 9 Data Transfer Request Enable */
    1743                 uint32_t DTRE8:1;      /* Channel 8 Data Transfer Request Enable */
    1744                 uint32_t DTRE7:1;      /* Channel 7 Data Transfer Request Enable */
    1745                 uint32_t DTRE6:1;      /* Channel 6 Data Transfer Request Enable */
    1746                 uint32_t DTRE5:1;      /* Channel 5 Data Transfer Request Enable */
    1747                 uint32_t DTRE4:1;      /* Channel 4 Data Transfer Request Enable */
    1748                 uint32_t DTRE3:1;      /* Channel 3 Data Transfer Request Enable */
    1749                 uint32_t DTRE2:1;      /* Channel 2 Data Transfer Request Enable */
    1750                 uint32_t DTRE1:1;      /* Channel 1 Data Transfer Request Enable */
    1751                 uint32_t DTRE0:1;      /* Channel 0 Data Transfer Request Enable */
    1752             } B;
    1753         } CDTRER_A;
    1754 
    1755         union {                 /* ETPU_B Channel Data Transfer Request Enable */
    1756             uint32_t R;
    1757             struct {
    1758                 uint32_t DTRE31:1;     /* Channel 31 Data Transfer Request Enable */
    1759                 uint32_t DTRE30:1;     /* Channel 30 Data Transfer Request Enable */
    1760                 uint32_t DTRE29:1;     /* Channel 29 Data Transfer Request Enable */
    1761                 uint32_t DTRE28:1;     /* Channel 28 Data Transfer Request Enable */
    1762                 uint32_t DTRE27:1;     /* Channel 27 Data Transfer Request Enable */
    1763                 uint32_t DTRE26:1;     /* Channel 26 Data Transfer Request Enable */
    1764                 uint32_t DTRE25:1;     /* Channel 25 Data Transfer Request Enable */
    1765                 uint32_t DTRE24:1;     /* Channel 24 Data Transfer Request Enable */
    1766                 uint32_t DTRE23:1;     /* Channel 23 Data Transfer Request Enable */
    1767                 uint32_t DTRE22:1;     /* Channel 22 Data Transfer Request Enable */
    1768                 uint32_t DTRE21:1;     /* Channel 21 Data Transfer Request Enable */
    1769                 uint32_t DTRE20:1;     /* Channel 20 Data Transfer Request Enable */
    1770                 uint32_t DTRE19:1;     /* Channel 19 Data Transfer Request Enable */
    1771                 uint32_t DTRE18:1;     /* Channel 18 Data Transfer Request Enable */
    1772                 uint32_t DTRE17:1;     /* Channel 17 Data Transfer Request Enable */
    1773                 uint32_t DTRE16:1;     /* Channel 16 Data Transfer Request Enable */
    1774                 uint32_t DTRE15:1;     /* Channel 15 Data Transfer Request Enable */
    1775                 uint32_t DTRE14:1;     /* Channel 14 Data Transfer Request Enable */
    1776                 uint32_t DTRE13:1;     /* Channel 13 Data Transfer Request Enable */
    1777                 uint32_t DTRE12:1;     /* Channel 12 Data Transfer Request Enable */
    1778                 uint32_t DTRE11:1;     /* Channel 11 Data Transfer Request Enable */
    1779                 uint32_t DTRE10:1;     /* Channel 10 Data Transfer Request Enable */
    1780                 uint32_t DTRE9:1;      /* Channel 9 Data Transfer Request Enable */
    1781                 uint32_t DTRE8:1;      /* Channel 8 Data Transfer Request Enable */
    1782                 uint32_t DTRE7:1;      /* Channel 7 Data Transfer Request Enable */
    1783                 uint32_t DTRE6:1;      /* Channel 6 Data Transfer Request Enable */
    1784                 uint32_t DTRE5:1;      /* Channel 5 Data Transfer Request Enable */
    1785                 uint32_t DTRE4:1;      /* Channel 4 Data Transfer Request Enable */
    1786                 uint32_t DTRE3:1;      /* Channel 3 Data Transfer Request Enable */
    1787                 uint32_t DTRE2:1;      /* Channel 2 Data Transfer Request Enable */
    1788                 uint32_t DTRE1:1;      /* Channel 1 Data Transfer Request Enable */
    1789                 uint32_t DTRE0:1;      /* Channel 0 Data Transfer Request Enable */
    1790             } B;
    1791         } CDTRER_B;
    1792 
    1793         uint32_t etpu_reserved20[10];
    1794         union {                 /* ETPU_A Channel Pending Service Status */
    1795             uint32_t R;
    1796             struct {
    1797                 uint32_t SR31:1;       /* Channel 31 Pending Service Status */
    1798                 uint32_t SR30:1;       /* Channel 30 Pending Service Status */
    1799                 uint32_t SR29:1;       /* Channel 29 Pending Service Status */
    1800                 uint32_t SR28:1;       /* Channel 28 Pending Service Status */
    1801                 uint32_t SR27:1;       /* Channel 27 Pending Service Status */
    1802                 uint32_t SR26:1;       /* Channel 26 Pending Service Status */
    1803                 uint32_t SR25:1;       /* Channel 25 Pending Service Status */
    1804                 uint32_t SR24:1;       /* Channel 24 Pending Service Status */
    1805                 uint32_t SR23:1;       /* Channel 23 Pending Service Status */
    1806                 uint32_t SR22:1;       /* Channel 22 Pending Service Status */
    1807                 uint32_t SR21:1;       /* Channel 21 Pending Service Status */
    1808                 uint32_t SR20:1;       /* Channel 20 Pending Service Status */
    1809                 uint32_t SR19:1;       /* Channel 19 Pending Service Status */
    1810                 uint32_t SR18:1;       /* Channel 18 Pending Service Status */
    1811                 uint32_t SR17:1;       /* Channel 17 Pending Service Status */
    1812                 uint32_t SR16:1;       /* Channel 16 Pending Service Status */
    1813                 uint32_t SR15:1;       /* Channel 15 Pending Service Status */
    1814                 uint32_t SR14:1;       /* Channel 14 Pending Service Status */
    1815                 uint32_t SR13:1;       /* Channel 13 Pending Service Status */
    1816                 uint32_t SR12:1;       /* Channel 12 Pending Service Status */
    1817                 uint32_t SR11:1;       /* Channel 11 Pending Service Status */
    1818                 uint32_t SR10:1;       /* Channel 10 Pending Service Status */
    1819                 uint32_t SR9:1;        /* Channel 9 Pending Service Status */
    1820                 uint32_t SR8:1;        /* Channel 8 Pending Service Status */
    1821                 uint32_t SR7:1;        /* Channel 7 Pending Service Status */
    1822                 uint32_t SR6:1;        /* Channel 6 Pending Service Status */
    1823                 uint32_t SR5:1;        /* Channel 5 Pending Service Status */
    1824                 uint32_t SR4:1;        /* Channel 4 Pending Service Status */
    1825                 uint32_t SR3:1;        /* Channel 3 Pending Service Status */
    1826                 uint32_t SR2:1;        /* Channel 2 Pending Service Status */
    1827                 uint32_t SR1:1;        /* Channel 1 Pending Service Status */
    1828                 uint32_t SR0:1;        /* Channel 0 Pending Service Status */
    1829             } B;
    1830         } CPSSR_A;
    1831 
    1832         union {                 /* ETPU_B Channel Pending Service Status */
    1833             uint32_t R;
    1834             struct {
    1835                 uint32_t SR31:1;       /* Channel 31 Pending Service Status */
    1836                 uint32_t SR30:1;       /* Channel 30 Pending Service Status */
    1837                 uint32_t SR29:1;       /* Channel 29 Pending Service Status */
    1838                 uint32_t SR28:1;       /* Channel 28 Pending Service Status */
    1839                 uint32_t SR27:1;       /* Channel 27 Pending Service Status */
    1840                 uint32_t SR26:1;       /* Channel 26 Pending Service Status */
    1841                 uint32_t SR25:1;       /* Channel 25 Pending Service Status */
    1842                 uint32_t SR24:1;       /* Channel 24 Pending Service Status */
    1843                 uint32_t SR23:1;       /* Channel 23 Pending Service Status */
    1844                 uint32_t SR22:1;       /* Channel 22 Pending Service Status */
    1845                 uint32_t SR21:1;       /* Channel 21 Pending Service Status */
    1846                 uint32_t SR20:1;       /* Channel 20 Pending Service Status */
    1847                 uint32_t SR19:1;       /* Channel 19 Pending Service Status */
    1848                 uint32_t SR18:1;       /* Channel 18 Pending Service Status */
    1849                 uint32_t SR17:1;       /* Channel 17 Pending Service Status */
    1850                 uint32_t SR16:1;       /* Channel 16 Pending Service Status */
    1851                 uint32_t SR15:1;       /* Channel 15 Pending Service Status */
    1852                 uint32_t SR14:1;       /* Channel 14 Pending Service Status */
    1853                 uint32_t SR13:1;       /* Channel 13 Pending Service Status */
    1854                 uint32_t SR12:1;       /* Channel 12 Pending Service Status */
    1855                 uint32_t SR11:1;       /* Channel 11 Pending Service Status */
    1856                 uint32_t SR10:1;       /* Channel 10 Pending Service Status */
    1857                 uint32_t SR9:1;        /* Channel 9 Pending Service Status */
    1858                 uint32_t SR8:1;        /* Channel 8 Pending Service Status */
    1859                 uint32_t SR7:1;        /* Channel 7 Pending Service Status */
    1860                 uint32_t SR6:1;        /* Channel 6 Pending Service Status */
    1861                 uint32_t SR5:1;        /* Channel 5 Pending Service Status */
    1862                 uint32_t SR4:1;        /* Channel 4 Pending Service Status */
    1863                 uint32_t SR3:1;        /* Channel 3 Pending Service Status */
    1864                 uint32_t SR2:1;        /* Channel 2 Pending Service Status */
    1865                 uint32_t SR1:1;        /* Channel 1 Pending Service Status */
    1866                 uint32_t SR0:1;        /* Channel 0 Pending Service Status */
    1867             } B;
    1868         } CPSSR_B;
    1869 
    1870         uint32_t etpu_reserved20a[2];
    1871 
    1872         union {                 /* ETPU_A Channel Service Status */
    1873             uint32_t R;
    1874             struct {
    1875                 uint32_t SS31:1;       /* Channel 31 Service Status */
    1876                 uint32_t SS30:1;       /* Channel 30 Service Status */
    1877                 uint32_t SS29:1;       /* Channel 29 Service Status */
    1878                 uint32_t SS28:1;       /* Channel 28 Service Status */
    1879                 uint32_t SS27:1;       /* Channel 27 Service Status */
    1880                 uint32_t SS26:1;       /* Channel 26 Service Status */
    1881                 uint32_t SS25:1;       /* Channel 25 Service Status */
    1882                 uint32_t SS24:1;       /* Channel 24 Service Status */
    1883                 uint32_t SS23:1;       /* Channel 23 Service Status */
    1884                 uint32_t SS22:1;       /* Channel 22 Service Status */
    1885                 uint32_t SS21:1;       /* Channel 21 Service Status */
    1886                 uint32_t SS20:1;       /* Channel 20 Service Status */
    1887                 uint32_t SS19:1;       /* Channel 19 Service Status */
    1888                 uint32_t SS18:1;       /* Channel 18 Service Status */
    1889                 uint32_t SS17:1;       /* Channel 17 Service Status */
    1890                 uint32_t SS16:1;       /* Channel 16 Service Status */
    1891                 uint32_t SS15:1;       /* Channel 15 Service Status */
    1892                 uint32_t SS14:1;       /* Channel 14 Service Status */
    1893                 uint32_t SS13:1;       /* Channel 13 Service Status */
    1894                 uint32_t SS12:1;       /* Channel 12 Service Status */
    1895                 uint32_t SS11:1;       /* Channel 11 Service Status */
    1896                 uint32_t SS10:1;       /* Channel 10 Service Status */
    1897                 uint32_t SS9:1;        /* Channel 9 Service Status */
    1898                 uint32_t SS8:1;        /* Channel 8 Service Status */
    1899                 uint32_t SS7:1;        /* Channel 7 Service Status */
    1900                 uint32_t SS6:1;        /* Channel 6 Service Status */
    1901                 uint32_t SS5:1;        /* Channel 5 Service Status */
    1902                 uint32_t SS4:1;        /* Channel 4 Service Status */
    1903                 uint32_t SS3:1;        /* Channel 3 Service Status */
    1904                 uint32_t SS2:1;        /* Channel 2 Service Status */
    1905                 uint32_t SS1:1;        /* Channel 1 Service Status */
    1906                 uint32_t SS0:1;        /* Channel 0 Service Status */
    1907             } B;
    1908         } CSSR_A;
    1909 
    1910         union {                 /* ETPU_B Channel Service Status */
    1911             uint32_t R;
    1912             struct {
    1913                 uint32_t SS31:1;       /* Channel 31 Service Status */
    1914                 uint32_t SS30:1;       /* Channel 30 Service Status */
    1915                 uint32_t SS29:1;       /* Channel 29 Service Status */
    1916                 uint32_t SS28:1;       /* Channel 28 Service Status */
    1917                 uint32_t SS27:1;       /* Channel 27 Service Status */
    1918                 uint32_t SS26:1;       /* Channel 26 Service Status */
    1919                 uint32_t SS25:1;       /* Channel 25 Service Status */
    1920                 uint32_t SS24:1;       /* Channel 24 Service Status */
    1921                 uint32_t SS23:1;       /* Channel 23 Service Status */
    1922                 uint32_t SS22:1;       /* Channel 22 Service Status */
    1923                 uint32_t SS21:1;       /* Channel 21 Service Status */
    1924                 uint32_t SS20:1;       /* Channel 20 Service Status */
    1925                 uint32_t SS19:1;       /* Channel 19 Service Status */
    1926                 uint32_t SS18:1;       /* Channel 18 Service Status */
    1927                 uint32_t SS17:1;       /* Channel 17 Service Status */
    1928                 uint32_t SS16:1;       /* Channel 16 Service Status */
    1929                 uint32_t SS15:1;       /* Channel 15 Service Status */
    1930                 uint32_t SS14:1;       /* Channel 14 Service Status */
    1931                 uint32_t SS13:1;       /* Channel 13 Service Status */
    1932                 uint32_t SS12:1;       /* Channel 12 Service Status */
    1933                 uint32_t SS11:1;       /* Channel 11 Service Status */
    1934                 uint32_t SS10:1;       /* Channel 10 Service Status */
    1935                 uint32_t SS9:1;        /* Channel 9 Service Status */
    1936                 uint32_t SS8:1;        /* Channel 8 Service Status */
    1937                 uint32_t SS7:1;        /* Channel 7 Service Status */
    1938                 uint32_t SS6:1;        /* Channel 6 Service Status */
    1939                 uint32_t SS5:1;        /* Channel 5 Service Status */
    1940                 uint32_t SS4:1;        /* Channel 4 Service Status */
    1941                 uint32_t SS3:1;        /* Channel 3 Service Status */
    1942                 uint32_t SS2:1;        /* Channel 2 Service Status */
    1943                 uint32_t SS1:1;        /* Channel 1 Service Status */
    1944                 uint32_t SS0:1;        /* Channel 0 Service Status */
    1945             } B;
    1946         } CSSR_B;
    1947 
    1948         uint32_t etpu_reserved23[90];
    1949 
    1950 /*****************************Channels********************************/
    1951 
    1952         struct {
    1953             union {
    1954                 uint32_t R;    /* Channel Configuration Register */
    1955                 struct {
    1956                     uint32_t CIE:1;    /* Channel Interruput Enable */
    1957                     uint32_t DTRE:1;   /* Data Transfer Request Enable */
    1958                     uint32_t CPR:2;    /* Channel Priority */
    1959                       uint32_t:3;
    1960                     uint32_t ETCS:1;   /* Entry Table Condition Select */
    1961                       uint32_t:3;
    1962                     uint32_t CFS:5;    /* Channel Function Select */
    1963                     uint32_t ODIS:1;   /* Output disable */
    1964                     uint32_t OPOL:1;   /* output polarity */
    1965                       uint32_t:3;
    1966                     uint32_t CPBA:11;  /* Channel Parameter Base Address */
    1967                 } B;
    1968             } CR;
    1969             union {
    1970                 uint32_t R;    /* Channel Status Control Register */
    1971                 struct {
    1972                     uint32_t CIS:1;    /* Channel Interruput Status */
    1973                     uint32_t CIOS:1;   /* Channel Interruput Overflow Status */
    1974                       uint32_t:6;
    1975                     uint32_t DTRS:1;   /* Data Transfer Status */
    1976                     uint32_t DTROS:1;  /* Data Transfer Overflow Status */
    1977                       uint32_t:6;
    1978                     uint32_t IPS:1;    /* Input Pin State */
    1979                     uint32_t OPS:1;    /* Output Pin State */
    1980                     uint32_t OBE:1;    /* Output Buffer Enable */
    1981                       uint32_t:11;
    1982                     uint32_t FM1:1;    /* Function mode */
    1983                     uint32_t FM0:1;    /* Function mode */
    1984                 } B;
    1985             } SCR;
    1986             union {
    1987                 uint32_t R;    /* Channel Host Service Request Register */
    1988                 struct {
    1989                     uint32_t:29;       /* Host Service Request */
    1990                     uint32_t HSR:3;
    1991                 } B;
    1992             } HSRR;
    1993             uint32_t etpu_reserved23;
    1994         } CHAN[127];
    1995 
    1996     };
    1997 /****************************************************************************/
    1998 /*                          MODULE : XBAR CrossBar                          */
    1999 /****************************************************************************/
    2000     struct XBAR_tag {
    2001         union {
    2002             uint32_t R;
    2003             struct {
    2004                 uint32_t:4;
    2005 
    2006                 uint32_t:4;
    2007 
    2008                 uint32_t:4;
    2009 
    2010                 uint32_t:4;
    2011 
    2012                 uint32_t:1;
    2013                 uint32_t MSTR3:3;      /* FEC */
    2014 
    2015                   uint32_t:1;
    2016                 uint32_t MSTR2:3;
    2017                   uint32_t:1;
    2018                 uint32_t MSTR1:3;
    2019                   uint32_t:1;
    2020                 uint32_t MSTR0:3;
    2021             } B;
    2022         } MPR0;                 /* Master Priority Register for Slave Port 0 */
    2023 
    2024         uint32_t xbar_reserved1[3];
    2025 
    2026         union {
    2027             uint32_t R;
    2028             struct {
    2029                 uint32_t RO:1;
    2030                   uint32_t:21;
    2031                 uint32_t ARB:2;
    2032                   uint32_t:2;
    2033                 uint32_t PCTL:2;
    2034                   uint32_t:1;
    2035                 uint32_t PARK:3;
    2036             } B;
    2037         } SGPCR0;               /* General Purpose Control Register for Slave Port 0 */
    2038 
    2039         uint32_t xbar_reserved2[59];
    2040 
    2041         union {
    2042             uint32_t R;
    2043             struct {
    2044                 uint32_t:4;
    2045 
    2046                 uint32_t:4;
    2047 
    2048                 uint32_t:4;
    2049 
    2050                 uint32_t:4;
    2051 
    2052                 uint32_t:1;
    2053                 uint32_t MSTR3:3;      /* FEC */
    2054 
    2055                   uint32_t:1;
    2056                 uint32_t MSTR2:3;
    2057                   uint32_t:1;
    2058                 uint32_t MSTR1:3;
    2059                   uint32_t:1;
    2060                 uint32_t MSTR0:3;
    2061             } B;
    2062         } MPR1;                 /* Master Priority Register for Slave Port 1 */
    2063 
    2064         uint32_t xbar_reserved3[3];
    2065 
    2066         union {
    2067             uint32_t R;
    2068             struct {
    2069                 uint32_t RO:1;
    2070                   uint32_t:21;
    2071                 uint32_t ARB:2;
    2072                   uint32_t:2;
    2073                 uint32_t PCTL:2;
    2074                   uint32_t:1;
    2075                 uint32_t PARK:3;
    2076             } B;
    2077         } SGPCR1;               /* General Purpose Control Register for Slave Port 1 */
    2078 
    2079         uint32_t xbar_reserved4[123];
    2080 
    2081         union {
    2082             uint32_t R;
    2083             struct {
    2084                 uint32_t:4;
    2085 
    2086                 uint32_t:4;
    2087 
    2088                 uint32_t:4;
    2089 
    2090                 uint32_t:4;
    2091 
    2092                 uint32_t:1;
    2093                 uint32_t MSTR3:3;      /* FEC */
    2094 
    2095                   uint32_t:1;
    2096                 uint32_t MSTR2:3;
    2097                   uint32_t:1;
    2098                 uint32_t MSTR1:3;
    2099                   uint32_t:1;
    2100                 uint32_t MSTR0:3;
    2101             } B;
    2102         } MPR3;                 /* Master Priority Register for Slave Port 3 */
    2103 
    2104         uint32_t xbar_reserved5[3];
    2105 
    2106         union {
    2107             uint32_t R;
    2108             struct {
    2109                 uint32_t RO:1;
    2110                   uint32_t:21;
    2111                 uint32_t ARB:2;
    2112                   uint32_t:2;
    2113                 uint32_t PCTL:2;
    2114                   uint32_t:1;
    2115                 uint32_t PARK:3;
    2116             } B;
    2117         } SGPCR3;               /* General Purpose Control Register for Slave Port 3 */
    2118 
    2119         uint32_t xbar_reserved6[187];
    2120 
    2121         union {
    2122             uint32_t R;
    2123             struct {
    2124                 uint32_t:4;
    2125 
    2126                 uint32_t:4;
    2127 
    2128                 uint32_t:4;
    2129 
    2130                 uint32_t:4;
    2131 
    2132                 uint32_t:1;
    2133                 uint32_t MSTR3:3;      /* FEC */
    2134 
    2135                   uint32_t:1;
    2136                 uint32_t MSTR2:3;
    2137                   uint32_t:1;
    2138                 uint32_t MSTR1:3;
    2139                   uint32_t:1;
    2140                 uint32_t MSTR0:3;
    2141             } B;
    2142         } MPR6;                 /* Master Priority Register for Slave Port 6 */
    2143 
    2144         uint32_t xbar_reserved7[3];
    2145 
    2146         union {
    2147             uint32_t R;
    2148             struct {
    2149                 uint32_t RO:1;
    2150                   uint32_t:21;
    2151                 uint32_t ARB:2;
    2152                   uint32_t:2;
    2153                 uint32_t PCTL:2;
    2154                   uint32_t:1;
    2155                 uint32_t PARK:3;
    2156             } B;
    2157         } SGPCR6;               /* General Purpose Control Register for Slave Port 6 */
    2158 
    2159         uint32_t xbar_reserved8[59];
    2160 
    2161         union {
    2162             uint32_t R;
    2163             struct {
    2164                 uint32_t:4;
    2165 
    2166                 uint32_t:4;
    2167 
    2168                 uint32_t:4;
    2169 
    2170                 uint32_t:4;
    2171 
    2172                 uint32_t:1;
    2173                 uint32_t MSTR3:3;      /* FEC */
    2174 
    2175                   uint32_t:1;
    2176                 uint32_t MSTR2:3;
    2177                   uint32_t:1;
    2178                 uint32_t MSTR1:3;
    2179                   uint32_t:1;
    2180                 uint32_t MSTR0:3;
    2181             } B;
    2182         } MPR7;                 /* Master Priority Register for Slave Port 7 */
    2183 
    2184         uint32_t xbar_reserved9[3];
    2185 
    2186         union {
    2187             uint32_t R;
    2188             struct {
    2189                 uint32_t RO:1;
    2190                   uint32_t:21;
    2191                 uint32_t ARB:2;
    2192                   uint32_t:2;
    2193                 uint32_t PCTL:2;
    2194                   uint32_t:1;
    2195                 uint32_t PARK:3;
    2196             } B;
    2197         } SGPCR7;               /* General Purpose Control Register for Slave Port 7 */
    2198 
    2199     };
    2200 /****************************************************************************/
    2201 /*                     MODULE : ECSM                                        */
    2202 /****************************************************************************/
    2203     struct ECSM_tag {
    2204 
    2205         uint32_t ecsm_reserved1[5];
    2206 
    2207         uint16_t ecsm_reserved2;
    2208 
    2209         union {
    2210             uint16_t R;
    2211         } SWTCR;                /* Software Watchdog Timer Control */
    2212 
    2213         uint8_t ecsm_reserved3[3];
    2214 
    2215         union {
    2216             uint8_t R;
    2217         } SWTSR;                /* SWT Service Register */
    2218 
    2219         uint8_t ecsm_reserved4[3];
    2220 
    2221         union {
    2222             uint8_t R;
    2223         } SWTIR;                /* SWT Interrupt Register */
    2224 
    2225         uint32_t ecsm_reserved5a[1];
    2226 
    2227         union {
    2228             uint32_t R;
    2229             struct {
    2230                 uint32_t FSBCR0:1;
    2231                 uint32_t FSBCR1:1;
    2232                 uint32_t FSBCR2:1;
    2233                 uint32_t FSBCR3:1;
    2234                 uint32_t FSBCR4:1;
    2235                 uint32_t FSBCR5:1;
    2236                 uint32_t FSBCR6:1;
    2237                 uint32_t FSBCR7:1;
    2238                 uint32_t RBEN:1;
    2239                 uint32_t WBEN:1;
    2240                 uint32_t ACCERR:1;
    2241                   uint32_t:21;
    2242             } B;
    2243         } FSBMCR;               /*  FEC System Bus Master Control Register */
    2244 
    2245         uint32_t ecsm_reserved5c[6];
    2246 
    2247         uint8_t ecsm_reserved6[3];
    2248 
    2249         union {
    2250             uint8_t R;
    2251             struct {
    2252                 uint8_t:6;
    2253                 uint8_t ERNCR:1;
    2254                 uint8_t EFNCR:1;
    2255             } B;
    2256         } ECR;                  /* ECC Configuration Register */
    2257 
    2258         uint8_t mcm_reserved8[3];
    2259 
    2260         union {
    2261             uint8_t R;
    2262             struct {
    2263                 uint8_t:6;
    2264                 uint8_t RNCE:1;
    2265                 uint8_t FNCE:1;
    2266             } B;
    2267         } ESR;                  /* ECC Status Register */
    2268 
    2269         uint16_t ecsm_reserved9;
    2270 
    2271         union {
    2272             uint16_t R;
    2273             struct {
    2274                 uint16_t:6;
    2275                 uint16_t FRCNCI:1;
    2276                 uint16_t FR1NCI:1;
    2277                   uint16_t:1;
    2278                 uint16_t ERRBIT:7;
    2279             } B;
    2280         } EEGR;                 /* ECC Error Generation Register */
    2281 
    2282         uint32_t ecsm_reserved10;
    2283 
    2284         union {
    2285             uint32_t R;
    2286             struct {
    2287                 uint32_t FEAR:32;
    2288             } B;
    2289         } FEAR;                 /* Flash ECC Address Register */
    2290 
    2291         uint16_t ecsm_reserved11;
    2292 
    2293         union {
    2294             uint8_t R;
    2295             struct {
    2296                 uint8_t:4;
    2297                 uint8_t FEMR:4;
    2298             } B;
    2299         } FEMR;                 /* Flash ECC Master Register */
    2300 
    2301         union {
    2302             uint8_t R;
    2303             struct {
    2304                 uint8_t WRITE:1;
    2305                 uint8_t SIZE:3;
    2306                 uint8_t PROT0:1;
    2307                 uint8_t PROT1:1;
    2308                 uint8_t PROT2:1;
    2309                 uint8_t PROT3:1;
    2310             } B;
    2311         } FEAT;                 /* Flash ECC Attributes Register */
    2312 
    2313         union {
    2314             uint32_t R;
    2315             struct {
    2316                 uint32_t FEDH:32;
    2317             } B;
    2318         } FEDRH;                /* Flash ECC Data High Register */
    2319 
    2320         union {
    2321             uint32_t R;
    2322             struct {
    2323                 uint32_t FEDL:32;
    2324             } B;
    2325         } FEDRL;                /* Flash ECC Data Low Register */
    2326 
    2327         union {
    2328             uint32_t R;
    2329             struct {
    2330                 uint32_t REAR:32;
    2331             } B;
    2332         } REAR;                 /* RAM ECC Address */
    2333 
    2334         uint8_t ecsm_reserved12[2];
    2335 
    2336         union {
    2337             uint8_t R;
    2338             struct {
    2339                 uint8_t:4;
    2340                 uint8_t REMR:4;
    2341             } B;
    2342         } REMR;                 /* RAM ECC Master */
    2343 
    2344         union {
    2345             uint8_t R;
    2346             struct {
    2347                 uint8_t WRITE:1;
    2348                 uint8_t SIZE:3;
    2349                 uint8_t PROT0:1;
    2350                 uint8_t PROT1:1;
    2351                 uint8_t PROT2:1;
    2352                 uint8_t PROT3:1;
    2353             } B;
    2354         } REAT;                 /*  RAM ECC Attributes Register */
    2355 
    2356         union {
    2357             uint32_t R;
    2358             struct {
    2359                 uint32_t REDH:32;
    2360             } B;
    2361         } REDRH;                /* RAM ECC Data High Register */
    2362 
    2363         union {
    2364             uint32_t R;
    2365             struct {
    2366                 uint32_t REDL:32;
    2367             } B;
    2368         } REDRL;                /* RAMECC Data Low Register */
    2369 
    2370     };
    2371 /****************************************************************************/
    2372 /*                          MODULE : eDMA                                   */
    2373 /****************************************************************************/
    2374     struct EDMA_tag {
    2375         union {
    2376             uint32_t R;
    2377             struct {
    2378                 uint32_t:16;
    2379                 uint32_t GRP3PRI:2;
    2380                 uint32_t GRP2PRI:2;
    2381                 uint32_t GRP1PRI:2;
    2382                 uint32_t GRP0PRI:2;
    2383                   uint32_t:4;
    2384                 uint32_t ERGA:1;
    2385                 uint32_t ERCA:1;
    2386                 uint32_t EDBG:1;
    2387                 uint32_t EBW:1;
    2388             } B;
    2389         } CR;                   /* Control Register */
    2390 
    2391         union {
    2392             uint32_t R;
    2393             struct {
    2394                 uint32_t VLD:1;
    2395                   uint32_t:15;
    2396                 uint32_t GPE:1;
    2397                 uint32_t CPE:1;
    2398                 uint32_t ERRCHN:6;
    2399                 uint32_t SAE:1;
    2400                 uint32_t SOE:1;
    2401                 uint32_t DAE:1;
    2402                 uint32_t DOE:1;
    2403                 uint32_t NCE:1;
    2404                 uint32_t SGE:1;
    2405                 uint32_t SBE:1;
    2406                 uint32_t DBE:1;
    2407             } B;
    2408         } ESR;                  /* Error Status Register */
    2409 
    2410         union {
    2411             uint32_t R;
    2412             struct {
    2413                 uint32_t ERQ63:1;
    2414                 uint32_t ERQ62:1;
    2415                 uint32_t ERQ61:1;
    2416                 uint32_t ERQ60:1;
    2417                 uint32_t ERQ59:1;
    2418                 uint32_t ERQ58:1;
    2419                 uint32_t ERQ57:1;
    2420                 uint32_t ERQ56:1;
    2421                 uint32_t ERQ55:1;
    2422                 uint32_t ERQ54:1;
    2423                 uint32_t ERQ53:1;
    2424                 uint32_t ERQ52:1;
    2425                 uint32_t ERQ51:1;
    2426                 uint32_t ERQ50:1;
    2427                 uint32_t ERQ49:1;
    2428                 uint32_t ERQ48:1;
    2429                 uint32_t ERQ47:1;
    2430                 uint32_t ERQ46:1;
    2431                 uint32_t ERQ45:1;
    2432                 uint32_t ERQ44:1;
    2433                 uint32_t ERQ43:1;
    2434                 uint32_t ERQ42:1;
    2435                 uint32_t ERQ41:1;
    2436                 uint32_t ERQ40:1;
    2437                 uint32_t ERQ39:1;
    2438                 uint32_t ERQ38:1;
    2439                 uint32_t ERQ37:1;
    2440                 uint32_t ERQ36:1;
    2441                 uint32_t ERQ35:1;
    2442                 uint32_t ERQ34:1;
    2443                 uint32_t ERQ33:1;
    2444                 uint32_t ERQ32:1;
    2445             } B;
    2446         } ERQRH;                /* DMA Enable Request Register High */
    2447 
    2448         union {
    2449             uint32_t R;
    2450             struct {
    2451                 uint32_t ERQ31:1;
    2452                 uint32_t ERQ30:1;
    2453                 uint32_t ERQ29:1;
    2454                 uint32_t ERQ28:1;
    2455                 uint32_t ERQ27:1;
    2456                 uint32_t ERQ26:1;
    2457                 uint32_t ERQ25:1;
    2458                 uint32_t ERQ24:1;
    2459                 uint32_t ERQ23:1;
    2460                 uint32_t ERQ22:1;
    2461                 uint32_t ERQ21:1;
    2462                 uint32_t ERQ20:1;
    2463                 uint32_t ERQ19:1;
    2464                 uint32_t ERQ18:1;
    2465                 uint32_t ERQ17:1;
    2466                 uint32_t ERQ16:1;
    2467                 uint32_t ERQ15:1;
    2468                 uint32_t ERQ14:1;
    2469                 uint32_t ERQ13:1;
    2470                 uint32_t ERQ12:1;
    2471                 uint32_t ERQ11:1;
    2472                 uint32_t ERQ10:1;
    2473                 uint32_t ERQ09:1;
    2474                 uint32_t ERQ08:1;
    2475                 uint32_t ERQ07:1;
    2476                 uint32_t ERQ06:1;
    2477                 uint32_t ERQ05:1;
    2478                 uint32_t ERQ04:1;
    2479                 uint32_t ERQ03:1;
    2480                 uint32_t ERQ02:1;
    2481                 uint32_t ERQ01:1;
    2482                 uint32_t ERQ00:1;
    2483             } B;
    2484         } ERQRL;                /* DMA Enable Request Register Low */
    2485 
    2486         union {
    2487             uint32_t R;
    2488             struct {
    2489                 uint32_t EEI63:1;
    2490                 uint32_t EEI62:1;
    2491                 uint32_t EEI61:1;
    2492                 uint32_t EEI60:1;
    2493                 uint32_t EEI59:1;
    2494                 uint32_t EEI58:1;
    2495                 uint32_t EEI57:1;
    2496                 uint32_t EEI56:1;
    2497                 uint32_t EEI55:1;
    2498                 uint32_t EEI54:1;
    2499                 uint32_t EEI53:1;
    2500                 uint32_t EEI52:1;
    2501                 uint32_t EEI51:1;
    2502                 uint32_t EEI50:1;
    2503                 uint32_t EEI49:1;
    2504                 uint32_t EEI48:1;
    2505                 uint32_t EEI47:1;
    2506                 uint32_t EEI46:1;
    2507                 uint32_t EEI45:1;
    2508                 uint32_t EEI44:1;
    2509                 uint32_t EEI43:1;
    2510                 uint32_t EEI42:1;
    2511                 uint32_t EEI41:1;
    2512                 uint32_t EEI40:1;
    2513                 uint32_t EEI39:1;
    2514                 uint32_t EEI38:1;
    2515                 uint32_t EEI37:1;
    2516                 uint32_t EEI36:1;
    2517                 uint32_t EEI35:1;
    2518                 uint32_t EEI34:1;
    2519                 uint32_t EEI33:1;
    2520                 uint32_t EEI32:1;
    2521             } B;
    2522         } EEIRH;                /* DMA Enable Error Interrupt Register High */
    2523 
    2524         union {
    2525             uint32_t R;
    2526             struct {
    2527                 uint32_t EEI31:1;
    2528                 uint32_t EEI30:1;
    2529                 uint32_t EEI29:1;
    2530                 uint32_t EEI28:1;
    2531                 uint32_t EEI27:1;
    2532                 uint32_t EEI26:1;
    2533                 uint32_t EEI25:1;
    2534                 uint32_t EEI24:1;
    2535                 uint32_t EEI23:1;
    2536                 uint32_t EEI22:1;
    2537                 uint32_t EEI21:1;
    2538                 uint32_t EEI20:1;
    2539                 uint32_t EEI19:1;
    2540                 uint32_t EEI18:1;
    2541                 uint32_t EEI17:1;
    2542                 uint32_t EEI16:1;
    2543                 uint32_t EEI15:1;
    2544                 uint32_t EEI14:1;
    2545                 uint32_t EEI13:1;
    2546                 uint32_t EEI12:1;
    2547                 uint32_t EEI11:1;
    2548                 uint32_t EEI10:1;
    2549                 uint32_t EEI09:1;
    2550                 uint32_t EEI08:1;
    2551                 uint32_t EEI07:1;
    2552                 uint32_t EEI06:1;
    2553                 uint32_t EEI05:1;
    2554                 uint32_t EEI04:1;
    2555                 uint32_t EEI03:1;
    2556                 uint32_t EEI02:1;
    2557                 uint32_t EEI01:1;
    2558                 uint32_t EEI00:1;
    2559             } B;
    2560         } EEIRL;                /* DMA Enable Error Interrupt Register Low */
    2561 
    2562         union {
    2563             uint8_t R;
    2564             uint8_t B;
    2565         } SERQR;                /* DMA Set Enable Request Register */
    2566 
    2567         union {
    2568             uint8_t R;
    2569             uint8_t B;
    2570         } CERQR;                /* DMA Clear Enable Request Register */
    2571 
    2572         union {
    2573             uint8_t R;
    2574             uint8_t B;
    2575         } SEEIR;                /* DMA Set Enable Error Interrupt Register */
    2576 
    2577         union {
    2578             uint8_t R;
    2579             uint8_t B;
    2580         } CEEIR;                /* DMA Clear Enable Error Interrupt REgister */
    2581 
    2582         union {
    2583             uint8_t R;
    2584             uint8_t B;
    2585         } CIRQR;                /* DMA Clear Interrupt Request Register */
    2586 
    2587         union {
    2588             uint8_t R;
    2589             uint8_t B;
    2590         } CER;                  /* DMA Clear error Register */
    2591 
    2592         union {
    2593             uint8_t R;
    2594             uint8_t B;
    2595         } SSBR;                 /* Set Start Bit Register */
    2596 
    2597         union {
    2598             uint8_t R;
    2599             uint8_t B;
    2600         } CDSBR;                /* Clear Done Status Bit Register */
    2601 
    2602         union {
    2603             uint32_t R;
    2604             struct {
    2605                 uint32_t INT63:1;
    2606                 uint32_t INT62:1;
    2607                 uint32_t INT61:1;
    2608                 uint32_t INT60:1;
    2609                 uint32_t INT59:1;
    2610                 uint32_t INT58:1;
    2611                 uint32_t INT57:1;
    2612                 uint32_t INT56:1;
    2613                 uint32_t INT55:1;
    2614                 uint32_t INT54:1;
    2615                 uint32_t INT53:1;
    2616                 uint32_t INT52:1;
    2617                 uint32_t INT51:1;
    2618                 uint32_t INT50:1;
    2619                 uint32_t INT49:1;
    2620                 uint32_t INT48:1;
    2621                 uint32_t INT47:1;
    2622                 uint32_t INT46:1;
    2623                 uint32_t INT45:1;
    2624                 uint32_t INT44:1;
    2625                 uint32_t INT43:1;
    2626                 uint32_t INT42:1;
    2627                 uint32_t INT41:1;
    2628                 uint32_t INT40:1;
    2629                 uint32_t INT39:1;
    2630                 uint32_t INT38:1;
    2631                 uint32_t INT37:1;
    2632                 uint32_t INT36:1;
    2633                 uint32_t INT35:1;
    2634                 uint32_t INT34:1;
    2635                 uint32_t INT33:1;
    2636                 uint32_t INT32:1;
    2637             } B;
    2638         } IRQRH;                /* DMA Interrupt Request High */
    2639 
    2640         union {
    2641             uint32_t R;
    2642             struct {
    2643                 uint32_t INT31:1;
    2644                 uint32_t INT30:1;
    2645                 uint32_t INT29:1;
    2646                 uint32_t INT28:1;
    2647                 uint32_t INT27:1;
    2648                 uint32_t INT26:1;
    2649                 uint32_t INT25:1;
    2650                 uint32_t INT24:1;
    2651                 uint32_t INT23:1;
    2652                 uint32_t INT22:1;
    2653                 uint32_t INT21:1;
    2654                 uint32_t INT20:1;
    2655                 uint32_t INT19:1;
    2656                 uint32_t INT18:1;
    2657                 uint32_t INT17:1;
    2658                 uint32_t INT16:1;
    2659                 uint32_t INT15:1;
    2660                 uint32_t INT14:1;
    2661                 uint32_t INT13:1;
    2662                 uint32_t INT12:1;
    2663                 uint32_t INT11:1;
    2664                 uint32_t INT10:1;
    2665                 uint32_t INT09:1;
    2666                 uint32_t INT08:1;
    2667                 uint32_t INT07:1;
    2668                 uint32_t INT06:1;
    2669                 uint32_t INT05:1;
    2670                 uint32_t INT04:1;
    2671                 uint32_t INT03:1;
    2672                 uint32_t INT02:1;
    2673                 uint32_t INT01:1;
    2674                 uint32_t INT00:1;
    2675             } B;
    2676         } IRQRL;                /* DMA Interrupt Request Low */
    2677 
    2678         union {
    2679             uint32_t R;
    2680             struct {
    2681                 uint32_t ERR63:1;
    2682                 uint32_t ERR62:1;
    2683                 uint32_t ERR61:1;
    2684                 uint32_t ERR60:1;
    2685                 uint32_t ERR59:1;
    2686                 uint32_t ERR58:1;
    2687                 uint32_t ERR57:1;
    2688                 uint32_t ERR56:1;
    2689                 uint32_t ERR55:1;
    2690                 uint32_t ERR54:1;
    2691                 uint32_t ERR53:1;
    2692                 uint32_t ERR52:1;
    2693                 uint32_t ERR51:1;
    2694                 uint32_t ERR50:1;
    2695                 uint32_t ERR49:1;
    2696                 uint32_t ERR48:1;
    2697                 uint32_t ERR47:1;
    2698                 uint32_t ERR46:1;
    2699                 uint32_t ERR45:1;
    2700                 uint32_t ERR44:1;
    2701                 uint32_t ERR43:1;
    2702                 uint32_t ERR42:1;
    2703                 uint32_t ERR41:1;
    2704                 uint32_t ERR40:1;
    2705                 uint32_t ERR39:1;
    2706                 uint32_t ERR38:1;
    2707                 uint32_t ERR37:1;
    2708                 uint32_t ERR36:1;
    2709                 uint32_t ERR35:1;
    2710                 uint32_t ERR34:1;
    2711                 uint32_t ERR33:1;
    2712                 uint32_t ERR32:1;
    2713             } B;
    2714         } ERH;                  /* DMA Error High */
    2715 
    2716         union {
    2717             uint32_t R;
    2718             struct {
    2719                 uint32_t ERR31:1;
    2720                 uint32_t ERR30:1;
    2721                 uint32_t ERR29:1;
    2722                 uint32_t ERR28:1;
    2723                 uint32_t ERR27:1;
    2724                 uint32_t ERR26:1;
    2725                 uint32_t ERR25:1;
    2726                 uint32_t ERR24:1;
    2727                 uint32_t ERR23:1;
    2728                 uint32_t ERR22:1;
    2729                 uint32_t ERR21:1;
    2730                 uint32_t ERR20:1;
    2731                 uint32_t ERR19:1;
    2732                 uint32_t ERR18:1;
    2733                 uint32_t ERR17:1;
    2734                 uint32_t ERR16:1;
    2735                 uint32_t ERR15:1;
    2736                 uint32_t ERR14:1;
    2737                 uint32_t ERR13:1;
    2738                 uint32_t ERR12:1;
    2739                 uint32_t ERR11:1;
    2740                 uint32_t ERR10:1;
    2741                 uint32_t ERR09:1;
    2742                 uint32_t ERR08:1;
    2743                 uint32_t ERR07:1;
    2744                 uint32_t ERR06:1;
    2745                 uint32_t ERR05:1;
    2746                 uint32_t ERR04:1;
    2747                 uint32_t ERR03:1;
    2748                 uint32_t ERR02:1;
    2749                 uint32_t ERR01:1;
    2750                 uint32_t ERR00:1;
    2751             } B;
    2752         } ERL;                  /* DMA Error Low */
    2753 
    2754         uint32_t edma_reserved1[52];
    2755 
    2756         union {
    2757             uint8_t R;
    2758             struct {
    2759                 uint8_t ECP:1;
    2760                   uint8_t:1;
    2761                 uint8_t GRPPRI:2;
    2762                 uint8_t CHPRI:4;
    2763             } B;
    2764         } CPR[64];
    2765 
    2766         uint32_t edma_reserved2[944];
    2767 
    2768 /****************************************************************************/
    2769 /*       DMA2 Transfer Control Descriptor                                   */
    2770 /****************************************************************************/
    2771         struct tcd_t {
    2772             uint32_t SADDR;    /* source address */
    2773 
    2774             /* Source and destination fields */
    2775             union tcd_SDF_tag {
    2776                 uint32_t R;
    2777                 struct {
    2778                     uint16_t SMOD:5;   /* source address modulo */
    2779                     uint16_t SSIZE:3;  /* source transfer size */
    2780                     uint16_t DMOD:5;   /* destination address modulo */
    2781                     uint16_t DSIZE:3;  /* destination transfer size */
    2782                     int16_t SOFF;      /* signed source address offset */
    2783                 } B;
    2784             } SDF;
    2785 
    2786             uint32_t NBYTES;   /* inner (“minor”) byte count */
    2787 
    2788             int32_t SLAST;     /* last destination address adjustment, or
    2789                                    scatter/gather address (if e_sg = 1) */
    2790 
    2791             uint32_t DADDR;    /* destination address */
    2792 
    2793             /* CITER and destination fields */
    2794             union tcd_CDF_tag {
    2795                 uint32_t R;
    2796                 struct {
    2797                     uint16_t CITERE_LINK:1;
    2798                     uint16_t CITER:15;
    2799                     int16_t DOFF;      /* signed destination address offset */
    2800                 } B;
    2801                 struct {
    2802                     uint16_t CITERE_LINK:1;
    2803                     uint16_t CITERLINKCH:6;
    2804                     uint16_t CITER:9;
    2805                     int16_t DOFF;
    2806                 } B_ALT;
    2807             } CDF;
    2808 
    2809             int32_t DLAST_SGA;
    2810 
    2811             /* BITER and misc fields */
    2812             union tcd_BMF_tag {
    2813                 uint32_t R;
    2814                 struct {
    2815                     uint32_t BITERE_LINK:1;    /* beginning ("major") iteration count */
    2816                     uint32_t BITER:15;
    2817                     uint32_t BWC:2;    /* bandwidth control */
    2818                     uint32_t MAJORLINKCH:6;    /* enable channel-to-channel link */
    2819                     uint32_t DONE:1;   /* channel done */
    2820                     uint32_t ACTIVE:1; /* channel active */
    2821                     uint32_t MAJORE_LINK:1;    /* enable channel-to-channel link */
    2822                     uint32_t E_SG:1;   /* enable scatter/gather descriptor */
    2823                     uint32_t D_REQ:1;  /* disable ipd_req when done */
    2824                     uint32_t INT_HALF:1;       /* interrupt on citer = (biter >> 1) */
    2825                     uint32_t INT_MAJ:1;        /* interrupt on major loop completion */
    2826                     uint32_t START:1;  /* explicit channel start */
    2827                 } B;
    2828                 struct {
    2829                     uint32_t BITERE_LINK:1;
    2830                     uint32_t BITERLINKCH:6;
    2831                     uint32_t BITER:9;
    2832                     uint32_t BWC:2;
    2833                     uint32_t MAJORLINKCH:6;
    2834                     uint32_t DONE:1;
    2835                     uint32_t ACTIVE:1;
    2836                     uint32_t MAJORE_LINK:1;
    2837                     uint32_t E_SG:1;
    2838                     uint32_t D_REQ:1;
    2839                     uint32_t INT_HALF:1;
    2840                     uint32_t INT_MAJ:1;
    2841                     uint32_t START:1;
    2842                 } B_ALT;
    2843             } BMF;
    2844         } TCD[64];              /* transfer_control_descriptor */
    2845     };
    2846 
    2847 #ifndef __cplusplus
    2848     static const struct tcd_t EDMA_TCD_DEFAULT = {
    2849         .SADDR = 0,
    2850         .SDF = { .R = 0 },
    2851         .NBYTES = 0,
    2852         .SLAST = 0,
    2853         .DADDR = 0,
    2854         .CDF = { .R = 0 },
    2855         .DLAST_SGA = 0,
    2856         .BMF = { .R = 0 }
    2857     };
    2858 #endif
    2859 
    2860 #define EDMA_TCD_BITER_MASK 0x7fff
    2861 
    2862 #define EDMA_TCD_BITER_SIZE DSPI_TCD_BITER_MASK
    2863 
    2864 #define EDMA_TCD_BITER_LINKED_MASK 0x1ff
    2865 
    2866 #define EDMA_TCD_BITER_LINKED_SIZE 512
    2867 
    2868 #define EDMA_TCD_LINK_AND_BITER( link, biter) (((link) << 9) + ((biter) & EDMA_TCD_BITER_LINKED_MASK))
    2869 
    2870 #define EDMA_TCD_BITER_LINK( channel) (EDMA.TCD [(channel)].BMF.B.BITER >> 9)
    2871 
    2872 /****************************************************************************/
    2873 /*                          MODULE : INTC                                   */
    2874 /****************************************************************************/
    2875     struct INTC_tag {
    2876         union {
    2877             uint32_t R;
    2878             struct {
    2879                 uint32_t:26;
    2880                 uint32_t VTES:1;
    2881                   uint32_t:4;
    2882                 uint32_t HVEN:1;
    2883             } B;
    2884         } MCR;                  /* Module Configuration Register */
    2885 
    2886         int32_t INTC_reserved00;
    2887 
    2888         union {
    2889             uint32_t R;
    2890             struct {
    2891                 uint32_t:28;
    2892                 uint32_t PRI:4;
    2893             } B;
    2894         } CPR;                  /* Current Priority Register */
    2895 
    2896         uint32_t intc_reserved1;
    2897 
    2898         union {
    2899             uint32_t R;
    2900             struct {
    2901                 uint32_t VTBA:21;
    2902                 uint32_t INTVEC:9;
    2903                   uint32_t:2;
    2904             } B;
    2905         } IACKR;                /* Interrupt Acknowledge Register */
    2906 
    2907         uint32_t intc_reserved2;
    2908 
    2909         union {
    2910             uint32_t R;
    2911             struct {
    2912                 uint32_t:32;
    2913             } B;
    2914         } EOIR;                 /* End of Interrupt Register */
    2915 
    2916         uint32_t intc_reserved3;
    2917 
    2918         union {
    2919             uint8_t R;
    2920             struct {
    2921                 uint8_t:6;
    2922                 uint8_t SET:1;
    2923                 uint8_t CLR:1;
    2924             } B;
    2925         } SSCIR[8];             /* Software Set/Clear Interruput Register */
    2926 
    2927         uint32_t intc_reserved4[6];
    2928 
    2929         union {
    2930             uint8_t R;
    2931             struct {
    2932                 uint8_t:4;
    2933                 uint8_t PRI:4;
    2934             } B;
    2935         } PSR[307];             /* Software Set/Clear Interrupt Register */
    2936 
    2937     };
    2938 /****************************************************************************/
    2939 /*                          MODULE : EQADC                                  */
    2940 /****************************************************************************/
    2941     struct EQADC_tag {
    2942         union {
    2943             uint32_t R;
    2944             struct {
    2945                 uint32_t:27;
    2946                 uint32_t ESSIE:2;
    2947                   uint32_t:1;
    2948                 uint32_t DBG:2;
    2949             } B;
    2950         } MCR;                  /* Module Configuration Register */
    2951 
    2952         int32_t EQADC_reserved00;
    2953 
    2954         union {
    2955             uint32_t R;
    2956             struct {
    2957                 uint32_t:6;
    2958                 uint32_t NMF:26;
    2959             } B;
    2960         } NMSFR;                /* Null Message Send Format Register */
    2961 
    2962         union {
    2963             uint32_t R;
    2964             struct {
    2965                 uint32_t:28;
    2966                 uint32_t DFL:4;
    2967             } B;
    2968         } ETDFR;                /* External Trigger Digital Filter Register */
    2969 
    2970         union {
    2971             uint32_t R;
    2972             struct {
    2973                 uint32_t CFPUSH:32;
    2974             } B;
    2975         } CFPR[6];              /* CFIFO Push Registers */
    2976 
    2977         uint32_t eqadc_reserved1;
    2978 
    2979         uint32_t eqadc_reserved2;
    2980 
    2981         union {
    2982             uint32_t R;
    2983             struct {
    2984                 uint32_t:16;
    2985                 uint32_t RFPOP:16;
    2986             } B;
    2987         } RFPR[6];              /* Result FIFO Pop Registers */
    2988 
    2989         uint32_t eqadc_reserved3;
    2990 
    2991         uint32_t eqadc_reserved4;
    2992 
    2993         union EQADC_CFCR_tag {
    2994             uint16_t R;
    2995             struct {
    2996                 uint16_t:5;
    2997                 uint16_t SSE:1;
    2998                 uint16_t CFINV:1;
    2999                   uint16_t:1;
    3000                 uint16_t MODE:4;
    3001                   uint16_t:4;
    3002             } B;
    3003         } CFCR[6];              /* CFIFO Control Registers */
    3004 
    3005         uint32_t eqadc_reserved5;
    3006 
    3007         union EQADC_IDCR_tag {
    3008             uint16_t R;
    3009             struct {
    3010                 uint16_t NCIE:1;
    3011                 uint16_t TORIE:1;
    3012                 uint16_t PIE:1;
    3013                 uint16_t EOQIE:1;
    3014                 uint16_t CFUIE:1;
    3015                   uint16_t:1;
    3016                 uint16_t CFFE:1;
    3017                 uint16_t CFFS:1;
    3018                   uint16_t:4;
    3019                 uint16_t RFOIE:1;
    3020                   uint16_t:1;
    3021                 uint16_t RFDE:1;
    3022                 uint16_t RFDS:1;
    3023             } B;
    3024         } IDCR[6];              /* Interrupt and DMA Control Registers */
    3025 
    3026         uint32_t eqadc_reserved6;
    3027 
    3028         union EQADC_FISR_tag {
    3029             uint32_t R;
    3030             struct {
    3031                 uint32_t NCF:1;
    3032                 uint32_t TORF:1;
    3033                 uint32_t PF:1;
    3034                 uint32_t EOQF:1;
    3035                 uint32_t CFUF:1;
    3036                 uint32_t SSS:1;
    3037                 uint32_t CFFF:1;
    3038                   uint32_t:5;
    3039                 uint32_t RFOF:1;
    3040                   uint32_t:1;
    3041                 uint32_t RFDF:1;
    3042                   uint32_t:1;
    3043                 uint32_t CFCTR:4;
    3044                 uint32_t TNXTPTR:4;
    3045                 uint32_t RFCTR:4;
    3046                 uint32_t POPNXTPTR:4;
    3047             } B;
    3048         } FISR[6];              /* FIFO and Interrupt Status Registers */
    3049 
    3050         uint32_t eqadc_reserved7;
    3051 
    3052         uint32_t eqadc_reserved8;
    3053 
    3054         union {
    3055             uint16_t R;
    3056             struct {
    3057                 uint16_t:5;
    3058                 uint16_t TCCF:11;
    3059             } B;
    3060         } CFTCR[6];             /* CFIFO Transfer Counter Registers */
    3061 
    3062         uint32_t eqadc_reserved9;
    3063 
    3064         union {
    3065             uint32_t R;
    3066             struct {
    3067                 uint32_t CFS0:2;
    3068                 uint32_t CFS1:2;
    3069                 uint32_t CFS2:2;
    3070                 uint32_t CFS3:2;
    3071                 uint32_t CFS4:2;
    3072                 uint32_t CFS5:2;
    3073                   uint32_t:5;
    3074                 uint32_t LCFTCB0:4;
    3075                 uint32_t TC_LCFTCB0:11;
    3076             } B;
    3077         } CFSSR0;               /* CFIFO Status Register 0 */
    3078 
    3079         union {
    3080             uint32_t R;
    3081             struct {
    3082                 uint32_t CFS0:2;
    3083                 uint32_t CFS1:2;
    3084                 uint32_t CFS2:2;
    3085                 uint32_t CFS3:2;
    3086                 uint32_t CFS4:2;
    3087                 uint32_t CFS5:2;
    3088                   uint32_t:5;
    3089                 uint32_t LCFTCB1:4;
    3090                 uint32_t TC_LCFTCB1:11;
    3091             } B;
    3092         } CFSSR1;               /* CFIFO Status Register 1 */
    3093 
    3094         union {
    3095             uint32_t R;
    3096             struct {
    3097                 uint32_t CFS0:2;
    3098                 uint32_t CFS1:2;
    3099                 uint32_t CFS2:2;
    3100                 uint32_t CFS3:2;
    3101                 uint32_t CFS4:2;
    3102                 uint32_t CFS5:2;
    3103                   uint32_t:4;
    3104                 uint32_t ECBNI:1;
    3105                 uint32_t LCFTSSI:4;
    3106                 uint32_t TC_LCFTSSI:11;
    3107             } B;
    3108         } CFSSR2;               /* CFIFO Status Register 2 */
    3109 
    3110         union {
    3111             uint32_t R;
    3112             struct {
    3113                 uint32_t CFS0:2;
    3114                 uint32_t CFS1:2;
    3115                 uint32_t CFS2:2;
    3116                 uint32_t CFS3:2;
    3117                 uint32_t CFS4:2;
    3118                 uint32_t CFS5:2;
    3119                   uint32_t:20;
    3120             } B;
    3121         } CFSR;
    3122 
    3123         uint32_t eqadc_reserved11;
    3124 
    3125         union {
    3126             uint32_t R;
    3127             struct {
    3128                 uint32_t:21;
    3129                 uint32_t MDT:3;
    3130                   uint32_t:4;
    3131                 uint32_t BR:4;
    3132             } B;
    3133         } SSICR;                /* SSI Control Register */
    3134 
    3135         union {
    3136             uint32_t R;
    3137             struct {
    3138                 uint32_t RDV:1;
    3139                   uint32_t:5;
    3140                 uint32_t RDATA:26;
    3141             } B;
    3142         } SSIRDR;               /* SSI Recieve Data Register */
    3143 
    3144         uint32_t eqadc_reserved12[17];
    3145 
    3146         struct {
    3147             union {
    3148                 uint32_t R;
    3149                 struct {
    3150                     uint32_t:32;
    3151                 } B;
    3152             } R[4];
    3153 
    3154             uint32_t eqadc_reserved13[12];
    3155 
    3156         } CF[6];
    3157 
    3158         uint32_t eqadc_reserved14[32];
    3159 
    3160         struct {
    3161             union {
    3162                 uint32_t R;
    3163                 struct {
    3164                     uint32_t:32;
    3165                 } B;
    3166             } R[4];
    3167 
    3168             uint32_t eqadc_reserved15[12];
    3169 
    3170         } RF[6];
    3171 
    3172     };
    3173 /****************************************************************************/
    3174 /*                          MODULE : DSPI                                   */
    3175 /****************************************************************************/
    3176     struct DSPI_tag {
    3177         union DSPI_MCR_tag {
    3178             uint32_t R;
    3179             struct {
    3180                 uint32_t MSTR:1;
    3181                 uint32_t CONT_SCKE:1;
    3182                 uint32_t DCONF:2;
    3183                 uint32_t FRZ:1;
    3184                 uint32_t MTFE:1;
    3185                 uint32_t PCSSE:1;
    3186                 uint32_t ROOE:1;
    3187                   uint32_t:2;
    3188                 uint32_t PCSIS5:1;
    3189                 uint32_t PCSIS4:1;
    3190                 uint32_t PCSIS3:1;
    3191                 uint32_t PCSIS2:1;
    3192                 uint32_t PCSIS1:1;
    3193                 uint32_t PCSIS0:1;
    3194                 uint32_t DOZE:1;
    3195                 uint32_t MDIS:1;
    3196                 uint32_t DIS_TXF:1;
    3197                 uint32_t DIS_RXF:1;
    3198                 uint32_t CLR_TXF:1;
    3199                 uint32_t CLR_RXF:1;
    3200                 uint32_t SMPL_PT:2;
    3201                   uint32_t:7;
    3202                 uint32_t HALT:1;
    3203             } B;
    3204         } MCR;                  /* Module Configuration Register */
    3205 
    3206         uint32_t dspi_reserved1;
    3207 
    3208         union {
    3209             uint32_t R;
    3210             struct {
    3211                 uint32_t TCNT:16;
    3212                   uint32_t:16;
    3213             } B;
    3214         } TCR;
    3215 
    3216         union DSPI_CTAR_tag {
    3217             uint32_t R;
    3218             struct {
    3219                 uint32_t DBR:1;
    3220                 uint32_t FMSZ:4;
    3221                 uint32_t CPOL:1;
    3222                 uint32_t CPHA:1;
    3223                 uint32_t LSBFE:1;
    3224                 uint32_t PCSSCK:2;
    3225                 uint32_t PASC:2;
    3226                 uint32_t PDT:2;
    3227                 uint32_t PBR:2;
    3228                 uint32_t CSSCK:4;
    3229                 uint32_t ASC:4;
    3230                 uint32_t DT:4;
    3231                 uint32_t BR:4;
    3232             } B;
    3233         } CTAR[8];              /* Clock and Transfer Attributes Registers */
    3234 
    3235         union DSPI_SR_tag {
    3236             uint32_t R;
    3237             struct {
    3238                 uint32_t TCF:1;
    3239                 uint32_t TXRXS:1;
    3240                   uint32_t:1;
    3241                 uint32_t EOQF:1;
    3242                 uint32_t TFUF:1;
    3243                   uint32_t:1;
    3244                 uint32_t TFFF:1;
    3245                   uint32_t:5;
    3246                 uint32_t RFOF:1;
    3247                   uint32_t:1;
    3248                 uint32_t RFDF:1;
    3249                   uint32_t:1;
    3250                 uint32_t TXCTR:4;
    3251                 uint32_t TXNXTPTR:4;
    3252                 uint32_t RXCTR:4;
    3253                 uint32_t POPNXTPTR:4;
    3254             } B;
    3255         } SR;                   /* Status Register */
    3256 
    3257         union DSPI_RSER_tag {
    3258             uint32_t R;
    3259             struct {
    3260                 uint32_t TCFRE:1;
    3261                   uint32_t:2;
    3262                 uint32_t EOQFRE:1;
    3263                 uint32_t TFUFRE:1;
    3264                   uint32_t:1;
    3265                 uint32_t TFFFRE:1;
    3266                 uint32_t TFFFDIRS:1;
    3267                   uint32_t:4;
    3268                 uint32_t RFOFRE:1;
    3269                   uint32_t:1;
    3270                 uint32_t RFDFRE:1;
    3271                 uint32_t RFDFDIRS:1;
    3272                   uint32_t:16;
    3273             } B;
    3274         } RSER;                 /* DMA/Interrupt Request Select and Enable Register */
    3275 
    3276         union DSPI_PUSHR_tag {
    3277             uint32_t R;
    3278             struct {
    3279                 uint32_t CONT:1;
    3280                 uint32_t CTAS:3;
    3281                 uint32_t EOQ:1;
    3282                 uint32_t CTCNT:1;
    3283                   uint32_t:4;
    3284                 uint32_t PCS5:1;
    3285                 uint32_t PCS4:1;
    3286                 uint32_t PCS3:1;
    3287                 uint32_t PCS2:1;
    3288                 uint32_t PCS1:1;
    3289                 uint32_t PCS0:1;
    3290                 uint32_t TXDATA:16;
    3291             } B;
    3292         } PUSHR;                /* PUSH TX FIFO Register */
    3293 
    3294         union DSPI_POPR_tag{
    3295             uint32_t R;
    3296             struct {
    3297                 uint32_t:16;
    3298                 uint32_t RXDATA:16;
    3299             } B;
    3300         } POPR;                 /* POP RX FIFO Register */
    3301 
    3302         union {
    3303             uint32_t R;
    3304             struct {
    3305                 uint32_t TXCMD:16;
    3306                 uint32_t TXDATA:16;
    3307             } B;
    3308         } TXFR[4];              /* Transmit FIFO Registers */
    3309 
    3310         uint32_t DSPI_reserved_txf[12];
    3311 
    3312         union {
    3313             uint32_t R;
    3314             struct {
    3315                 uint32_t:16;
    3316                 uint32_t RXDATA:16;
    3317             } B;
    3318         } RXFR[4];              /* Transmit FIFO Registers */
    3319 
    3320         uint32_t DSPI_reserved_rxf[12];
    3321 
    3322         union {
    3323             uint32_t R;
    3324             struct {
    3325                 uint32_t MTOE:1;
    3326                   uint32_t:1;
    3327                 uint32_t MTOCNT:6;
    3328                   uint32_t:4;
    3329                 uint32_t TXSS:1;
    3330                 uint32_t TPOL:1;
    3331                 uint32_t TRRE:1;
    3332                 uint32_t CID:1;
    3333                 uint32_t DCONT:1;
    3334                 uint32_t DSICTAS:3;
    3335                   uint32_t:6;
    3336                 uint32_t DPCS5:1;
    3337                 uint32_t DPCS4:1;
    3338                 uint32_t DPCS3:1;
    3339                 uint32_t DPCS2:1;
    3340                 uint32_t DPCS1:1;
    3341                 uint32_t DPCS0:1;
    3342             } B;
    3343         } DSICR;                /* DSI Configuration Register */
    3344 
    3345         union {
    3346             uint32_t R;
    3347             struct {
    3348                 uint32_t:16;
    3349                 uint32_t SER_DATA:16;
    3350             } B;
    3351         } SDR;                  /* DSI Serialization Data Register */
    3352 
    3353         union {
    3354             uint32_t R;
    3355             struct {
    3356                 uint32_t:16;
    3357                 uint32_t ASER_DATA:16;
    3358             } B;
    3359         } ASDR;                 /* DSI Alternate Serialization Data Register */
    3360 
    3361         union {
    3362             uint32_t R;
    3363             struct {
    3364                 uint32_t:16;
    3365                 uint32_t COMP_DATA:16;
    3366             } B;
    3367         } COMPR;                /* DSI Transmit Comparison Register */
    3368 
    3369         union {
    3370             uint32_t R;
    3371             struct {
    3372                 uint32_t:16;
    3373                 uint32_t DESER_DATA:16;
    3374             } B;
    3375         } DDR;                  /* DSI deserialization Data Register */
    3376 
    3377     };
    3378 /****************************************************************************/
    3379 /*                          MODULE : eSCI                                   */
    3380 /****************************************************************************/
    3381     struct ESCI_tag {
    3382         union ESCI_CR1_tag {
    3383             uint32_t R;
    3384             struct {
    3385                 uint32_t:3;
    3386                 uint32_t SBR:13;
    3387                 uint32_t LOOPS:1;
    3388                 uint32_t SCISDOZ:1;
    3389                 uint32_t RSRC:1;
    3390                 uint32_t M:1;
    3391                 uint32_t WAKE:1;
    3392                 uint32_t ILT:1;
    3393                 uint32_t PE:1;
    3394                 uint32_t PT:1;
    3395                 uint32_t TIE:1;
    3396                 uint32_t TCIE:1;
    3397                 uint32_t RIE:1;
    3398                 uint32_t ILIE:1;
    3399                 uint32_t TE:1;
    3400                 uint32_t RE:1;
    3401                 uint32_t RWU:1;
    3402                 uint32_t SBK:1;
    3403             } B;
    3404         } CR1;                  /* Control Register 1 */
    3405 
    3406         union ESCI_CR2_tag {
    3407             uint16_t R;
    3408             struct {
    3409                 uint16_t MDIS:1;
    3410                 uint16_t FBR:1;
    3411                 uint16_t BSTP:1;
    3412                 uint16_t IEBERR:1;
    3413                 uint16_t RXDMA:1;
    3414                 uint16_t TXDMA:1;
    3415                 uint16_t BRK13:1;
    3416                   uint16_t:1;
    3417                 uint16_t BESM13:1;
    3418                 uint16_t SBSTP:1;
    3419                   uint16_t:2;
    3420                 uint16_t ORIE:1;
    3421                 uint16_t NFIE:1;
    3422                 uint16_t FEIE:1;
    3423                 uint16_t PFIE:1;
    3424             } B;
    3425         } CR2;                  /* Control Register 2 */
    3426 
    3427         union ESCI_DR_tag {
    3428             uint16_t R;
    3429             struct {
    3430                 uint16_t R8:1;
    3431                 uint16_t T8:1;
    3432                   uint16_t:6;
    3433                 uint8_t D;
    3434             } B;
    3435         } DR;                   /* Data Register */
    3436 
    3437         union ESCI_SR_tag {
    3438             uint32_t R;
    3439             struct {
    3440                 uint32_t TDRE:1;
    3441                 uint32_t TC:1;
    3442                 uint32_t RDRF:1;
    3443                 uint32_t IDLE:1;
    3444                 uint32_t OR:1;
    3445                 uint32_t NF:1;
    3446                 uint32_t FE:1;
    3447                 uint32_t PF:1;
    3448                   uint32_t:3;
    3449                 uint32_t BERR:1;
    3450                   uint32_t:3;
    3451                 uint32_t RAF:1;
    3452                 uint32_t RXRDY:1;
    3453                 uint32_t TXRDY:1;
    3454                 uint32_t LWAKE:1;
    3455                 uint32_t STO:1;
    3456                 uint32_t PBERR:1;
    3457                 uint32_t CERR:1;
    3458                 uint32_t CKERR:1;
    3459                 uint32_t FRC:1;
    3460                   uint32_t:7;
    3461                 uint32_t OVFL:1;
    3462             } B;
    3463         } SR;                   /* Status Register */
    3464 
    3465         union {
    3466             uint32_t R;
    3467             struct {
    3468                 uint32_t LRES:1;
    3469                 uint32_t WU:1;
    3470                 uint32_t WUD0:1;
    3471                 uint32_t WUD1:1;
    3472                 uint32_t LDBG:1;
    3473                 uint32_t DSF:1;
    3474                 uint32_t PRTY:1;
    3475                 uint32_t LIN:1;
    3476                 uint32_t RXIE:1;
    3477                 uint32_t TXIE:1;
    3478                 uint32_t WUIE:1;
    3479                 uint32_t STIE:1;
    3480                 uint32_t PBIE:1;
    3481                 uint32_t CIE:1;
    3482                 uint32_t CKIE:1;
    3483                 uint32_t FCIE:1;
    3484                   uint32_t:7;
    3485                 uint32_t OFIE:1;
    3486                   uint32_t:8;
    3487             } B;
    3488         } LCR;                  /* LIN Control Register */
    3489 
    3490         union {
    3491             uint32_t R;
    3492         } LTR;                  /* LIN Transmit Register */
    3493 
    3494         union {
    3495             uint32_t R;
    3496         } LRR;                  /* LIN Recieve Register */
    3497 
    3498         union {
    3499             uint32_t R;
    3500         } LPR;                  /* LIN CRC Polynom Register  */
    3501 
    3502     };
    3503 /****************************************************************************/
    3504 /*                          MODULE : FlexCAN                                */
    3505 /****************************************************************************/
    3506     struct FLEXCAN2_tag {
    3507         union {
    3508             uint32_t R;
    3509             struct {
    3510                 uint32_t MDIS:1;
    3511                 uint32_t FRZ:1;
    3512                   uint32_t:1;
    3513                 uint32_t HALT:1;
    3514                 uint32_t NOTRDY:1;
    3515                   uint32_t:1;
    3516                 uint32_t SOFTRST:1;
    3517                 uint32_t FRZACK:1;
    3518                   uint32_t:1;
    3519                   uint32_t:1;
    3520 
    3521                 uint32_t WRNEN:1;
    3522 
    3523                 uint32_t MDISACK:1;
    3524                   uint32_t:1;
    3525                   uint32_t:1;
    3526 
    3527                 uint32_t SRXDIS:1;
    3528                 uint32_t MBFEN:1;
    3529                   uint32_t:10;
    3530 
    3531                 uint32_t MAXMB:6;
    3532             } B;
    3533         } MCR;                  /* Module Configuration Register */
    3534 
    3535         union {
    3536             uint32_t R;
    3537             struct {
    3538                 uint32_t PRESDIV:8;
    3539                 uint32_t RJW:2;
    3540                 uint32_t PSEG1:3;
    3541                 uint32_t PSEG2:3;
    3542                 uint32_t BOFFMSK:1;
    3543                 uint32_t ERRMSK:1;
    3544                 uint32_t CLKSRC:1;
    3545                 uint32_t LPB:1;
    3546 
    3547                 uint32_t TWRNMSK:1;
    3548                 uint32_t RWRNMSK:1;
    3549                   uint32_t:2;
    3550 
    3551                 uint32_t SMP:1;
    3552                 uint32_t BOFFREC:1;
    3553                 uint32_t TSYN:1;
    3554                 uint32_t LBUF:1;
    3555                 uint32_t LOM:1;
    3556                 uint32_t PROPSEG:3;
    3557             } B;
    3558         } CR;                   /* Control Register */
    3559 
    3560         union {
    3561             uint32_t R;
    3562         } TIMER;                /* Free Running Timer */
    3563         int32_t FLEXCAN_reserved00;
    3564 
    3565         union {
    3566             uint32_t R;
    3567             struct {
    3568                 uint32_t:3;
    3569                 uint32_t MI:29;
    3570             } B;
    3571         } RXGMASK;              /* RX Global Mask */
    3572 
    3573         union {
    3574             uint32_t R;
    3575             struct {
    3576                 uint32_t:3;
    3577                 uint32_t MI:29;
    3578             } B;
    3579         } RX14MASK;             /* RX 14 Mask */
    3580 
    3581         union {
    3582             uint32_t R;
    3583             struct {
    3584                 uint32_t:3;
    3585                 uint32_t MI:29;
    3586             } B;
    3587         } RX15MASK;             /* RX 15 Mask */
    3588 
    3589         union {
    3590             uint32_t R;
    3591             struct {
    3592                 uint32_t:16;
    3593                 uint32_t RXECNT:8;
    3594                 uint32_t TXECNT:8;
    3595             } B;
    3596         } ECR;                  /* Error Counter Register */
    3597 
    3598         union {
    3599             uint32_t R;
    3600             struct {
    3601                 uint32_t:14;
    3602 
    3603                 uint32_t TWRNINT:1;
    3604                 uint32_t RWRNINT:1;
    3605 
    3606                 uint32_t BIT1ERR:1;
    3607                 uint32_t BIT0ERR:1;
    3608                 uint32_t ACKERR:1;
    3609                 uint32_t CRCERR:1;
    3610                 uint32_t FRMERR:1;
    3611                 uint32_t STFERR:1;
    3612                 uint32_t TXWRN:1;
    3613                 uint32_t RXWRN:1;
    3614                 uint32_t IDLE:1;
    3615                 uint32_t TXRX:1;
    3616                 uint32_t FLTCONF:2;
    3617                   uint32_t:1;
    3618                 uint32_t BOFFINT:1;
    3619                 uint32_t ERRINT:1;
    3620                   uint32_t:1;
    3621             } B;
    3622         } ESR;                  /* Error and Status Register */
    3623 
    3624         union {
    3625             uint32_t R;
    3626             struct {
    3627                 uint32_t BUF63M:1;
    3628                 uint32_t BUF62M:1;
    3629                 uint32_t BUF61M:1;
    3630                 uint32_t BUF60M:1;
    3631                 uint32_t BUF59M:1;
    3632                 uint32_t BUF58M:1;
    3633                 uint32_t BUF57M:1;
    3634                 uint32_t BUF56M:1;
    3635                 uint32_t BUF55M:1;
    3636                 uint32_t BUF54M:1;
    3637                 uint32_t BUF53M:1;
    3638                 uint32_t BUF52M:1;
    3639                 uint32_t BUF51M:1;
    3640                 uint32_t BUF50M:1;
    3641                 uint32_t BUF49M:1;
    3642                 uint32_t BUF48M:1;
    3643                 uint32_t BUF47M:1;
    3644                 uint32_t BUF46M:1;
    3645                 uint32_t BUF45M:1;
    3646                 uint32_t BUF44M:1;
    3647                 uint32_t BUF43M:1;
    3648                 uint32_t BUF42M:1;
    3649                 uint32_t BUF41M:1;
    3650                 uint32_t BUF40M:1;
    3651                 uint32_t BUF39M:1;
    3652                 uint32_t BUF38M:1;
    3653                 uint32_t BUF37M:1;
    3654                 uint32_t BUF36M:1;
    3655                 uint32_t BUF35M:1;
    3656                 uint32_t BUF34M:1;
    3657                 uint32_t BUF33M:1;
    3658                 uint32_t BUF32M:1;
    3659             } B;
    3660         } IMRH;                 /* Interruput Masks Register */
    3661 
    3662         union {
    3663             uint32_t R;
    3664             struct {
    3665                 uint32_t BUF31M:1;
    3666                 uint32_t BUF30M:1;
    3667                 uint32_t BUF29M:1;
    3668                 uint32_t BUF28M:1;
    3669                 uint32_t BUF27M:1;
    3670                 uint32_t BUF26M:1;
    3671                 uint32_t BUF25M:1;
    3672                 uint32_t BUF24M:1;
    3673                 uint32_t BUF23M:1;
    3674                 uint32_t BUF22M:1;
    3675                 uint32_t BUF21M:1;
    3676                 uint32_t BUF20M:1;
    3677                 uint32_t BUF19M:1;
    3678                 uint32_t BUF18M:1;
    3679                 uint32_t BUF17M:1;
    3680                 uint32_t BUF16M:1;
    3681                 uint32_t BUF15M:1;
    3682                 uint32_t BUF14M:1;
    3683                 uint32_t BUF13M:1;
    3684                 uint32_t BUF12M:1;
    3685                 uint32_t BUF11M:1;
    3686                 uint32_t BUF10M:1;
    3687                 uint32_t BUF09M:1;
    3688                 uint32_t BUF08M:1;
    3689                 uint32_t BUF07M:1;
    3690                 uint32_t BUF06M:1;
    3691                 uint32_t BUF05M:1;
    3692                 uint32_t BUF04M:1;
    3693                 uint32_t BUF03M:1;
    3694                 uint32_t BUF02M:1;
    3695                 uint32_t BUF01M:1;
    3696                 uint32_t BUF00M:1;
    3697             } B;
    3698         } IMRL;                 /* Interruput Masks Register */
    3699 
    3700         union {
    3701             uint32_t R;
    3702             struct {
    3703                 uint32_t BUF63I:1;
    3704                 uint32_t BUF62I:1;
    3705                 uint32_t BUF61I:1;
    3706                 uint32_t BUF60I:1;
    3707                 uint32_t BUF59I:1;
    3708                 uint32_t BUF58I:1;
    3709                 uint32_t BUF57I:1;
    3710                 uint32_t BUF56I:1;
    3711                 uint32_t BUF55I:1;
    3712                 uint32_t BUF54I:1;
    3713                 uint32_t BUF53I:1;
    3714                 uint32_t BUF52I:1;
    3715                 uint32_t BUF51I:1;
    3716                 uint32_t BUF50I:1;
    3717                 uint32_t BUF49I:1;
    3718                 uint32_t BUF48I:1;
    3719                 uint32_t BUF47I:1;
    3720                 uint32_t BUF46I:1;
    3721                 uint32_t BUF45I:1;
    3722                 uint32_t BUF44I:1;
    3723                 uint32_t BUF43I:1;
    3724                 uint32_t BUF42I:1;
    3725                 uint32_t BUF41I:1;
    3726                 uint32_t BUF40I:1;
    3727                 uint32_t BUF39I:1;
    3728                 uint32_t BUF38I:1;
    3729                 uint32_t BUF37I:1;
    3730                 uint32_t BUF36I:1;
    3731                 uint32_t BUF35I:1;
    3732                 uint32_t BUF34I:1;
    3733                 uint32_t BUF33I:1;
    3734                 uint32_t BUF32I:1;
    3735             } B;
    3736         } IFRH;                 /* Interruput Flag Register */
    3737 
    3738         union {
    3739             uint32_t R;
    3740             struct {
    3741                 uint32_t BUF31I:1;
    3742                 uint32_t BUF30I:1;
    3743                 uint32_t BUF29I:1;
    3744                 uint32_t BUF28I:1;
    3745                 uint32_t BUF27I:1;
    3746                 uint32_t BUF26I:1;
    3747                 uint32_t BUF25I:1;
    3748                 uint32_t BUF24I:1;
    3749                 uint32_t BUF23I:1;
    3750                 uint32_t BUF22I:1;
    3751                 uint32_t BUF21I:1;
    3752                 uint32_t BUF20I:1;
    3753                 uint32_t BUF19I:1;
    3754                 uint32_t BUF18I:1;
    3755                 uint32_t BUF17I:1;
    3756                 uint32_t BUF16I:1;
    3757                 uint32_t BUF15I:1;
    3758                 uint32_t BUF14I:1;
    3759                 uint32_t BUF13I:1;
    3760                 uint32_t BUF12I:1;
    3761                 uint32_t BUF11I:1;
    3762                 uint32_t BUF10I:1;
    3763                 uint32_t BUF09I:1;
    3764                 uint32_t BUF08I:1;
    3765                 uint32_t BUF07I:1;
    3766                 uint32_t BUF06I:1;
    3767                 uint32_t BUF05I:1;
    3768                 uint32_t BUF04I:1;
    3769                 uint32_t BUF03I:1;
    3770                 uint32_t BUF02I:1;
    3771                 uint32_t BUF01I:1;
    3772                 uint32_t BUF00I:1;
    3773             } B;
    3774         } IFRL;                 /* Interruput Flag Register */
    3775 
    3776         uint32_t flexcan2_reserved2[19];
    3777 
    3778         struct canbuf_t {
    3779             union {
    3780                 uint32_t R;
    3781                 struct {
    3782                     uint32_t:4;
    3783                     uint32_t CODE:4;
    3784                       uint32_t:1;
    3785                     uint32_t SRR:1;
    3786                     uint32_t IDE:1;
    3787                     uint32_t RTR:1;
    3788                     uint32_t LENGTH:4;
    3789                     uint32_t TIMESTAMP:16;
    3790                 } B;
    3791             } CS;
    3792 
    3793             union {
    3794                 uint32_t R;
    3795                 struct {
    3796                     uint32_t:3;
    3797                     uint32_t STD_ID:11;
    3798                     uint32_t EXT_ID:18;
    3799                 } B;
    3800             } ID;
    3801 
    3802             union {
    3803                 uint8_t B[8];  /* Data buffer in Bytes (8 bits) */
    3804                 uint16_t H[4]; /* Data buffer in Half-words (16 bits) */
    3805                 uint32_t W[2]; /* Data buffer in words (32 bits) */
    3806                 uint32_t R[2]; /* Data buffer in words (32 bits) */
    3807             } DATA;
    3808 
    3809         } BUF[64];
    3810 
    3811         uint32_t flexcan2_reserved3[256];
    3812 
    3813         union {
    3814             uint32_t R;
    3815             struct {
    3816                 uint32_t:3;
    3817                 uint32_t MI:29;
    3818             } B;
    3819         } RXIMR[64];            /* RX Individual Mask Registers */
    3820 
    3821     };
    3822 /****************************************************************************/
    3823 /*                          MODULE : FEC                                    */
    3824 /****************************************************************************/
    3825     struct FEC_tag {
    3826 
    3827         uint32_t fec_reserved_start[0x1];
    3828 
    3829         union {
    3830             uint32_t R;
    3831             struct {
    3832                 uint32_t HBERR:1;
    3833                 uint32_t BABR:1;
    3834                 uint32_t BABT:1;
    3835                 uint32_t GRA:1;
    3836                 uint32_t TXF:1;
    3837                 uint32_t TXB:1;
    3838                 uint32_t RXF:1;
    3839                 uint32_t RXB:1;
    3840                 uint32_t MII:1;
    3841                 uint32_t EBERR:1;
    3842                 uint32_t LC:1;
    3843                 uint32_t RL:1;
    3844                 uint32_t UN:1;
    3845                   uint32_t:19;
    3846             } B;
    3847         } EIR;                  /*  Interrupt Event Register */
    3848 
    3849         union {
    3850             uint32_t R;
    3851             struct {
    3852                 uint32_t HBERRM:1;
    3853                 uint32_t BABRM:1;
    3854                 uint32_t BABTM:1;
    3855                 uint32_t GRAM:1;
    3856                 uint32_t TXFM:1;
    3857                 uint32_t TXBM:1;
    3858                 uint32_t RXFM:1;
    3859                 uint32_t RXBM:1;
    3860                 uint32_t MIIM:1;
    3861                 uint32_t EBERRM:1;
    3862                 uint32_t LCM:1;
    3863                 uint32_t RLM:1;
    3864                 uint32_t UNM:1;
    3865                   uint32_t:19;
    3866             } B;
    3867         } EIMR;                 /*  Interrupt Mask Register  */
    3868 
    3869         uint32_t fec_reserved_eimr;
    3870 
    3871         union {
    3872             uint32_t R;
    3873             struct {
    3874                 uint32_t:7;
    3875                 uint32_t R_DES_ACTIVE:1;
    3876                   uint32_t:24;
    3877             } B;
    3878         } RDAR;                 /*  Receive Descriptor Active Register  */
    3879 
    3880         union {
    3881             uint32_t R;
    3882             struct {
    3883                 uint32_t:7;
    3884                 uint32_t X_DES_ACTIVE:1;
    3885                   uint32_t:24;
    3886             } B;
    3887         } TDAR;                 /*  Transmit Descriptor Active Register  */
    3888 
    3889         uint32_t fec_reserved_tdar[3];
    3890 
    3891         union {
    3892             uint32_t R;
    3893             struct {
    3894                 uint32_t:30;
    3895                 uint32_t ETHER_EN:1;
    3896                 uint32_t RESET:1;
    3897             } B;
    3898         } ECR;                  /*  Ethernet Control Register  */
    3899 
    3900         uint32_t fec_reserved_ecr[6];
    3901 
    3902         union {
    3903             uint32_t R;
    3904             struct {
    3905                 uint32_t ST:2;
    3906                 uint32_t CP:2;
    3907                 uint32_t PA:5;
    3908                 uint32_t RA:5;
    3909                 uint32_t TA:2;
    3910                 uint32_t DATA:16;
    3911             } B;
    3912         } MDATA;                /* MII Data Register */
    3913 
    3914         union {
    3915             uint32_t R;
    3916             struct {
    3917                 uint32_t:24;
    3918                 uint32_t DIS_PREAMBLE:1;
    3919                 uint32_t MII_SPEED:6;
    3920                   uint32_t:1;
    3921             } B;
    3922         } MSCR;                 /* MII Speed Control Register */
    3923 
    3924         uint32_t fec_reserved_mscr[7];
    3925 
    3926         union {
    3927             uint32_t R;
    3928             struct {
    3929                 uint32_t MIB_DISABLE:1;
    3930                 uint32_t MIB_IDLE:1;
    3931                   uint32_t:30;
    3932             } B;
    3933         } MIBC;                 /* MIB Control Register */
    3934 
    3935         uint32_t fec_reserved_mibc[7];
    3936 
    3937         union {
    3938             uint32_t R;
    3939             struct {
    3940                 uint32_t:5;
    3941                 uint32_t MAX_FL:11;
    3942                   uint32_t:10;
    3943                 uint32_t FCE:1;
    3944                 uint32_t BC_REJ:1;
    3945                 uint32_t PROM:1;
    3946                 uint32_t MII_MODE:1;
    3947                 uint32_t DRT:1;
    3948                 uint32_t LOOP:1;
    3949             } B;
    3950         } RCR;                  /* Receive Control Register */
    3951 
    3952         uint32_t fec_reserved_rcr[15];
    3953 
    3954         union {
    3955             uint32_t R;
    3956             struct {
    3957                 uint32_t:27;
    3958                 uint32_t RFC_PAUSE:1;
    3959                 uint32_t TFC_PAUSE:1;
    3960                 uint32_t FDEN:1;
    3961                 uint32_t HBC:1;
    3962                 uint32_t GTS:1;
    3963             } B;
    3964         } TCR;                  /* Transmit Control Register */
    3965 
    3966         uint32_t fec_reserved_tcr[7];
    3967 
    3968         union {
    3969             uint32_t R;
    3970             struct {
    3971                 uint32_t PADDR1:32;
    3972             } B;
    3973         } PALR;                 /* Physical Address Low Register */
    3974 
    3975         union {
    3976             uint32_t R;
    3977             struct {
    3978                 uint32_t PADDR2:16;
    3979                 uint32_t TYPE:16;
    3980             } B;
    3981         } PAUR;                 /* Physical Address High + Type Register */
    3982 
    3983         union {
    3984             uint32_t R;
    3985             struct {
    3986                 uint32_t OPCODE:16;
    3987                 uint32_t PAUSE_DUR:16;
    3988             } B;
    3989         } OPD;                  /* Opcode/Pause Duration Register */
    3990 
    3991         uint32_t fec_reserved_opd[10];
    3992 
    3993         union {
    3994             uint32_t R;
    3995             struct {
    3996                 uint32_t IADDR1:32;
    3997             } B;
    3998         } IAUR;                 /* Descriptor Individual Upper Address Register */
    3999 
    4000         union {
    4001             uint32_t R;
    4002             struct {
    4003                 uint32_t IADDR2:32;
    4004             } B;
    4005         } IALR;                 /* Descriptor Individual Lower Address Register */
    4006 
    4007         union {
    4008             uint32_t R;
    4009             struct {
    4010                 uint32_t GADDR1:32;
    4011             } B;
    4012         } GAUR;                 /* Descriptor Group Upper Address Register */
    4013 
    4014         union {
    4015             uint32_t R;
    4016             struct {
    4017                 uint32_t GADDR2:32;
    4018             } B;
    4019         } GALR;                 /* Descriptor Group Lower Address Register */
    4020 
    4021         uint32_t fec_reserved_galr[7];
    4022 
    4023         union {
    4024             uint32_t R;
    4025             struct {
    4026                 uint32_t:30;
    4027                 uint32_t X_WMRK:2;
    4028             } B;
    4029         } TFWR;                 /* FIFO Transmit FIFO Watermark Register */
    4030 
    4031         uint32_t fec_reserved_tfwr;
    4032 
    4033         union {
    4034             uint32_t R;
    4035             struct {
    4036                 uint32_t:22;
    4037                 uint32_t R_BOUND:8;
    4038                   uint32_t:2;
    4039             } B;
    4040         } FRBR;                 /* FIFO Receive Bound Register */
    4041 
    4042         union {
    4043             uint32_t R;
    4044             struct {
    4045                 uint32_t:22;
    4046                 uint32_t R_FSTART:8;
    4047                   uint32_t:2;
    4048             } B;
    4049         } FRSR;                 /* FIFO Receive Start Register */
    4050 
    4051         uint32_t fec_reserved_frsr[11];
    4052 
    4053         union {
    4054             uint32_t R;
    4055             struct {
    4056                 uint32_t R_DES_START:30;
    4057                   uint32_t:2;
    4058             } B;
    4059         } ERDSR;                /* Receive Descriptor Ring Start Register */
    4060 
    4061         union {
    4062             uint32_t R;
    4063             struct {
    4064                 uint32_t X_DES_START:30;
    4065                   uint32_t:2;
    4066             } B;
    4067         } ETDSR;                /* Transmit Descriptor Ring Start Register */
    4068 
    4069         union {
    4070             uint32_t R;
    4071             struct {
    4072                 uint32_t:21;
    4073                 uint32_t R_BUF_SIZE:7;
    4074                   uint32_t:4;
    4075             } B;
    4076         } EMRBR;                /* Receive Buffer Size Register */
    4077 
    4078         uint32_t fec_reserved_emrbr[29];
    4079 
    4080         union {
    4081             uint32_t R;
    4082         } RMON_T_DROP;          /* Count of frames not counted correctly */
    4083 
    4084         union {
    4085             uint32_t R;
    4086         } RMON_T_PACKETS;       /* RMON Tx packet count */
    4087 
    4088         union {
    4089             uint32_t R;
    4090         } RMON_T_BC_PKT;        /* RMON Tx Broadcast Packets */
    4091 
    4092         union {
    4093             uint32_t R;
    4094         } RMON_T_MC_PKT;        /* RMON Tx Multicast Packets */
    4095 
    4096         union {
    4097             uint32_t R;
    4098         } RMON_T_CRC_ALIGN;     /* RMON Tx Packets w CRC/Align error */
    4099 
    4100         union {
    4101             uint32_t R;
    4102         } RMON_T_UNDERSIZE;     /* RMON Tx Packets < 64 bytes, good crc */
    4103 
    4104         union {
    4105             uint32_t R;
    4106         } RMON_T_OVERSIZE;      /* RMON Tx Packets > MAX_FL bytes, good crc */
    4107 
    4108         union {
    4109             uint32_t R;
    4110         } RMON_T_FRAG;          /* RMON Tx Packets < 64 bytes, bad crc */
    4111 
    4112         union {
    4113             uint32_t R;
    4114         } RMON_T_JAB;           /* RMON Tx Packets > MAX_FL bytes, bad crc */
    4115 
    4116         union {
    4117             uint32_t R;
    4118         } RMON_T_COL;           /* RMON Tx collision count */
    4119 
    4120         union {
    4121             uint32_t R;
    4122         } RMON_T_P64;           /* RMON Tx 64 byte packets */
    4123 <