1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/cpu/cc2538/include/vendor/hw_udmachctl.h
smlng df37e69b90 cpu/cc2538: add TI vendor headers
Currently the cc2538 is based on from-scratch adaption which is
    not feature complete and thus lacks defines etc. Introducing the
    official vendor header will ease future extension and adaptions
    of the CPU and its features.
2018-08-03 08:29:32 +02:00

244 lines
14 KiB
C
Executable File

/******************************************************************************
* Filename: hw_udmachctl.h
* Revised: $Date: 2013-04-12 15:10:54 +0200 (Fri, 12 Apr 2013) $
* Revision: $Revision: 9735 $
*
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************/
#ifndef __HW_UDMACHCTL_H__
#define __HW_UDMACHCTL_H__
//*****************************************************************************
//
// The following are defines for the UDMACHCTL register offsets.
//
//*****************************************************************************
#define UDMACHCTL_O_SRCENDP 0x00000000
#define UDMACHCTL_O_DSTENDP 0x00000004
#define UDMACHCTL_O_CHCTL 0x00000008
//*****************************************************************************
//
// The following are defines for the bit fields in the
// UDMACHCTL_O_SRCENDP register.
//
//*****************************************************************************
#define UDMACHCTL_SRCENDP_ADDR_M \
0xFFFFFFFF // Source address end pointer This
// field points to the last address
// of the uDMA transfer source
// (inclusive). If the source
// address is not incrementing (the
// SRCINC field in the DMACHCTL
// register is 0x3), then this
// field points at the source
// location itself (such as a
// peripheral control register).
#define UDMACHCTL_SRCENDP_ADDR_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the
// UDMACHCTL_O_DSTENDP register.
//
//*****************************************************************************
#define UDMACHCTL_DSTENDP_ADDR_M \
0xFFFFFFFF // Destination address end pointer
// This field points to the last
// address of the uDMA transfer
// destination (inclusive). If the
// destination address is not
// incrementing (the DSTINC field
// in the DMACHCTL register is
// 0x3), then this field points at
// the destination location itself
// (such as a peripheral control
// register).
#define UDMACHCTL_DSTENDP_ADDR_S 0
//*****************************************************************************
//
// The following are defines for the bit fields in the
// UDMACHCTL_O_CHCTL register.
//
//*****************************************************************************
#define UDMACHCTL_CHCTL_DSTINC_M \
0xC0000000 // Destination address increment
// This field configures the
// destination address increment.
// The address increment value must
// be equal or greater than the
// value of the destination size
// (DSTSIZE). 0x0: Byte - Increment
// by 8-bit locations 0x1:
// Half-word - Increment by 16-bit
// locations 0x2: Word - Increment
// by 32-bit locations 0x3: No
// increment - Address remains set
// to the value of the Destination
// address end pointer (DMADSTENDP)
// for the channel.
#define UDMACHCTL_CHCTL_DSTINC_S 30
#define UDMACHCTL_CHCTL_DSTSIZE_M \
0x30000000 // Destination data size This
// field configures the destination
// item data size. Note: DSTSIZE
// must be the same as SRCSIZE.
// 0x0: Byte - 8-bit data size 0x1:
// Half-word - 16-bit data size
// 0x2: Word - 32-bit data size
// 0x3: Reserved
#define UDMACHCTL_CHCTL_DSTSIZE_S 28
#define UDMACHCTL_CHCTL_SRCINC_M \
0x0C000000 // Source address increment This
// field configures the source
// address increment. The address
// increment value must be equal or
// greater than the value of the
// source size (SRCSIZE). 0x0: Byte
// - Increment by 8-bit locations
// 0x1: Half-word - Increment by
// 16-bit locations 0x2: Word -
// Increment by 32-bit locations
// 0x3: No increment - Address
// remains set to the value of the
// Source address end pointer
// (DMASRCENDP) for the channel.
#define UDMACHCTL_CHCTL_SRCINC_S 26
#define UDMACHCTL_CHCTL_SRCSIZE_M \
0x03000000 // Source data size This field
// configures the source item data
// size. Note: SRCSIZE must be the
// same as DSTSIZE. 0x0: Byte -
// 8-bit data size 0x1: Half-word -
// 16-bit data size 0x2: Word -
// 32-bit data size 0x3: Reserved
#define UDMACHCTL_CHCTL_SRCSIZE_S 24
#define UDMACHCTL_CHCTL_ARBSIZE_M \
0x0003C000 // Arbitration size This field
// configures the number of
// transfers that can occur before
// the uDMA controller
// re-arbitrates. The possible
// arbitration rate configurations
// represent powers of 2 and are
// shown below. 0x0: 1 Transfer -
// Arbitrates after each uDMA
// transfer 0x1: 2 Transfers 0x2: 4
// Transfers 0x3: 8 Transfers 0x4:
// 16 Transfers 0x5: 32 Transfers
// 0x6: 64 Transfers 0x7: 128
// Transfers 0x8: 256 Transfers
// 0x9: 512 Transfers 0xA-0xF: 1024
// Transfers - In this
// configuration, no arbitration
// occurs during the uDMA transfer
// because the maximum transfer
// size is 1024.
#define UDMACHCTL_CHCTL_ARBSIZE_S 14
#define UDMACHCTL_CHCTL_XFERSIZE_M \
0x00003FF0 // Transfer size (minus 1) This
// field configures the total
// number of items to transfer. The
// value of this field is 1 less
// than the number to transfer
// (value 0 means transfer 1 item).
// The maximum value for this
// 10-bit field is 1023which
// represents a transfer size of
// 1024 items. The transfer size is
// the number of items, not the
// number of bytes, If the data
// size is 32 bits, then this value
// is the number of 32-bit words to
// transfer. The uDMA controller
// updates this field immediately
// before entering the arbitration
// process, so it contrains the
// number of outstanding items that
// is necessary to complete the
// uDMA cycle.
#define UDMACHCTL_CHCTL_XFERSIZE_S 4
#define UDMACHCTL_CHCTL_NXTUSEBURST \
0x00000008 // Next useburst This field
// controls whether the Useburst
// SET[n] bit is automatically set
// for the last transfer of a
// peripheral scatter-gather
// operation. Normally, for the
// last transfer, if the number of
// remaining items to transfer is
// less than the arbitration size,
// the uDMA controller uses single
// transfers to complete the
// transaction. If this bit is set,
// then the controller uses a burst
// transfer to complete the last
// transfer.
#define UDMACHCTL_CHCTL_NXTUSEBURST_M \
0x00000008
#define UDMACHCTL_CHCTL_NXTUSEBURST_S 3
#define UDMACHCTL_CHCTL_XFERMODE_M \
0x00000007 // uDMA transfer mode This field
// configures the operating mode of
// the uDMA cycle. Refer to "Micro
// Direct Memory Access - Transfer
// Modes" for a detailed
// explanation of transfer modes.
// Because this register is in
// system RAM, it has no reset
// value. Therefore, this field
// should be initialized to 0
// before the channel is enabled.
// 0x0: Stop 0x1: Basic 0x2:
// Auto-request 0x3: Ping-pong 0x4:
// Memory scatter-gather 0x5:
// Alternate memory scatter-gather
// 0x6: Peripheral scatter-gather
// 0x7: Alternate peripheral
// scatter-gather
#define UDMACHCTL_CHCTL_XFERMODE_S 0
#endif // __HW_UDMACHCTL_H__