meh

Fork of mbed by mbed official

Committer:
bogdanm
Date:
Mon Apr 07 18:28:36 2014 +0100
Revision:
82:6473597d706e
Release 82 of the mbed library

Main changes:

- support for K64F
- Revisited Nordic code structure
- Test infrastructure improvements
- various bug fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 82:6473597d706e 1 /*
bogdanm 82:6473597d706e 2 * Copyright (c) 2014, Freescale Semiconductor, Inc.
bogdanm 82:6473597d706e 3 * All rights reserved.
bogdanm 82:6473597d706e 4 *
bogdanm 82:6473597d706e 5 * THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED
bogdanm 82:6473597d706e 6 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
bogdanm 82:6473597d706e 7 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
bogdanm 82:6473597d706e 8 * SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
bogdanm 82:6473597d706e 9 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
bogdanm 82:6473597d706e 10 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
bogdanm 82:6473597d706e 11 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
bogdanm 82:6473597d706e 12 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
bogdanm 82:6473597d706e 13 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
bogdanm 82:6473597d706e 14 * OF SUCH DAMAGE.
bogdanm 82:6473597d706e 15 */
bogdanm 82:6473597d706e 16
bogdanm 82:6473597d706e 17 #ifndef _REGS_H
bogdanm 82:6473597d706e 18 #define _REGS_H 1
bogdanm 82:6473597d706e 19
bogdanm 82:6473597d706e 20 #include <stdint.h>
bogdanm 82:6473597d706e 21 #include <stdlib.h>
bogdanm 82:6473597d706e 22
bogdanm 82:6473597d706e 23 //
bogdanm 82:6473597d706e 24 // define base address of the register block only if it is not already
bogdanm 82:6473597d706e 25 // defined, which allows the compiler to override at build time for
bogdanm 82:6473597d706e 26 // users who've mapped their registers to locations other than the
bogdanm 82:6473597d706e 27 // physical location
bogdanm 82:6473597d706e 28 //
bogdanm 82:6473597d706e 29
bogdanm 82:6473597d706e 30 #include <stdint.h>
bogdanm 82:6473597d706e 31
bogdanm 82:6473597d706e 32 #ifndef REGS_BASE
bogdanm 82:6473597d706e 33 #define REGS_BASE 0x00000000
bogdanm 82:6473597d706e 34 #endif
bogdanm 82:6473597d706e 35
bogdanm 82:6473597d706e 36 //
bogdanm 82:6473597d706e 37 // common register types
bogdanm 82:6473597d706e 38 //
bogdanm 82:6473597d706e 39
bogdanm 82:6473597d706e 40 #ifndef __LANGUAGE_ASM__
bogdanm 82:6473597d706e 41 typedef unsigned char reg8_t;
bogdanm 82:6473597d706e 42 typedef unsigned short reg16_t;
bogdanm 82:6473597d706e 43 typedef unsigned int reg32_t;
bogdanm 82:6473597d706e 44 #endif
bogdanm 82:6473597d706e 45
bogdanm 82:6473597d706e 46 #ifdef __cplusplus
bogdanm 82:6473597d706e 47 #define __I volatile /*!< Defines 'read only' permissions */
bogdanm 82:6473597d706e 48 #else
bogdanm 82:6473597d706e 49 #define __I volatile const /*!< Defines 'read only' permissions */
bogdanm 82:6473597d706e 50 #endif
bogdanm 82:6473597d706e 51 #define __O volatile /*!< Defines 'write only' permissions */
bogdanm 82:6473597d706e 52 #define __IO volatile /*!< Defines 'read / write' permissions */
bogdanm 82:6473597d706e 53
bogdanm 82:6473597d706e 54 #define BME_AND_MASK (1<<26)
bogdanm 82:6473597d706e 55 #define BME_OR_MASK (1<<27)
bogdanm 82:6473597d706e 56 #define BME_XOR_MASK (3<<26)
bogdanm 82:6473597d706e 57 #define BME_BFI_MASK(BIT,WIDTH) (1<<28) | (BIT<<23) | ((WIDTH-1)<<19)
bogdanm 82:6473597d706e 58 #define BME_UBFX_MASK(BIT,WIDTH) (1<<28) | (BIT<<23) | ((WIDTH-1)<<19)
bogdanm 82:6473597d706e 59
bogdanm 82:6473597d706e 60 /**
bogdanm 82:6473597d706e 61 * @brief Macro to access a single bit of a 32-bit peripheral register (bit band region
bogdanm 82:6473597d706e 62 * 0x40000000 to 0x400FFFFF) using the bit-band alias region access.
bogdanm 82:6473597d706e 63 * @param Reg Register to access.
bogdanm 82:6473597d706e 64 * @param Bit Bit number to access.
bogdanm 82:6473597d706e 65 * @return Value of the targeted bit in the bit band region.
bogdanm 82:6473597d706e 66 */
bogdanm 82:6473597d706e 67 #define BITBAND_ACCESS32(Reg,Bit) (*((uint32_t volatile*)(0x42000000u + (32u*((uint32_t)(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit))))))
bogdanm 82:6473597d706e 68
bogdanm 82:6473597d706e 69 /**
bogdanm 82:6473597d706e 70 * @brief Macro to access a single bit of a 16-bit peripheral register (bit band region
bogdanm 82:6473597d706e 71 * 0x40000000 to 0x400FFFFF) using the bit-band alias region access.
bogdanm 82:6473597d706e 72 * @param Reg Register to access.
bogdanm 82:6473597d706e 73 * @param Bit Bit number to access.
bogdanm 82:6473597d706e 74 * @return Value of the targeted bit in the bit band region.
bogdanm 82:6473597d706e 75 */
bogdanm 82:6473597d706e 76 #define BITBAND_ACCESS16(Reg,Bit) (*((uint16_t volatile*)(0x42000000u + (32u*((uint32_t)(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit))))))
bogdanm 82:6473597d706e 77
bogdanm 82:6473597d706e 78 /**
bogdanm 82:6473597d706e 79 * @brief Macro to access a single bit of an 8-bit peripheral register (bit band region
bogdanm 82:6473597d706e 80 * 0x40000000 to 0x400FFFFF) using the bit-band alias region access.
bogdanm 82:6473597d706e 81 * @param Reg Register to access.
bogdanm 82:6473597d706e 82 * @param Bit Bit number to access.
bogdanm 82:6473597d706e 83 * @return Value of the targeted bit in the bit band region.
bogdanm 82:6473597d706e 84 */
bogdanm 82:6473597d706e 85 #define BITBAND_ACCESS8(Reg,Bit) (*((uint8_t volatile*)(0x42000000u + (32u*((uint32_t)(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit))))))
bogdanm 82:6473597d706e 86
bogdanm 82:6473597d706e 87 //
bogdanm 82:6473597d706e 88 // Typecast macro for C or asm. In C, the cast is applied, while in asm it is excluded. This is
bogdanm 82:6473597d706e 89 // used to simplify macro definitions in the module register headers.
bogdanm 82:6473597d706e 90 //
bogdanm 82:6473597d706e 91 #ifndef __REG_VALUE_TYPE
bogdanm 82:6473597d706e 92 #ifndef __LANGUAGE_ASM__
bogdanm 82:6473597d706e 93 #define __REG_VALUE_TYPE(v, t) ((t)(v))
bogdanm 82:6473597d706e 94 #else
bogdanm 82:6473597d706e 95 #define __REG_VALUE_TYPE(v, t) (v)
bogdanm 82:6473597d706e 96 #endif
bogdanm 82:6473597d706e 97 #endif
bogdanm 82:6473597d706e 98
bogdanm 82:6473597d706e 99 //
bogdanm 82:6473597d706e 100 // macros for single instance registers
bogdanm 82:6473597d706e 101 //
bogdanm 82:6473597d706e 102
bogdanm 82:6473597d706e 103 #define BF_SET(reg, field) HW_##reg##_SET(BM_##reg##_##field)
bogdanm 82:6473597d706e 104 #define BF_CLR(reg, field) HW_##reg##_CLR(BM_##reg##_##field)
bogdanm 82:6473597d706e 105 #define BF_TOG(reg, field) HW_##reg##_TOG(BM_##reg##_##field)
bogdanm 82:6473597d706e 106
bogdanm 82:6473597d706e 107 #define BF_SETV(reg, field, v) HW_##reg##_SET(BF_##reg##_##field(v))
bogdanm 82:6473597d706e 108 #define BF_CLRV(reg, field, v) HW_##reg##_CLR(BF_##reg##_##field(v))
bogdanm 82:6473597d706e 109 #define BF_TOGV(reg, field, v) HW_##reg##_TOG(BF_##reg##_##field(v))
bogdanm 82:6473597d706e 110
bogdanm 82:6473597d706e 111 #define BV_FLD(reg, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
bogdanm 82:6473597d706e 112 #define BV_VAL(reg, field, sym) BV_##reg##_##field##__##sym
bogdanm 82:6473597d706e 113
bogdanm 82:6473597d706e 114 #define BF_RD(reg, field) HW_##reg.B.field
bogdanm 82:6473597d706e 115 #define BF_WR(reg, field, v) BW_##reg##_##field(v)
bogdanm 82:6473597d706e 116
bogdanm 82:6473597d706e 117 #define BF_CS1(reg, f1, v1) \
bogdanm 82:6473597d706e 118 (HW_##reg##_CLR(BM_##reg##_##f1), \
bogdanm 82:6473597d706e 119 HW_##reg##_SET(BF_##reg##_##f1(v1)))
bogdanm 82:6473597d706e 120
bogdanm 82:6473597d706e 121 #define BF_CS2(reg, f1, v1, f2, v2) \
bogdanm 82:6473597d706e 122 (HW_##reg##_CLR(BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 123 BM_##reg##_##f2), \
bogdanm 82:6473597d706e 124 HW_##reg##_SET(BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 125 BF_##reg##_##f2(v2)))
bogdanm 82:6473597d706e 126
bogdanm 82:6473597d706e 127 #define BF_CS3(reg, f1, v1, f2, v2, f3, v3) \
bogdanm 82:6473597d706e 128 (HW_##reg##_CLR(BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 129 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 130 BM_##reg##_##f3), \
bogdanm 82:6473597d706e 131 HW_##reg##_SET(BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 132 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 133 BF_##reg##_##f3(v3)))
bogdanm 82:6473597d706e 134
bogdanm 82:6473597d706e 135 #define BF_CS4(reg, f1, v1, f2, v2, f3, v3, f4, v4) \
bogdanm 82:6473597d706e 136 (HW_##reg##_CLR(BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 137 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 138 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 139 BM_##reg##_##f4), \
bogdanm 82:6473597d706e 140 HW_##reg##_SET(BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 141 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 142 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 143 BF_##reg##_##f4(v4)))
bogdanm 82:6473597d706e 144
bogdanm 82:6473597d706e 145 #define BF_CS5(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
bogdanm 82:6473597d706e 146 (HW_##reg##_CLR(BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 147 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 148 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 149 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 150 BM_##reg##_##f5), \
bogdanm 82:6473597d706e 151 HW_##reg##_SET(BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 152 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 153 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 154 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 155 BF_##reg##_##f5(v5)))
bogdanm 82:6473597d706e 156
bogdanm 82:6473597d706e 157 #define BF_CS6(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
bogdanm 82:6473597d706e 158 (HW_##reg##_CLR(BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 159 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 160 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 161 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 162 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 163 BM_##reg##_##f6), \
bogdanm 82:6473597d706e 164 HW_##reg##_SET(BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 165 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 166 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 167 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 168 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 169 BF_##reg##_##f6(v6)))
bogdanm 82:6473597d706e 170
bogdanm 82:6473597d706e 171 #define BF_CS7(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
bogdanm 82:6473597d706e 172 (HW_##reg##_CLR(BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 173 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 174 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 175 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 176 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 177 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 178 BM_##reg##_##f7), \
bogdanm 82:6473597d706e 179 HW_##reg##_SET(BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 180 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 181 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 182 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 183 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 184 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 185 BF_##reg##_##f7(v7)))
bogdanm 82:6473597d706e 186
bogdanm 82:6473597d706e 187 #define BF_CS8(reg, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
bogdanm 82:6473597d706e 188 (HW_##reg##_CLR(BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 189 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 190 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 191 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 192 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 193 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 194 BM_##reg##_##f7 | \
bogdanm 82:6473597d706e 195 BM_##reg##_##f8), \
bogdanm 82:6473597d706e 196 HW_##reg##_SET(BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 197 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 198 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 199 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 200 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 201 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 202 BF_##reg##_##f7(v7) | \
bogdanm 82:6473597d706e 203 BF_##reg##_##f8(v8)))
bogdanm 82:6473597d706e 204
bogdanm 82:6473597d706e 205 //
bogdanm 82:6473597d706e 206 // macros for multiple instance registers
bogdanm 82:6473597d706e 207 //
bogdanm 82:6473597d706e 208
bogdanm 82:6473597d706e 209 #define BF_SETn(reg, n, field) HW_##reg##_SET(n, BM_##reg##_##field)
bogdanm 82:6473597d706e 210 #define BF_CLRn(reg, n, field) HW_##reg##_CLR(n, BM_##reg##_##field)
bogdanm 82:6473597d706e 211 #define BF_TOGn(reg, n, field) HW_##reg##_TOG(n, BM_##reg##_##field)
bogdanm 82:6473597d706e 212
bogdanm 82:6473597d706e 213 #define BF_SETVn(reg, n, field, v) HW_##reg##_SET(n, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 214 #define BF_CLRVn(reg, n, field, v) HW_##reg##_CLR(n, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 215 #define BF_TOGVn(reg, n, field, v) HW_##reg##_TOG(n, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 216
bogdanm 82:6473597d706e 217 #define BV_FLDn(reg, n, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
bogdanm 82:6473597d706e 218 #define BV_VALn(reg, n, field, sym) BV_##reg##_##field##__##sym
bogdanm 82:6473597d706e 219
bogdanm 82:6473597d706e 220 #define BF_RDn(reg, n, field) HW_##reg(n).B.field
bogdanm 82:6473597d706e 221 #define BF_WRn(reg, n, field, v) BW_##reg##_##field(n, v)
bogdanm 82:6473597d706e 222
bogdanm 82:6473597d706e 223 #define BF_CS1n(reg, n, f1, v1) \
bogdanm 82:6473597d706e 224 (HW_##reg##_CLR(n, (BM_##reg##_##f1)), \
bogdanm 82:6473597d706e 225 HW_##reg##_SET(n, (BF_##reg##_##f1(v1))))
bogdanm 82:6473597d706e 226
bogdanm 82:6473597d706e 227 #define BF_CS2n(reg, n, f1, v1, f2, v2) \
bogdanm 82:6473597d706e 228 (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 229 BM_##reg##_##f2)), \
bogdanm 82:6473597d706e 230 HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 231 BF_##reg##_##f2(v2))))
bogdanm 82:6473597d706e 232
bogdanm 82:6473597d706e 233 #define BF_CS3n(reg, n, f1, v1, f2, v2, f3, v3) \
bogdanm 82:6473597d706e 234 (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 235 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 236 BM_##reg##_##f3)), \
bogdanm 82:6473597d706e 237 HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 238 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 239 BF_##reg##_##f3(v3))))
bogdanm 82:6473597d706e 240
bogdanm 82:6473597d706e 241 #define BF_CS4n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4) \
bogdanm 82:6473597d706e 242 (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 243 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 244 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 245 BM_##reg##_##f4)), \
bogdanm 82:6473597d706e 246 HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 247 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 248 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 249 BF_##reg##_##f4(v4))))
bogdanm 82:6473597d706e 250
bogdanm 82:6473597d706e 251 #define BF_CS5n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
bogdanm 82:6473597d706e 252 (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 253 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 254 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 255 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 256 BM_##reg##_##f5)), \
bogdanm 82:6473597d706e 257 HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 258 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 259 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 260 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 261 BF_##reg##_##f5(v5))))
bogdanm 82:6473597d706e 262
bogdanm 82:6473597d706e 263 #define BF_CS6n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
bogdanm 82:6473597d706e 264 (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 265 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 266 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 267 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 268 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 269 BM_##reg##_##f6)), \
bogdanm 82:6473597d706e 270 HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 271 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 272 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 273 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 274 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 275 BF_##reg##_##f6(v6))))
bogdanm 82:6473597d706e 276
bogdanm 82:6473597d706e 277 #define BF_CS7n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
bogdanm 82:6473597d706e 278 (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 279 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 280 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 281 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 282 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 283 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 284 BM_##reg##_##f7)), \
bogdanm 82:6473597d706e 285 HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 286 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 287 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 288 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 289 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 290 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 291 BF_##reg##_##f7(v7))))
bogdanm 82:6473597d706e 292
bogdanm 82:6473597d706e 293 #define BF_CS8n(reg, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
bogdanm 82:6473597d706e 294 (HW_##reg##_CLR(n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 295 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 296 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 297 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 298 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 299 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 300 BM_##reg##_##f7 | \
bogdanm 82:6473597d706e 301 BM_##reg##_##f8)), \
bogdanm 82:6473597d706e 302 HW_##reg##_SET(n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 303 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 304 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 305 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 306 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 307 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 308 BF_##reg##_##f7(v7) | \
bogdanm 82:6473597d706e 309 BF_##reg##_##f8(v8))))
bogdanm 82:6473597d706e 310
bogdanm 82:6473597d706e 311 //
bogdanm 82:6473597d706e 312 // macros for single instance MULTI-BLOCK registers
bogdanm 82:6473597d706e 313 //
bogdanm 82:6473597d706e 314
bogdanm 82:6473597d706e 315 #define BFn_SET(reg, blk, field) HW_##reg##_SET(blk, BM_##reg##_##field)
bogdanm 82:6473597d706e 316 #define BFn_CLR(reg, blk, field) HW_##reg##_CLR(blk, BM_##reg##_##field)
bogdanm 82:6473597d706e 317 #define BFn_TOG(reg, blk, field) HW_##reg##_TOG(blk, BM_##reg##_##field)
bogdanm 82:6473597d706e 318
bogdanm 82:6473597d706e 319 #define BFn_SETV(reg, blk, field, v) HW_##reg##_SET(blk, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 320 #define BFn_CLRV(reg, blk, field, v) HW_##reg##_CLR(blk, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 321 #define BFn_TOGV(reg, blk, field, v) HW_##reg##_TOG(blk, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 322
bogdanm 82:6473597d706e 323 #define BVn_FLD(reg, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
bogdanm 82:6473597d706e 324 #define BVn_VAL(reg, field, sym) BV_##reg##_##field##__##sym
bogdanm 82:6473597d706e 325
bogdanm 82:6473597d706e 326 #define BFn_RD(reg, blk, field) HW_##reg(blk).B.field
bogdanm 82:6473597d706e 327 #define BFn_WR(reg, blk, field, v) BW_##reg##_##field(blk, v)
bogdanm 82:6473597d706e 328
bogdanm 82:6473597d706e 329 #define BFn_CS1(reg, blk, f1, v1) \
bogdanm 82:6473597d706e 330 (HW_##reg##_CLR(blk, BM_##reg##_##f1), \
bogdanm 82:6473597d706e 331 HW_##reg##_SET(blk, BF_##reg##_##f1(v1)))
bogdanm 82:6473597d706e 332
bogdanm 82:6473597d706e 333 #define BFn_CS2(reg, blk, f1, v1, f2, v2) \
bogdanm 82:6473597d706e 334 (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 335 BM_##reg##_##f2), \
bogdanm 82:6473597d706e 336 HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 337 BF_##reg##_##f2(v2)))
bogdanm 82:6473597d706e 338
bogdanm 82:6473597d706e 339 #define BFn_CS3(reg, blk, f1, v1, f2, v2, f3, v3) \
bogdanm 82:6473597d706e 340 (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 341 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 342 BM_##reg##_##f3), \
bogdanm 82:6473597d706e 343 HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 344 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 345 BF_##reg##_##f3(v3)))
bogdanm 82:6473597d706e 346
bogdanm 82:6473597d706e 347 #define BFn_CS4(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4) \
bogdanm 82:6473597d706e 348 (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 349 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 350 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 351 BM_##reg##_##f4), \
bogdanm 82:6473597d706e 352 HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 353 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 354 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 355 BF_##reg##_##f4(v4)))
bogdanm 82:6473597d706e 356
bogdanm 82:6473597d706e 357 #define BFn_CS5(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
bogdanm 82:6473597d706e 358 (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 359 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 360 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 361 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 362 BM_##reg##_##f5), \
bogdanm 82:6473597d706e 363 HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 364 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 365 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 366 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 367 BF_##reg##_##f5(v5)))
bogdanm 82:6473597d706e 368
bogdanm 82:6473597d706e 369 #define BFn_CS6(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
bogdanm 82:6473597d706e 370 (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 371 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 372 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 373 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 374 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 375 BM_##reg##_##f6), \
bogdanm 82:6473597d706e 376 HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 377 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 378 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 379 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 380 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 381 BF_##reg##_##f6(v6)))
bogdanm 82:6473597d706e 382
bogdanm 82:6473597d706e 383 #define BFn_CS7(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
bogdanm 82:6473597d706e 384 (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 385 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 386 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 387 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 388 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 389 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 390 BM_##reg##_##f7), \
bogdanm 82:6473597d706e 391 HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 392 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 393 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 394 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 395 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 396 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 397 BF_##reg##_##f7(v7)))
bogdanm 82:6473597d706e 398
bogdanm 82:6473597d706e 399 #define BFn_CS8(reg, blk, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
bogdanm 82:6473597d706e 400 (HW_##reg##_CLR(blk, BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 401 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 402 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 403 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 404 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 405 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 406 BM_##reg##_##f7 | \
bogdanm 82:6473597d706e 407 BM_##reg##_##f8), \
bogdanm 82:6473597d706e 408 HW_##reg##_SET(blk, BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 409 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 410 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 411 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 412 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 413 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 414 BF_##reg##_##f7(v7) | \
bogdanm 82:6473597d706e 415 BF_##reg##_##f8(v8)))
bogdanm 82:6473597d706e 416
bogdanm 82:6473597d706e 417 //
bogdanm 82:6473597d706e 418 // macros for MULTI-BLOCK multiple instance registers
bogdanm 82:6473597d706e 419 //
bogdanm 82:6473597d706e 420
bogdanm 82:6473597d706e 421 #define BFn_SETn(reg, blk, n, field) HW_##reg##_SET(blk, n, BM_##reg##_##field)
bogdanm 82:6473597d706e 422 #define BFn_CLRn(reg, blk, n, field) HW_##reg##_CLR(blk, n, BM_##reg##_##field)
bogdanm 82:6473597d706e 423 #define BFn_TOGn(reg, blk, n, field) HW_##reg##_TOG(blk, n, BM_##reg##_##field)
bogdanm 82:6473597d706e 424
bogdanm 82:6473597d706e 425 #define BFn_SETVn(reg, blk, n, field, v) HW_##reg##_SET(blk, n, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 426 #define BFn_CLRVn(reg, blk, n, field, v) HW_##reg##_CLR(blk, n, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 427 #define BFn_TOGVn(reg, blk, n, field, v) HW_##reg##_TOG(blk, n, BF_##reg##_##field(v))
bogdanm 82:6473597d706e 428
bogdanm 82:6473597d706e 429 #define BVn_FLDn(reg, blk, n, field, sym) BF_##reg##_##field(BV_##reg##_##field##__##sym)
bogdanm 82:6473597d706e 430 #define BVn_VALn(reg, blk, n, field, sym) BV_##reg##_##field##__##sym
bogdanm 82:6473597d706e 431
bogdanm 82:6473597d706e 432 #define BFn_RDn(reg, blk, n, field) HW_##reg(n).B.field
bogdanm 82:6473597d706e 433 #define BFn_WRn(reg, blk, n, field, v) BW_##reg##_##field(n, v)
bogdanm 82:6473597d706e 434
bogdanm 82:6473597d706e 435 #define BFn_CS1n(reg, blk, n, f1, v1) \
bogdanm 82:6473597d706e 436 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1)), \
bogdanm 82:6473597d706e 437 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1))))
bogdanm 82:6473597d706e 438
bogdanm 82:6473597d706e 439 #define BFn_CS2n(reg, blk, n, f1, v1, f2, v2) \
bogdanm 82:6473597d706e 440 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 441 BM_##reg##_##f2)), \
bogdanm 82:6473597d706e 442 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 443 BF_##reg##_##f2(v2))))
bogdanm 82:6473597d706e 444
bogdanm 82:6473597d706e 445 #define BFn_CS3n(reg, blk, n, f1, v1, f2, v2, f3, v3) \
bogdanm 82:6473597d706e 446 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 447 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 448 BM_##reg##_##f3)), \
bogdanm 82:6473597d706e 449 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 450 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 451 BF_##reg##_##f3(v3))))
bogdanm 82:6473597d706e 452
bogdanm 82:6473597d706e 453 #define BFn_CS4n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4) \
bogdanm 82:6473597d706e 454 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 455 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 456 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 457 BM_##reg##_##f4)), \
bogdanm 82:6473597d706e 458 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 459 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 460 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 461 BF_##reg##_##f4(v4))))
bogdanm 82:6473597d706e 462
bogdanm 82:6473597d706e 463 #define BFn_CS5n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5) \
bogdanm 82:6473597d706e 464 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 465 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 466 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 467 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 468 BM_##reg##_##f5)), \
bogdanm 82:6473597d706e 469 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 470 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 471 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 472 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 473 BF_##reg##_##f5(v5))))
bogdanm 82:6473597d706e 474
bogdanm 82:6473597d706e 475 #define BFn_CS6n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6) \
bogdanm 82:6473597d706e 476 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 477 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 478 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 479 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 480 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 481 BM_##reg##_##f6)), \
bogdanm 82:6473597d706e 482 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 483 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 484 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 485 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 486 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 487 BF_##reg##_##f6(v6))))
bogdanm 82:6473597d706e 488
bogdanm 82:6473597d706e 489 #define BFn_CS7n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7) \
bogdanm 82:6473597d706e 490 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 491 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 492 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 493 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 494 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 495 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 496 BM_##reg##_##f7)), \
bogdanm 82:6473597d706e 497 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 498 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 499 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 500 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 501 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 502 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 503 BF_##reg##_##f7(v7))))
bogdanm 82:6473597d706e 504
bogdanm 82:6473597d706e 505 #define BFn_CS8n(reg, blk, n, f1, v1, f2, v2, f3, v3, f4, v4, f5, v5, f6, v6, f7, v7, f8, v8) \
bogdanm 82:6473597d706e 506 (HW_##reg##_CLR(blk, n, (BM_##reg##_##f1 | \
bogdanm 82:6473597d706e 507 BM_##reg##_##f2 | \
bogdanm 82:6473597d706e 508 BM_##reg##_##f3 | \
bogdanm 82:6473597d706e 509 BM_##reg##_##f4 | \
bogdanm 82:6473597d706e 510 BM_##reg##_##f5 | \
bogdanm 82:6473597d706e 511 BM_##reg##_##f6 | \
bogdanm 82:6473597d706e 512 BM_##reg##_##f7 | \
bogdanm 82:6473597d706e 513 BM_##reg##_##f8)), \
bogdanm 82:6473597d706e 514 HW_##reg##_SET(blk, n, (BF_##reg##_##f1(v1) | \
bogdanm 82:6473597d706e 515 BF_##reg##_##f2(v2) | \
bogdanm 82:6473597d706e 516 BF_##reg##_##f3(v3) | \
bogdanm 82:6473597d706e 517 BF_##reg##_##f4(v4) | \
bogdanm 82:6473597d706e 518 BF_##reg##_##f5(v5) | \
bogdanm 82:6473597d706e 519 BF_##reg##_##f6(v6) | \
bogdanm 82:6473597d706e 520 BF_##reg##_##f7(v7) | \
bogdanm 82:6473597d706e 521 BF_##reg##_##f8(v8))))
bogdanm 82:6473597d706e 522
bogdanm 82:6473597d706e 523 #endif // _REGS_H
bogdanm 82:6473597d706e 524
bogdanm 82:6473597d706e 525 ////////////////////////////////////////////////////////////////////////////////