kopia lustrzana https://github.com/majbthrd/pico-debug
5258 wiersze
273 KiB
C
5258 wiersze
273 KiB
C
/**
|
|
* Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
// =============================================================================
|
|
// Register block : DMA
|
|
// Version : 1
|
|
// Bus type : apb
|
|
// Description : DMA with separate read and write masters
|
|
// =============================================================================
|
|
#ifndef HARDWARE_REGS_DMA_DEFINED
|
|
#define HARDWARE_REGS_DMA_DEFINED
|
|
// =============================================================================
|
|
// Register : DMA_CH0_READ_ADDR
|
|
// Description : DMA Channel 0 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH0_READ_ADDR_OFFSET 0x00000000
|
|
#define DMA_CH0_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH0_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH0_READ_ADDR_MSB 31
|
|
#define DMA_CH0_READ_ADDR_LSB 0
|
|
#define DMA_CH0_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_WRITE_ADDR
|
|
// Description : DMA Channel 0 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH0_WRITE_ADDR_OFFSET 0x00000004
|
|
#define DMA_CH0_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH0_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH0_WRITE_ADDR_MSB 31
|
|
#define DMA_CH0_WRITE_ADDR_LSB 0
|
|
#define DMA_CH0_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_TRANS_COUNT
|
|
// Description : DMA Channel 0 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH0_TRANS_COUNT_OFFSET 0x00000008
|
|
#define DMA_CH0_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH0_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH0_TRANS_COUNT_MSB 31
|
|
#define DMA_CH0_TRANS_COUNT_LSB 0
|
|
#define DMA_CH0_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_CTRL_TRIG
|
|
// Description : DMA Channel 0 Control and Status
|
|
#define DMA_CH0_CTRL_TRIG_OFFSET 0x0000000c
|
|
#define DMA_CH0_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH0_CTRL_TRIG_RESET 0x00000000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH0_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH0_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH0_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH0_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH0_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH0_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH0_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH0_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH0_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH0_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH0_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH0_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH0_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH0_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH0_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH0_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH0_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH0_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH0_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH0_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (0).
|
|
#define DMA_CH0_CTRL_TRIG_CHAIN_TO_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH0_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH0_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH0_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH0_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH0_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH0_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH0_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH0_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH0_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH0_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH0_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH0_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH0_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH0_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH0_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH0_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH0_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH0_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH0_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH0_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH0_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH0_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH0_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH0_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH0_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH0_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH0_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL1_CTRL
|
|
// Description : Alias for channel 0 CTRL register
|
|
#define DMA_CH0_AL1_CTRL_OFFSET 0x00000010
|
|
#define DMA_CH0_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH0_AL1_CTRL_RESET "-"
|
|
#define DMA_CH0_AL1_CTRL_MSB 31
|
|
#define DMA_CH0_AL1_CTRL_LSB 0
|
|
#define DMA_CH0_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL1_READ_ADDR
|
|
// Description : Alias for channel 0 READ_ADDR register
|
|
#define DMA_CH0_AL1_READ_ADDR_OFFSET 0x00000014
|
|
#define DMA_CH0_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH0_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH0_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH0_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH0_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 0 WRITE_ADDR register
|
|
#define DMA_CH0_AL1_WRITE_ADDR_OFFSET 0x00000018
|
|
#define DMA_CH0_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH0_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH0_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH0_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH0_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 0 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH0_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000001c
|
|
#define DMA_CH0_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH0_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH0_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH0_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH0_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL2_CTRL
|
|
// Description : Alias for channel 0 CTRL register
|
|
#define DMA_CH0_AL2_CTRL_OFFSET 0x00000020
|
|
#define DMA_CH0_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH0_AL2_CTRL_RESET "-"
|
|
#define DMA_CH0_AL2_CTRL_MSB 31
|
|
#define DMA_CH0_AL2_CTRL_LSB 0
|
|
#define DMA_CH0_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 0 TRANS_COUNT register
|
|
#define DMA_CH0_AL2_TRANS_COUNT_OFFSET 0x00000024
|
|
#define DMA_CH0_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH0_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH0_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH0_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH0_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL2_READ_ADDR
|
|
// Description : Alias for channel 0 READ_ADDR register
|
|
#define DMA_CH0_AL2_READ_ADDR_OFFSET 0x00000028
|
|
#define DMA_CH0_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH0_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH0_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH0_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH0_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 0 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH0_AL2_WRITE_ADDR_TRIG_OFFSET 0x0000002c
|
|
#define DMA_CH0_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH0_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH0_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH0_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH0_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL3_CTRL
|
|
// Description : Alias for channel 0 CTRL register
|
|
#define DMA_CH0_AL3_CTRL_OFFSET 0x00000030
|
|
#define DMA_CH0_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH0_AL3_CTRL_RESET "-"
|
|
#define DMA_CH0_AL3_CTRL_MSB 31
|
|
#define DMA_CH0_AL3_CTRL_LSB 0
|
|
#define DMA_CH0_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 0 WRITE_ADDR register
|
|
#define DMA_CH0_AL3_WRITE_ADDR_OFFSET 0x00000034
|
|
#define DMA_CH0_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH0_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH0_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH0_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH0_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 0 TRANS_COUNT register
|
|
#define DMA_CH0_AL3_TRANS_COUNT_OFFSET 0x00000038
|
|
#define DMA_CH0_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH0_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH0_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH0_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH0_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 0 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH0_AL3_READ_ADDR_TRIG_OFFSET 0x0000003c
|
|
#define DMA_CH0_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH0_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH0_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH0_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH0_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_READ_ADDR
|
|
// Description : DMA Channel 1 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH1_READ_ADDR_OFFSET 0x00000040
|
|
#define DMA_CH1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH1_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH1_READ_ADDR_MSB 31
|
|
#define DMA_CH1_READ_ADDR_LSB 0
|
|
#define DMA_CH1_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_WRITE_ADDR
|
|
// Description : DMA Channel 1 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH1_WRITE_ADDR_OFFSET 0x00000044
|
|
#define DMA_CH1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH1_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH1_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_TRANS_COUNT
|
|
// Description : DMA Channel 1 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH1_TRANS_COUNT_OFFSET 0x00000048
|
|
#define DMA_CH1_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH1_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH1_TRANS_COUNT_MSB 31
|
|
#define DMA_CH1_TRANS_COUNT_LSB 0
|
|
#define DMA_CH1_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_CTRL_TRIG
|
|
// Description : DMA Channel 1 Control and Status
|
|
#define DMA_CH1_CTRL_TRIG_OFFSET 0x0000004c
|
|
#define DMA_CH1_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH1_CTRL_TRIG_RESET 0x00000800
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH1_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH1_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH1_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH1_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH1_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH1_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH1_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH1_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH1_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH1_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH1_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH1_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH1_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH1_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH1_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH1_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH1_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH1_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH1_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH1_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (1).
|
|
#define DMA_CH1_CTRL_TRIG_CHAIN_TO_RESET 0x1
|
|
#define DMA_CH1_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH1_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH1_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH1_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH1_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH1_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH1_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH1_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH1_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH1_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH1_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH1_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH1_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH1_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH1_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH1_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH1_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH1_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH1_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH1_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH1_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH1_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH1_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH1_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH1_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH1_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH1_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH1_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL1_CTRL
|
|
// Description : Alias for channel 1 CTRL register
|
|
#define DMA_CH1_AL1_CTRL_OFFSET 0x00000050
|
|
#define DMA_CH1_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH1_AL1_CTRL_RESET "-"
|
|
#define DMA_CH1_AL1_CTRL_MSB 31
|
|
#define DMA_CH1_AL1_CTRL_LSB 0
|
|
#define DMA_CH1_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL1_READ_ADDR
|
|
// Description : Alias for channel 1 READ_ADDR register
|
|
#define DMA_CH1_AL1_READ_ADDR_OFFSET 0x00000054
|
|
#define DMA_CH1_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH1_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH1_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH1_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH1_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 1 WRITE_ADDR register
|
|
#define DMA_CH1_AL1_WRITE_ADDR_OFFSET 0x00000058
|
|
#define DMA_CH1_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH1_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH1_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH1_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH1_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 1 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH1_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000005c
|
|
#define DMA_CH1_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH1_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH1_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH1_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH1_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL2_CTRL
|
|
// Description : Alias for channel 1 CTRL register
|
|
#define DMA_CH1_AL2_CTRL_OFFSET 0x00000060
|
|
#define DMA_CH1_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH1_AL2_CTRL_RESET "-"
|
|
#define DMA_CH1_AL2_CTRL_MSB 31
|
|
#define DMA_CH1_AL2_CTRL_LSB 0
|
|
#define DMA_CH1_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 1 TRANS_COUNT register
|
|
#define DMA_CH1_AL2_TRANS_COUNT_OFFSET 0x00000064
|
|
#define DMA_CH1_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH1_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH1_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH1_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH1_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL2_READ_ADDR
|
|
// Description : Alias for channel 1 READ_ADDR register
|
|
#define DMA_CH1_AL2_READ_ADDR_OFFSET 0x00000068
|
|
#define DMA_CH1_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH1_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH1_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH1_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH1_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 1 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH1_AL2_WRITE_ADDR_TRIG_OFFSET 0x0000006c
|
|
#define DMA_CH1_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH1_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH1_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH1_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH1_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL3_CTRL
|
|
// Description : Alias for channel 1 CTRL register
|
|
#define DMA_CH1_AL3_CTRL_OFFSET 0x00000070
|
|
#define DMA_CH1_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH1_AL3_CTRL_RESET "-"
|
|
#define DMA_CH1_AL3_CTRL_MSB 31
|
|
#define DMA_CH1_AL3_CTRL_LSB 0
|
|
#define DMA_CH1_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 1 WRITE_ADDR register
|
|
#define DMA_CH1_AL3_WRITE_ADDR_OFFSET 0x00000074
|
|
#define DMA_CH1_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH1_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH1_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH1_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH1_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 1 TRANS_COUNT register
|
|
#define DMA_CH1_AL3_TRANS_COUNT_OFFSET 0x00000078
|
|
#define DMA_CH1_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH1_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH1_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH1_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH1_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 1 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH1_AL3_READ_ADDR_TRIG_OFFSET 0x0000007c
|
|
#define DMA_CH1_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH1_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH1_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH1_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH1_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_READ_ADDR
|
|
// Description : DMA Channel 2 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH2_READ_ADDR_OFFSET 0x00000080
|
|
#define DMA_CH2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH2_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH2_READ_ADDR_MSB 31
|
|
#define DMA_CH2_READ_ADDR_LSB 0
|
|
#define DMA_CH2_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_WRITE_ADDR
|
|
// Description : DMA Channel 2 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH2_WRITE_ADDR_OFFSET 0x00000084
|
|
#define DMA_CH2_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH2_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH2_WRITE_ADDR_MSB 31
|
|
#define DMA_CH2_WRITE_ADDR_LSB 0
|
|
#define DMA_CH2_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_TRANS_COUNT
|
|
// Description : DMA Channel 2 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH2_TRANS_COUNT_OFFSET 0x00000088
|
|
#define DMA_CH2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH2_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH2_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_CTRL_TRIG
|
|
// Description : DMA Channel 2 Control and Status
|
|
#define DMA_CH2_CTRL_TRIG_OFFSET 0x0000008c
|
|
#define DMA_CH2_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH2_CTRL_TRIG_RESET 0x00001000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH2_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH2_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH2_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH2_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH2_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH2_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH2_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH2_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH2_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH2_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH2_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH2_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH2_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH2_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH2_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH2_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH2_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH2_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH2_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH2_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (2).
|
|
#define DMA_CH2_CTRL_TRIG_CHAIN_TO_RESET 0x2
|
|
#define DMA_CH2_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH2_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH2_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH2_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH2_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH2_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH2_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH2_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH2_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH2_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH2_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH2_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH2_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH2_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH2_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH2_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH2_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH2_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH2_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH2_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH2_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH2_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH2_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH2_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH2_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH2_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH2_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH2_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL1_CTRL
|
|
// Description : Alias for channel 2 CTRL register
|
|
#define DMA_CH2_AL1_CTRL_OFFSET 0x00000090
|
|
#define DMA_CH2_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH2_AL1_CTRL_RESET "-"
|
|
#define DMA_CH2_AL1_CTRL_MSB 31
|
|
#define DMA_CH2_AL1_CTRL_LSB 0
|
|
#define DMA_CH2_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL1_READ_ADDR
|
|
// Description : Alias for channel 2 READ_ADDR register
|
|
#define DMA_CH2_AL1_READ_ADDR_OFFSET 0x00000094
|
|
#define DMA_CH2_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH2_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH2_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH2_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH2_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 2 WRITE_ADDR register
|
|
#define DMA_CH2_AL1_WRITE_ADDR_OFFSET 0x00000098
|
|
#define DMA_CH2_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH2_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH2_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH2_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH2_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 2 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH2_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000009c
|
|
#define DMA_CH2_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH2_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH2_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH2_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH2_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL2_CTRL
|
|
// Description : Alias for channel 2 CTRL register
|
|
#define DMA_CH2_AL2_CTRL_OFFSET 0x000000a0
|
|
#define DMA_CH2_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH2_AL2_CTRL_RESET "-"
|
|
#define DMA_CH2_AL2_CTRL_MSB 31
|
|
#define DMA_CH2_AL2_CTRL_LSB 0
|
|
#define DMA_CH2_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 2 TRANS_COUNT register
|
|
#define DMA_CH2_AL2_TRANS_COUNT_OFFSET 0x000000a4
|
|
#define DMA_CH2_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH2_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH2_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH2_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH2_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL2_READ_ADDR
|
|
// Description : Alias for channel 2 READ_ADDR register
|
|
#define DMA_CH2_AL2_READ_ADDR_OFFSET 0x000000a8
|
|
#define DMA_CH2_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH2_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH2_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH2_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH2_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 2 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH2_AL2_WRITE_ADDR_TRIG_OFFSET 0x000000ac
|
|
#define DMA_CH2_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH2_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH2_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH2_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH2_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL3_CTRL
|
|
// Description : Alias for channel 2 CTRL register
|
|
#define DMA_CH2_AL3_CTRL_OFFSET 0x000000b0
|
|
#define DMA_CH2_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH2_AL3_CTRL_RESET "-"
|
|
#define DMA_CH2_AL3_CTRL_MSB 31
|
|
#define DMA_CH2_AL3_CTRL_LSB 0
|
|
#define DMA_CH2_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 2 WRITE_ADDR register
|
|
#define DMA_CH2_AL3_WRITE_ADDR_OFFSET 0x000000b4
|
|
#define DMA_CH2_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH2_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH2_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH2_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH2_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 2 TRANS_COUNT register
|
|
#define DMA_CH2_AL3_TRANS_COUNT_OFFSET 0x000000b8
|
|
#define DMA_CH2_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH2_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH2_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH2_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH2_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 2 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH2_AL3_READ_ADDR_TRIG_OFFSET 0x000000bc
|
|
#define DMA_CH2_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH2_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH2_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH2_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH2_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_READ_ADDR
|
|
// Description : DMA Channel 3 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH3_READ_ADDR_OFFSET 0x000000c0
|
|
#define DMA_CH3_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH3_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH3_READ_ADDR_MSB 31
|
|
#define DMA_CH3_READ_ADDR_LSB 0
|
|
#define DMA_CH3_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_WRITE_ADDR
|
|
// Description : DMA Channel 3 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH3_WRITE_ADDR_OFFSET 0x000000c4
|
|
#define DMA_CH3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH3_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH3_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_TRANS_COUNT
|
|
// Description : DMA Channel 3 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH3_TRANS_COUNT_OFFSET 0x000000c8
|
|
#define DMA_CH3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH3_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH3_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_CTRL_TRIG
|
|
// Description : DMA Channel 3 Control and Status
|
|
#define DMA_CH3_CTRL_TRIG_OFFSET 0x000000cc
|
|
#define DMA_CH3_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH3_CTRL_TRIG_RESET 0x00001800
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH3_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH3_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH3_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH3_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH3_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH3_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH3_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH3_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH3_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH3_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH3_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH3_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH3_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH3_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH3_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH3_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH3_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH3_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH3_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH3_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (3).
|
|
#define DMA_CH3_CTRL_TRIG_CHAIN_TO_RESET 0x3
|
|
#define DMA_CH3_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH3_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH3_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH3_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH3_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH3_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH3_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH3_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH3_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH3_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH3_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH3_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH3_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH3_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH3_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH3_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH3_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH3_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH3_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH3_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH3_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH3_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH3_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH3_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH3_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH3_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH3_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH3_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL1_CTRL
|
|
// Description : Alias for channel 3 CTRL register
|
|
#define DMA_CH3_AL1_CTRL_OFFSET 0x000000d0
|
|
#define DMA_CH3_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH3_AL1_CTRL_RESET "-"
|
|
#define DMA_CH3_AL1_CTRL_MSB 31
|
|
#define DMA_CH3_AL1_CTRL_LSB 0
|
|
#define DMA_CH3_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL1_READ_ADDR
|
|
// Description : Alias for channel 3 READ_ADDR register
|
|
#define DMA_CH3_AL1_READ_ADDR_OFFSET 0x000000d4
|
|
#define DMA_CH3_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH3_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH3_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH3_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH3_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 3 WRITE_ADDR register
|
|
#define DMA_CH3_AL1_WRITE_ADDR_OFFSET 0x000000d8
|
|
#define DMA_CH3_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH3_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH3_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH3_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH3_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 3 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH3_AL1_TRANS_COUNT_TRIG_OFFSET 0x000000dc
|
|
#define DMA_CH3_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH3_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH3_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH3_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH3_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL2_CTRL
|
|
// Description : Alias for channel 3 CTRL register
|
|
#define DMA_CH3_AL2_CTRL_OFFSET 0x000000e0
|
|
#define DMA_CH3_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH3_AL2_CTRL_RESET "-"
|
|
#define DMA_CH3_AL2_CTRL_MSB 31
|
|
#define DMA_CH3_AL2_CTRL_LSB 0
|
|
#define DMA_CH3_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 3 TRANS_COUNT register
|
|
#define DMA_CH3_AL2_TRANS_COUNT_OFFSET 0x000000e4
|
|
#define DMA_CH3_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH3_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH3_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH3_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH3_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL2_READ_ADDR
|
|
// Description : Alias for channel 3 READ_ADDR register
|
|
#define DMA_CH3_AL2_READ_ADDR_OFFSET 0x000000e8
|
|
#define DMA_CH3_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH3_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH3_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH3_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH3_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 3 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH3_AL2_WRITE_ADDR_TRIG_OFFSET 0x000000ec
|
|
#define DMA_CH3_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH3_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH3_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH3_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH3_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL3_CTRL
|
|
// Description : Alias for channel 3 CTRL register
|
|
#define DMA_CH3_AL3_CTRL_OFFSET 0x000000f0
|
|
#define DMA_CH3_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH3_AL3_CTRL_RESET "-"
|
|
#define DMA_CH3_AL3_CTRL_MSB 31
|
|
#define DMA_CH3_AL3_CTRL_LSB 0
|
|
#define DMA_CH3_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 3 WRITE_ADDR register
|
|
#define DMA_CH3_AL3_WRITE_ADDR_OFFSET 0x000000f4
|
|
#define DMA_CH3_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH3_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH3_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH3_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH3_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 3 TRANS_COUNT register
|
|
#define DMA_CH3_AL3_TRANS_COUNT_OFFSET 0x000000f8
|
|
#define DMA_CH3_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH3_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH3_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH3_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH3_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 3 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH3_AL3_READ_ADDR_TRIG_OFFSET 0x000000fc
|
|
#define DMA_CH3_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH3_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH3_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH3_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH3_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_READ_ADDR
|
|
// Description : DMA Channel 4 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH4_READ_ADDR_OFFSET 0x00000100
|
|
#define DMA_CH4_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH4_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH4_READ_ADDR_MSB 31
|
|
#define DMA_CH4_READ_ADDR_LSB 0
|
|
#define DMA_CH4_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_WRITE_ADDR
|
|
// Description : DMA Channel 4 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH4_WRITE_ADDR_OFFSET 0x00000104
|
|
#define DMA_CH4_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH4_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH4_WRITE_ADDR_MSB 31
|
|
#define DMA_CH4_WRITE_ADDR_LSB 0
|
|
#define DMA_CH4_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_TRANS_COUNT
|
|
// Description : DMA Channel 4 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH4_TRANS_COUNT_OFFSET 0x00000108
|
|
#define DMA_CH4_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH4_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH4_TRANS_COUNT_MSB 31
|
|
#define DMA_CH4_TRANS_COUNT_LSB 0
|
|
#define DMA_CH4_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_CTRL_TRIG
|
|
// Description : DMA Channel 4 Control and Status
|
|
#define DMA_CH4_CTRL_TRIG_OFFSET 0x0000010c
|
|
#define DMA_CH4_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH4_CTRL_TRIG_RESET 0x00002000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH4_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH4_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH4_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH4_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH4_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH4_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH4_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH4_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH4_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH4_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH4_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH4_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH4_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH4_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH4_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH4_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH4_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH4_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH4_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH4_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (4).
|
|
#define DMA_CH4_CTRL_TRIG_CHAIN_TO_RESET 0x4
|
|
#define DMA_CH4_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH4_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH4_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH4_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH4_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH4_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH4_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH4_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH4_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH4_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH4_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH4_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH4_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH4_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH4_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH4_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH4_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH4_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH4_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH4_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH4_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH4_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH4_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH4_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH4_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH4_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH4_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH4_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL1_CTRL
|
|
// Description : Alias for channel 4 CTRL register
|
|
#define DMA_CH4_AL1_CTRL_OFFSET 0x00000110
|
|
#define DMA_CH4_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH4_AL1_CTRL_RESET "-"
|
|
#define DMA_CH4_AL1_CTRL_MSB 31
|
|
#define DMA_CH4_AL1_CTRL_LSB 0
|
|
#define DMA_CH4_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL1_READ_ADDR
|
|
// Description : Alias for channel 4 READ_ADDR register
|
|
#define DMA_CH4_AL1_READ_ADDR_OFFSET 0x00000114
|
|
#define DMA_CH4_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH4_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH4_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH4_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH4_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 4 WRITE_ADDR register
|
|
#define DMA_CH4_AL1_WRITE_ADDR_OFFSET 0x00000118
|
|
#define DMA_CH4_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH4_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH4_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH4_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH4_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 4 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH4_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000011c
|
|
#define DMA_CH4_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH4_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH4_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH4_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH4_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL2_CTRL
|
|
// Description : Alias for channel 4 CTRL register
|
|
#define DMA_CH4_AL2_CTRL_OFFSET 0x00000120
|
|
#define DMA_CH4_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH4_AL2_CTRL_RESET "-"
|
|
#define DMA_CH4_AL2_CTRL_MSB 31
|
|
#define DMA_CH4_AL2_CTRL_LSB 0
|
|
#define DMA_CH4_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 4 TRANS_COUNT register
|
|
#define DMA_CH4_AL2_TRANS_COUNT_OFFSET 0x00000124
|
|
#define DMA_CH4_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH4_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH4_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH4_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH4_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL2_READ_ADDR
|
|
// Description : Alias for channel 4 READ_ADDR register
|
|
#define DMA_CH4_AL2_READ_ADDR_OFFSET 0x00000128
|
|
#define DMA_CH4_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH4_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH4_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH4_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH4_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 4 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH4_AL2_WRITE_ADDR_TRIG_OFFSET 0x0000012c
|
|
#define DMA_CH4_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH4_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH4_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH4_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH4_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL3_CTRL
|
|
// Description : Alias for channel 4 CTRL register
|
|
#define DMA_CH4_AL3_CTRL_OFFSET 0x00000130
|
|
#define DMA_CH4_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH4_AL3_CTRL_RESET "-"
|
|
#define DMA_CH4_AL3_CTRL_MSB 31
|
|
#define DMA_CH4_AL3_CTRL_LSB 0
|
|
#define DMA_CH4_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 4 WRITE_ADDR register
|
|
#define DMA_CH4_AL3_WRITE_ADDR_OFFSET 0x00000134
|
|
#define DMA_CH4_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH4_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH4_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH4_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH4_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 4 TRANS_COUNT register
|
|
#define DMA_CH4_AL3_TRANS_COUNT_OFFSET 0x00000138
|
|
#define DMA_CH4_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH4_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH4_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH4_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH4_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 4 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH4_AL3_READ_ADDR_TRIG_OFFSET 0x0000013c
|
|
#define DMA_CH4_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH4_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH4_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH4_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH4_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_READ_ADDR
|
|
// Description : DMA Channel 5 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH5_READ_ADDR_OFFSET 0x00000140
|
|
#define DMA_CH5_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH5_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH5_READ_ADDR_MSB 31
|
|
#define DMA_CH5_READ_ADDR_LSB 0
|
|
#define DMA_CH5_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_WRITE_ADDR
|
|
// Description : DMA Channel 5 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH5_WRITE_ADDR_OFFSET 0x00000144
|
|
#define DMA_CH5_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH5_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH5_WRITE_ADDR_MSB 31
|
|
#define DMA_CH5_WRITE_ADDR_LSB 0
|
|
#define DMA_CH5_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_TRANS_COUNT
|
|
// Description : DMA Channel 5 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH5_TRANS_COUNT_OFFSET 0x00000148
|
|
#define DMA_CH5_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH5_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH5_TRANS_COUNT_MSB 31
|
|
#define DMA_CH5_TRANS_COUNT_LSB 0
|
|
#define DMA_CH5_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_CTRL_TRIG
|
|
// Description : DMA Channel 5 Control and Status
|
|
#define DMA_CH5_CTRL_TRIG_OFFSET 0x0000014c
|
|
#define DMA_CH5_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH5_CTRL_TRIG_RESET 0x00002800
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH5_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH5_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH5_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH5_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH5_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH5_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH5_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH5_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH5_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH5_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH5_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH5_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH5_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH5_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH5_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH5_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH5_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH5_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH5_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH5_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (5).
|
|
#define DMA_CH5_CTRL_TRIG_CHAIN_TO_RESET 0x5
|
|
#define DMA_CH5_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH5_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH5_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH5_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH5_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH5_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH5_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH5_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH5_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH5_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH5_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH5_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH5_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH5_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH5_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH5_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH5_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH5_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH5_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH5_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH5_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH5_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH5_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH5_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH5_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH5_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH5_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH5_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL1_CTRL
|
|
// Description : Alias for channel 5 CTRL register
|
|
#define DMA_CH5_AL1_CTRL_OFFSET 0x00000150
|
|
#define DMA_CH5_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH5_AL1_CTRL_RESET "-"
|
|
#define DMA_CH5_AL1_CTRL_MSB 31
|
|
#define DMA_CH5_AL1_CTRL_LSB 0
|
|
#define DMA_CH5_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL1_READ_ADDR
|
|
// Description : Alias for channel 5 READ_ADDR register
|
|
#define DMA_CH5_AL1_READ_ADDR_OFFSET 0x00000154
|
|
#define DMA_CH5_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH5_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH5_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH5_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH5_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 5 WRITE_ADDR register
|
|
#define DMA_CH5_AL1_WRITE_ADDR_OFFSET 0x00000158
|
|
#define DMA_CH5_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH5_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH5_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH5_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH5_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 5 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH5_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000015c
|
|
#define DMA_CH5_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH5_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH5_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH5_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH5_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL2_CTRL
|
|
// Description : Alias for channel 5 CTRL register
|
|
#define DMA_CH5_AL2_CTRL_OFFSET 0x00000160
|
|
#define DMA_CH5_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH5_AL2_CTRL_RESET "-"
|
|
#define DMA_CH5_AL2_CTRL_MSB 31
|
|
#define DMA_CH5_AL2_CTRL_LSB 0
|
|
#define DMA_CH5_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 5 TRANS_COUNT register
|
|
#define DMA_CH5_AL2_TRANS_COUNT_OFFSET 0x00000164
|
|
#define DMA_CH5_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH5_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH5_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH5_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH5_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL2_READ_ADDR
|
|
// Description : Alias for channel 5 READ_ADDR register
|
|
#define DMA_CH5_AL2_READ_ADDR_OFFSET 0x00000168
|
|
#define DMA_CH5_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH5_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH5_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH5_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH5_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 5 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH5_AL2_WRITE_ADDR_TRIG_OFFSET 0x0000016c
|
|
#define DMA_CH5_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH5_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH5_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH5_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH5_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL3_CTRL
|
|
// Description : Alias for channel 5 CTRL register
|
|
#define DMA_CH5_AL3_CTRL_OFFSET 0x00000170
|
|
#define DMA_CH5_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH5_AL3_CTRL_RESET "-"
|
|
#define DMA_CH5_AL3_CTRL_MSB 31
|
|
#define DMA_CH5_AL3_CTRL_LSB 0
|
|
#define DMA_CH5_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 5 WRITE_ADDR register
|
|
#define DMA_CH5_AL3_WRITE_ADDR_OFFSET 0x00000174
|
|
#define DMA_CH5_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH5_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH5_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH5_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH5_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 5 TRANS_COUNT register
|
|
#define DMA_CH5_AL3_TRANS_COUNT_OFFSET 0x00000178
|
|
#define DMA_CH5_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH5_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH5_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH5_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH5_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 5 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH5_AL3_READ_ADDR_TRIG_OFFSET 0x0000017c
|
|
#define DMA_CH5_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH5_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH5_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH5_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH5_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_READ_ADDR
|
|
// Description : DMA Channel 6 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH6_READ_ADDR_OFFSET 0x00000180
|
|
#define DMA_CH6_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH6_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH6_READ_ADDR_MSB 31
|
|
#define DMA_CH6_READ_ADDR_LSB 0
|
|
#define DMA_CH6_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_WRITE_ADDR
|
|
// Description : DMA Channel 6 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH6_WRITE_ADDR_OFFSET 0x00000184
|
|
#define DMA_CH6_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH6_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH6_WRITE_ADDR_MSB 31
|
|
#define DMA_CH6_WRITE_ADDR_LSB 0
|
|
#define DMA_CH6_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_TRANS_COUNT
|
|
// Description : DMA Channel 6 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH6_TRANS_COUNT_OFFSET 0x00000188
|
|
#define DMA_CH6_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH6_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH6_TRANS_COUNT_MSB 31
|
|
#define DMA_CH6_TRANS_COUNT_LSB 0
|
|
#define DMA_CH6_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_CTRL_TRIG
|
|
// Description : DMA Channel 6 Control and Status
|
|
#define DMA_CH6_CTRL_TRIG_OFFSET 0x0000018c
|
|
#define DMA_CH6_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH6_CTRL_TRIG_RESET 0x00003000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH6_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH6_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH6_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH6_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH6_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH6_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH6_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH6_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH6_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH6_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH6_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH6_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH6_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH6_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH6_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH6_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH6_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH6_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH6_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH6_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (6).
|
|
#define DMA_CH6_CTRL_TRIG_CHAIN_TO_RESET 0x6
|
|
#define DMA_CH6_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH6_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH6_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH6_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH6_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH6_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH6_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH6_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH6_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH6_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH6_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH6_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH6_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH6_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH6_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH6_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH6_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH6_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH6_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH6_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH6_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH6_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH6_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH6_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH6_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH6_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH6_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH6_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL1_CTRL
|
|
// Description : Alias for channel 6 CTRL register
|
|
#define DMA_CH6_AL1_CTRL_OFFSET 0x00000190
|
|
#define DMA_CH6_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH6_AL1_CTRL_RESET "-"
|
|
#define DMA_CH6_AL1_CTRL_MSB 31
|
|
#define DMA_CH6_AL1_CTRL_LSB 0
|
|
#define DMA_CH6_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL1_READ_ADDR
|
|
// Description : Alias for channel 6 READ_ADDR register
|
|
#define DMA_CH6_AL1_READ_ADDR_OFFSET 0x00000194
|
|
#define DMA_CH6_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH6_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH6_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH6_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH6_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 6 WRITE_ADDR register
|
|
#define DMA_CH6_AL1_WRITE_ADDR_OFFSET 0x00000198
|
|
#define DMA_CH6_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH6_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH6_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH6_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH6_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 6 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH6_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000019c
|
|
#define DMA_CH6_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH6_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH6_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH6_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH6_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL2_CTRL
|
|
// Description : Alias for channel 6 CTRL register
|
|
#define DMA_CH6_AL2_CTRL_OFFSET 0x000001a0
|
|
#define DMA_CH6_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH6_AL2_CTRL_RESET "-"
|
|
#define DMA_CH6_AL2_CTRL_MSB 31
|
|
#define DMA_CH6_AL2_CTRL_LSB 0
|
|
#define DMA_CH6_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 6 TRANS_COUNT register
|
|
#define DMA_CH6_AL2_TRANS_COUNT_OFFSET 0x000001a4
|
|
#define DMA_CH6_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH6_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH6_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH6_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH6_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL2_READ_ADDR
|
|
// Description : Alias for channel 6 READ_ADDR register
|
|
#define DMA_CH6_AL2_READ_ADDR_OFFSET 0x000001a8
|
|
#define DMA_CH6_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH6_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH6_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH6_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH6_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 6 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH6_AL2_WRITE_ADDR_TRIG_OFFSET 0x000001ac
|
|
#define DMA_CH6_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH6_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH6_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH6_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH6_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL3_CTRL
|
|
// Description : Alias for channel 6 CTRL register
|
|
#define DMA_CH6_AL3_CTRL_OFFSET 0x000001b0
|
|
#define DMA_CH6_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH6_AL3_CTRL_RESET "-"
|
|
#define DMA_CH6_AL3_CTRL_MSB 31
|
|
#define DMA_CH6_AL3_CTRL_LSB 0
|
|
#define DMA_CH6_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 6 WRITE_ADDR register
|
|
#define DMA_CH6_AL3_WRITE_ADDR_OFFSET 0x000001b4
|
|
#define DMA_CH6_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH6_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH6_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH6_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH6_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 6 TRANS_COUNT register
|
|
#define DMA_CH6_AL3_TRANS_COUNT_OFFSET 0x000001b8
|
|
#define DMA_CH6_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH6_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH6_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH6_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH6_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 6 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH6_AL3_READ_ADDR_TRIG_OFFSET 0x000001bc
|
|
#define DMA_CH6_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH6_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH6_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH6_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH6_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_READ_ADDR
|
|
// Description : DMA Channel 7 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH7_READ_ADDR_OFFSET 0x000001c0
|
|
#define DMA_CH7_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH7_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH7_READ_ADDR_MSB 31
|
|
#define DMA_CH7_READ_ADDR_LSB 0
|
|
#define DMA_CH7_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_WRITE_ADDR
|
|
// Description : DMA Channel 7 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH7_WRITE_ADDR_OFFSET 0x000001c4
|
|
#define DMA_CH7_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH7_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH7_WRITE_ADDR_MSB 31
|
|
#define DMA_CH7_WRITE_ADDR_LSB 0
|
|
#define DMA_CH7_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_TRANS_COUNT
|
|
// Description : DMA Channel 7 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH7_TRANS_COUNT_OFFSET 0x000001c8
|
|
#define DMA_CH7_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH7_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH7_TRANS_COUNT_MSB 31
|
|
#define DMA_CH7_TRANS_COUNT_LSB 0
|
|
#define DMA_CH7_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_CTRL_TRIG
|
|
// Description : DMA Channel 7 Control and Status
|
|
#define DMA_CH7_CTRL_TRIG_OFFSET 0x000001cc
|
|
#define DMA_CH7_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH7_CTRL_TRIG_RESET 0x00003800
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH7_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH7_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH7_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH7_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH7_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH7_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH7_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH7_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH7_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH7_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH7_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH7_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH7_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH7_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH7_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH7_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH7_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH7_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH7_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH7_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (7).
|
|
#define DMA_CH7_CTRL_TRIG_CHAIN_TO_RESET 0x7
|
|
#define DMA_CH7_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH7_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH7_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH7_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH7_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH7_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH7_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH7_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH7_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH7_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH7_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH7_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH7_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH7_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH7_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH7_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH7_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH7_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH7_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH7_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH7_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH7_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH7_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH7_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH7_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH7_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH7_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH7_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL1_CTRL
|
|
// Description : Alias for channel 7 CTRL register
|
|
#define DMA_CH7_AL1_CTRL_OFFSET 0x000001d0
|
|
#define DMA_CH7_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH7_AL1_CTRL_RESET "-"
|
|
#define DMA_CH7_AL1_CTRL_MSB 31
|
|
#define DMA_CH7_AL1_CTRL_LSB 0
|
|
#define DMA_CH7_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL1_READ_ADDR
|
|
// Description : Alias for channel 7 READ_ADDR register
|
|
#define DMA_CH7_AL1_READ_ADDR_OFFSET 0x000001d4
|
|
#define DMA_CH7_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH7_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH7_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH7_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH7_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 7 WRITE_ADDR register
|
|
#define DMA_CH7_AL1_WRITE_ADDR_OFFSET 0x000001d8
|
|
#define DMA_CH7_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH7_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH7_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH7_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH7_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 7 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH7_AL1_TRANS_COUNT_TRIG_OFFSET 0x000001dc
|
|
#define DMA_CH7_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH7_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH7_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH7_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH7_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL2_CTRL
|
|
// Description : Alias for channel 7 CTRL register
|
|
#define DMA_CH7_AL2_CTRL_OFFSET 0x000001e0
|
|
#define DMA_CH7_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH7_AL2_CTRL_RESET "-"
|
|
#define DMA_CH7_AL2_CTRL_MSB 31
|
|
#define DMA_CH7_AL2_CTRL_LSB 0
|
|
#define DMA_CH7_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 7 TRANS_COUNT register
|
|
#define DMA_CH7_AL2_TRANS_COUNT_OFFSET 0x000001e4
|
|
#define DMA_CH7_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH7_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH7_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH7_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH7_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL2_READ_ADDR
|
|
// Description : Alias for channel 7 READ_ADDR register
|
|
#define DMA_CH7_AL2_READ_ADDR_OFFSET 0x000001e8
|
|
#define DMA_CH7_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH7_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH7_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH7_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH7_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 7 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH7_AL2_WRITE_ADDR_TRIG_OFFSET 0x000001ec
|
|
#define DMA_CH7_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH7_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH7_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH7_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH7_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL3_CTRL
|
|
// Description : Alias for channel 7 CTRL register
|
|
#define DMA_CH7_AL3_CTRL_OFFSET 0x000001f0
|
|
#define DMA_CH7_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH7_AL3_CTRL_RESET "-"
|
|
#define DMA_CH7_AL3_CTRL_MSB 31
|
|
#define DMA_CH7_AL3_CTRL_LSB 0
|
|
#define DMA_CH7_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 7 WRITE_ADDR register
|
|
#define DMA_CH7_AL3_WRITE_ADDR_OFFSET 0x000001f4
|
|
#define DMA_CH7_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH7_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH7_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH7_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH7_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 7 TRANS_COUNT register
|
|
#define DMA_CH7_AL3_TRANS_COUNT_OFFSET 0x000001f8
|
|
#define DMA_CH7_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH7_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH7_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH7_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH7_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 7 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH7_AL3_READ_ADDR_TRIG_OFFSET 0x000001fc
|
|
#define DMA_CH7_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH7_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH7_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH7_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH7_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_READ_ADDR
|
|
// Description : DMA Channel 8 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH8_READ_ADDR_OFFSET 0x00000200
|
|
#define DMA_CH8_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH8_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH8_READ_ADDR_MSB 31
|
|
#define DMA_CH8_READ_ADDR_LSB 0
|
|
#define DMA_CH8_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_WRITE_ADDR
|
|
// Description : DMA Channel 8 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH8_WRITE_ADDR_OFFSET 0x00000204
|
|
#define DMA_CH8_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH8_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH8_WRITE_ADDR_MSB 31
|
|
#define DMA_CH8_WRITE_ADDR_LSB 0
|
|
#define DMA_CH8_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_TRANS_COUNT
|
|
// Description : DMA Channel 8 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH8_TRANS_COUNT_OFFSET 0x00000208
|
|
#define DMA_CH8_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH8_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH8_TRANS_COUNT_MSB 31
|
|
#define DMA_CH8_TRANS_COUNT_LSB 0
|
|
#define DMA_CH8_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_CTRL_TRIG
|
|
// Description : DMA Channel 8 Control and Status
|
|
#define DMA_CH8_CTRL_TRIG_OFFSET 0x0000020c
|
|
#define DMA_CH8_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH8_CTRL_TRIG_RESET 0x00004000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH8_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH8_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH8_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH8_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH8_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH8_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH8_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH8_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH8_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH8_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH8_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH8_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH8_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH8_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH8_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH8_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH8_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH8_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH8_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH8_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (8).
|
|
#define DMA_CH8_CTRL_TRIG_CHAIN_TO_RESET 0x8
|
|
#define DMA_CH8_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH8_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH8_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH8_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH8_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH8_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH8_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH8_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH8_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH8_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH8_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH8_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH8_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH8_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH8_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH8_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH8_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH8_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH8_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH8_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH8_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH8_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH8_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH8_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH8_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH8_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH8_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH8_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL1_CTRL
|
|
// Description : Alias for channel 8 CTRL register
|
|
#define DMA_CH8_AL1_CTRL_OFFSET 0x00000210
|
|
#define DMA_CH8_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH8_AL1_CTRL_RESET "-"
|
|
#define DMA_CH8_AL1_CTRL_MSB 31
|
|
#define DMA_CH8_AL1_CTRL_LSB 0
|
|
#define DMA_CH8_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL1_READ_ADDR
|
|
// Description : Alias for channel 8 READ_ADDR register
|
|
#define DMA_CH8_AL1_READ_ADDR_OFFSET 0x00000214
|
|
#define DMA_CH8_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH8_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH8_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH8_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH8_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 8 WRITE_ADDR register
|
|
#define DMA_CH8_AL1_WRITE_ADDR_OFFSET 0x00000218
|
|
#define DMA_CH8_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH8_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH8_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH8_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH8_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 8 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH8_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000021c
|
|
#define DMA_CH8_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH8_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH8_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH8_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH8_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL2_CTRL
|
|
// Description : Alias for channel 8 CTRL register
|
|
#define DMA_CH8_AL2_CTRL_OFFSET 0x00000220
|
|
#define DMA_CH8_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH8_AL2_CTRL_RESET "-"
|
|
#define DMA_CH8_AL2_CTRL_MSB 31
|
|
#define DMA_CH8_AL2_CTRL_LSB 0
|
|
#define DMA_CH8_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 8 TRANS_COUNT register
|
|
#define DMA_CH8_AL2_TRANS_COUNT_OFFSET 0x00000224
|
|
#define DMA_CH8_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH8_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH8_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH8_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH8_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL2_READ_ADDR
|
|
// Description : Alias for channel 8 READ_ADDR register
|
|
#define DMA_CH8_AL2_READ_ADDR_OFFSET 0x00000228
|
|
#define DMA_CH8_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH8_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH8_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH8_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH8_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 8 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH8_AL2_WRITE_ADDR_TRIG_OFFSET 0x0000022c
|
|
#define DMA_CH8_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH8_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH8_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH8_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH8_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL3_CTRL
|
|
// Description : Alias for channel 8 CTRL register
|
|
#define DMA_CH8_AL3_CTRL_OFFSET 0x00000230
|
|
#define DMA_CH8_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH8_AL3_CTRL_RESET "-"
|
|
#define DMA_CH8_AL3_CTRL_MSB 31
|
|
#define DMA_CH8_AL3_CTRL_LSB 0
|
|
#define DMA_CH8_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 8 WRITE_ADDR register
|
|
#define DMA_CH8_AL3_WRITE_ADDR_OFFSET 0x00000234
|
|
#define DMA_CH8_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH8_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH8_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH8_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH8_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 8 TRANS_COUNT register
|
|
#define DMA_CH8_AL3_TRANS_COUNT_OFFSET 0x00000238
|
|
#define DMA_CH8_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH8_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH8_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH8_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH8_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 8 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH8_AL3_READ_ADDR_TRIG_OFFSET 0x0000023c
|
|
#define DMA_CH8_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH8_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH8_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH8_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH8_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_READ_ADDR
|
|
// Description : DMA Channel 9 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH9_READ_ADDR_OFFSET 0x00000240
|
|
#define DMA_CH9_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH9_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH9_READ_ADDR_MSB 31
|
|
#define DMA_CH9_READ_ADDR_LSB 0
|
|
#define DMA_CH9_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_WRITE_ADDR
|
|
// Description : DMA Channel 9 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH9_WRITE_ADDR_OFFSET 0x00000244
|
|
#define DMA_CH9_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH9_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH9_WRITE_ADDR_MSB 31
|
|
#define DMA_CH9_WRITE_ADDR_LSB 0
|
|
#define DMA_CH9_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_TRANS_COUNT
|
|
// Description : DMA Channel 9 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH9_TRANS_COUNT_OFFSET 0x00000248
|
|
#define DMA_CH9_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH9_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH9_TRANS_COUNT_MSB 31
|
|
#define DMA_CH9_TRANS_COUNT_LSB 0
|
|
#define DMA_CH9_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_CTRL_TRIG
|
|
// Description : DMA Channel 9 Control and Status
|
|
#define DMA_CH9_CTRL_TRIG_OFFSET 0x0000024c
|
|
#define DMA_CH9_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH9_CTRL_TRIG_RESET 0x00004800
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH9_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH9_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH9_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH9_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH9_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH9_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH9_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH9_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH9_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH9_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH9_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH9_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH9_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH9_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH9_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH9_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH9_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH9_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH9_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH9_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (9).
|
|
#define DMA_CH9_CTRL_TRIG_CHAIN_TO_RESET 0x9
|
|
#define DMA_CH9_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH9_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH9_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH9_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH9_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH9_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH9_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH9_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH9_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH9_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH9_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH9_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH9_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH9_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH9_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH9_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH9_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH9_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH9_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH9_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH9_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH9_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH9_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH9_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH9_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH9_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH9_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH9_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL1_CTRL
|
|
// Description : Alias for channel 9 CTRL register
|
|
#define DMA_CH9_AL1_CTRL_OFFSET 0x00000250
|
|
#define DMA_CH9_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH9_AL1_CTRL_RESET "-"
|
|
#define DMA_CH9_AL1_CTRL_MSB 31
|
|
#define DMA_CH9_AL1_CTRL_LSB 0
|
|
#define DMA_CH9_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL1_READ_ADDR
|
|
// Description : Alias for channel 9 READ_ADDR register
|
|
#define DMA_CH9_AL1_READ_ADDR_OFFSET 0x00000254
|
|
#define DMA_CH9_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH9_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH9_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH9_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH9_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 9 WRITE_ADDR register
|
|
#define DMA_CH9_AL1_WRITE_ADDR_OFFSET 0x00000258
|
|
#define DMA_CH9_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH9_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH9_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH9_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH9_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 9 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH9_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000025c
|
|
#define DMA_CH9_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH9_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH9_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH9_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH9_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL2_CTRL
|
|
// Description : Alias for channel 9 CTRL register
|
|
#define DMA_CH9_AL2_CTRL_OFFSET 0x00000260
|
|
#define DMA_CH9_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH9_AL2_CTRL_RESET "-"
|
|
#define DMA_CH9_AL2_CTRL_MSB 31
|
|
#define DMA_CH9_AL2_CTRL_LSB 0
|
|
#define DMA_CH9_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 9 TRANS_COUNT register
|
|
#define DMA_CH9_AL2_TRANS_COUNT_OFFSET 0x00000264
|
|
#define DMA_CH9_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH9_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH9_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH9_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH9_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL2_READ_ADDR
|
|
// Description : Alias for channel 9 READ_ADDR register
|
|
#define DMA_CH9_AL2_READ_ADDR_OFFSET 0x00000268
|
|
#define DMA_CH9_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH9_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH9_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH9_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH9_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 9 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH9_AL2_WRITE_ADDR_TRIG_OFFSET 0x0000026c
|
|
#define DMA_CH9_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH9_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH9_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH9_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH9_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL3_CTRL
|
|
// Description : Alias for channel 9 CTRL register
|
|
#define DMA_CH9_AL3_CTRL_OFFSET 0x00000270
|
|
#define DMA_CH9_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH9_AL3_CTRL_RESET "-"
|
|
#define DMA_CH9_AL3_CTRL_MSB 31
|
|
#define DMA_CH9_AL3_CTRL_LSB 0
|
|
#define DMA_CH9_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 9 WRITE_ADDR register
|
|
#define DMA_CH9_AL3_WRITE_ADDR_OFFSET 0x00000274
|
|
#define DMA_CH9_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH9_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH9_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH9_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH9_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 9 TRANS_COUNT register
|
|
#define DMA_CH9_AL3_TRANS_COUNT_OFFSET 0x00000278
|
|
#define DMA_CH9_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH9_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH9_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH9_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH9_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 9 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH9_AL3_READ_ADDR_TRIG_OFFSET 0x0000027c
|
|
#define DMA_CH9_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH9_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH9_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH9_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH9_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_READ_ADDR
|
|
// Description : DMA Channel 10 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH10_READ_ADDR_OFFSET 0x00000280
|
|
#define DMA_CH10_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH10_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH10_READ_ADDR_MSB 31
|
|
#define DMA_CH10_READ_ADDR_LSB 0
|
|
#define DMA_CH10_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_WRITE_ADDR
|
|
// Description : DMA Channel 10 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH10_WRITE_ADDR_OFFSET 0x00000284
|
|
#define DMA_CH10_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH10_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH10_WRITE_ADDR_MSB 31
|
|
#define DMA_CH10_WRITE_ADDR_LSB 0
|
|
#define DMA_CH10_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_TRANS_COUNT
|
|
// Description : DMA Channel 10 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH10_TRANS_COUNT_OFFSET 0x00000288
|
|
#define DMA_CH10_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH10_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH10_TRANS_COUNT_MSB 31
|
|
#define DMA_CH10_TRANS_COUNT_LSB 0
|
|
#define DMA_CH10_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_CTRL_TRIG
|
|
// Description : DMA Channel 10 Control and Status
|
|
#define DMA_CH10_CTRL_TRIG_OFFSET 0x0000028c
|
|
#define DMA_CH10_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH10_CTRL_TRIG_RESET 0x00005000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH10_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH10_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH10_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH10_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH10_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH10_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH10_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH10_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH10_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH10_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH10_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH10_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH10_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH10_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH10_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH10_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH10_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH10_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH10_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH10_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (10).
|
|
#define DMA_CH10_CTRL_TRIG_CHAIN_TO_RESET 0xa
|
|
#define DMA_CH10_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH10_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH10_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH10_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH10_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH10_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH10_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH10_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH10_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH10_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH10_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH10_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH10_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH10_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH10_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH10_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH10_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH10_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH10_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH10_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH10_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH10_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH10_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH10_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH10_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH10_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH10_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH10_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL1_CTRL
|
|
// Description : Alias for channel 10 CTRL register
|
|
#define DMA_CH10_AL1_CTRL_OFFSET 0x00000290
|
|
#define DMA_CH10_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH10_AL1_CTRL_RESET "-"
|
|
#define DMA_CH10_AL1_CTRL_MSB 31
|
|
#define DMA_CH10_AL1_CTRL_LSB 0
|
|
#define DMA_CH10_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL1_READ_ADDR
|
|
// Description : Alias for channel 10 READ_ADDR register
|
|
#define DMA_CH10_AL1_READ_ADDR_OFFSET 0x00000294
|
|
#define DMA_CH10_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH10_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH10_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH10_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH10_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 10 WRITE_ADDR register
|
|
#define DMA_CH10_AL1_WRITE_ADDR_OFFSET 0x00000298
|
|
#define DMA_CH10_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH10_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH10_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH10_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH10_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 10 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH10_AL1_TRANS_COUNT_TRIG_OFFSET 0x0000029c
|
|
#define DMA_CH10_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH10_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH10_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH10_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH10_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL2_CTRL
|
|
// Description : Alias for channel 10 CTRL register
|
|
#define DMA_CH10_AL2_CTRL_OFFSET 0x000002a0
|
|
#define DMA_CH10_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH10_AL2_CTRL_RESET "-"
|
|
#define DMA_CH10_AL2_CTRL_MSB 31
|
|
#define DMA_CH10_AL2_CTRL_LSB 0
|
|
#define DMA_CH10_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 10 TRANS_COUNT register
|
|
#define DMA_CH10_AL2_TRANS_COUNT_OFFSET 0x000002a4
|
|
#define DMA_CH10_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH10_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH10_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH10_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH10_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL2_READ_ADDR
|
|
// Description : Alias for channel 10 READ_ADDR register
|
|
#define DMA_CH10_AL2_READ_ADDR_OFFSET 0x000002a8
|
|
#define DMA_CH10_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH10_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH10_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH10_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH10_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 10 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH10_AL2_WRITE_ADDR_TRIG_OFFSET 0x000002ac
|
|
#define DMA_CH10_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH10_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH10_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH10_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH10_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL3_CTRL
|
|
// Description : Alias for channel 10 CTRL register
|
|
#define DMA_CH10_AL3_CTRL_OFFSET 0x000002b0
|
|
#define DMA_CH10_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH10_AL3_CTRL_RESET "-"
|
|
#define DMA_CH10_AL3_CTRL_MSB 31
|
|
#define DMA_CH10_AL3_CTRL_LSB 0
|
|
#define DMA_CH10_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 10 WRITE_ADDR register
|
|
#define DMA_CH10_AL3_WRITE_ADDR_OFFSET 0x000002b4
|
|
#define DMA_CH10_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH10_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH10_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH10_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH10_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 10 TRANS_COUNT register
|
|
#define DMA_CH10_AL3_TRANS_COUNT_OFFSET 0x000002b8
|
|
#define DMA_CH10_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH10_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH10_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH10_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH10_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 10 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH10_AL3_READ_ADDR_TRIG_OFFSET 0x000002bc
|
|
#define DMA_CH10_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH10_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH10_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH10_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH10_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_READ_ADDR
|
|
// Description : DMA Channel 11 Read Address pointer
|
|
// This register updates automatically each time a read completes.
|
|
// The current value is the next address to be read by this
|
|
// channel.
|
|
#define DMA_CH11_READ_ADDR_OFFSET 0x000002c0
|
|
#define DMA_CH11_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH11_READ_ADDR_RESET 0x00000000
|
|
#define DMA_CH11_READ_ADDR_MSB 31
|
|
#define DMA_CH11_READ_ADDR_LSB 0
|
|
#define DMA_CH11_READ_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_WRITE_ADDR
|
|
// Description : DMA Channel 11 Write Address pointer
|
|
// This register updates automatically each time a write
|
|
// completes. The current value is the next address to be written
|
|
// by this channel.
|
|
#define DMA_CH11_WRITE_ADDR_OFFSET 0x000002c4
|
|
#define DMA_CH11_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH11_WRITE_ADDR_RESET 0x00000000
|
|
#define DMA_CH11_WRITE_ADDR_MSB 31
|
|
#define DMA_CH11_WRITE_ADDR_LSB 0
|
|
#define DMA_CH11_WRITE_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_TRANS_COUNT
|
|
// Description : DMA Channel 11 Transfer Count
|
|
// Program the number of bus transfers a channel will perform
|
|
// before halting. Note that, if transfers are larger than one
|
|
// byte in size, this is not equal to the number of bytes
|
|
// transferred (see CTRL_DATA_SIZE).
|
|
//
|
|
// When the channel is active, reading this register shows the
|
|
// number of transfers remaining, updating automatically each time
|
|
// a write transfer completes.
|
|
//
|
|
// Writing this register sets the RELOAD value for the transfer
|
|
// counter. Each time this channel is triggered, the RELOAD value
|
|
// is copied into the live transfer counter. The channel can be
|
|
// started multiple times, and will perform the same number of
|
|
// transfers each time, as programmed by most recent write.
|
|
//
|
|
// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT
|
|
// is used as a trigger, the written value is used immediately as
|
|
// the length of the new transfer sequence, as well as being
|
|
// written to RELOAD.
|
|
#define DMA_CH11_TRANS_COUNT_OFFSET 0x000002c8
|
|
#define DMA_CH11_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH11_TRANS_COUNT_RESET 0x00000000
|
|
#define DMA_CH11_TRANS_COUNT_MSB 31
|
|
#define DMA_CH11_TRANS_COUNT_LSB 0
|
|
#define DMA_CH11_TRANS_COUNT_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_CTRL_TRIG
|
|
// Description : DMA Channel 11 Control and Status
|
|
#define DMA_CH11_CTRL_TRIG_OFFSET 0x000002cc
|
|
#define DMA_CH11_CTRL_TRIG_BITS 0xe1ffffff
|
|
#define DMA_CH11_CTRL_TRIG_RESET 0x00005800
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_AHB_ERROR
|
|
// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel
|
|
// halts when it encounters any bus error, and always raises its
|
|
// channel IRQ flag.
|
|
#define DMA_CH11_CTRL_TRIG_AHB_ERROR_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_AHB_ERROR_BITS 0x80000000
|
|
#define DMA_CH11_CTRL_TRIG_AHB_ERROR_MSB 31
|
|
#define DMA_CH11_CTRL_TRIG_AHB_ERROR_LSB 31
|
|
#define DMA_CH11_CTRL_TRIG_AHB_ERROR_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_READ_ERROR
|
|
// Description : If 1, the channel received a read bus error. Write one to
|
|
// clear.
|
|
// READ_ADDR shows the approximate address where the bus error was
|
|
// encountered (will not to be earlier, or more than 3 transfers
|
|
// later)
|
|
#define DMA_CH11_CTRL_TRIG_READ_ERROR_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_READ_ERROR_BITS 0x40000000
|
|
#define DMA_CH11_CTRL_TRIG_READ_ERROR_MSB 30
|
|
#define DMA_CH11_CTRL_TRIG_READ_ERROR_LSB 30
|
|
#define DMA_CH11_CTRL_TRIG_READ_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_WRITE_ERROR
|
|
// Description : If 1, the channel received a write bus error. Write one to
|
|
// clear.
|
|
// WRITE_ADDR shows the approximate address where the bus error
|
|
// was encountered (will not to be earlier, or more than 5
|
|
// transfers later)
|
|
#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_BITS 0x20000000
|
|
#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_MSB 29
|
|
#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_LSB 29
|
|
#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_ACCESS "WC"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_BUSY
|
|
// Description : This flag goes high when the channel starts a new transfer
|
|
// sequence, and low when the last transfer of that sequence
|
|
// completes. Clearing EN while BUSY is high pauses the channel,
|
|
// and BUSY will stay high while paused.
|
|
//
|
|
// To terminate a sequence early (and clear the BUSY flag), see
|
|
// CHAN_ABORT.
|
|
#define DMA_CH11_CTRL_TRIG_BUSY_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_BUSY_BITS 0x01000000
|
|
#define DMA_CH11_CTRL_TRIG_BUSY_MSB 24
|
|
#define DMA_CH11_CTRL_TRIG_BUSY_LSB 24
|
|
#define DMA_CH11_CTRL_TRIG_BUSY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_SNIFF_EN
|
|
// Description : If 1, this channel's data transfers are visible to the sniff
|
|
// hardware, and each transfer will advance the state of the
|
|
// checksum. This only applies if the sniff hardware is enabled,
|
|
// and has this channel selected.
|
|
//
|
|
// This allows checksum to be enabled or disabled on a
|
|
// per-control- block basis.
|
|
#define DMA_CH11_CTRL_TRIG_SNIFF_EN_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_SNIFF_EN_BITS 0x00800000
|
|
#define DMA_CH11_CTRL_TRIG_SNIFF_EN_MSB 23
|
|
#define DMA_CH11_CTRL_TRIG_SNIFF_EN_LSB 23
|
|
#define DMA_CH11_CTRL_TRIG_SNIFF_EN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_BSWAP
|
|
// Description : Apply byte-swap transformation to DMA data.
|
|
// For byte data, this has no effect. For halfword data, the two
|
|
// bytes of each halfword are swapped. For word data, the four
|
|
// bytes of each word are swapped to reverse order.
|
|
#define DMA_CH11_CTRL_TRIG_BSWAP_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_BSWAP_BITS 0x00400000
|
|
#define DMA_CH11_CTRL_TRIG_BSWAP_MSB 22
|
|
#define DMA_CH11_CTRL_TRIG_BSWAP_LSB 22
|
|
#define DMA_CH11_CTRL_TRIG_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_IRQ_QUIET
|
|
// Description : In QUIET mode, the channel does not generate IRQs at the end of
|
|
// every transfer block. Instead, an IRQ is raised when NULL is
|
|
// written to a trigger register, indicating the end of a control
|
|
// block chain.
|
|
//
|
|
// This reduces the number of interrupts to be serviced by the CPU
|
|
// when transferring a DMA chain of many small control blocks.
|
|
#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_BITS 0x00200000
|
|
#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_MSB 21
|
|
#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_LSB 21
|
|
#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_TREQ_SEL
|
|
// Description : Select a Transfer Request signal.
|
|
// The channel uses the transfer request signal to pace its data
|
|
// transfer rate. Sources for TREQ signals are internal (TIMERS)
|
|
// or external (DREQ, a Data Request from the system).
|
|
// 0x0 to 0x3a -> select DREQ n as TREQ
|
|
// 0x3b -> Select Timer 0 as TREQ
|
|
// 0x3c -> Select Timer 1 as TREQ
|
|
// 0x3d -> Select Timer 2 as TREQ (Optional)
|
|
// 0x3e -> Select Timer 3 as TREQ (Optional)
|
|
// 0x3f -> Permanent request, for unpaced transfers.
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_RESET 0x00
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_BITS 0x001f8000
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_MSB 20
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_LSB 15
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_ACCESS "RW"
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 0x3b
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 0x3c
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 0x3d
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 0x3e
|
|
#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT 0x3f
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_CHAIN_TO
|
|
// Description : When this channel completes, it will trigger the channel
|
|
// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this
|
|
// channel)_.
|
|
// Reset value is equal to channel number (11).
|
|
#define DMA_CH11_CTRL_TRIG_CHAIN_TO_RESET 0xb
|
|
#define DMA_CH11_CTRL_TRIG_CHAIN_TO_BITS 0x00007800
|
|
#define DMA_CH11_CTRL_TRIG_CHAIN_TO_MSB 14
|
|
#define DMA_CH11_CTRL_TRIG_CHAIN_TO_LSB 11
|
|
#define DMA_CH11_CTRL_TRIG_CHAIN_TO_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_RING_SEL
|
|
// Description : Select whether RING_SIZE applies to read or write addresses.
|
|
// If 0, read addresses are wrapped on a (1 << RING_SIZE)
|
|
// boundary. If 1, write addresses are wrapped.
|
|
#define DMA_CH11_CTRL_TRIG_RING_SEL_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_RING_SEL_BITS 0x00000400
|
|
#define DMA_CH11_CTRL_TRIG_RING_SEL_MSB 10
|
|
#define DMA_CH11_CTRL_TRIG_RING_SEL_LSB 10
|
|
#define DMA_CH11_CTRL_TRIG_RING_SEL_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_RING_SIZE
|
|
// Description : Size of address wrap region. If 0, don't wrap. For values n >
|
|
// 0, only the lower n bits of the address will change. This wraps
|
|
// the address on a (1 << n) byte boundary, facilitating access to
|
|
// naturally-aligned ring buffers.
|
|
//
|
|
// Ring sizes between 2 and 32768 bytes are possible. This can
|
|
// apply to either read or write addresses, based on value of
|
|
// RING_SEL.
|
|
// 0x0 -> RING_NONE
|
|
#define DMA_CH11_CTRL_TRIG_RING_SIZE_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_RING_SIZE_BITS 0x000003c0
|
|
#define DMA_CH11_CTRL_TRIG_RING_SIZE_MSB 9
|
|
#define DMA_CH11_CTRL_TRIG_RING_SIZE_LSB 6
|
|
#define DMA_CH11_CTRL_TRIG_RING_SIZE_ACCESS "RW"
|
|
#define DMA_CH11_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE 0x0
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_INCR_WRITE
|
|
// Description : If 1, the write address increments with each transfer. If 0,
|
|
// each write is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for memory-to-peripheral
|
|
// transfers.
|
|
#define DMA_CH11_CTRL_TRIG_INCR_WRITE_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_INCR_WRITE_BITS 0x00000020
|
|
#define DMA_CH11_CTRL_TRIG_INCR_WRITE_MSB 5
|
|
#define DMA_CH11_CTRL_TRIG_INCR_WRITE_LSB 5
|
|
#define DMA_CH11_CTRL_TRIG_INCR_WRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_INCR_READ
|
|
// Description : If 1, the read address increments with each transfer. If 0,
|
|
// each read is directed to the same, initial address.
|
|
//
|
|
// Generally this should be disabled for peripheral-to-memory
|
|
// transfers.
|
|
#define DMA_CH11_CTRL_TRIG_INCR_READ_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_INCR_READ_BITS 0x00000010
|
|
#define DMA_CH11_CTRL_TRIG_INCR_READ_MSB 4
|
|
#define DMA_CH11_CTRL_TRIG_INCR_READ_LSB 4
|
|
#define DMA_CH11_CTRL_TRIG_INCR_READ_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_DATA_SIZE
|
|
// Description : Set the size of each bus transfer (byte/halfword/word).
|
|
// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes)
|
|
// with each transfer.
|
|
// 0x0 -> SIZE_BYTE
|
|
// 0x1 -> SIZE_HALFWORD
|
|
// 0x2 -> SIZE_WORD
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_BITS 0x0000000c
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_MSB 3
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_LSB 2
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_ACCESS "RW"
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE 0x0
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD 0x1
|
|
#define DMA_CH11_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD 0x2
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_HIGH_PRIORITY
|
|
// Description : HIGH_PRIORITY gives a channel preferential treatment in issue
|
|
// scheduling: in each scheduling round, all high priority
|
|
// channels are considered first, and then only a single low
|
|
// priority channel, before returning to the high priority
|
|
// channels.
|
|
//
|
|
// This only affects the order in which the DMA schedules
|
|
// channels. The DMA's bus priority is not changed. If the DMA is
|
|
// not saturated then a low priority channel will see no loss of
|
|
// throughput.
|
|
#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_BITS 0x00000002
|
|
#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_MSB 1
|
|
#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_LSB 1
|
|
#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_CH11_CTRL_TRIG_EN
|
|
// Description : DMA Channel Enable.
|
|
// When 1, the channel will respond to triggering events, which
|
|
// will cause it to become BUSY and start transferring data. When
|
|
// 0, the channel will ignore triggers, stop issuing transfers,
|
|
// and pause the current transfer sequence (i.e. BUSY will remain
|
|
// high if already high)
|
|
#define DMA_CH11_CTRL_TRIG_EN_RESET 0x0
|
|
#define DMA_CH11_CTRL_TRIG_EN_BITS 0x00000001
|
|
#define DMA_CH11_CTRL_TRIG_EN_MSB 0
|
|
#define DMA_CH11_CTRL_TRIG_EN_LSB 0
|
|
#define DMA_CH11_CTRL_TRIG_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL1_CTRL
|
|
// Description : Alias for channel 11 CTRL register
|
|
#define DMA_CH11_AL1_CTRL_OFFSET 0x000002d0
|
|
#define DMA_CH11_AL1_CTRL_BITS 0xffffffff
|
|
#define DMA_CH11_AL1_CTRL_RESET "-"
|
|
#define DMA_CH11_AL1_CTRL_MSB 31
|
|
#define DMA_CH11_AL1_CTRL_LSB 0
|
|
#define DMA_CH11_AL1_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL1_READ_ADDR
|
|
// Description : Alias for channel 11 READ_ADDR register
|
|
#define DMA_CH11_AL1_READ_ADDR_OFFSET 0x000002d4
|
|
#define DMA_CH11_AL1_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH11_AL1_READ_ADDR_RESET "-"
|
|
#define DMA_CH11_AL1_READ_ADDR_MSB 31
|
|
#define DMA_CH11_AL1_READ_ADDR_LSB 0
|
|
#define DMA_CH11_AL1_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL1_WRITE_ADDR
|
|
// Description : Alias for channel 11 WRITE_ADDR register
|
|
#define DMA_CH11_AL1_WRITE_ADDR_OFFSET 0x000002d8
|
|
#define DMA_CH11_AL1_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH11_AL1_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH11_AL1_WRITE_ADDR_MSB 31
|
|
#define DMA_CH11_AL1_WRITE_ADDR_LSB 0
|
|
#define DMA_CH11_AL1_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL1_TRANS_COUNT_TRIG
|
|
// Description : Alias for channel 11 TRANS_COUNT register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH11_AL1_TRANS_COUNT_TRIG_OFFSET 0x000002dc
|
|
#define DMA_CH11_AL1_TRANS_COUNT_TRIG_BITS 0xffffffff
|
|
#define DMA_CH11_AL1_TRANS_COUNT_TRIG_RESET "-"
|
|
#define DMA_CH11_AL1_TRANS_COUNT_TRIG_MSB 31
|
|
#define DMA_CH11_AL1_TRANS_COUNT_TRIG_LSB 0
|
|
#define DMA_CH11_AL1_TRANS_COUNT_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL2_CTRL
|
|
// Description : Alias for channel 11 CTRL register
|
|
#define DMA_CH11_AL2_CTRL_OFFSET 0x000002e0
|
|
#define DMA_CH11_AL2_CTRL_BITS 0xffffffff
|
|
#define DMA_CH11_AL2_CTRL_RESET "-"
|
|
#define DMA_CH11_AL2_CTRL_MSB 31
|
|
#define DMA_CH11_AL2_CTRL_LSB 0
|
|
#define DMA_CH11_AL2_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL2_TRANS_COUNT
|
|
// Description : Alias for channel 11 TRANS_COUNT register
|
|
#define DMA_CH11_AL2_TRANS_COUNT_OFFSET 0x000002e4
|
|
#define DMA_CH11_AL2_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH11_AL2_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH11_AL2_TRANS_COUNT_MSB 31
|
|
#define DMA_CH11_AL2_TRANS_COUNT_LSB 0
|
|
#define DMA_CH11_AL2_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL2_READ_ADDR
|
|
// Description : Alias for channel 11 READ_ADDR register
|
|
#define DMA_CH11_AL2_READ_ADDR_OFFSET 0x000002e8
|
|
#define DMA_CH11_AL2_READ_ADDR_BITS 0xffffffff
|
|
#define DMA_CH11_AL2_READ_ADDR_RESET "-"
|
|
#define DMA_CH11_AL2_READ_ADDR_MSB 31
|
|
#define DMA_CH11_AL2_READ_ADDR_LSB 0
|
|
#define DMA_CH11_AL2_READ_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL2_WRITE_ADDR_TRIG
|
|
// Description : Alias for channel 11 WRITE_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH11_AL2_WRITE_ADDR_TRIG_OFFSET 0x000002ec
|
|
#define DMA_CH11_AL2_WRITE_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH11_AL2_WRITE_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH11_AL2_WRITE_ADDR_TRIG_MSB 31
|
|
#define DMA_CH11_AL2_WRITE_ADDR_TRIG_LSB 0
|
|
#define DMA_CH11_AL2_WRITE_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL3_CTRL
|
|
// Description : Alias for channel 11 CTRL register
|
|
#define DMA_CH11_AL3_CTRL_OFFSET 0x000002f0
|
|
#define DMA_CH11_AL3_CTRL_BITS 0xffffffff
|
|
#define DMA_CH11_AL3_CTRL_RESET "-"
|
|
#define DMA_CH11_AL3_CTRL_MSB 31
|
|
#define DMA_CH11_AL3_CTRL_LSB 0
|
|
#define DMA_CH11_AL3_CTRL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL3_WRITE_ADDR
|
|
// Description : Alias for channel 11 WRITE_ADDR register
|
|
#define DMA_CH11_AL3_WRITE_ADDR_OFFSET 0x000002f4
|
|
#define DMA_CH11_AL3_WRITE_ADDR_BITS 0xffffffff
|
|
#define DMA_CH11_AL3_WRITE_ADDR_RESET "-"
|
|
#define DMA_CH11_AL3_WRITE_ADDR_MSB 31
|
|
#define DMA_CH11_AL3_WRITE_ADDR_LSB 0
|
|
#define DMA_CH11_AL3_WRITE_ADDR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL3_TRANS_COUNT
|
|
// Description : Alias for channel 11 TRANS_COUNT register
|
|
#define DMA_CH11_AL3_TRANS_COUNT_OFFSET 0x000002f8
|
|
#define DMA_CH11_AL3_TRANS_COUNT_BITS 0xffffffff
|
|
#define DMA_CH11_AL3_TRANS_COUNT_RESET "-"
|
|
#define DMA_CH11_AL3_TRANS_COUNT_MSB 31
|
|
#define DMA_CH11_AL3_TRANS_COUNT_LSB 0
|
|
#define DMA_CH11_AL3_TRANS_COUNT_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_AL3_READ_ADDR_TRIG
|
|
// Description : Alias for channel 11 READ_ADDR register
|
|
// This is a trigger register (0xc). Writing a nonzero value will
|
|
// reload the channel counter and start the channel.
|
|
#define DMA_CH11_AL3_READ_ADDR_TRIG_OFFSET 0x000002fc
|
|
#define DMA_CH11_AL3_READ_ADDR_TRIG_BITS 0xffffffff
|
|
#define DMA_CH11_AL3_READ_ADDR_TRIG_RESET "-"
|
|
#define DMA_CH11_AL3_READ_ADDR_TRIG_MSB 31
|
|
#define DMA_CH11_AL3_READ_ADDR_TRIG_LSB 0
|
|
#define DMA_CH11_AL3_READ_ADDR_TRIG_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_INTR
|
|
// Description : Interrupt Status (raw)
|
|
// Raw interrupt status for DMA Channels 0..15. Bit n corresponds
|
|
// to channel n. Ignores any masking or forcing. Channel
|
|
// interrupts can be cleared by writing a bit mask to INTR, INTS0
|
|
// or INTS1.
|
|
//
|
|
// Channel interrupts can be routed to either of two system-level
|
|
// IRQs based on INTE0 and INTE1.
|
|
//
|
|
// This can be used vector different channel interrupts to
|
|
// different ISRs: this might be done to allow NVIC IRQ preemption
|
|
// for more time-critical channels, or to spread IRQ load across
|
|
// different cores.
|
|
//
|
|
// It is also valid to ignore this behaviour and just use
|
|
// INTE0/INTS0/IRQ 0.
|
|
#define DMA_INTR_OFFSET 0x00000400
|
|
#define DMA_INTR_BITS 0x0000ffff
|
|
#define DMA_INTR_RESET 0x00000000
|
|
#define DMA_INTR_MSB 15
|
|
#define DMA_INTR_LSB 0
|
|
#define DMA_INTR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_INTE0
|
|
// Description : Interrupt Enables for IRQ 0
|
|
// Set bit n to pass interrupts from channel n to DMA IRQ 0.
|
|
#define DMA_INTE0_OFFSET 0x00000404
|
|
#define DMA_INTE0_BITS 0x0000ffff
|
|
#define DMA_INTE0_RESET 0x00000000
|
|
#define DMA_INTE0_MSB 15
|
|
#define DMA_INTE0_LSB 0
|
|
#define DMA_INTE0_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_INTF0
|
|
// Description : Force Interrupts
|
|
// Write 1s to force the corresponding bits in INTE0. The
|
|
// interrupt remains asserted until INTF0 is cleared.
|
|
#define DMA_INTF0_OFFSET 0x00000408
|
|
#define DMA_INTF0_BITS 0x0000ffff
|
|
#define DMA_INTF0_RESET 0x00000000
|
|
#define DMA_INTF0_MSB 15
|
|
#define DMA_INTF0_LSB 0
|
|
#define DMA_INTF0_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_INTS0
|
|
// Description : Interrupt Status for IRQ 0
|
|
// Indicates active channel interrupt requests which are currently
|
|
// causing IRQ 0 to be asserted.
|
|
// Channel interrupts can be cleared by writing a bit mask here.
|
|
#define DMA_INTS0_OFFSET 0x0000040c
|
|
#define DMA_INTS0_BITS 0x0000ffff
|
|
#define DMA_INTS0_RESET 0x00000000
|
|
#define DMA_INTS0_MSB 15
|
|
#define DMA_INTS0_LSB 0
|
|
#define DMA_INTS0_ACCESS "WC"
|
|
// =============================================================================
|
|
// Register : DMA_INTE1
|
|
// Description : Interrupt Enables for IRQ 1
|
|
// Set bit n to pass interrupts from channel n to DMA IRQ 1.
|
|
#define DMA_INTE1_OFFSET 0x00000414
|
|
#define DMA_INTE1_BITS 0x0000ffff
|
|
#define DMA_INTE1_RESET 0x00000000
|
|
#define DMA_INTE1_MSB 15
|
|
#define DMA_INTE1_LSB 0
|
|
#define DMA_INTE1_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_INTF1
|
|
// Description : Force Interrupts for IRQ 1
|
|
// Write 1s to force the corresponding bits in INTE0. The
|
|
// interrupt remains asserted until INTF0 is cleared.
|
|
#define DMA_INTF1_OFFSET 0x00000418
|
|
#define DMA_INTF1_BITS 0x0000ffff
|
|
#define DMA_INTF1_RESET 0x00000000
|
|
#define DMA_INTF1_MSB 15
|
|
#define DMA_INTF1_LSB 0
|
|
#define DMA_INTF1_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_INTS1
|
|
// Description : Interrupt Status (masked) for IRQ 1
|
|
// Indicates active channel interrupt requests which are currently
|
|
// causing IRQ 1 to be asserted.
|
|
// Channel interrupts can be cleared by writing a bit mask here.
|
|
#define DMA_INTS1_OFFSET 0x0000041c
|
|
#define DMA_INTS1_BITS 0x0000ffff
|
|
#define DMA_INTS1_RESET 0x00000000
|
|
#define DMA_INTS1_MSB 15
|
|
#define DMA_INTS1_LSB 0
|
|
#define DMA_INTS1_ACCESS "WC"
|
|
// =============================================================================
|
|
// Register : DMA_TIMER0
|
|
// Description : Pacing (X/Y) Fractional Timer
|
|
// The pacing timer produces TREQ assertions at a rate set by
|
|
// ((X/Y) * sys_clk). This equation is evaluated every sys_clk
|
|
// cycles and therefore can only generate TREQs at a rate of 1 per
|
|
// sys_clk (i.e. permanent TREQ) or less.
|
|
#define DMA_TIMER0_OFFSET 0x00000420
|
|
#define DMA_TIMER0_BITS 0xffffffff
|
|
#define DMA_TIMER0_RESET 0x00000000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_TIMER0_X
|
|
// Description : Pacing Timer Dividend. Specifies the X value for the (X/Y)
|
|
// fractional timer.
|
|
#define DMA_TIMER0_X_RESET 0x0000
|
|
#define DMA_TIMER0_X_BITS 0xffff0000
|
|
#define DMA_TIMER0_X_MSB 31
|
|
#define DMA_TIMER0_X_LSB 16
|
|
#define DMA_TIMER0_X_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_TIMER0_Y
|
|
// Description : Pacing Timer Divisor. Specifies the Y value for the (X/Y)
|
|
// fractional timer.
|
|
#define DMA_TIMER0_Y_RESET 0x0000
|
|
#define DMA_TIMER0_Y_BITS 0x0000ffff
|
|
#define DMA_TIMER0_Y_MSB 15
|
|
#define DMA_TIMER0_Y_LSB 0
|
|
#define DMA_TIMER0_Y_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_TIMER1
|
|
// Description : Pacing (X/Y) Fractional Timer
|
|
// The pacing timer produces TREQ assertions at a rate set by
|
|
// ((X/Y) * sys_clk). This equation is evaluated every sys_clk
|
|
// cycles and therefore can only generate TREQs at a rate of 1 per
|
|
// sys_clk (i.e. permanent TREQ) or less.
|
|
#define DMA_TIMER1_OFFSET 0x00000424
|
|
#define DMA_TIMER1_BITS 0xffffffff
|
|
#define DMA_TIMER1_RESET 0x00000000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_TIMER1_X
|
|
// Description : Pacing Timer Dividend. Specifies the X value for the (X/Y)
|
|
// fractional timer.
|
|
#define DMA_TIMER1_X_RESET 0x0000
|
|
#define DMA_TIMER1_X_BITS 0xffff0000
|
|
#define DMA_TIMER1_X_MSB 31
|
|
#define DMA_TIMER1_X_LSB 16
|
|
#define DMA_TIMER1_X_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_TIMER1_Y
|
|
// Description : Pacing Timer Divisor. Specifies the Y value for the (X/Y)
|
|
// fractional timer.
|
|
#define DMA_TIMER1_Y_RESET 0x0000
|
|
#define DMA_TIMER1_Y_BITS 0x0000ffff
|
|
#define DMA_TIMER1_Y_MSB 15
|
|
#define DMA_TIMER1_Y_LSB 0
|
|
#define DMA_TIMER1_Y_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_MULTI_CHAN_TRIGGER
|
|
// Description : Trigger one or more channels simultaneously
|
|
// Each bit in this register corresponds to a DMA channel. Writing
|
|
// a 1 to the relevant bit is the same as writing to that
|
|
// channel's trigger register; the channel will start if it is
|
|
// currently enabled and not already busy.
|
|
#define DMA_MULTI_CHAN_TRIGGER_OFFSET 0x00000430
|
|
#define DMA_MULTI_CHAN_TRIGGER_BITS 0x0000ffff
|
|
#define DMA_MULTI_CHAN_TRIGGER_RESET 0x00000000
|
|
#define DMA_MULTI_CHAN_TRIGGER_MSB 15
|
|
#define DMA_MULTI_CHAN_TRIGGER_LSB 0
|
|
#define DMA_MULTI_CHAN_TRIGGER_ACCESS "SC"
|
|
// =============================================================================
|
|
// Register : DMA_SNIFF_CTRL
|
|
// Description : Sniffer Control
|
|
#define DMA_SNIFF_CTRL_OFFSET 0x00000434
|
|
#define DMA_SNIFF_CTRL_BITS 0x00000fff
|
|
#define DMA_SNIFF_CTRL_RESET 0x00000000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_SNIFF_CTRL_OUT_INV
|
|
// Description : If set, the result appears inverted (bitwise complement) when
|
|
// read. This does not affect the way the checksum is calculated;
|
|
// the result is transformed on-the-fly between the result
|
|
// register and the bus.
|
|
#define DMA_SNIFF_CTRL_OUT_INV_RESET 0x0
|
|
#define DMA_SNIFF_CTRL_OUT_INV_BITS 0x00000800
|
|
#define DMA_SNIFF_CTRL_OUT_INV_MSB 11
|
|
#define DMA_SNIFF_CTRL_OUT_INV_LSB 11
|
|
#define DMA_SNIFF_CTRL_OUT_INV_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_SNIFF_CTRL_OUT_REV
|
|
// Description : If set, the result appears bit-reversed when read. This does
|
|
// not affect the way the checksum is calculated; the result is
|
|
// transformed on-the-fly between the result register and the bus.
|
|
#define DMA_SNIFF_CTRL_OUT_REV_RESET 0x0
|
|
#define DMA_SNIFF_CTRL_OUT_REV_BITS 0x00000400
|
|
#define DMA_SNIFF_CTRL_OUT_REV_MSB 10
|
|
#define DMA_SNIFF_CTRL_OUT_REV_LSB 10
|
|
#define DMA_SNIFF_CTRL_OUT_REV_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_SNIFF_CTRL_BSWAP
|
|
// Description : Locally perform a byte reverse on the sniffed data, before
|
|
// feeding into checksum.
|
|
//
|
|
// Note that the sniff hardware is downstream of the DMA channel
|
|
// byteswap performed in the read master: if channel CTRL_BSWAP
|
|
// and SNIFF_CTRL_BSWAP are both enabled, their effects cancel
|
|
// from the sniffer's point of view.
|
|
#define DMA_SNIFF_CTRL_BSWAP_RESET 0x0
|
|
#define DMA_SNIFF_CTRL_BSWAP_BITS 0x00000200
|
|
#define DMA_SNIFF_CTRL_BSWAP_MSB 9
|
|
#define DMA_SNIFF_CTRL_BSWAP_LSB 9
|
|
#define DMA_SNIFF_CTRL_BSWAP_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_SNIFF_CTRL_CALC
|
|
// Description : 0x0 -> Calculate a CRC-32 (IEEE802.3 polynomial)
|
|
// 0x1 -> Calculate a CRC-32 (IEEE802.3 polynomial) with bit
|
|
// reversed data
|
|
// 0x2 -> Calculate a CRC-16-CCITT
|
|
// 0x3 -> Calculate a CRC-16-CCITT with bit reversed data
|
|
// 0xe -> XOR reduction over all data. == 1 if the total 1
|
|
// population count is odd.
|
|
// 0xf -> Calculate a simple 32-bit checksum (addition with a 32
|
|
// bit accumulator)
|
|
#define DMA_SNIFF_CTRL_CALC_RESET 0x0
|
|
#define DMA_SNIFF_CTRL_CALC_BITS 0x000001e0
|
|
#define DMA_SNIFF_CTRL_CALC_MSB 8
|
|
#define DMA_SNIFF_CTRL_CALC_LSB 5
|
|
#define DMA_SNIFF_CTRL_CALC_ACCESS "RW"
|
|
#define DMA_SNIFF_CTRL_CALC_VALUE_CRC32 0x0
|
|
#define DMA_SNIFF_CTRL_CALC_VALUE_CRC32R 0x1
|
|
#define DMA_SNIFF_CTRL_CALC_VALUE_CRC16 0x2
|
|
#define DMA_SNIFF_CTRL_CALC_VALUE_CRC16R 0x3
|
|
#define DMA_SNIFF_CTRL_CALC_VALUE_EVEN 0xe
|
|
#define DMA_SNIFF_CTRL_CALC_VALUE_SUM 0xf
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_SNIFF_CTRL_DMACH
|
|
// Description : DMA channel for Sniffer to observe
|
|
#define DMA_SNIFF_CTRL_DMACH_RESET 0x0
|
|
#define DMA_SNIFF_CTRL_DMACH_BITS 0x0000001e
|
|
#define DMA_SNIFF_CTRL_DMACH_MSB 4
|
|
#define DMA_SNIFF_CTRL_DMACH_LSB 1
|
|
#define DMA_SNIFF_CTRL_DMACH_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_SNIFF_CTRL_EN
|
|
// Description : Enable sniffer
|
|
#define DMA_SNIFF_CTRL_EN_RESET 0x0
|
|
#define DMA_SNIFF_CTRL_EN_BITS 0x00000001
|
|
#define DMA_SNIFF_CTRL_EN_MSB 0
|
|
#define DMA_SNIFF_CTRL_EN_LSB 0
|
|
#define DMA_SNIFF_CTRL_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_SNIFF_DATA
|
|
// Description : Data accumulator for sniff hardware
|
|
// Write an initial seed value here before starting a DMA transfer
|
|
// on the channel indicated by SNIFF_CTRL_DMACH. The hardware will
|
|
// update this register each time it observes a read from the
|
|
// indicated channel. Once the channel completes, the final result
|
|
// can be read from this register.
|
|
#define DMA_SNIFF_DATA_OFFSET 0x00000438
|
|
#define DMA_SNIFF_DATA_BITS 0xffffffff
|
|
#define DMA_SNIFF_DATA_RESET 0x00000000
|
|
#define DMA_SNIFF_DATA_MSB 31
|
|
#define DMA_SNIFF_DATA_LSB 0
|
|
#define DMA_SNIFF_DATA_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : DMA_FIFO_LEVELS
|
|
// Description : Debug RAF, WAF, TDF levels
|
|
#define DMA_FIFO_LEVELS_OFFSET 0x00000440
|
|
#define DMA_FIFO_LEVELS_BITS 0x00ffffff
|
|
#define DMA_FIFO_LEVELS_RESET 0x00000000
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_FIFO_LEVELS_RAF_LVL
|
|
// Description : Current Read-Address-FIFO fill level
|
|
#define DMA_FIFO_LEVELS_RAF_LVL_RESET 0x00
|
|
#define DMA_FIFO_LEVELS_RAF_LVL_BITS 0x00ff0000
|
|
#define DMA_FIFO_LEVELS_RAF_LVL_MSB 23
|
|
#define DMA_FIFO_LEVELS_RAF_LVL_LSB 16
|
|
#define DMA_FIFO_LEVELS_RAF_LVL_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_FIFO_LEVELS_WAF_LVL
|
|
// Description : Current Write-Address-FIFO fill level
|
|
#define DMA_FIFO_LEVELS_WAF_LVL_RESET 0x00
|
|
#define DMA_FIFO_LEVELS_WAF_LVL_BITS 0x0000ff00
|
|
#define DMA_FIFO_LEVELS_WAF_LVL_MSB 15
|
|
#define DMA_FIFO_LEVELS_WAF_LVL_LSB 8
|
|
#define DMA_FIFO_LEVELS_WAF_LVL_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : DMA_FIFO_LEVELS_TDF_LVL
|
|
// Description : Current Transfer-Data-FIFO fill level
|
|
#define DMA_FIFO_LEVELS_TDF_LVL_RESET 0x00
|
|
#define DMA_FIFO_LEVELS_TDF_LVL_BITS 0x000000ff
|
|
#define DMA_FIFO_LEVELS_TDF_LVL_MSB 7
|
|
#define DMA_FIFO_LEVELS_TDF_LVL_LSB 0
|
|
#define DMA_FIFO_LEVELS_TDF_LVL_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CHAN_ABORT
|
|
// Description : Abort an in-progress transfer sequence on one or more channels
|
|
// Each bit corresponds to a channel. Writing a 1 aborts whatever
|
|
// transfer sequence is in progress on that channel. The bit will
|
|
// remain high until any in-flight transfers have been flushed
|
|
// through the address and data FIFOs.
|
|
//
|
|
// After writing, this register must be polled until it returns
|
|
// all-zero. Until this point, it is unsafe to restart the
|
|
// channel.
|
|
#define DMA_CHAN_ABORT_OFFSET 0x00000444
|
|
#define DMA_CHAN_ABORT_BITS 0x0000ffff
|
|
#define DMA_CHAN_ABORT_RESET 0x00000000
|
|
#define DMA_CHAN_ABORT_MSB 15
|
|
#define DMA_CHAN_ABORT_LSB 0
|
|
#define DMA_CHAN_ABORT_ACCESS "SC"
|
|
// =============================================================================
|
|
// Register : DMA_N_CHANNELS
|
|
// Description : The number of channels this DMA instance is equipped with. This
|
|
// DMA supports up to 16 hardware channels, but can be configured
|
|
// with as few as one, to minimise silicon area.
|
|
#define DMA_N_CHANNELS_OFFSET 0x00000448
|
|
#define DMA_N_CHANNELS_BITS 0x0000001f
|
|
#define DMA_N_CHANNELS_RESET "-"
|
|
#define DMA_N_CHANNELS_MSB 4
|
|
#define DMA_N_CHANNELS_LSB 0
|
|
#define DMA_N_CHANNELS_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH0_DBG_CTDREQ_OFFSET 0x00000800
|
|
#define DMA_CH0_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH0_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH0_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH0_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH0_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH0_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH0_DBG_TCR_OFFSET 0x00000804
|
|
#define DMA_CH0_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH0_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH0_DBG_TCR_MSB 31
|
|
#define DMA_CH0_DBG_TCR_LSB 0
|
|
#define DMA_CH0_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH1_DBG_CTDREQ_OFFSET 0x00000840
|
|
#define DMA_CH1_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH1_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH1_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH1_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH1_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH1_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH1_DBG_TCR_OFFSET 0x00000844
|
|
#define DMA_CH1_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH1_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH1_DBG_TCR_MSB 31
|
|
#define DMA_CH1_DBG_TCR_LSB 0
|
|
#define DMA_CH1_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH2_DBG_CTDREQ_OFFSET 0x00000880
|
|
#define DMA_CH2_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH2_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH2_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH2_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH2_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH2_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH2_DBG_TCR_OFFSET 0x00000884
|
|
#define DMA_CH2_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH2_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH2_DBG_TCR_MSB 31
|
|
#define DMA_CH2_DBG_TCR_LSB 0
|
|
#define DMA_CH2_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH3_DBG_CTDREQ_OFFSET 0x000008c0
|
|
#define DMA_CH3_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH3_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH3_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH3_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH3_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH3_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH3_DBG_TCR_OFFSET 0x000008c4
|
|
#define DMA_CH3_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH3_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH3_DBG_TCR_MSB 31
|
|
#define DMA_CH3_DBG_TCR_LSB 0
|
|
#define DMA_CH3_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH4_DBG_CTDREQ_OFFSET 0x00000900
|
|
#define DMA_CH4_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH4_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH4_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH4_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH4_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH4_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH4_DBG_TCR_OFFSET 0x00000904
|
|
#define DMA_CH4_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH4_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH4_DBG_TCR_MSB 31
|
|
#define DMA_CH4_DBG_TCR_LSB 0
|
|
#define DMA_CH4_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH5_DBG_CTDREQ_OFFSET 0x00000940
|
|
#define DMA_CH5_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH5_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH5_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH5_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH5_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH5_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH5_DBG_TCR_OFFSET 0x00000944
|
|
#define DMA_CH5_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH5_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH5_DBG_TCR_MSB 31
|
|
#define DMA_CH5_DBG_TCR_LSB 0
|
|
#define DMA_CH5_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH6_DBG_CTDREQ_OFFSET 0x00000980
|
|
#define DMA_CH6_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH6_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH6_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH6_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH6_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH6_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH6_DBG_TCR_OFFSET 0x00000984
|
|
#define DMA_CH6_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH6_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH6_DBG_TCR_MSB 31
|
|
#define DMA_CH6_DBG_TCR_LSB 0
|
|
#define DMA_CH6_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH7_DBG_CTDREQ_OFFSET 0x000009c0
|
|
#define DMA_CH7_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH7_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH7_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH7_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH7_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH7_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH7_DBG_TCR_OFFSET 0x000009c4
|
|
#define DMA_CH7_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH7_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH7_DBG_TCR_MSB 31
|
|
#define DMA_CH7_DBG_TCR_LSB 0
|
|
#define DMA_CH7_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH8_DBG_CTDREQ_OFFSET 0x00000a00
|
|
#define DMA_CH8_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH8_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH8_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH8_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH8_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH8_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH8_DBG_TCR_OFFSET 0x00000a04
|
|
#define DMA_CH8_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH8_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH8_DBG_TCR_MSB 31
|
|
#define DMA_CH8_DBG_TCR_LSB 0
|
|
#define DMA_CH8_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH9_DBG_CTDREQ_OFFSET 0x00000a40
|
|
#define DMA_CH9_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH9_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH9_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH9_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH9_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH9_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH9_DBG_TCR_OFFSET 0x00000a44
|
|
#define DMA_CH9_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH9_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH9_DBG_TCR_MSB 31
|
|
#define DMA_CH9_DBG_TCR_LSB 0
|
|
#define DMA_CH9_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH10_DBG_CTDREQ_OFFSET 0x00000a80
|
|
#define DMA_CH10_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH10_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH10_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH10_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH10_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH10_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH10_DBG_TCR_OFFSET 0x00000a84
|
|
#define DMA_CH10_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH10_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH10_DBG_TCR_MSB 31
|
|
#define DMA_CH10_DBG_TCR_LSB 0
|
|
#define DMA_CH10_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_DBG_CTDREQ
|
|
// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA
|
|
// expects it can perform on the peripheral without
|
|
// overflow/underflow. Write any value: clears the counter, and
|
|
// cause channel to re-initiate DREQ handshake.
|
|
#define DMA_CH11_DBG_CTDREQ_OFFSET 0x00000ac0
|
|
#define DMA_CH11_DBG_CTDREQ_BITS 0x0000003f
|
|
#define DMA_CH11_DBG_CTDREQ_RESET 0x00000000
|
|
#define DMA_CH11_DBG_CTDREQ_MSB 5
|
|
#define DMA_CH11_DBG_CTDREQ_LSB 0
|
|
#define DMA_CH11_DBG_CTDREQ_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : DMA_CH11_DBG_TCR
|
|
// Description : Read to get channel TRANS_COUNT reload value, i.e. the length
|
|
// of the next transfer
|
|
#define DMA_CH11_DBG_TCR_OFFSET 0x00000ac4
|
|
#define DMA_CH11_DBG_TCR_BITS 0xffffffff
|
|
#define DMA_CH11_DBG_TCR_RESET 0x00000000
|
|
#define DMA_CH11_DBG_TCR_MSB 31
|
|
#define DMA_CH11_DBG_TCR_LSB 0
|
|
#define DMA_CH11_DBG_TCR_ACCESS "RO"
|
|
// =============================================================================
|
|
#endif // HARDWARE_REGS_DMA_DEFINED
|