Branch data Line data Source code
1 : : #ifndef NRF51_ERRATAS_H 2 : : #define NRF51_ERRATAS_H 3 : : 4 : : /* 5 : : 6 : : Copyright (c) 2010 - 2021, Nordic Semiconductor ASA All rights reserved. 7 : : 8 : : SPDX-License-Identifier: BSD-3-Clause 9 : : 10 : : Redistribution and use in source and binary forms, with or without 11 : : modification, are permitted provided that the following conditions are met: 12 : : 13 : : 1. Redistributions of source code must retain the above copyright notice, this 14 : : list of conditions and the following disclaimer. 15 : : 16 : : 2. Redistributions in binary form must reproduce the above copyright 17 : : notice, this list of conditions and the following disclaimer in the 18 : : documentation and/or other materials provided with the distribution. 19 : : 20 : : 3. Neither the name of Nordic Semiconductor ASA nor the names of its 21 : : contributors may be used to endorse or promote products derived from this 22 : : software without specific prior written permission. 23 : : 24 : : THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 : : AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 : : IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE 27 : : ARE DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE 28 : : LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 : : CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 : : SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 : : INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 : : CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 : : ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 : : POSSIBILITY OF SUCH DAMAGE. 35 : : 36 : : */ 37 : : 38 : : #include <stdint.h> 39 : : #include <stdbool.h> 40 : : #include "compiler_abstraction.h" 41 : : 42 : : static bool nrf51_errata_1(void) __UNUSED; 43 : : static bool nrf51_errata_2(void) __UNUSED; 44 : : static bool nrf51_errata_3(void) __UNUSED; 45 : : static bool nrf51_errata_4(void) __UNUSED; 46 : : static bool nrf51_errata_5(void) __UNUSED; 47 : : static bool nrf51_errata_6(void) __UNUSED; 48 : : static bool nrf51_errata_7(void) __UNUSED; 49 : : static bool nrf51_errata_8(void) __UNUSED; 50 : : static bool nrf51_errata_9(void) __UNUSED; 51 : : static bool nrf51_errata_10(void) __UNUSED; 52 : : static bool nrf51_errata_11(void) __UNUSED; 53 : : static bool nrf51_errata_12(void) __UNUSED; 54 : : static bool nrf51_errata_13(void) __UNUSED; 55 : : static bool nrf51_errata_14(void) __UNUSED; 56 : : static bool nrf51_errata_15(void) __UNUSED; 57 : : static bool nrf51_errata_16(void) __UNUSED; 58 : : static bool nrf51_errata_17(void) __UNUSED; 59 : : static bool nrf51_errata_18(void) __UNUSED; 60 : : static bool nrf51_errata_19(void) __UNUSED; 61 : : static bool nrf51_errata_20(void) __UNUSED; 62 : : static bool nrf51_errata_21(void) __UNUSED; 63 : : static bool nrf51_errata_22(void) __UNUSED; 64 : : static bool nrf51_errata_23(void) __UNUSED; 65 : : static bool nrf51_errata_24(void) __UNUSED; 66 : : static bool nrf51_errata_25(void) __UNUSED; 67 : : static bool nrf51_errata_26(void) __UNUSED; 68 : : static bool nrf51_errata_27(void) __UNUSED; 69 : : static bool nrf51_errata_28(void) __UNUSED; 70 : : static bool nrf51_errata_29(void) __UNUSED; 71 : : static bool nrf51_errata_30(void) __UNUSED; 72 : : static bool nrf51_errata_31(void) __UNUSED; 73 : : static bool nrf51_errata_32(void) __UNUSED; 74 : : static bool nrf51_errata_33(void) __UNUSED; 75 : : static bool nrf51_errata_34(void) __UNUSED; 76 : : static bool nrf51_errata_35(void) __UNUSED; 77 : : static bool nrf51_errata_36(void) __UNUSED; 78 : : static bool nrf51_errata_37(void) __UNUSED; 79 : : static bool nrf51_errata_38(void) __UNUSED; 80 : : static bool nrf51_errata_39(void) __UNUSED; 81 : : static bool nrf51_errata_40(void) __UNUSED; 82 : : static bool nrf51_errata_41(void) __UNUSED; 83 : : static bool nrf51_errata_42(void) __UNUSED; 84 : : static bool nrf51_errata_43(void) __UNUSED; 85 : : static bool nrf51_errata_44(void) __UNUSED; 86 : : static bool nrf51_errata_45(void) __UNUSED; 87 : : static bool nrf51_errata_46(void) __UNUSED; 88 : : static bool nrf51_errata_47(void) __UNUSED; 89 : : static bool nrf51_errata_48(void) __UNUSED; 90 : : static bool nrf51_errata_49(void) __UNUSED; 91 : : static bool nrf51_errata_50(void) __UNUSED; 92 : : static bool nrf51_errata_51(void) __UNUSED; 93 : : static bool nrf51_errata_52(void) __UNUSED; 94 : : static bool nrf51_errata_53(void) __UNUSED; 95 : : static bool nrf51_errata_54(void) __UNUSED; 96 : : static bool nrf51_errata_55(void) __UNUSED; 97 : : static bool nrf51_errata_56(void) __UNUSED; 98 : : static bool nrf51_errata_57(void) __UNUSED; 99 : : static bool nrf51_errata_58(void) __UNUSED; 100 : : static bool nrf51_errata_59(void) __UNUSED; 101 : : static bool nrf51_errata_60(void) __UNUSED; 102 : : static bool nrf51_errata_61(void) __UNUSED; 103 : : static bool nrf51_errata_62(void) __UNUSED; 104 : : static bool nrf51_errata_63(void) __UNUSED; 105 : : static bool nrf51_errata_64(void) __UNUSED; 106 : : static bool nrf51_errata_65(void) __UNUSED; 107 : : static bool nrf51_errata_66(void) __UNUSED; 108 : : static bool nrf51_errata_67(void) __UNUSED; 109 : : static bool nrf51_errata_68(void) __UNUSED; 110 : : static bool nrf51_errata_69(void) __UNUSED; 111 : : static bool nrf51_errata_70(void) __UNUSED; 112 : : static bool nrf51_errata_71(void) __UNUSED; 113 : : static bool nrf51_errata_72(void) __UNUSED; 114 : : static bool nrf51_errata_73(void) __UNUSED; 115 : : static bool nrf51_errata_74(void) __UNUSED; 116 : : static bool nrf51_errata_75(void) __UNUSED; 117 : : static bool nrf51_errata_76(void) __UNUSED; 118 : : static bool nrf51_errata_77(void) __UNUSED; 119 : : static bool nrf51_errata_78(void) __UNUSED; 120 : : 121 : : /* ========= Errata 1 ========= */ 122 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 123 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 124 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 125 : : #define NRF51_ERRATA_1_PRESENT 1 126 : : #else 127 : : #define NRF51_ERRATA_1_PRESENT 0 128 : : #endif 129 : : 130 : : #ifndef NRF51_ERRATA_1_ENABLE_WORKAROUND 131 : : #define NRF51_ERRATA_1_ENABLE_WORKAROUND NRF51_ERRATA_1_PRESENT 132 : : #endif 133 : : 134 : 0 : static bool nrf51_errata_1(void) 135 : : { 136 : : #ifndef NRF51_SERIES 137 : 0 : return false; 138 : : #else 139 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 140 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 141 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 142 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 143 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 144 : : #endif 145 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 146 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 147 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 148 : : if (var1 == 0x01) 149 : : { 150 : : switch(var2) 151 : : { 152 : : case 0x00ul: 153 : : return true; 154 : : case 0x01ul: 155 : : return true; 156 : : case 0x02ul: 157 : : return false; 158 : : case 0x03ul: 159 : : return true; 160 : : case 0x04ul: 161 : : return false; 162 : : case 0x07ul: 163 : : return false; 164 : : case 0x08ul: 165 : : return false; 166 : : case 0x09ul: 167 : : return false; 168 : : case 0x0Aul: 169 : : return false; 170 : : case 0x0Bul: 171 : : return false; 172 : : case 0x0Cul: 173 : : return false; 174 : : case 0x0Dul: 175 : : return false; 176 : : default: 177 : : return false; 178 : : } 179 : : } 180 : : #endif 181 : : return false; 182 : : #endif 183 : : } 184 : : 185 : : /* ========= Errata 2 ========= */ 186 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 187 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 188 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 189 : : #define NRF51_ERRATA_2_PRESENT 1 190 : : #else 191 : : #define NRF51_ERRATA_2_PRESENT 0 192 : : #endif 193 : : 194 : : #ifndef NRF51_ERRATA_2_ENABLE_WORKAROUND 195 : : #define NRF51_ERRATA_2_ENABLE_WORKAROUND NRF51_ERRATA_2_PRESENT 196 : : #endif 197 : : 198 : 0 : static bool nrf51_errata_2(void) 199 : : { 200 : : #ifndef NRF51_SERIES 201 : 0 : return false; 202 : : #else 203 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 204 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 205 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 206 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 207 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 208 : : #endif 209 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 210 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 211 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 212 : : if (var1 == 0x01) 213 : : { 214 : : switch(var2) 215 : : { 216 : : case 0x00ul: 217 : : return true; 218 : : case 0x01ul: 219 : : return true; 220 : : case 0x02ul: 221 : : return false; 222 : : case 0x03ul: 223 : : return true; 224 : : case 0x04ul: 225 : : return false; 226 : : case 0x07ul: 227 : : return false; 228 : : case 0x08ul: 229 : : return false; 230 : : case 0x09ul: 231 : : return false; 232 : : case 0x0Aul: 233 : : return false; 234 : : case 0x0Bul: 235 : : return false; 236 : : case 0x0Cul: 237 : : return false; 238 : : case 0x0Dul: 239 : : return false; 240 : : default: 241 : : return false; 242 : : } 243 : : } 244 : : #endif 245 : : return false; 246 : : #endif 247 : : } 248 : : 249 : : /* ========= Errata 3 ========= */ 250 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 251 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 252 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 253 : : #define NRF51_ERRATA_3_PRESENT 1 254 : : #else 255 : : #define NRF51_ERRATA_3_PRESENT 0 256 : : #endif 257 : : 258 : : #ifndef NRF51_ERRATA_3_ENABLE_WORKAROUND 259 : : #define NRF51_ERRATA_3_ENABLE_WORKAROUND NRF51_ERRATA_3_PRESENT 260 : : #endif 261 : : 262 : 0 : static bool nrf51_errata_3(void) 263 : : { 264 : : #ifndef NRF51_SERIES 265 : 0 : return false; 266 : : #else 267 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 268 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 269 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 270 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 271 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 272 : : #endif 273 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 274 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 275 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 276 : : if (var1 == 0x01) 277 : : { 278 : : switch(var2) 279 : : { 280 : : case 0x00ul: 281 : : return true; 282 : : case 0x01ul: 283 : : return true; 284 : : case 0x02ul: 285 : : return false; 286 : : case 0x03ul: 287 : : return true; 288 : : case 0x04ul: 289 : : return false; 290 : : case 0x07ul: 291 : : return false; 292 : : case 0x08ul: 293 : : return false; 294 : : case 0x09ul: 295 : : return false; 296 : : case 0x0Aul: 297 : : return false; 298 : : case 0x0Bul: 299 : : return false; 300 : : case 0x0Cul: 301 : : return false; 302 : : case 0x0Dul: 303 : : return false; 304 : : default: 305 : : return false; 306 : : } 307 : : } 308 : : #endif 309 : : return false; 310 : : #endif 311 : : } 312 : : 313 : : /* ========= Errata 4 ========= */ 314 : : #define NRF51_ERRATA_4_PRESENT 0 315 : : 316 : : #ifndef NRF51_ERRATA_4_ENABLE_WORKAROUND 317 : : #define NRF51_ERRATA_4_ENABLE_WORKAROUND NRF51_ERRATA_4_PRESENT 318 : : #endif 319 : : 320 : 0 : static bool nrf51_errata_4(void) 321 : : { 322 : : #ifndef NRF51_SERIES 323 : 0 : return false; 324 : : #else 325 : : return false; 326 : : #endif 327 : : } 328 : : 329 : : /* ========= Errata 5 ========= */ 330 : : #define NRF51_ERRATA_5_PRESENT 0 331 : : 332 : : #ifndef NRF51_ERRATA_5_ENABLE_WORKAROUND 333 : : #define NRF51_ERRATA_5_ENABLE_WORKAROUND NRF51_ERRATA_5_PRESENT 334 : : #endif 335 : : 336 : 0 : static bool nrf51_errata_5(void) 337 : : { 338 : : #ifndef NRF51_SERIES 339 : 0 : return false; 340 : : #else 341 : : return false; 342 : : #endif 343 : : } 344 : : 345 : : /* ========= Errata 6 ========= */ 346 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 347 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 348 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 349 : : #define NRF51_ERRATA_6_PRESENT 1 350 : : #else 351 : : #define NRF51_ERRATA_6_PRESENT 0 352 : : #endif 353 : : 354 : : #ifndef NRF51_ERRATA_6_ENABLE_WORKAROUND 355 : : #define NRF51_ERRATA_6_ENABLE_WORKAROUND NRF51_ERRATA_6_PRESENT 356 : : #endif 357 : : 358 : 0 : static bool nrf51_errata_6(void) 359 : : { 360 : : #ifndef NRF51_SERIES 361 : 0 : return false; 362 : : #else 363 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 364 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 365 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 366 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 367 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 368 : : #endif 369 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 370 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 371 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 372 : : if (var1 == 0x01) 373 : : { 374 : : switch(var2) 375 : : { 376 : : case 0x00ul: 377 : : return true; 378 : : case 0x01ul: 379 : : return true; 380 : : case 0x02ul: 381 : : return false; 382 : : case 0x03ul: 383 : : return true; 384 : : case 0x04ul: 385 : : return false; 386 : : case 0x07ul: 387 : : return false; 388 : : case 0x08ul: 389 : : return false; 390 : : case 0x09ul: 391 : : return false; 392 : : case 0x0Aul: 393 : : return false; 394 : : case 0x0Bul: 395 : : return false; 396 : : case 0x0Cul: 397 : : return false; 398 : : case 0x0Dul: 399 : : return false; 400 : : default: 401 : : return false; 402 : : } 403 : : } 404 : : #endif 405 : : return false; 406 : : #endif 407 : : } 408 : : 409 : : /* ========= Errata 7 ========= */ 410 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 411 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 412 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 413 : : #define NRF51_ERRATA_7_PRESENT 1 414 : : #else 415 : : #define NRF51_ERRATA_7_PRESENT 0 416 : : #endif 417 : : 418 : : #ifndef NRF51_ERRATA_7_ENABLE_WORKAROUND 419 : : #define NRF51_ERRATA_7_ENABLE_WORKAROUND NRF51_ERRATA_7_PRESENT 420 : : #endif 421 : : 422 : 0 : static bool nrf51_errata_7(void) 423 : : { 424 : : #ifndef NRF51_SERIES 425 : 0 : return false; 426 : : #else 427 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 428 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 429 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 430 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 431 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 432 : : #endif 433 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 434 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 435 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 436 : : if (var1 == 0x01) 437 : : { 438 : : switch(var2) 439 : : { 440 : : case 0x00ul: 441 : : return true; 442 : : case 0x01ul: 443 : : return true; 444 : : case 0x02ul: 445 : : return false; 446 : : case 0x03ul: 447 : : return true; 448 : : case 0x04ul: 449 : : return false; 450 : : case 0x07ul: 451 : : return false; 452 : : case 0x08ul: 453 : : return false; 454 : : case 0x09ul: 455 : : return false; 456 : : case 0x0Aul: 457 : : return false; 458 : : case 0x0Bul: 459 : : return false; 460 : : case 0x0Cul: 461 : : return false; 462 : : case 0x0Dul: 463 : : return false; 464 : : default: 465 : : return false; 466 : : } 467 : : } 468 : : #endif 469 : : return false; 470 : : #endif 471 : : } 472 : : 473 : : /* ========= Errata 8 ========= */ 474 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 475 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 476 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 477 : : #define NRF51_ERRATA_8_PRESENT 1 478 : : #else 479 : : #define NRF51_ERRATA_8_PRESENT 0 480 : : #endif 481 : : 482 : : #ifndef NRF51_ERRATA_8_ENABLE_WORKAROUND 483 : : #define NRF51_ERRATA_8_ENABLE_WORKAROUND NRF51_ERRATA_8_PRESENT 484 : : #endif 485 : : 486 : 0 : static bool nrf51_errata_8(void) 487 : : { 488 : : #ifndef NRF51_SERIES 489 : 0 : return false; 490 : : #else 491 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 492 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 493 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 494 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 495 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 496 : : #endif 497 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 498 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 499 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 500 : : if (var1 == 0x01) 501 : : { 502 : : switch(var2) 503 : : { 504 : : case 0x00ul: 505 : : return true; 506 : : case 0x01ul: 507 : : return true; 508 : : case 0x02ul: 509 : : return false; 510 : : case 0x03ul: 511 : : return true; 512 : : case 0x04ul: 513 : : return false; 514 : : case 0x07ul: 515 : : return false; 516 : : case 0x08ul: 517 : : return false; 518 : : case 0x09ul: 519 : : return false; 520 : : case 0x0Aul: 521 : : return false; 522 : : case 0x0Bul: 523 : : return false; 524 : : case 0x0Cul: 525 : : return false; 526 : : case 0x0Dul: 527 : : return false; 528 : : default: 529 : : return false; 530 : : } 531 : : } 532 : : #endif 533 : : return false; 534 : : #endif 535 : : } 536 : : 537 : : /* ========= Errata 9 ========= */ 538 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 539 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 540 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 541 : : #define NRF51_ERRATA_9_PRESENT 1 542 : : #else 543 : : #define NRF51_ERRATA_9_PRESENT 0 544 : : #endif 545 : : 546 : : #ifndef NRF51_ERRATA_9_ENABLE_WORKAROUND 547 : : #define NRF51_ERRATA_9_ENABLE_WORKAROUND NRF51_ERRATA_9_PRESENT 548 : : #endif 549 : : 550 : 0 : static bool nrf51_errata_9(void) 551 : : { 552 : : #ifndef NRF51_SERIES 553 : 0 : return false; 554 : : #else 555 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 556 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 557 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 558 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 559 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 560 : : #endif 561 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 562 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 563 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 564 : : if (var1 == 0x01) 565 : : { 566 : : switch(var2) 567 : : { 568 : : case 0x00ul: 569 : : return true; 570 : : case 0x01ul: 571 : : return true; 572 : : case 0x02ul: 573 : : return false; 574 : : case 0x03ul: 575 : : return true; 576 : : case 0x04ul: 577 : : return false; 578 : : case 0x07ul: 579 : : return false; 580 : : case 0x08ul: 581 : : return false; 582 : : case 0x09ul: 583 : : return false; 584 : : case 0x0Aul: 585 : : return false; 586 : : case 0x0Bul: 587 : : return false; 588 : : case 0x0Cul: 589 : : return false; 590 : : case 0x0Dul: 591 : : return false; 592 : : default: 593 : : return false; 594 : : } 595 : : } 596 : : #endif 597 : : return false; 598 : : #endif 599 : : } 600 : : 601 : : /* ========= Errata 10 ========= */ 602 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 603 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 604 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 605 : : #define NRF51_ERRATA_10_PRESENT 1 606 : : #else 607 : : #define NRF51_ERRATA_10_PRESENT 0 608 : : #endif 609 : : 610 : : #ifndef NRF51_ERRATA_10_ENABLE_WORKAROUND 611 : : #define NRF51_ERRATA_10_ENABLE_WORKAROUND NRF51_ERRATA_10_PRESENT 612 : : #endif 613 : : 614 : 0 : static bool nrf51_errata_10(void) 615 : : { 616 : : #ifndef NRF51_SERIES 617 : 0 : return false; 618 : : #else 619 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 620 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 621 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 622 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 623 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 624 : : #endif 625 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 626 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 627 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 628 : : if (var1 == 0x01) 629 : : { 630 : : switch(var2) 631 : : { 632 : : case 0x00ul: 633 : : return true; 634 : : case 0x01ul: 635 : : return true; 636 : : case 0x02ul: 637 : : return false; 638 : : case 0x03ul: 639 : : return true; 640 : : case 0x04ul: 641 : : return false; 642 : : case 0x07ul: 643 : : return false; 644 : : case 0x08ul: 645 : : return false; 646 : : case 0x09ul: 647 : : return false; 648 : : case 0x0Aul: 649 : : return false; 650 : : case 0x0Bul: 651 : : return false; 652 : : case 0x0Cul: 653 : : return false; 654 : : case 0x0Dul: 655 : : return false; 656 : : default: 657 : : return false; 658 : : } 659 : : } 660 : : #endif 661 : : return false; 662 : : #endif 663 : : } 664 : : 665 : : /* ========= Errata 11 ========= */ 666 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 667 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 668 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 669 : : #define NRF51_ERRATA_11_PRESENT 1 670 : : #else 671 : : #define NRF51_ERRATA_11_PRESENT 0 672 : : #endif 673 : : 674 : : #ifndef NRF51_ERRATA_11_ENABLE_WORKAROUND 675 : : #define NRF51_ERRATA_11_ENABLE_WORKAROUND NRF51_ERRATA_11_PRESENT 676 : : #endif 677 : : 678 : 0 : static bool nrf51_errata_11(void) 679 : : { 680 : : #ifndef NRF51_SERIES 681 : 0 : return false; 682 : : #else 683 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 684 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 685 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 686 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 687 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 688 : : #endif 689 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 690 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 691 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 692 : : if (var1 == 0x01) 693 : : { 694 : : switch(var2) 695 : : { 696 : : case 0x00ul: 697 : : return true; 698 : : case 0x01ul: 699 : : return true; 700 : : case 0x02ul: 701 : : return false; 702 : : case 0x03ul: 703 : : return true; 704 : : case 0x04ul: 705 : : return false; 706 : : case 0x07ul: 707 : : return false; 708 : : case 0x08ul: 709 : : return false; 710 : : case 0x09ul: 711 : : return false; 712 : : case 0x0Aul: 713 : : return false; 714 : : case 0x0Bul: 715 : : return false; 716 : : case 0x0Cul: 717 : : return false; 718 : : case 0x0Dul: 719 : : return false; 720 : : default: 721 : : return false; 722 : : } 723 : : } 724 : : #endif 725 : : return false; 726 : : #endif 727 : : } 728 : : 729 : : /* ========= Errata 12 ========= */ 730 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 731 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 732 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 733 : : #define NRF51_ERRATA_12_PRESENT 1 734 : : #else 735 : : #define NRF51_ERRATA_12_PRESENT 0 736 : : #endif 737 : : 738 : : #ifndef NRF51_ERRATA_12_ENABLE_WORKAROUND 739 : : #define NRF51_ERRATA_12_ENABLE_WORKAROUND NRF51_ERRATA_12_PRESENT 740 : : #endif 741 : : 742 : 0 : static bool nrf51_errata_12(void) 743 : : { 744 : : #ifndef NRF51_SERIES 745 : 0 : return false; 746 : : #else 747 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 748 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 749 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 750 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 751 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 752 : : #endif 753 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 754 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 755 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 756 : : if (var1 == 0x01) 757 : : { 758 : : switch(var2) 759 : : { 760 : : case 0x00ul: 761 : : return true; 762 : : case 0x01ul: 763 : : return true; 764 : : case 0x02ul: 765 : : return false; 766 : : case 0x03ul: 767 : : return true; 768 : : case 0x04ul: 769 : : return false; 770 : : case 0x07ul: 771 : : return false; 772 : : case 0x08ul: 773 : : return false; 774 : : case 0x09ul: 775 : : return false; 776 : : case 0x0Aul: 777 : : return false; 778 : : case 0x0Bul: 779 : : return false; 780 : : case 0x0Cul: 781 : : return false; 782 : : case 0x0Dul: 783 : : return false; 784 : : default: 785 : : return false; 786 : : } 787 : : } 788 : : #endif 789 : : return false; 790 : : #endif 791 : : } 792 : : 793 : : /* ========= Errata 13 ========= */ 794 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 795 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 796 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 797 : : #define NRF51_ERRATA_13_PRESENT 1 798 : : #else 799 : : #define NRF51_ERRATA_13_PRESENT 0 800 : : #endif 801 : : 802 : : #ifndef NRF51_ERRATA_13_ENABLE_WORKAROUND 803 : : #define NRF51_ERRATA_13_ENABLE_WORKAROUND NRF51_ERRATA_13_PRESENT 804 : : #endif 805 : : 806 : 0 : static bool nrf51_errata_13(void) 807 : : { 808 : : #ifndef NRF51_SERIES 809 : 0 : return false; 810 : : #else 811 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 812 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 813 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 814 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 815 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 816 : : #endif 817 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 818 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 819 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 820 : : if (var1 == 0x01) 821 : : { 822 : : switch(var2) 823 : : { 824 : : case 0x00ul: 825 : : return true; 826 : : case 0x01ul: 827 : : return true; 828 : : case 0x02ul: 829 : : return false; 830 : : case 0x03ul: 831 : : return true; 832 : : case 0x04ul: 833 : : return false; 834 : : case 0x07ul: 835 : : return false; 836 : : case 0x08ul: 837 : : return false; 838 : : case 0x09ul: 839 : : return false; 840 : : case 0x0Aul: 841 : : return false; 842 : : case 0x0Bul: 843 : : return false; 844 : : case 0x0Cul: 845 : : return false; 846 : : case 0x0Dul: 847 : : return false; 848 : : default: 849 : : return false; 850 : : } 851 : : } 852 : : #endif 853 : : return false; 854 : : #endif 855 : : } 856 : : 857 : : /* ========= Errata 14 ========= */ 858 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 859 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 860 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 861 : : #define NRF51_ERRATA_14_PRESENT 1 862 : : #else 863 : : #define NRF51_ERRATA_14_PRESENT 0 864 : : #endif 865 : : 866 : : #ifndef NRF51_ERRATA_14_ENABLE_WORKAROUND 867 : : #define NRF51_ERRATA_14_ENABLE_WORKAROUND NRF51_ERRATA_14_PRESENT 868 : : #endif 869 : : 870 : 0 : static bool nrf51_errata_14(void) 871 : : { 872 : : #ifndef NRF51_SERIES 873 : 0 : return false; 874 : : #else 875 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 876 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 877 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 878 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 879 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 880 : : #endif 881 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 882 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 883 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 884 : : if (var1 == 0x01) 885 : : { 886 : : switch(var2) 887 : : { 888 : : case 0x00ul: 889 : : return true; 890 : : case 0x01ul: 891 : : return true; 892 : : case 0x02ul: 893 : : return false; 894 : : case 0x03ul: 895 : : return true; 896 : : case 0x04ul: 897 : : return false; 898 : : case 0x07ul: 899 : : return false; 900 : : case 0x08ul: 901 : : return false; 902 : : case 0x09ul: 903 : : return false; 904 : : case 0x0Aul: 905 : : return false; 906 : : case 0x0Bul: 907 : : return false; 908 : : case 0x0Cul: 909 : : return false; 910 : : case 0x0Dul: 911 : : return false; 912 : : default: 913 : : return false; 914 : : } 915 : : } 916 : : #endif 917 : : return false; 918 : : #endif 919 : : } 920 : : 921 : : /* ========= Errata 15 ========= */ 922 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 923 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 924 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 925 : : #define NRF51_ERRATA_15_PRESENT 1 926 : : #else 927 : : #define NRF51_ERRATA_15_PRESENT 0 928 : : #endif 929 : : 930 : : #ifndef NRF51_ERRATA_15_ENABLE_WORKAROUND 931 : : #define NRF51_ERRATA_15_ENABLE_WORKAROUND NRF51_ERRATA_15_PRESENT 932 : : #endif 933 : : 934 : 0 : static bool nrf51_errata_15(void) 935 : : { 936 : : #ifndef NRF51_SERIES 937 : 0 : return false; 938 : : #else 939 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 940 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 941 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 942 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 943 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 944 : : #endif 945 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 946 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 947 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 948 : : if (var1 == 0x01) 949 : : { 950 : : switch(var2) 951 : : { 952 : : case 0x00ul: 953 : : return true; 954 : : case 0x01ul: 955 : : return true; 956 : : case 0x02ul: 957 : : return false; 958 : : case 0x03ul: 959 : : return true; 960 : : case 0x04ul: 961 : : return false; 962 : : case 0x07ul: 963 : : return false; 964 : : case 0x08ul: 965 : : return false; 966 : : case 0x09ul: 967 : : return false; 968 : : case 0x0Aul: 969 : : return false; 970 : : case 0x0Bul: 971 : : return false; 972 : : case 0x0Cul: 973 : : return false; 974 : : case 0x0Dul: 975 : : return false; 976 : : default: 977 : : return false; 978 : : } 979 : : } 980 : : #endif 981 : : return false; 982 : : #endif 983 : : } 984 : : 985 : : /* ========= Errata 16 ========= */ 986 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 987 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 988 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 989 : : #define NRF51_ERRATA_16_PRESENT 1 990 : : #else 991 : : #define NRF51_ERRATA_16_PRESENT 0 992 : : #endif 993 : : 994 : : #ifndef NRF51_ERRATA_16_ENABLE_WORKAROUND 995 : : #define NRF51_ERRATA_16_ENABLE_WORKAROUND NRF51_ERRATA_16_PRESENT 996 : : #endif 997 : : 998 : 0 : static bool nrf51_errata_16(void) 999 : : { 1000 : : #ifndef NRF51_SERIES 1001 : 0 : return false; 1002 : : #else 1003 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1004 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1005 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1006 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1007 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1008 : : #endif 1009 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1010 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1011 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1012 : : if (var1 == 0x01) 1013 : : { 1014 : : switch(var2) 1015 : : { 1016 : : case 0x00ul: 1017 : : return true; 1018 : : case 0x01ul: 1019 : : return true; 1020 : : case 0x02ul: 1021 : : return false; 1022 : : case 0x03ul: 1023 : : return true; 1024 : : case 0x04ul: 1025 : : return false; 1026 : : case 0x07ul: 1027 : : return false; 1028 : : case 0x08ul: 1029 : : return false; 1030 : : case 0x09ul: 1031 : : return false; 1032 : : case 0x0Aul: 1033 : : return false; 1034 : : case 0x0Bul: 1035 : : return false; 1036 : : case 0x0Cul: 1037 : : return false; 1038 : : case 0x0Dul: 1039 : : return false; 1040 : : default: 1041 : : return false; 1042 : : } 1043 : : } 1044 : : #endif 1045 : : return false; 1046 : : #endif 1047 : : } 1048 : : 1049 : : /* ========= Errata 17 ========= */ 1050 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1051 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1052 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1053 : : #define NRF51_ERRATA_17_PRESENT 1 1054 : : #else 1055 : : #define NRF51_ERRATA_17_PRESENT 0 1056 : : #endif 1057 : : 1058 : : #ifndef NRF51_ERRATA_17_ENABLE_WORKAROUND 1059 : : #define NRF51_ERRATA_17_ENABLE_WORKAROUND NRF51_ERRATA_17_PRESENT 1060 : : #endif 1061 : : 1062 : 0 : static bool nrf51_errata_17(void) 1063 : : { 1064 : : #ifndef NRF51_SERIES 1065 : 0 : return false; 1066 : : #else 1067 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1068 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1069 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1070 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1071 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1072 : : #endif 1073 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1074 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1075 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1076 : : if (var1 == 0x01) 1077 : : { 1078 : : switch(var2) 1079 : : { 1080 : : case 0x00ul: 1081 : : return true; 1082 : : case 0x01ul: 1083 : : return true; 1084 : : case 0x02ul: 1085 : : return false; 1086 : : case 0x03ul: 1087 : : return true; 1088 : : case 0x04ul: 1089 : : return false; 1090 : : case 0x07ul: 1091 : : return false; 1092 : : case 0x08ul: 1093 : : return false; 1094 : : case 0x09ul: 1095 : : return false; 1096 : : case 0x0Aul: 1097 : : return false; 1098 : : case 0x0Bul: 1099 : : return false; 1100 : : case 0x0Cul: 1101 : : return false; 1102 : : case 0x0Dul: 1103 : : return false; 1104 : : default: 1105 : : return false; 1106 : : } 1107 : : } 1108 : : #endif 1109 : : return false; 1110 : : #endif 1111 : : } 1112 : : 1113 : : /* ========= Errata 18 ========= */ 1114 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1115 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1116 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1117 : : #define NRF51_ERRATA_18_PRESENT 1 1118 : : #else 1119 : : #define NRF51_ERRATA_18_PRESENT 0 1120 : : #endif 1121 : : 1122 : : #ifndef NRF51_ERRATA_18_ENABLE_WORKAROUND 1123 : : #define NRF51_ERRATA_18_ENABLE_WORKAROUND NRF51_ERRATA_18_PRESENT 1124 : : #endif 1125 : : 1126 : 0 : static bool nrf51_errata_18(void) 1127 : : { 1128 : : #ifndef NRF51_SERIES 1129 : 0 : return false; 1130 : : #else 1131 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1132 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1133 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1134 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1135 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1136 : : #endif 1137 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1138 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1139 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1140 : : if (var1 == 0x01) 1141 : : { 1142 : : switch(var2) 1143 : : { 1144 : : case 0x00ul: 1145 : : return true; 1146 : : case 0x01ul: 1147 : : return true; 1148 : : case 0x02ul: 1149 : : return false; 1150 : : case 0x03ul: 1151 : : return true; 1152 : : case 0x04ul: 1153 : : return false; 1154 : : case 0x07ul: 1155 : : return false; 1156 : : case 0x08ul: 1157 : : return false; 1158 : : case 0x09ul: 1159 : : return false; 1160 : : case 0x0Aul: 1161 : : return false; 1162 : : case 0x0Bul: 1163 : : return false; 1164 : : case 0x0Cul: 1165 : : return false; 1166 : : case 0x0Dul: 1167 : : return false; 1168 : : default: 1169 : : return false; 1170 : : } 1171 : : } 1172 : : #endif 1173 : : return false; 1174 : : #endif 1175 : : } 1176 : : 1177 : : /* ========= Errata 19 ========= */ 1178 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1179 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1180 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1181 : : #define NRF51_ERRATA_19_PRESENT 1 1182 : : #else 1183 : : #define NRF51_ERRATA_19_PRESENT 0 1184 : : #endif 1185 : : 1186 : : #ifndef NRF51_ERRATA_19_ENABLE_WORKAROUND 1187 : : #define NRF51_ERRATA_19_ENABLE_WORKAROUND NRF51_ERRATA_19_PRESENT 1188 : : #endif 1189 : : 1190 : 0 : static bool nrf51_errata_19(void) 1191 : : { 1192 : : #ifndef NRF51_SERIES 1193 : 0 : return false; 1194 : : #else 1195 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1196 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1197 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1198 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1199 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1200 : : #endif 1201 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1202 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1203 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1204 : : if (var1 == 0x01) 1205 : : { 1206 : : switch(var2) 1207 : : { 1208 : : case 0x00ul: 1209 : : return true; 1210 : : case 0x01ul: 1211 : : return true; 1212 : : case 0x02ul: 1213 : : return false; 1214 : : case 0x03ul: 1215 : : return true; 1216 : : case 0x04ul: 1217 : : return false; 1218 : : case 0x07ul: 1219 : : return false; 1220 : : case 0x08ul: 1221 : : return false; 1222 : : case 0x09ul: 1223 : : return false; 1224 : : case 0x0Aul: 1225 : : return false; 1226 : : case 0x0Bul: 1227 : : return false; 1228 : : case 0x0Cul: 1229 : : return false; 1230 : : case 0x0Dul: 1231 : : return false; 1232 : : default: 1233 : : return false; 1234 : : } 1235 : : } 1236 : : #endif 1237 : : return false; 1238 : : #endif 1239 : : } 1240 : : 1241 : : /* ========= Errata 20 ========= */ 1242 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1243 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1244 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1245 : : #define NRF51_ERRATA_20_PRESENT 1 1246 : : #else 1247 : : #define NRF51_ERRATA_20_PRESENT 0 1248 : : #endif 1249 : : 1250 : : #ifndef NRF51_ERRATA_20_ENABLE_WORKAROUND 1251 : : #define NRF51_ERRATA_20_ENABLE_WORKAROUND NRF51_ERRATA_20_PRESENT 1252 : : #endif 1253 : : 1254 : 0 : static bool nrf51_errata_20(void) 1255 : : { 1256 : : #ifndef NRF51_SERIES 1257 : 0 : return false; 1258 : : #else 1259 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1260 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1261 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1262 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1263 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1264 : : #endif 1265 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1266 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1267 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1268 : : if (var1 == 0x01) 1269 : : { 1270 : : switch(var2) 1271 : : { 1272 : : case 0x00ul: 1273 : : return true; 1274 : : case 0x01ul: 1275 : : return true; 1276 : : case 0x02ul: 1277 : : return false; 1278 : : case 0x03ul: 1279 : : return true; 1280 : : case 0x04ul: 1281 : : return false; 1282 : : case 0x07ul: 1283 : : return false; 1284 : : case 0x08ul: 1285 : : return false; 1286 : : case 0x09ul: 1287 : : return false; 1288 : : case 0x0Aul: 1289 : : return false; 1290 : : case 0x0Bul: 1291 : : return false; 1292 : : case 0x0Cul: 1293 : : return false; 1294 : : case 0x0Dul: 1295 : : return false; 1296 : : default: 1297 : : return false; 1298 : : } 1299 : : } 1300 : : #endif 1301 : : return false; 1302 : : #endif 1303 : : } 1304 : : 1305 : : /* ========= Errata 21 ========= */ 1306 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1307 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1308 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1309 : : #define NRF51_ERRATA_21_PRESENT 1 1310 : : #else 1311 : : #define NRF51_ERRATA_21_PRESENT 0 1312 : : #endif 1313 : : 1314 : : #ifndef NRF51_ERRATA_21_ENABLE_WORKAROUND 1315 : : #define NRF51_ERRATA_21_ENABLE_WORKAROUND NRF51_ERRATA_21_PRESENT 1316 : : #endif 1317 : : 1318 : 0 : static bool nrf51_errata_21(void) 1319 : : { 1320 : : #ifndef NRF51_SERIES 1321 : 0 : return false; 1322 : : #else 1323 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1324 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1325 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1326 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1327 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1328 : : #endif 1329 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1330 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1331 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1332 : : if (var1 == 0x01) 1333 : : { 1334 : : switch(var2) 1335 : : { 1336 : : case 0x00ul: 1337 : : return true; 1338 : : case 0x01ul: 1339 : : return true; 1340 : : case 0x02ul: 1341 : : return false; 1342 : : case 0x03ul: 1343 : : return true; 1344 : : case 0x04ul: 1345 : : return false; 1346 : : case 0x07ul: 1347 : : return false; 1348 : : case 0x08ul: 1349 : : return false; 1350 : : case 0x09ul: 1351 : : return false; 1352 : : case 0x0Aul: 1353 : : return false; 1354 : : case 0x0Bul: 1355 : : return false; 1356 : : case 0x0Cul: 1357 : : return false; 1358 : : case 0x0Dul: 1359 : : return false; 1360 : : default: 1361 : : return false; 1362 : : } 1363 : : } 1364 : : #endif 1365 : : return false; 1366 : : #endif 1367 : : } 1368 : : 1369 : : /* ========= Errata 22 ========= */ 1370 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1371 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1372 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1373 : : #define NRF51_ERRATA_22_PRESENT 1 1374 : : #else 1375 : : #define NRF51_ERRATA_22_PRESENT 0 1376 : : #endif 1377 : : 1378 : : #ifndef NRF51_ERRATA_22_ENABLE_WORKAROUND 1379 : : #define NRF51_ERRATA_22_ENABLE_WORKAROUND NRF51_ERRATA_22_PRESENT 1380 : : #endif 1381 : : 1382 : 0 : static bool nrf51_errata_22(void) 1383 : : { 1384 : : #ifndef NRF51_SERIES 1385 : 0 : return false; 1386 : : #else 1387 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1388 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1389 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1390 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1391 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1392 : : #endif 1393 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1394 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1395 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1396 : : if (var1 == 0x01) 1397 : : { 1398 : : switch(var2) 1399 : : { 1400 : : case 0x00ul: 1401 : : return true; 1402 : : case 0x01ul: 1403 : : return true; 1404 : : case 0x02ul: 1405 : : return false; 1406 : : case 0x03ul: 1407 : : return true; 1408 : : case 0x04ul: 1409 : : return false; 1410 : : case 0x07ul: 1411 : : return false; 1412 : : case 0x08ul: 1413 : : return false; 1414 : : case 0x09ul: 1415 : : return false; 1416 : : case 0x0Aul: 1417 : : return false; 1418 : : case 0x0Bul: 1419 : : return false; 1420 : : case 0x0Cul: 1421 : : return false; 1422 : : case 0x0Dul: 1423 : : return false; 1424 : : default: 1425 : : return false; 1426 : : } 1427 : : } 1428 : : #endif 1429 : : return false; 1430 : : #endif 1431 : : } 1432 : : 1433 : : /* ========= Errata 23 ========= */ 1434 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1435 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1436 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1437 : : #define NRF51_ERRATA_23_PRESENT 1 1438 : : #else 1439 : : #define NRF51_ERRATA_23_PRESENT 0 1440 : : #endif 1441 : : 1442 : : #ifndef NRF51_ERRATA_23_ENABLE_WORKAROUND 1443 : : #define NRF51_ERRATA_23_ENABLE_WORKAROUND NRF51_ERRATA_23_PRESENT 1444 : : #endif 1445 : : 1446 : 0 : static bool nrf51_errata_23(void) 1447 : : { 1448 : : #ifndef NRF51_SERIES 1449 : 0 : return false; 1450 : : #else 1451 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1452 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1453 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1454 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1455 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1456 : : #endif 1457 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1458 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1459 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1460 : : if (var1 == 0x01) 1461 : : { 1462 : : switch(var2) 1463 : : { 1464 : : case 0x00ul: 1465 : : return true; 1466 : : case 0x01ul: 1467 : : return true; 1468 : : case 0x02ul: 1469 : : return false; 1470 : : case 0x03ul: 1471 : : return true; 1472 : : case 0x04ul: 1473 : : return false; 1474 : : case 0x07ul: 1475 : : return false; 1476 : : case 0x08ul: 1477 : : return false; 1478 : : case 0x09ul: 1479 : : return false; 1480 : : case 0x0Aul: 1481 : : return false; 1482 : : case 0x0Bul: 1483 : : return false; 1484 : : case 0x0Cul: 1485 : : return false; 1486 : : case 0x0Dul: 1487 : : return false; 1488 : : default: 1489 : : return false; 1490 : : } 1491 : : } 1492 : : #endif 1493 : : return false; 1494 : : #endif 1495 : : } 1496 : : 1497 : : /* ========= Errata 24 ========= */ 1498 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1499 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1500 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1501 : : #define NRF51_ERRATA_24_PRESENT 1 1502 : : #else 1503 : : #define NRF51_ERRATA_24_PRESENT 0 1504 : : #endif 1505 : : 1506 : : #ifndef NRF51_ERRATA_24_ENABLE_WORKAROUND 1507 : : #define NRF51_ERRATA_24_ENABLE_WORKAROUND NRF51_ERRATA_24_PRESENT 1508 : : #endif 1509 : : 1510 : 0 : static bool nrf51_errata_24(void) 1511 : : { 1512 : : #ifndef NRF51_SERIES 1513 : 0 : return false; 1514 : : #else 1515 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1516 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1517 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1518 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1519 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1520 : : #endif 1521 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1522 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1523 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1524 : : if (var1 == 0x01) 1525 : : { 1526 : : switch(var2) 1527 : : { 1528 : : case 0x00ul: 1529 : : return true; 1530 : : case 0x01ul: 1531 : : return true; 1532 : : case 0x02ul: 1533 : : return false; 1534 : : case 0x03ul: 1535 : : return true; 1536 : : case 0x04ul: 1537 : : return false; 1538 : : case 0x07ul: 1539 : : return false; 1540 : : case 0x08ul: 1541 : : return false; 1542 : : case 0x09ul: 1543 : : return false; 1544 : : case 0x0Aul: 1545 : : return false; 1546 : : case 0x0Bul: 1547 : : return false; 1548 : : case 0x0Cul: 1549 : : return false; 1550 : : case 0x0Dul: 1551 : : return false; 1552 : : default: 1553 : : return false; 1554 : : } 1555 : : } 1556 : : #endif 1557 : : return false; 1558 : : #endif 1559 : : } 1560 : : 1561 : : /* ========= Errata 25 ========= */ 1562 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1563 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1564 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1565 : : #define NRF51_ERRATA_25_PRESENT 1 1566 : : #else 1567 : : #define NRF51_ERRATA_25_PRESENT 0 1568 : : #endif 1569 : : 1570 : : #ifndef NRF51_ERRATA_25_ENABLE_WORKAROUND 1571 : : #define NRF51_ERRATA_25_ENABLE_WORKAROUND NRF51_ERRATA_25_PRESENT 1572 : : #endif 1573 : : 1574 : 0 : static bool nrf51_errata_25(void) 1575 : : { 1576 : : #ifndef NRF51_SERIES 1577 : 0 : return false; 1578 : : #else 1579 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1580 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1581 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1582 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1583 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1584 : : #endif 1585 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1586 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1587 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1588 : : if (var1 == 0x01) 1589 : : { 1590 : : switch(var2) 1591 : : { 1592 : : case 0x00ul: 1593 : : return true; 1594 : : case 0x01ul: 1595 : : return true; 1596 : : case 0x02ul: 1597 : : return false; 1598 : : case 0x03ul: 1599 : : return true; 1600 : : case 0x04ul: 1601 : : return false; 1602 : : case 0x07ul: 1603 : : return false; 1604 : : case 0x08ul: 1605 : : return false; 1606 : : case 0x09ul: 1607 : : return false; 1608 : : case 0x0Aul: 1609 : : return false; 1610 : : case 0x0Bul: 1611 : : return false; 1612 : : case 0x0Cul: 1613 : : return false; 1614 : : case 0x0Dul: 1615 : : return false; 1616 : : default: 1617 : : return false; 1618 : : } 1619 : : } 1620 : : #endif 1621 : : return false; 1622 : : #endif 1623 : : } 1624 : : 1625 : : /* ========= Errata 26 ========= */ 1626 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1627 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1628 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1629 : : #define NRF51_ERRATA_26_PRESENT 1 1630 : : #else 1631 : : #define NRF51_ERRATA_26_PRESENT 0 1632 : : #endif 1633 : : 1634 : : #ifndef NRF51_ERRATA_26_ENABLE_WORKAROUND 1635 : : #define NRF51_ERRATA_26_ENABLE_WORKAROUND NRF51_ERRATA_26_PRESENT 1636 : : #endif 1637 : : 1638 : 0 : static bool nrf51_errata_26(void) 1639 : : { 1640 : : #ifndef NRF51_SERIES 1641 : 0 : return false; 1642 : : #else 1643 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1644 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1645 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1646 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1647 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1648 : : #endif 1649 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1650 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1651 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1652 : : if (var1 == 0x01) 1653 : : { 1654 : : switch(var2) 1655 : : { 1656 : : case 0x00ul: 1657 : : return true; 1658 : : case 0x01ul: 1659 : : return true; 1660 : : case 0x02ul: 1661 : : return false; 1662 : : case 0x03ul: 1663 : : return true; 1664 : : case 0x04ul: 1665 : : return false; 1666 : : case 0x07ul: 1667 : : return false; 1668 : : case 0x08ul: 1669 : : return false; 1670 : : case 0x09ul: 1671 : : return false; 1672 : : case 0x0Aul: 1673 : : return false; 1674 : : case 0x0Bul: 1675 : : return false; 1676 : : case 0x0Cul: 1677 : : return false; 1678 : : case 0x0Dul: 1679 : : return false; 1680 : : default: 1681 : : return false; 1682 : : } 1683 : : } 1684 : : #endif 1685 : : return false; 1686 : : #endif 1687 : : } 1688 : : 1689 : : /* ========= Errata 27 ========= */ 1690 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1691 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1692 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1693 : : #define NRF51_ERRATA_27_PRESENT 1 1694 : : #else 1695 : : #define NRF51_ERRATA_27_PRESENT 0 1696 : : #endif 1697 : : 1698 : : #ifndef NRF51_ERRATA_27_ENABLE_WORKAROUND 1699 : : #define NRF51_ERRATA_27_ENABLE_WORKAROUND NRF51_ERRATA_27_PRESENT 1700 : : #endif 1701 : : 1702 : 0 : static bool nrf51_errata_27(void) 1703 : : { 1704 : : #ifndef NRF51_SERIES 1705 : 0 : return false; 1706 : : #else 1707 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1708 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1709 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1710 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1711 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1712 : : #endif 1713 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1714 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1715 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1716 : : if (var1 == 0x01) 1717 : : { 1718 : : switch(var2) 1719 : : { 1720 : : case 0x00ul: 1721 : : return true; 1722 : : case 0x01ul: 1723 : : return true; 1724 : : case 0x02ul: 1725 : : return false; 1726 : : case 0x03ul: 1727 : : return true; 1728 : : case 0x04ul: 1729 : : return false; 1730 : : case 0x07ul: 1731 : : return false; 1732 : : case 0x08ul: 1733 : : return false; 1734 : : case 0x09ul: 1735 : : return false; 1736 : : case 0x0Aul: 1737 : : return false; 1738 : : case 0x0Bul: 1739 : : return false; 1740 : : case 0x0Cul: 1741 : : return false; 1742 : : case 0x0Dul: 1743 : : return false; 1744 : : default: 1745 : : return false; 1746 : : } 1747 : : } 1748 : : #endif 1749 : : return false; 1750 : : #endif 1751 : : } 1752 : : 1753 : : /* ========= Errata 28 ========= */ 1754 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1755 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1756 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1757 : : #define NRF51_ERRATA_28_PRESENT 1 1758 : : #else 1759 : : #define NRF51_ERRATA_28_PRESENT 0 1760 : : #endif 1761 : : 1762 : : #ifndef NRF51_ERRATA_28_ENABLE_WORKAROUND 1763 : : #define NRF51_ERRATA_28_ENABLE_WORKAROUND NRF51_ERRATA_28_PRESENT 1764 : : #endif 1765 : : 1766 : 0 : static bool nrf51_errata_28(void) 1767 : : { 1768 : : #ifndef NRF51_SERIES 1769 : 0 : return false; 1770 : : #else 1771 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1772 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1773 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1774 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1775 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1776 : : #endif 1777 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1778 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1779 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1780 : : if (var1 == 0x01) 1781 : : { 1782 : : switch(var2) 1783 : : { 1784 : : case 0x00ul: 1785 : : return true; 1786 : : case 0x01ul: 1787 : : return true; 1788 : : case 0x02ul: 1789 : : return false; 1790 : : case 0x03ul: 1791 : : return true; 1792 : : case 0x04ul: 1793 : : return false; 1794 : : case 0x07ul: 1795 : : return false; 1796 : : case 0x08ul: 1797 : : return false; 1798 : : case 0x09ul: 1799 : : return false; 1800 : : case 0x0Aul: 1801 : : return false; 1802 : : case 0x0Bul: 1803 : : return false; 1804 : : case 0x0Cul: 1805 : : return false; 1806 : : case 0x0Dul: 1807 : : return false; 1808 : : default: 1809 : : return false; 1810 : : } 1811 : : } 1812 : : #endif 1813 : : return false; 1814 : : #endif 1815 : : } 1816 : : 1817 : : /* ========= Errata 29 ========= */ 1818 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1819 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1820 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1821 : : #define NRF51_ERRATA_29_PRESENT 1 1822 : : #else 1823 : : #define NRF51_ERRATA_29_PRESENT 0 1824 : : #endif 1825 : : 1826 : : #ifndef NRF51_ERRATA_29_ENABLE_WORKAROUND 1827 : : #define NRF51_ERRATA_29_ENABLE_WORKAROUND NRF51_ERRATA_29_PRESENT 1828 : : #endif 1829 : : 1830 : 0 : static bool nrf51_errata_29(void) 1831 : : { 1832 : : #ifndef NRF51_SERIES 1833 : 0 : return false; 1834 : : #else 1835 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1836 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1837 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1838 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1839 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1840 : : #endif 1841 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1842 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1843 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1844 : : if (var1 == 0x01) 1845 : : { 1846 : : switch(var2) 1847 : : { 1848 : : case 0x00ul: 1849 : : return true; 1850 : : case 0x01ul: 1851 : : return true; 1852 : : case 0x02ul: 1853 : : return false; 1854 : : case 0x03ul: 1855 : : return true; 1856 : : case 0x04ul: 1857 : : return false; 1858 : : case 0x07ul: 1859 : : return false; 1860 : : case 0x08ul: 1861 : : return false; 1862 : : case 0x09ul: 1863 : : return false; 1864 : : case 0x0Aul: 1865 : : return false; 1866 : : case 0x0Bul: 1867 : : return false; 1868 : : case 0x0Cul: 1869 : : return false; 1870 : : case 0x0Dul: 1871 : : return false; 1872 : : default: 1873 : : return false; 1874 : : } 1875 : : } 1876 : : #endif 1877 : : return false; 1878 : : #endif 1879 : : } 1880 : : 1881 : : /* ========= Errata 30 ========= */ 1882 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1883 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1884 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1885 : : #define NRF51_ERRATA_30_PRESENT 1 1886 : : #else 1887 : : #define NRF51_ERRATA_30_PRESENT 0 1888 : : #endif 1889 : : 1890 : : #ifndef NRF51_ERRATA_30_ENABLE_WORKAROUND 1891 : : #define NRF51_ERRATA_30_ENABLE_WORKAROUND NRF51_ERRATA_30_PRESENT 1892 : : #endif 1893 : : 1894 : 0 : static bool nrf51_errata_30(void) 1895 : : { 1896 : : #ifndef NRF51_SERIES 1897 : 0 : return false; 1898 : : #else 1899 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1900 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1901 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1902 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1903 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1904 : : #endif 1905 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1906 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1907 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1908 : : if (var1 == 0x01) 1909 : : { 1910 : : switch(var2) 1911 : : { 1912 : : case 0x00ul: 1913 : : return true; 1914 : : case 0x01ul: 1915 : : return true; 1916 : : case 0x02ul: 1917 : : return false; 1918 : : case 0x03ul: 1919 : : return true; 1920 : : case 0x04ul: 1921 : : return false; 1922 : : case 0x07ul: 1923 : : return false; 1924 : : case 0x08ul: 1925 : : return false; 1926 : : case 0x09ul: 1927 : : return false; 1928 : : case 0x0Aul: 1929 : : return false; 1930 : : case 0x0Bul: 1931 : : return false; 1932 : : case 0x0Cul: 1933 : : return false; 1934 : : case 0x0Dul: 1935 : : return false; 1936 : : default: 1937 : : return false; 1938 : : } 1939 : : } 1940 : : #endif 1941 : : return false; 1942 : : #endif 1943 : : } 1944 : : 1945 : : /* ========= Errata 31 ========= */ 1946 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 1947 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 1948 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1949 : : #define NRF51_ERRATA_31_PRESENT 1 1950 : : #else 1951 : : #define NRF51_ERRATA_31_PRESENT 0 1952 : : #endif 1953 : : 1954 : : #ifndef NRF51_ERRATA_31_ENABLE_WORKAROUND 1955 : : #define NRF51_ERRATA_31_ENABLE_WORKAROUND NRF51_ERRATA_31_PRESENT 1956 : : #endif 1957 : : 1958 : 0 : static bool nrf51_errata_31(void) 1959 : : { 1960 : : #ifndef NRF51_SERIES 1961 : 0 : return false; 1962 : : #else 1963 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1964 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1965 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1966 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 1967 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 1968 : : #endif 1969 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 1970 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 1971 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 1972 : : if (var1 == 0x01) 1973 : : { 1974 : : switch(var2) 1975 : : { 1976 : : case 0x00ul: 1977 : : return true; 1978 : : case 0x01ul: 1979 : : return true; 1980 : : case 0x02ul: 1981 : : return false; 1982 : : case 0x03ul: 1983 : : return true; 1984 : : case 0x04ul: 1985 : : return false; 1986 : : case 0x07ul: 1987 : : return false; 1988 : : case 0x08ul: 1989 : : return false; 1990 : : case 0x09ul: 1991 : : return false; 1992 : : case 0x0Aul: 1993 : : return false; 1994 : : case 0x0Bul: 1995 : : return false; 1996 : : case 0x0Cul: 1997 : : return false; 1998 : : case 0x0Dul: 1999 : : return false; 2000 : : default: 2001 : : return false; 2002 : : } 2003 : : } 2004 : : #endif 2005 : : return false; 2006 : : #endif 2007 : : } 2008 : : 2009 : : /* ========= Errata 32 ========= */ 2010 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2011 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2012 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2013 : : #define NRF51_ERRATA_32_PRESENT 1 2014 : : #else 2015 : : #define NRF51_ERRATA_32_PRESENT 0 2016 : : #endif 2017 : : 2018 : : #ifndef NRF51_ERRATA_32_ENABLE_WORKAROUND 2019 : : #define NRF51_ERRATA_32_ENABLE_WORKAROUND NRF51_ERRATA_32_PRESENT 2020 : : #endif 2021 : : 2022 : 0 : static bool nrf51_errata_32(void) 2023 : : { 2024 : : #ifndef NRF51_SERIES 2025 : 0 : return false; 2026 : : #else 2027 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2028 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2029 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2030 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2031 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2032 : : #endif 2033 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2034 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2035 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2036 : : if (var1 == 0x01) 2037 : : { 2038 : : switch(var2) 2039 : : { 2040 : : case 0x00ul: 2041 : : return true; 2042 : : case 0x01ul: 2043 : : return true; 2044 : : case 0x02ul: 2045 : : return false; 2046 : : case 0x03ul: 2047 : : return true; 2048 : : case 0x04ul: 2049 : : return false; 2050 : : case 0x07ul: 2051 : : return false; 2052 : : case 0x08ul: 2053 : : return false; 2054 : : case 0x09ul: 2055 : : return false; 2056 : : case 0x0Aul: 2057 : : return false; 2058 : : case 0x0Bul: 2059 : : return false; 2060 : : case 0x0Cul: 2061 : : return false; 2062 : : case 0x0Dul: 2063 : : return false; 2064 : : default: 2065 : : return false; 2066 : : } 2067 : : } 2068 : : #endif 2069 : : return false; 2070 : : #endif 2071 : : } 2072 : : 2073 : : /* ========= Errata 33 ========= */ 2074 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2075 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2076 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2077 : : #define NRF51_ERRATA_33_PRESENT 1 2078 : : #else 2079 : : #define NRF51_ERRATA_33_PRESENT 0 2080 : : #endif 2081 : : 2082 : : #ifndef NRF51_ERRATA_33_ENABLE_WORKAROUND 2083 : : #define NRF51_ERRATA_33_ENABLE_WORKAROUND NRF51_ERRATA_33_PRESENT 2084 : : #endif 2085 : : 2086 : 0 : static bool nrf51_errata_33(void) 2087 : : { 2088 : : #ifndef NRF51_SERIES 2089 : 0 : return false; 2090 : : #else 2091 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2092 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2093 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2094 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2095 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2096 : : #endif 2097 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2098 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2099 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2100 : : if (var1 == 0x01) 2101 : : { 2102 : : switch(var2) 2103 : : { 2104 : : case 0x00ul: 2105 : : return true; 2106 : : case 0x01ul: 2107 : : return true; 2108 : : case 0x02ul: 2109 : : return false; 2110 : : case 0x03ul: 2111 : : return true; 2112 : : case 0x04ul: 2113 : : return false; 2114 : : case 0x07ul: 2115 : : return false; 2116 : : case 0x08ul: 2117 : : return false; 2118 : : case 0x09ul: 2119 : : return false; 2120 : : case 0x0Aul: 2121 : : return false; 2122 : : case 0x0Bul: 2123 : : return false; 2124 : : case 0x0Cul: 2125 : : return false; 2126 : : case 0x0Dul: 2127 : : return false; 2128 : : default: 2129 : : return false; 2130 : : } 2131 : : } 2132 : : #endif 2133 : : return false; 2134 : : #endif 2135 : : } 2136 : : 2137 : : /* ========= Errata 34 ========= */ 2138 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2139 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2140 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2141 : : #define NRF51_ERRATA_34_PRESENT 1 2142 : : #else 2143 : : #define NRF51_ERRATA_34_PRESENT 0 2144 : : #endif 2145 : : 2146 : : #ifndef NRF51_ERRATA_34_ENABLE_WORKAROUND 2147 : : #define NRF51_ERRATA_34_ENABLE_WORKAROUND NRF51_ERRATA_34_PRESENT 2148 : : #endif 2149 : : 2150 : 0 : static bool nrf51_errata_34(void) 2151 : : { 2152 : : #ifndef NRF51_SERIES 2153 : 0 : return false; 2154 : : #else 2155 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2156 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2157 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2158 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2159 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2160 : : #endif 2161 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2162 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2163 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2164 : : if (var1 == 0x01) 2165 : : { 2166 : : switch(var2) 2167 : : { 2168 : : case 0x00ul: 2169 : : return true; 2170 : : case 0x01ul: 2171 : : return true; 2172 : : case 0x02ul: 2173 : : return false; 2174 : : case 0x03ul: 2175 : : return true; 2176 : : case 0x04ul: 2177 : : return false; 2178 : : case 0x07ul: 2179 : : return false; 2180 : : case 0x08ul: 2181 : : return false; 2182 : : case 0x09ul: 2183 : : return false; 2184 : : case 0x0Aul: 2185 : : return false; 2186 : : case 0x0Bul: 2187 : : return false; 2188 : : case 0x0Cul: 2189 : : return false; 2190 : : case 0x0Dul: 2191 : : return false; 2192 : : default: 2193 : : return false; 2194 : : } 2195 : : } 2196 : : #endif 2197 : : return false; 2198 : : #endif 2199 : : } 2200 : : 2201 : : /* ========= Errata 35 ========= */ 2202 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2203 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2204 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2205 : : #define NRF51_ERRATA_35_PRESENT 1 2206 : : #else 2207 : : #define NRF51_ERRATA_35_PRESENT 0 2208 : : #endif 2209 : : 2210 : : #ifndef NRF51_ERRATA_35_ENABLE_WORKAROUND 2211 : : #define NRF51_ERRATA_35_ENABLE_WORKAROUND NRF51_ERRATA_35_PRESENT 2212 : : #endif 2213 : : 2214 : 0 : static bool nrf51_errata_35(void) 2215 : : { 2216 : : #ifndef NRF51_SERIES 2217 : 0 : return false; 2218 : : #else 2219 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2220 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2221 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2222 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2223 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2224 : : #endif 2225 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2226 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2227 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2228 : : if (var1 == 0x01) 2229 : : { 2230 : : switch(var2) 2231 : : { 2232 : : case 0x00ul: 2233 : : return true; 2234 : : case 0x01ul: 2235 : : return true; 2236 : : case 0x02ul: 2237 : : return true; 2238 : : case 0x03ul: 2239 : : return true; 2240 : : case 0x04ul: 2241 : : return true; 2242 : : case 0x07ul: 2243 : : return false; 2244 : : case 0x08ul: 2245 : : return false; 2246 : : case 0x09ul: 2247 : : return false; 2248 : : case 0x0Aul: 2249 : : return false; 2250 : : case 0x0Bul: 2251 : : return false; 2252 : : case 0x0Cul: 2253 : : return false; 2254 : : case 0x0Dul: 2255 : : return false; 2256 : : default: 2257 : : return false; 2258 : : } 2259 : : } 2260 : : #endif 2261 : : return false; 2262 : : #endif 2263 : : } 2264 : : 2265 : : /* ========= Errata 36 ========= */ 2266 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2267 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2268 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2269 : : #define NRF51_ERRATA_36_PRESENT 1 2270 : : #else 2271 : : #define NRF51_ERRATA_36_PRESENT 0 2272 : : #endif 2273 : : 2274 : : #ifndef NRF51_ERRATA_36_ENABLE_WORKAROUND 2275 : : #define NRF51_ERRATA_36_ENABLE_WORKAROUND NRF51_ERRATA_36_PRESENT 2276 : : #endif 2277 : : 2278 : 0 : static bool nrf51_errata_36(void) 2279 : : { 2280 : : #ifndef NRF51_SERIES 2281 : 0 : return false; 2282 : : #else 2283 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2284 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2285 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2286 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2287 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2288 : : #endif 2289 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2290 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2291 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2292 : : if (var1 == 0x01) 2293 : : { 2294 : : switch(var2) 2295 : : { 2296 : : case 0x00ul: 2297 : : return true; 2298 : : case 0x01ul: 2299 : : return true; 2300 : : case 0x02ul: 2301 : : return false; 2302 : : case 0x03ul: 2303 : : return true; 2304 : : case 0x04ul: 2305 : : return false; 2306 : : case 0x07ul: 2307 : : return false; 2308 : : case 0x08ul: 2309 : : return false; 2310 : : case 0x09ul: 2311 : : return false; 2312 : : case 0x0Aul: 2313 : : return false; 2314 : : case 0x0Bul: 2315 : : return false; 2316 : : case 0x0Cul: 2317 : : return false; 2318 : : case 0x0Dul: 2319 : : return false; 2320 : : default: 2321 : : return false; 2322 : : } 2323 : : } 2324 : : #endif 2325 : : return false; 2326 : : #endif 2327 : : } 2328 : : 2329 : : /* ========= Errata 37 ========= */ 2330 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2331 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2332 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2333 : : #define NRF51_ERRATA_37_PRESENT 1 2334 : : #else 2335 : : #define NRF51_ERRATA_37_PRESENT 0 2336 : : #endif 2337 : : 2338 : : #ifndef NRF51_ERRATA_37_ENABLE_WORKAROUND 2339 : : #define NRF51_ERRATA_37_ENABLE_WORKAROUND NRF51_ERRATA_37_PRESENT 2340 : : #endif 2341 : : 2342 : 0 : static bool nrf51_errata_37(void) 2343 : : { 2344 : : #ifndef NRF51_SERIES 2345 : 0 : return false; 2346 : : #else 2347 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2348 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2349 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2350 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2351 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2352 : : #endif 2353 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2354 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2355 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2356 : : if (var1 == 0x01) 2357 : : { 2358 : : switch(var2) 2359 : : { 2360 : : case 0x00ul: 2361 : : return true; 2362 : : case 0x01ul: 2363 : : return true; 2364 : : case 0x02ul: 2365 : : return false; 2366 : : case 0x03ul: 2367 : : return true; 2368 : : case 0x04ul: 2369 : : return false; 2370 : : case 0x07ul: 2371 : : return false; 2372 : : case 0x08ul: 2373 : : return false; 2374 : : case 0x09ul: 2375 : : return false; 2376 : : case 0x0Aul: 2377 : : return false; 2378 : : case 0x0Bul: 2379 : : return false; 2380 : : case 0x0Cul: 2381 : : return false; 2382 : : case 0x0Dul: 2383 : : return false; 2384 : : default: 2385 : : return false; 2386 : : } 2387 : : } 2388 : : #endif 2389 : : return false; 2390 : : #endif 2391 : : } 2392 : : 2393 : : /* ========= Errata 38 ========= */ 2394 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2395 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2396 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2397 : : #define NRF51_ERRATA_38_PRESENT 1 2398 : : #else 2399 : : #define NRF51_ERRATA_38_PRESENT 0 2400 : : #endif 2401 : : 2402 : : #ifndef NRF51_ERRATA_38_ENABLE_WORKAROUND 2403 : : #define NRF51_ERRATA_38_ENABLE_WORKAROUND NRF51_ERRATA_38_PRESENT 2404 : : #endif 2405 : : 2406 : 0 : static bool nrf51_errata_38(void) 2407 : : { 2408 : : #ifndef NRF51_SERIES 2409 : 0 : return false; 2410 : : #else 2411 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2412 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2413 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2414 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2415 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2416 : : #endif 2417 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2418 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2419 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2420 : : if (var1 == 0x01) 2421 : : { 2422 : : switch(var2) 2423 : : { 2424 : : case 0x00ul: 2425 : : return true; 2426 : : case 0x01ul: 2427 : : return true; 2428 : : case 0x02ul: 2429 : : return true; 2430 : : case 0x03ul: 2431 : : return true; 2432 : : case 0x04ul: 2433 : : return true; 2434 : : case 0x07ul: 2435 : : return true; 2436 : : case 0x08ul: 2437 : : return true; 2438 : : case 0x09ul: 2439 : : return true; 2440 : : case 0x0Aul: 2441 : : return true; 2442 : : case 0x0Bul: 2443 : : return true; 2444 : : case 0x0Cul: 2445 : : return true; 2446 : : case 0x0Dul: 2447 : : return true; 2448 : : default: 2449 : : return true; 2450 : : } 2451 : : } 2452 : : #endif 2453 : : return false; 2454 : : #endif 2455 : : } 2456 : : 2457 : : /* ========= Errata 39 ========= */ 2458 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2459 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2460 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2461 : : #define NRF51_ERRATA_39_PRESENT 1 2462 : : #else 2463 : : #define NRF51_ERRATA_39_PRESENT 0 2464 : : #endif 2465 : : 2466 : : #ifndef NRF51_ERRATA_39_ENABLE_WORKAROUND 2467 : : #define NRF51_ERRATA_39_ENABLE_WORKAROUND NRF51_ERRATA_39_PRESENT 2468 : : #endif 2469 : : 2470 : 0 : static bool nrf51_errata_39(void) 2471 : : { 2472 : : #ifndef NRF51_SERIES 2473 : 0 : return false; 2474 : : #else 2475 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2476 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2477 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2478 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2479 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2480 : : #endif 2481 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2482 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2483 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2484 : : if (var1 == 0x01) 2485 : : { 2486 : : switch(var2) 2487 : : { 2488 : : case 0x00ul: 2489 : : return true; 2490 : : case 0x01ul: 2491 : : return true; 2492 : : case 0x02ul: 2493 : : return true; 2494 : : case 0x03ul: 2495 : : return true; 2496 : : case 0x04ul: 2497 : : return true; 2498 : : case 0x07ul: 2499 : : return false; 2500 : : case 0x08ul: 2501 : : return false; 2502 : : case 0x09ul: 2503 : : return false; 2504 : : case 0x0Aul: 2505 : : return false; 2506 : : case 0x0Bul: 2507 : : return false; 2508 : : case 0x0Cul: 2509 : : return false; 2510 : : case 0x0Dul: 2511 : : return false; 2512 : : default: 2513 : : return false; 2514 : : } 2515 : : } 2516 : : #endif 2517 : : return false; 2518 : : #endif 2519 : : } 2520 : : 2521 : : /* ========= Errata 40 ========= */ 2522 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2523 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2524 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2525 : : #define NRF51_ERRATA_40_PRESENT 1 2526 : : #else 2527 : : #define NRF51_ERRATA_40_PRESENT 0 2528 : : #endif 2529 : : 2530 : : #ifndef NRF51_ERRATA_40_ENABLE_WORKAROUND 2531 : : #define NRF51_ERRATA_40_ENABLE_WORKAROUND NRF51_ERRATA_40_PRESENT 2532 : : #endif 2533 : : 2534 : 0 : static bool nrf51_errata_40(void) 2535 : : { 2536 : : #ifndef NRF51_SERIES 2537 : 0 : return false; 2538 : : #else 2539 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2540 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2541 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2542 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2543 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2544 : : #endif 2545 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2546 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2547 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2548 : : if (var1 == 0x01) 2549 : : { 2550 : : switch(var2) 2551 : : { 2552 : : case 0x00ul: 2553 : : return true; 2554 : : case 0x01ul: 2555 : : return true; 2556 : : case 0x02ul: 2557 : : return true; 2558 : : case 0x03ul: 2559 : : return true; 2560 : : case 0x04ul: 2561 : : return true; 2562 : : case 0x07ul: 2563 : : return false; 2564 : : case 0x08ul: 2565 : : return false; 2566 : : case 0x09ul: 2567 : : return false; 2568 : : case 0x0Aul: 2569 : : return false; 2570 : : case 0x0Bul: 2571 : : return false; 2572 : : case 0x0Cul: 2573 : : return false; 2574 : : case 0x0Dul: 2575 : : return false; 2576 : : default: 2577 : : return false; 2578 : : } 2579 : : } 2580 : : #endif 2581 : : return false; 2582 : : #endif 2583 : : } 2584 : : 2585 : : /* ========= Errata 41 ========= */ 2586 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2587 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2588 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2589 : : #define NRF51_ERRATA_41_PRESENT 1 2590 : : #else 2591 : : #define NRF51_ERRATA_41_PRESENT 0 2592 : : #endif 2593 : : 2594 : : #ifndef NRF51_ERRATA_41_ENABLE_WORKAROUND 2595 : : #define NRF51_ERRATA_41_ENABLE_WORKAROUND NRF51_ERRATA_41_PRESENT 2596 : : #endif 2597 : : 2598 : 0 : static bool nrf51_errata_41(void) 2599 : : { 2600 : : #ifndef NRF51_SERIES 2601 : 0 : return false; 2602 : : #else 2603 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2604 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2605 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2606 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2607 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2608 : : #endif 2609 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2610 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2611 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2612 : : if (var1 == 0x01) 2613 : : { 2614 : : switch(var2) 2615 : : { 2616 : : case 0x00ul: 2617 : : return true; 2618 : : case 0x01ul: 2619 : : return true; 2620 : : case 0x02ul: 2621 : : return true; 2622 : : case 0x03ul: 2623 : : return true; 2624 : : case 0x04ul: 2625 : : return true; 2626 : : case 0x07ul: 2627 : : return false; 2628 : : case 0x08ul: 2629 : : return false; 2630 : : case 0x09ul: 2631 : : return false; 2632 : : case 0x0Aul: 2633 : : return false; 2634 : : case 0x0Bul: 2635 : : return false; 2636 : : case 0x0Cul: 2637 : : return false; 2638 : : case 0x0Dul: 2639 : : return false; 2640 : : default: 2641 : : return false; 2642 : : } 2643 : : } 2644 : : #endif 2645 : : return false; 2646 : : #endif 2647 : : } 2648 : : 2649 : : /* ========= Errata 42 ========= */ 2650 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2651 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2652 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2653 : : #define NRF51_ERRATA_42_PRESENT 1 2654 : : #else 2655 : : #define NRF51_ERRATA_42_PRESENT 0 2656 : : #endif 2657 : : 2658 : : #ifndef NRF51_ERRATA_42_ENABLE_WORKAROUND 2659 : : #define NRF51_ERRATA_42_ENABLE_WORKAROUND NRF51_ERRATA_42_PRESENT 2660 : : #endif 2661 : : 2662 : 0 : static bool nrf51_errata_42(void) 2663 : : { 2664 : : #ifndef NRF51_SERIES 2665 : 0 : return false; 2666 : : #else 2667 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2668 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2669 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2670 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2671 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2672 : : #endif 2673 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2674 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2675 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2676 : : if (var1 == 0x01) 2677 : : { 2678 : : switch(var2) 2679 : : { 2680 : : case 0x00ul: 2681 : : return true; 2682 : : case 0x01ul: 2683 : : return true; 2684 : : case 0x02ul: 2685 : : return true; 2686 : : case 0x03ul: 2687 : : return true; 2688 : : case 0x04ul: 2689 : : return true; 2690 : : case 0x07ul: 2691 : : return false; 2692 : : case 0x08ul: 2693 : : return false; 2694 : : case 0x09ul: 2695 : : return false; 2696 : : case 0x0Aul: 2697 : : return false; 2698 : : case 0x0Bul: 2699 : : return false; 2700 : : case 0x0Cul: 2701 : : return false; 2702 : : case 0x0Dul: 2703 : : return false; 2704 : : default: 2705 : : return false; 2706 : : } 2707 : : } 2708 : : #endif 2709 : : return false; 2710 : : #endif 2711 : : } 2712 : : 2713 : : /* ========= Errata 43 ========= */ 2714 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2715 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2716 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2717 : : #define NRF51_ERRATA_43_PRESENT 1 2718 : : #else 2719 : : #define NRF51_ERRATA_43_PRESENT 0 2720 : : #endif 2721 : : 2722 : : #ifndef NRF51_ERRATA_43_ENABLE_WORKAROUND 2723 : : #define NRF51_ERRATA_43_ENABLE_WORKAROUND NRF51_ERRATA_43_PRESENT 2724 : : #endif 2725 : : 2726 : 0 : static bool nrf51_errata_43(void) 2727 : : { 2728 : : #ifndef NRF51_SERIES 2729 : 0 : return false; 2730 : : #else 2731 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2732 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2733 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2734 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2735 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2736 : : #endif 2737 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2738 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2739 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2740 : : if (var1 == 0x01) 2741 : : { 2742 : : switch(var2) 2743 : : { 2744 : : case 0x00ul: 2745 : : return false; 2746 : : case 0x01ul: 2747 : : return false; 2748 : : case 0x02ul: 2749 : : return true; 2750 : : case 0x03ul: 2751 : : return false; 2752 : : case 0x04ul: 2753 : : return true; 2754 : : case 0x07ul: 2755 : : return false; 2756 : : case 0x08ul: 2757 : : return false; 2758 : : case 0x09ul: 2759 : : return false; 2760 : : case 0x0Aul: 2761 : : return false; 2762 : : case 0x0Bul: 2763 : : return false; 2764 : : case 0x0Cul: 2765 : : return false; 2766 : : case 0x0Dul: 2767 : : return false; 2768 : : default: 2769 : : return false; 2770 : : } 2771 : : } 2772 : : #endif 2773 : : return false; 2774 : : #endif 2775 : : } 2776 : : 2777 : : /* ========= Errata 44 ========= */ 2778 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2779 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2780 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2781 : : #define NRF51_ERRATA_44_PRESENT 1 2782 : : #else 2783 : : #define NRF51_ERRATA_44_PRESENT 0 2784 : : #endif 2785 : : 2786 : : #ifndef NRF51_ERRATA_44_ENABLE_WORKAROUND 2787 : : #define NRF51_ERRATA_44_ENABLE_WORKAROUND NRF51_ERRATA_44_PRESENT 2788 : : #endif 2789 : : 2790 : 0 : static bool nrf51_errata_44(void) 2791 : : { 2792 : : #ifndef NRF51_SERIES 2793 : 0 : return false; 2794 : : #else 2795 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2796 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2797 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2798 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2799 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2800 : : #endif 2801 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2802 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2803 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2804 : : if (var1 == 0x01) 2805 : : { 2806 : : switch(var2) 2807 : : { 2808 : : case 0x00ul: 2809 : : return true; 2810 : : case 0x01ul: 2811 : : return true; 2812 : : case 0x02ul: 2813 : : return true; 2814 : : case 0x03ul: 2815 : : return true; 2816 : : case 0x04ul: 2817 : : return true; 2818 : : case 0x07ul: 2819 : : return false; 2820 : : case 0x08ul: 2821 : : return false; 2822 : : case 0x09ul: 2823 : : return false; 2824 : : case 0x0Aul: 2825 : : return false; 2826 : : case 0x0Bul: 2827 : : return false; 2828 : : case 0x0Cul: 2829 : : return false; 2830 : : case 0x0Dul: 2831 : : return false; 2832 : : default: 2833 : : return false; 2834 : : } 2835 : : } 2836 : : #endif 2837 : : return false; 2838 : : #endif 2839 : : } 2840 : : 2841 : : /* ========= Errata 45 ========= */ 2842 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2843 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2844 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2845 : : #define NRF51_ERRATA_45_PRESENT 1 2846 : : #else 2847 : : #define NRF51_ERRATA_45_PRESENT 0 2848 : : #endif 2849 : : 2850 : : #ifndef NRF51_ERRATA_45_ENABLE_WORKAROUND 2851 : : #define NRF51_ERRATA_45_ENABLE_WORKAROUND NRF51_ERRATA_45_PRESENT 2852 : : #endif 2853 : : 2854 : 0 : static bool nrf51_errata_45(void) 2855 : : { 2856 : : #ifndef NRF51_SERIES 2857 : 0 : return false; 2858 : : #else 2859 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2860 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2861 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2862 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2863 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2864 : : #endif 2865 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2866 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2867 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2868 : : if (var1 == 0x01) 2869 : : { 2870 : : switch(var2) 2871 : : { 2872 : : case 0x00ul: 2873 : : return true; 2874 : : case 0x01ul: 2875 : : return true; 2876 : : case 0x02ul: 2877 : : return true; 2878 : : case 0x03ul: 2879 : : return true; 2880 : : case 0x04ul: 2881 : : return true; 2882 : : case 0x07ul: 2883 : : return false; 2884 : : case 0x08ul: 2885 : : return false; 2886 : : case 0x09ul: 2887 : : return false; 2888 : : case 0x0Aul: 2889 : : return false; 2890 : : case 0x0Bul: 2891 : : return false; 2892 : : case 0x0Cul: 2893 : : return false; 2894 : : case 0x0Dul: 2895 : : return false; 2896 : : default: 2897 : : return false; 2898 : : } 2899 : : } 2900 : : #endif 2901 : : return false; 2902 : : #endif 2903 : : } 2904 : : 2905 : : /* ========= Errata 46 ========= */ 2906 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2907 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2908 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2909 : : #define NRF51_ERRATA_46_PRESENT 1 2910 : : #else 2911 : : #define NRF51_ERRATA_46_PRESENT 0 2912 : : #endif 2913 : : 2914 : : #ifndef NRF51_ERRATA_46_ENABLE_WORKAROUND 2915 : : #define NRF51_ERRATA_46_ENABLE_WORKAROUND NRF51_ERRATA_46_PRESENT 2916 : : #endif 2917 : : 2918 : 0 : static bool nrf51_errata_46(void) 2919 : : { 2920 : : #ifndef NRF51_SERIES 2921 : 0 : return false; 2922 : : #else 2923 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2924 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2925 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2926 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2927 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2928 : : #endif 2929 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2930 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2931 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2932 : : if (var1 == 0x01) 2933 : : { 2934 : : switch(var2) 2935 : : { 2936 : : case 0x00ul: 2937 : : return false; 2938 : : case 0x01ul: 2939 : : return false; 2940 : : case 0x02ul: 2941 : : return true; 2942 : : case 0x03ul: 2943 : : return false; 2944 : : case 0x04ul: 2945 : : return true; 2946 : : case 0x07ul: 2947 : : return true; 2948 : : case 0x08ul: 2949 : : return true; 2950 : : case 0x09ul: 2951 : : return true; 2952 : : case 0x0Aul: 2953 : : return false; 2954 : : case 0x0Bul: 2955 : : return true; 2956 : : case 0x0Cul: 2957 : : return true; 2958 : : case 0x0Dul: 2959 : : return false; 2960 : : default: 2961 : : return false; 2962 : : } 2963 : : } 2964 : : #endif 2965 : : return false; 2966 : : #endif 2967 : : } 2968 : : 2969 : : /* ========= Errata 47 ========= */ 2970 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 2971 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 2972 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2973 : : #define NRF51_ERRATA_47_PRESENT 1 2974 : : #else 2975 : : #define NRF51_ERRATA_47_PRESENT 0 2976 : : #endif 2977 : : 2978 : : #ifndef NRF51_ERRATA_47_ENABLE_WORKAROUND 2979 : : #define NRF51_ERRATA_47_ENABLE_WORKAROUND NRF51_ERRATA_47_PRESENT 2980 : : #endif 2981 : : 2982 : 0 : static bool nrf51_errata_47(void) 2983 : : { 2984 : : #ifndef NRF51_SERIES 2985 : 0 : return false; 2986 : : #else 2987 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2988 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2989 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2990 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 2991 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 2992 : : #endif 2993 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 2994 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 2995 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 2996 : : if (var1 == 0x01) 2997 : : { 2998 : : switch(var2) 2999 : : { 3000 : : case 0x00ul: 3001 : : return true; 3002 : : case 0x01ul: 3003 : : return true; 3004 : : case 0x02ul: 3005 : : return true; 3006 : : case 0x03ul: 3007 : : return true; 3008 : : case 0x04ul: 3009 : : return true; 3010 : : case 0x07ul: 3011 : : return false; 3012 : : case 0x08ul: 3013 : : return false; 3014 : : case 0x09ul: 3015 : : return false; 3016 : : case 0x0Aul: 3017 : : return false; 3018 : : case 0x0Bul: 3019 : : return false; 3020 : : case 0x0Cul: 3021 : : return false; 3022 : : case 0x0Dul: 3023 : : return false; 3024 : : default: 3025 : : return false; 3026 : : } 3027 : : } 3028 : : #endif 3029 : : return false; 3030 : : #endif 3031 : : } 3032 : : 3033 : : /* ========= Errata 48 ========= */ 3034 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3035 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3036 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3037 : : #define NRF51_ERRATA_48_PRESENT 1 3038 : : #else 3039 : : #define NRF51_ERRATA_48_PRESENT 0 3040 : : #endif 3041 : : 3042 : : #ifndef NRF51_ERRATA_48_ENABLE_WORKAROUND 3043 : : #define NRF51_ERRATA_48_ENABLE_WORKAROUND NRF51_ERRATA_48_PRESENT 3044 : : #endif 3045 : : 3046 : 0 : static bool nrf51_errata_48(void) 3047 : : { 3048 : : #ifndef NRF51_SERIES 3049 : 0 : return false; 3050 : : #else 3051 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3052 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3053 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3054 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3055 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3056 : : #endif 3057 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3058 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3059 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3060 : : if (var1 == 0x01) 3061 : : { 3062 : : switch(var2) 3063 : : { 3064 : : case 0x00ul: 3065 : : return true; 3066 : : case 0x01ul: 3067 : : return true; 3068 : : case 0x02ul: 3069 : : return true; 3070 : : case 0x03ul: 3071 : : return true; 3072 : : case 0x04ul: 3073 : : return true; 3074 : : case 0x07ul: 3075 : : return false; 3076 : : case 0x08ul: 3077 : : return false; 3078 : : case 0x09ul: 3079 : : return false; 3080 : : case 0x0Aul: 3081 : : return false; 3082 : : case 0x0Bul: 3083 : : return false; 3084 : : case 0x0Cul: 3085 : : return false; 3086 : : case 0x0Dul: 3087 : : return false; 3088 : : default: 3089 : : return false; 3090 : : } 3091 : : } 3092 : : #endif 3093 : : return false; 3094 : : #endif 3095 : : } 3096 : : 3097 : : /* ========= Errata 49 ========= */ 3098 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3099 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3100 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3101 : : #define NRF51_ERRATA_49_PRESENT 1 3102 : : #else 3103 : : #define NRF51_ERRATA_49_PRESENT 0 3104 : : #endif 3105 : : 3106 : : #ifndef NRF51_ERRATA_49_ENABLE_WORKAROUND 3107 : : #define NRF51_ERRATA_49_ENABLE_WORKAROUND NRF51_ERRATA_49_PRESENT 3108 : : #endif 3109 : : 3110 : 0 : static bool nrf51_errata_49(void) 3111 : : { 3112 : : #ifndef NRF51_SERIES 3113 : 0 : return false; 3114 : : #else 3115 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3116 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3117 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3118 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3119 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3120 : : #endif 3121 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3122 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3123 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3124 : : if (var1 == 0x01) 3125 : : { 3126 : : switch(var2) 3127 : : { 3128 : : case 0x00ul: 3129 : : return false; 3130 : : case 0x01ul: 3131 : : return false; 3132 : : case 0x02ul: 3133 : : return true; 3134 : : case 0x03ul: 3135 : : return false; 3136 : : case 0x04ul: 3137 : : return true; 3138 : : case 0x07ul: 3139 : : return false; 3140 : : case 0x08ul: 3141 : : return false; 3142 : : case 0x09ul: 3143 : : return false; 3144 : : case 0x0Aul: 3145 : : return false; 3146 : : case 0x0Bul: 3147 : : return false; 3148 : : case 0x0Cul: 3149 : : return false; 3150 : : case 0x0Dul: 3151 : : return false; 3152 : : default: 3153 : : return false; 3154 : : } 3155 : : } 3156 : : #endif 3157 : : return false; 3158 : : #endif 3159 : : } 3160 : : 3161 : : /* ========= Errata 50 ========= */ 3162 : : #define NRF51_ERRATA_50_PRESENT 0 3163 : : 3164 : : #ifndef NRF51_ERRATA_50_ENABLE_WORKAROUND 3165 : : #define NRF51_ERRATA_50_ENABLE_WORKAROUND NRF51_ERRATA_50_PRESENT 3166 : : #endif 3167 : : 3168 : 0 : static bool nrf51_errata_50(void) 3169 : : { 3170 : : #ifndef NRF51_SERIES 3171 : 0 : return false; 3172 : : #else 3173 : : return false; 3174 : : #endif 3175 : : } 3176 : : 3177 : : /* ========= Errata 51 ========= */ 3178 : : #define NRF51_ERRATA_51_PRESENT 0 3179 : : 3180 : : #ifndef NRF51_ERRATA_51_ENABLE_WORKAROUND 3181 : : #define NRF51_ERRATA_51_ENABLE_WORKAROUND NRF51_ERRATA_51_PRESENT 3182 : : #endif 3183 : : 3184 : 0 : static bool nrf51_errata_51(void) 3185 : : { 3186 : : #ifndef NRF51_SERIES 3187 : 0 : return false; 3188 : : #else 3189 : : return false; 3190 : : #endif 3191 : : } 3192 : : 3193 : : /* ========= Errata 52 ========= */ 3194 : : #define NRF51_ERRATA_52_PRESENT 0 3195 : : 3196 : : #ifndef NRF51_ERRATA_52_ENABLE_WORKAROUND 3197 : : #define NRF51_ERRATA_52_ENABLE_WORKAROUND NRF51_ERRATA_52_PRESENT 3198 : : #endif 3199 : : 3200 : 0 : static bool nrf51_errata_52(void) 3201 : : { 3202 : : #ifndef NRF51_SERIES 3203 : 0 : return false; 3204 : : #else 3205 : : return false; 3206 : : #endif 3207 : : } 3208 : : 3209 : : /* ========= Errata 53 ========= */ 3210 : : #define NRF51_ERRATA_53_PRESENT 0 3211 : : 3212 : : #ifndef NRF51_ERRATA_53_ENABLE_WORKAROUND 3213 : : #define NRF51_ERRATA_53_ENABLE_WORKAROUND NRF51_ERRATA_53_PRESENT 3214 : : #endif 3215 : : 3216 : 0 : static bool nrf51_errata_53(void) 3217 : : { 3218 : : #ifndef NRF51_SERIES 3219 : 0 : return false; 3220 : : #else 3221 : : return false; 3222 : : #endif 3223 : : } 3224 : : 3225 : : /* ========= Errata 54 ========= */ 3226 : : #define NRF51_ERRATA_54_PRESENT 0 3227 : : 3228 : : #ifndef NRF51_ERRATA_54_ENABLE_WORKAROUND 3229 : : #define NRF51_ERRATA_54_ENABLE_WORKAROUND NRF51_ERRATA_54_PRESENT 3230 : : #endif 3231 : : 3232 : 0 : static bool nrf51_errata_54(void) 3233 : : { 3234 : : #ifndef NRF51_SERIES 3235 : 0 : return false; 3236 : : #else 3237 : : return false; 3238 : : #endif 3239 : : } 3240 : : 3241 : : /* ========= Errata 55 ========= */ 3242 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3243 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3244 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3245 : : #define NRF51_ERRATA_55_PRESENT 1 3246 : : #else 3247 : : #define NRF51_ERRATA_55_PRESENT 0 3248 : : #endif 3249 : : 3250 : : #ifndef NRF51_ERRATA_55_ENABLE_WORKAROUND 3251 : : #define NRF51_ERRATA_55_ENABLE_WORKAROUND NRF51_ERRATA_55_PRESENT 3252 : : #endif 3253 : : 3254 : 0 : static bool nrf51_errata_55(void) 3255 : : { 3256 : : #ifndef NRF51_SERIES 3257 : 0 : return false; 3258 : : #else 3259 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3260 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3261 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3262 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3263 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3264 : : #endif 3265 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3266 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3267 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3268 : : if (var1 == 0x01) 3269 : : { 3270 : : switch(var2) 3271 : : { 3272 : : case 0x00ul: 3273 : : return true; 3274 : : case 0x01ul: 3275 : : return true; 3276 : : case 0x02ul: 3277 : : return false; 3278 : : case 0x03ul: 3279 : : return true; 3280 : : case 0x04ul: 3281 : : return false; 3282 : : case 0x07ul: 3283 : : return false; 3284 : : case 0x08ul: 3285 : : return false; 3286 : : case 0x09ul: 3287 : : return false; 3288 : : case 0x0Aul: 3289 : : return false; 3290 : : case 0x0Bul: 3291 : : return false; 3292 : : case 0x0Cul: 3293 : : return false; 3294 : : case 0x0Dul: 3295 : : return false; 3296 : : default: 3297 : : return false; 3298 : : } 3299 : : } 3300 : : #endif 3301 : : return false; 3302 : : #endif 3303 : : } 3304 : : 3305 : : /* ========= Errata 56 ========= */ 3306 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3307 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3308 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3309 : : #define NRF51_ERRATA_56_PRESENT 1 3310 : : #else 3311 : : #define NRF51_ERRATA_56_PRESENT 0 3312 : : #endif 3313 : : 3314 : : #ifndef NRF51_ERRATA_56_ENABLE_WORKAROUND 3315 : : #define NRF51_ERRATA_56_ENABLE_WORKAROUND NRF51_ERRATA_56_PRESENT 3316 : : #endif 3317 : : 3318 : 0 : static bool nrf51_errata_56(void) 3319 : : { 3320 : : #ifndef NRF51_SERIES 3321 : 0 : return false; 3322 : : #else 3323 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3324 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3325 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3326 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3327 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3328 : : #endif 3329 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3330 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3331 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3332 : : if (var1 == 0x01) 3333 : : { 3334 : : switch(var2) 3335 : : { 3336 : : case 0x00ul: 3337 : : return true; 3338 : : case 0x01ul: 3339 : : return true; 3340 : : case 0x02ul: 3341 : : return true; 3342 : : case 0x03ul: 3343 : : return true; 3344 : : case 0x04ul: 3345 : : return true; 3346 : : case 0x07ul: 3347 : : return false; 3348 : : case 0x08ul: 3349 : : return false; 3350 : : case 0x09ul: 3351 : : return false; 3352 : : case 0x0Aul: 3353 : : return false; 3354 : : case 0x0Bul: 3355 : : return false; 3356 : : case 0x0Cul: 3357 : : return false; 3358 : : case 0x0Dul: 3359 : : return false; 3360 : : default: 3361 : : return false; 3362 : : } 3363 : : } 3364 : : #endif 3365 : : return false; 3366 : : #endif 3367 : : } 3368 : : 3369 : : /* ========= Errata 57 ========= */ 3370 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3371 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3372 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3373 : : #define NRF51_ERRATA_57_PRESENT 1 3374 : : #else 3375 : : #define NRF51_ERRATA_57_PRESENT 0 3376 : : #endif 3377 : : 3378 : : #ifndef NRF51_ERRATA_57_ENABLE_WORKAROUND 3379 : : #define NRF51_ERRATA_57_ENABLE_WORKAROUND NRF51_ERRATA_57_PRESENT 3380 : : #endif 3381 : : 3382 : 0 : static bool nrf51_errata_57(void) 3383 : : { 3384 : : #ifndef NRF51_SERIES 3385 : 0 : return false; 3386 : : #else 3387 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3388 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3389 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3390 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3391 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3392 : : #endif 3393 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3394 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3395 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3396 : : if (var1 == 0x01) 3397 : : { 3398 : : switch(var2) 3399 : : { 3400 : : case 0x00ul: 3401 : : return true; 3402 : : case 0x01ul: 3403 : : return true; 3404 : : case 0x02ul: 3405 : : return true; 3406 : : case 0x03ul: 3407 : : return true; 3408 : : case 0x04ul: 3409 : : return true; 3410 : : case 0x07ul: 3411 : : return false; 3412 : : case 0x08ul: 3413 : : return false; 3414 : : case 0x09ul: 3415 : : return false; 3416 : : case 0x0Aul: 3417 : : return false; 3418 : : case 0x0Bul: 3419 : : return false; 3420 : : case 0x0Cul: 3421 : : return false; 3422 : : case 0x0Dul: 3423 : : return false; 3424 : : default: 3425 : : return false; 3426 : : } 3427 : : } 3428 : : #endif 3429 : : return false; 3430 : : #endif 3431 : : } 3432 : : 3433 : : /* ========= Errata 58 ========= */ 3434 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3435 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3436 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3437 : : #define NRF51_ERRATA_58_PRESENT 1 3438 : : #else 3439 : : #define NRF51_ERRATA_58_PRESENT 0 3440 : : #endif 3441 : : 3442 : : #ifndef NRF51_ERRATA_58_ENABLE_WORKAROUND 3443 : : #define NRF51_ERRATA_58_ENABLE_WORKAROUND NRF51_ERRATA_58_PRESENT 3444 : : #endif 3445 : : 3446 : 0 : static bool nrf51_errata_58(void) 3447 : : { 3448 : : #ifndef NRF51_SERIES 3449 : 0 : return false; 3450 : : #else 3451 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3452 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3453 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3454 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3455 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3456 : : #endif 3457 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3458 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3459 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3460 : : if (var1 == 0x01) 3461 : : { 3462 : : switch(var2) 3463 : : { 3464 : : case 0x00ul: 3465 : : return false; 3466 : : case 0x01ul: 3467 : : return false; 3468 : : case 0x02ul: 3469 : : return true; 3470 : : case 0x03ul: 3471 : : return false; 3472 : : case 0x04ul: 3473 : : return true; 3474 : : case 0x07ul: 3475 : : return false; 3476 : : case 0x08ul: 3477 : : return false; 3478 : : case 0x09ul: 3479 : : return false; 3480 : : case 0x0Aul: 3481 : : return false; 3482 : : case 0x0Bul: 3483 : : return false; 3484 : : case 0x0Cul: 3485 : : return false; 3486 : : case 0x0Dul: 3487 : : return false; 3488 : : default: 3489 : : return false; 3490 : : } 3491 : : } 3492 : : #endif 3493 : : return false; 3494 : : #endif 3495 : : } 3496 : : 3497 : : /* ========= Errata 59 ========= */ 3498 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3499 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3500 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3501 : : #define NRF51_ERRATA_59_PRESENT 1 3502 : : #else 3503 : : #define NRF51_ERRATA_59_PRESENT 0 3504 : : #endif 3505 : : 3506 : : #ifndef NRF51_ERRATA_59_ENABLE_WORKAROUND 3507 : : #define NRF51_ERRATA_59_ENABLE_WORKAROUND NRF51_ERRATA_59_PRESENT 3508 : : #endif 3509 : : 3510 : 0 : static bool nrf51_errata_59(void) 3511 : : { 3512 : : #ifndef NRF51_SERIES 3513 : 0 : return false; 3514 : : #else 3515 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3516 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3517 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3518 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3519 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3520 : : #endif 3521 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3522 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3523 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3524 : : if (var1 == 0x01) 3525 : : { 3526 : : switch(var2) 3527 : : { 3528 : : case 0x00ul: 3529 : : return false; 3530 : : case 0x01ul: 3531 : : return false; 3532 : : case 0x02ul: 3533 : : return true; 3534 : : case 0x03ul: 3535 : : return false; 3536 : : case 0x04ul: 3537 : : return true; 3538 : : case 0x07ul: 3539 : : return false; 3540 : : case 0x08ul: 3541 : : return false; 3542 : : case 0x09ul: 3543 : : return false; 3544 : : case 0x0Aul: 3545 : : return false; 3546 : : case 0x0Bul: 3547 : : return false; 3548 : : case 0x0Cul: 3549 : : return false; 3550 : : case 0x0Dul: 3551 : : return false; 3552 : : default: 3553 : : return false; 3554 : : } 3555 : : } 3556 : : #endif 3557 : : return false; 3558 : : #endif 3559 : : } 3560 : : 3561 : : /* ========= Errata 60 ========= */ 3562 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3563 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3564 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3565 : : #define NRF51_ERRATA_60_PRESENT 1 3566 : : #else 3567 : : #define NRF51_ERRATA_60_PRESENT 0 3568 : : #endif 3569 : : 3570 : : #ifndef NRF51_ERRATA_60_ENABLE_WORKAROUND 3571 : : #define NRF51_ERRATA_60_ENABLE_WORKAROUND NRF51_ERRATA_60_PRESENT 3572 : : #endif 3573 : : 3574 : 0 : static bool nrf51_errata_60(void) 3575 : : { 3576 : : #ifndef NRF51_SERIES 3577 : 0 : return false; 3578 : : #else 3579 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3580 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3581 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3582 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3583 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3584 : : #endif 3585 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3586 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3587 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3588 : : if (var1 == 0x01) 3589 : : { 3590 : : switch(var2) 3591 : : { 3592 : : case 0x00ul: 3593 : : return false; 3594 : : case 0x01ul: 3595 : : return false; 3596 : : case 0x02ul: 3597 : : return true; 3598 : : case 0x03ul: 3599 : : return false; 3600 : : case 0x04ul: 3601 : : return true; 3602 : : case 0x07ul: 3603 : : return false; 3604 : : case 0x08ul: 3605 : : return false; 3606 : : case 0x09ul: 3607 : : return false; 3608 : : case 0x0Aul: 3609 : : return false; 3610 : : case 0x0Bul: 3611 : : return false; 3612 : : case 0x0Cul: 3613 : : return false; 3614 : : case 0x0Dul: 3615 : : return false; 3616 : : default: 3617 : : return false; 3618 : : } 3619 : : } 3620 : : #endif 3621 : : return false; 3622 : : #endif 3623 : : } 3624 : : 3625 : : /* ========= Errata 61 ========= */ 3626 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3627 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3628 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3629 : : #define NRF51_ERRATA_61_PRESENT 1 3630 : : #else 3631 : : #define NRF51_ERRATA_61_PRESENT 0 3632 : : #endif 3633 : : 3634 : : #ifndef NRF51_ERRATA_61_ENABLE_WORKAROUND 3635 : : #define NRF51_ERRATA_61_ENABLE_WORKAROUND NRF51_ERRATA_61_PRESENT 3636 : : #endif 3637 : : 3638 : 0 : static bool nrf51_errata_61(void) 3639 : : { 3640 : : #ifndef NRF51_SERIES 3641 : 0 : return false; 3642 : : #else 3643 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3644 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3645 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3646 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3647 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3648 : : #endif 3649 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3650 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3651 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3652 : : if (var1 == 0x01) 3653 : : { 3654 : : switch(var2) 3655 : : { 3656 : : case 0x00ul: 3657 : : return false; 3658 : : case 0x01ul: 3659 : : return false; 3660 : : case 0x02ul: 3661 : : return true; 3662 : : case 0x03ul: 3663 : : return false; 3664 : : case 0x04ul: 3665 : : return true; 3666 : : case 0x07ul: 3667 : : return true; 3668 : : case 0x08ul: 3669 : : return true; 3670 : : case 0x09ul: 3671 : : return true; 3672 : : case 0x0Aul: 3673 : : return true; 3674 : : case 0x0Bul: 3675 : : return true; 3676 : : case 0x0Cul: 3677 : : return true; 3678 : : case 0x0Dul: 3679 : : return true; 3680 : : default: 3681 : : return true; 3682 : : } 3683 : : } 3684 : : #endif 3685 : : return false; 3686 : : #endif 3687 : : } 3688 : : 3689 : : /* ========= Errata 62 ========= */ 3690 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3691 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3692 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3693 : : #define NRF51_ERRATA_62_PRESENT 1 3694 : : #else 3695 : : #define NRF51_ERRATA_62_PRESENT 0 3696 : : #endif 3697 : : 3698 : : #ifndef NRF51_ERRATA_62_ENABLE_WORKAROUND 3699 : : #define NRF51_ERRATA_62_ENABLE_WORKAROUND NRF51_ERRATA_62_PRESENT 3700 : : #endif 3701 : : 3702 : 0 : static bool nrf51_errata_62(void) 3703 : : { 3704 : : #ifndef NRF51_SERIES 3705 : 0 : return false; 3706 : : #else 3707 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3708 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3709 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3710 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3711 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3712 : : #endif 3713 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3714 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3715 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3716 : : if (var1 == 0x01) 3717 : : { 3718 : : switch(var2) 3719 : : { 3720 : : case 0x00ul: 3721 : : return false; 3722 : : case 0x01ul: 3723 : : return false; 3724 : : case 0x02ul: 3725 : : return true; 3726 : : case 0x03ul: 3727 : : return false; 3728 : : case 0x04ul: 3729 : : return true; 3730 : : case 0x07ul: 3731 : : return false; 3732 : : case 0x08ul: 3733 : : return false; 3734 : : case 0x09ul: 3735 : : return false; 3736 : : case 0x0Aul: 3737 : : return false; 3738 : : case 0x0Bul: 3739 : : return false; 3740 : : case 0x0Cul: 3741 : : return false; 3742 : : case 0x0Dul: 3743 : : return false; 3744 : : default: 3745 : : return false; 3746 : : } 3747 : : } 3748 : : #endif 3749 : : return false; 3750 : : #endif 3751 : : } 3752 : : 3753 : : /* ========= Errata 63 ========= */ 3754 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3755 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3756 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3757 : : #define NRF51_ERRATA_63_PRESENT 1 3758 : : #else 3759 : : #define NRF51_ERRATA_63_PRESENT 0 3760 : : #endif 3761 : : 3762 : : #ifndef NRF51_ERRATA_63_ENABLE_WORKAROUND 3763 : : #define NRF51_ERRATA_63_ENABLE_WORKAROUND NRF51_ERRATA_63_PRESENT 3764 : : #endif 3765 : : 3766 : 0 : static bool nrf51_errata_63(void) 3767 : : { 3768 : : #ifndef NRF51_SERIES 3769 : 0 : return false; 3770 : : #else 3771 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3772 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3773 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3774 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3775 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3776 : : #endif 3777 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3778 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3779 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3780 : : if (var1 == 0x01) 3781 : : { 3782 : : switch(var2) 3783 : : { 3784 : : case 0x00ul: 3785 : : return true; 3786 : : case 0x01ul: 3787 : : return true; 3788 : : case 0x02ul: 3789 : : return true; 3790 : : case 0x03ul: 3791 : : return true; 3792 : : case 0x04ul: 3793 : : return true; 3794 : : case 0x07ul: 3795 : : return false; 3796 : : case 0x08ul: 3797 : : return false; 3798 : : case 0x09ul: 3799 : : return false; 3800 : : case 0x0Aul: 3801 : : return false; 3802 : : case 0x0Bul: 3803 : : return false; 3804 : : case 0x0Cul: 3805 : : return false; 3806 : : case 0x0Dul: 3807 : : return false; 3808 : : default: 3809 : : return false; 3810 : : } 3811 : : } 3812 : : #endif 3813 : : return false; 3814 : : #endif 3815 : : } 3816 : : 3817 : : /* ========= Errata 64 ========= */ 3818 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3819 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3820 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3821 : : #define NRF51_ERRATA_64_PRESENT 1 3822 : : #else 3823 : : #define NRF51_ERRATA_64_PRESENT 0 3824 : : #endif 3825 : : 3826 : : #ifndef NRF51_ERRATA_64_ENABLE_WORKAROUND 3827 : : #define NRF51_ERRATA_64_ENABLE_WORKAROUND NRF51_ERRATA_64_PRESENT 3828 : : #endif 3829 : : 3830 : 0 : static bool nrf51_errata_64(void) 3831 : : { 3832 : : #ifndef NRF51_SERIES 3833 : 0 : return false; 3834 : : #else 3835 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3836 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3837 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3838 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3839 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3840 : : #endif 3841 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3842 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3843 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3844 : : if (var1 == 0x01) 3845 : : { 3846 : : switch(var2) 3847 : : { 3848 : : case 0x00ul: 3849 : : return true; 3850 : : case 0x01ul: 3851 : : return true; 3852 : : case 0x02ul: 3853 : : return true; 3854 : : case 0x03ul: 3855 : : return true; 3856 : : case 0x04ul: 3857 : : return true; 3858 : : case 0x07ul: 3859 : : return false; 3860 : : case 0x08ul: 3861 : : return false; 3862 : : case 0x09ul: 3863 : : return false; 3864 : : case 0x0Aul: 3865 : : return false; 3866 : : case 0x0Bul: 3867 : : return false; 3868 : : case 0x0Cul: 3869 : : return false; 3870 : : case 0x0Dul: 3871 : : return false; 3872 : : default: 3873 : : return false; 3874 : : } 3875 : : } 3876 : : #endif 3877 : : return false; 3878 : : #endif 3879 : : } 3880 : : 3881 : : /* ========= Errata 65 ========= */ 3882 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3883 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3884 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3885 : : #define NRF51_ERRATA_65_PRESENT 1 3886 : : #else 3887 : : #define NRF51_ERRATA_65_PRESENT 0 3888 : : #endif 3889 : : 3890 : : #ifndef NRF51_ERRATA_65_ENABLE_WORKAROUND 3891 : : #define NRF51_ERRATA_65_ENABLE_WORKAROUND NRF51_ERRATA_65_PRESENT 3892 : : #endif 3893 : : 3894 : 0 : static bool nrf51_errata_65(void) 3895 : : { 3896 : : #ifndef NRF51_SERIES 3897 : 0 : return false; 3898 : : #else 3899 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3900 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3901 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3902 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3903 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3904 : : #endif 3905 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3906 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3907 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3908 : : if (var1 == 0x01) 3909 : : { 3910 : : switch(var2) 3911 : : { 3912 : : case 0x00ul: 3913 : : return true; 3914 : : case 0x01ul: 3915 : : return true; 3916 : : case 0x02ul: 3917 : : return true; 3918 : : case 0x03ul: 3919 : : return true; 3920 : : case 0x04ul: 3921 : : return true; 3922 : : case 0x07ul: 3923 : : return false; 3924 : : case 0x08ul: 3925 : : return false; 3926 : : case 0x09ul: 3927 : : return false; 3928 : : case 0x0Aul: 3929 : : return false; 3930 : : case 0x0Bul: 3931 : : return false; 3932 : : case 0x0Cul: 3933 : : return false; 3934 : : case 0x0Dul: 3935 : : return false; 3936 : : default: 3937 : : return false; 3938 : : } 3939 : : } 3940 : : #endif 3941 : : return false; 3942 : : #endif 3943 : : } 3944 : : 3945 : : /* ========= Errata 66 ========= */ 3946 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 3947 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 3948 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3949 : : #define NRF51_ERRATA_66_PRESENT 1 3950 : : #else 3951 : : #define NRF51_ERRATA_66_PRESENT 0 3952 : : #endif 3953 : : 3954 : : #ifndef NRF51_ERRATA_66_ENABLE_WORKAROUND 3955 : : #define NRF51_ERRATA_66_ENABLE_WORKAROUND NRF51_ERRATA_66_PRESENT 3956 : : #endif 3957 : : 3958 : 0 : static bool nrf51_errata_66(void) 3959 : : { 3960 : : #ifndef NRF51_SERIES 3961 : 0 : return false; 3962 : : #else 3963 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3964 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3965 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3966 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 3967 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 3968 : : #endif 3969 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 3970 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 3971 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 3972 : : if (var1 == 0x01) 3973 : : { 3974 : : switch(var2) 3975 : : { 3976 : : case 0x00ul: 3977 : : return false; 3978 : : case 0x01ul: 3979 : : return false; 3980 : : case 0x02ul: 3981 : : return true; 3982 : : case 0x03ul: 3983 : : return false; 3984 : : case 0x04ul: 3985 : : return true; 3986 : : case 0x07ul: 3987 : : return true; 3988 : : case 0x08ul: 3989 : : return true; 3990 : : case 0x09ul: 3991 : : return true; 3992 : : case 0x0Aul: 3993 : : return false; 3994 : : case 0x0Bul: 3995 : : return true; 3996 : : case 0x0Cul: 3997 : : return true; 3998 : : case 0x0Dul: 3999 : : return false; 4000 : : default: 4001 : : return false; 4002 : : } 4003 : : } 4004 : : #endif 4005 : : return false; 4006 : : #endif 4007 : : } 4008 : : 4009 : : /* ========= Errata 67 ========= */ 4010 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4011 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4012 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4013 : : #define NRF51_ERRATA_67_PRESENT 1 4014 : : #else 4015 : : #define NRF51_ERRATA_67_PRESENT 0 4016 : : #endif 4017 : : 4018 : : #ifndef NRF51_ERRATA_67_ENABLE_WORKAROUND 4019 : : #define NRF51_ERRATA_67_ENABLE_WORKAROUND NRF51_ERRATA_67_PRESENT 4020 : : #endif 4021 : : 4022 : 0 : static bool nrf51_errata_67(void) 4023 : : { 4024 : : #ifndef NRF51_SERIES 4025 : 0 : return false; 4026 : : #else 4027 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4028 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4029 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4030 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4031 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4032 : : #endif 4033 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4034 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4035 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4036 : : if (var1 == 0x01) 4037 : : { 4038 : : switch(var2) 4039 : : { 4040 : : case 0x00ul: 4041 : : return false; 4042 : : case 0x01ul: 4043 : : return false; 4044 : : case 0x02ul: 4045 : : return true; 4046 : : case 0x03ul: 4047 : : return false; 4048 : : case 0x04ul: 4049 : : return true; 4050 : : case 0x07ul: 4051 : : return true; 4052 : : case 0x08ul: 4053 : : return true; 4054 : : case 0x09ul: 4055 : : return true; 4056 : : case 0x0Aul: 4057 : : return true; 4058 : : case 0x0Bul: 4059 : : return true; 4060 : : case 0x0Cul: 4061 : : return true; 4062 : : case 0x0Dul: 4063 : : return true; 4064 : : default: 4065 : : return true; 4066 : : } 4067 : : } 4068 : : #endif 4069 : : return false; 4070 : : #endif 4071 : : } 4072 : : 4073 : : /* ========= Errata 68 ========= */ 4074 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4075 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4076 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4077 : : #define NRF51_ERRATA_68_PRESENT 1 4078 : : #else 4079 : : #define NRF51_ERRATA_68_PRESENT 0 4080 : : #endif 4081 : : 4082 : : #ifndef NRF51_ERRATA_68_ENABLE_WORKAROUND 4083 : : #define NRF51_ERRATA_68_ENABLE_WORKAROUND NRF51_ERRATA_68_PRESENT 4084 : : #endif 4085 : : 4086 : 0 : static bool nrf51_errata_68(void) 4087 : : { 4088 : : #ifndef NRF51_SERIES 4089 : 0 : return false; 4090 : : #else 4091 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4092 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4093 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4094 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4095 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4096 : : #endif 4097 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4098 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4099 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4100 : : if (var1 == 0x01) 4101 : : { 4102 : : switch(var2) 4103 : : { 4104 : : case 0x00ul: 4105 : : return false; 4106 : : case 0x01ul: 4107 : : return false; 4108 : : case 0x02ul: 4109 : : return true; 4110 : : case 0x03ul: 4111 : : return false; 4112 : : case 0x04ul: 4113 : : return true; 4114 : : case 0x07ul: 4115 : : return false; 4116 : : case 0x08ul: 4117 : : return false; 4118 : : case 0x09ul: 4119 : : return false; 4120 : : case 0x0Aul: 4121 : : return false; 4122 : : case 0x0Bul: 4123 : : return false; 4124 : : case 0x0Cul: 4125 : : return false; 4126 : : case 0x0Dul: 4127 : : return false; 4128 : : default: 4129 : : return false; 4130 : : } 4131 : : } 4132 : : #endif 4133 : : return false; 4134 : : #endif 4135 : : } 4136 : : 4137 : : /* ========= Errata 69 ========= */ 4138 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4139 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4140 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4141 : : #define NRF51_ERRATA_69_PRESENT 1 4142 : : #else 4143 : : #define NRF51_ERRATA_69_PRESENT 0 4144 : : #endif 4145 : : 4146 : : #ifndef NRF51_ERRATA_69_ENABLE_WORKAROUND 4147 : : #define NRF51_ERRATA_69_ENABLE_WORKAROUND NRF51_ERRATA_69_PRESENT 4148 : : #endif 4149 : : 4150 : 0 : static bool nrf51_errata_69(void) 4151 : : { 4152 : : #ifndef NRF51_SERIES 4153 : 0 : return false; 4154 : : #else 4155 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4156 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4157 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4158 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4159 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4160 : : #endif 4161 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4162 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4163 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4164 : : if (var1 == 0x01) 4165 : : { 4166 : : switch(var2) 4167 : : { 4168 : : case 0x00ul: 4169 : : return false; 4170 : : case 0x01ul: 4171 : : return false; 4172 : : case 0x02ul: 4173 : : return false; 4174 : : case 0x03ul: 4175 : : return false; 4176 : : case 0x04ul: 4177 : : return false; 4178 : : case 0x07ul: 4179 : : return true; 4180 : : case 0x08ul: 4181 : : return true; 4182 : : case 0x09ul: 4183 : : return false; 4184 : : case 0x0Aul: 4185 : : return false; 4186 : : case 0x0Bul: 4187 : : return true; 4188 : : case 0x0Cul: 4189 : : return true; 4190 : : case 0x0Dul: 4191 : : return false; 4192 : : default: 4193 : : return false; 4194 : : } 4195 : : } 4196 : : #endif 4197 : : return false; 4198 : : #endif 4199 : : } 4200 : : 4201 : : /* ========= Errata 70 ========= */ 4202 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4203 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4204 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4205 : : #define NRF51_ERRATA_70_PRESENT 1 4206 : : #else 4207 : : #define NRF51_ERRATA_70_PRESENT 0 4208 : : #endif 4209 : : 4210 : : #ifndef NRF51_ERRATA_70_ENABLE_WORKAROUND 4211 : : #define NRF51_ERRATA_70_ENABLE_WORKAROUND NRF51_ERRATA_70_PRESENT 4212 : : #endif 4213 : : 4214 : 0 : static bool nrf51_errata_70(void) 4215 : : { 4216 : : #ifndef NRF51_SERIES 4217 : 0 : return false; 4218 : : #else 4219 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4220 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4221 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4222 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4223 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4224 : : #endif 4225 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4226 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4227 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4228 : : if (var1 == 0x01) 4229 : : { 4230 : : switch(var2) 4231 : : { 4232 : : case 0x00ul: 4233 : : return false; 4234 : : case 0x01ul: 4235 : : return false; 4236 : : case 0x02ul: 4237 : : return true; 4238 : : case 0x03ul: 4239 : : return false; 4240 : : case 0x04ul: 4241 : : return true; 4242 : : case 0x07ul: 4243 : : return true; 4244 : : case 0x08ul: 4245 : : return true; 4246 : : case 0x09ul: 4247 : : return true; 4248 : : case 0x0Aul: 4249 : : return true; 4250 : : case 0x0Bul: 4251 : : return true; 4252 : : case 0x0Cul: 4253 : : return true; 4254 : : case 0x0Dul: 4255 : : return true; 4256 : : default: 4257 : : return true; 4258 : : } 4259 : : } 4260 : : #endif 4261 : : return false; 4262 : : #endif 4263 : : } 4264 : : 4265 : : /* ========= Errata 71 ========= */ 4266 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4267 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4268 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4269 : : #define NRF51_ERRATA_71_PRESENT 1 4270 : : #else 4271 : : #define NRF51_ERRATA_71_PRESENT 0 4272 : : #endif 4273 : : 4274 : : #ifndef NRF51_ERRATA_71_ENABLE_WORKAROUND 4275 : : #define NRF51_ERRATA_71_ENABLE_WORKAROUND NRF51_ERRATA_71_PRESENT 4276 : : #endif 4277 : : 4278 : 0 : static bool nrf51_errata_71(void) 4279 : : { 4280 : : #ifndef NRF51_SERIES 4281 : 0 : return false; 4282 : : #else 4283 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4284 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4285 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4286 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4287 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4288 : : #endif 4289 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4290 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4291 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4292 : : if (var1 == 0x01) 4293 : : { 4294 : : switch(var2) 4295 : : { 4296 : : case 0x00ul: 4297 : : return false; 4298 : : case 0x01ul: 4299 : : return false; 4300 : : case 0x02ul: 4301 : : return false; 4302 : : case 0x03ul: 4303 : : return false; 4304 : : case 0x04ul: 4305 : : return false; 4306 : : case 0x07ul: 4307 : : return true; 4308 : : case 0x08ul: 4309 : : return true; 4310 : : case 0x09ul: 4311 : : return false; 4312 : : case 0x0Aul: 4313 : : return false; 4314 : : case 0x0Bul: 4315 : : return true; 4316 : : case 0x0Cul: 4317 : : return true; 4318 : : case 0x0Dul: 4319 : : return false; 4320 : : default: 4321 : : return false; 4322 : : } 4323 : : } 4324 : : #endif 4325 : : return false; 4326 : : #endif 4327 : : } 4328 : : 4329 : : /* ========= Errata 72 ========= */ 4330 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4331 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4332 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4333 : : #define NRF51_ERRATA_72_PRESENT 1 4334 : : #else 4335 : : #define NRF51_ERRATA_72_PRESENT 0 4336 : : #endif 4337 : : 4338 : : #ifndef NRF51_ERRATA_72_ENABLE_WORKAROUND 4339 : : #define NRF51_ERRATA_72_ENABLE_WORKAROUND NRF51_ERRATA_72_PRESENT 4340 : : #endif 4341 : : 4342 : 0 : static bool nrf51_errata_72(void) 4343 : : { 4344 : : #ifndef NRF51_SERIES 4345 : 0 : return false; 4346 : : #else 4347 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4348 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4349 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4350 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4351 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4352 : : #endif 4353 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4354 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4355 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4356 : : if (var1 == 0x01) 4357 : : { 4358 : : switch(var2) 4359 : : { 4360 : : case 0x00ul: 4361 : : return true; 4362 : : case 0x01ul: 4363 : : return true; 4364 : : case 0x02ul: 4365 : : return true; 4366 : : case 0x03ul: 4367 : : return true; 4368 : : case 0x04ul: 4369 : : return true; 4370 : : case 0x07ul: 4371 : : return true; 4372 : : case 0x08ul: 4373 : : return true; 4374 : : case 0x09ul: 4375 : : return true; 4376 : : case 0x0Aul: 4377 : : return true; 4378 : : case 0x0Bul: 4379 : : return true; 4380 : : case 0x0Cul: 4381 : : return true; 4382 : : case 0x0Dul: 4383 : : return true; 4384 : : default: 4385 : : return true; 4386 : : } 4387 : : } 4388 : : #endif 4389 : : return false; 4390 : : #endif 4391 : : } 4392 : : 4393 : : /* ========= Errata 73 ========= */ 4394 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4395 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4396 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4397 : : #define NRF51_ERRATA_73_PRESENT 1 4398 : : #else 4399 : : #define NRF51_ERRATA_73_PRESENT 0 4400 : : #endif 4401 : : 4402 : : #ifndef NRF51_ERRATA_73_ENABLE_WORKAROUND 4403 : : #define NRF51_ERRATA_73_ENABLE_WORKAROUND NRF51_ERRATA_73_PRESENT 4404 : : #endif 4405 : : 4406 : 0 : static bool nrf51_errata_73(void) 4407 : : { 4408 : : #ifndef NRF51_SERIES 4409 : 0 : return false; 4410 : : #else 4411 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4412 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4413 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4414 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4415 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4416 : : #endif 4417 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4418 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4419 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4420 : : if (var1 == 0x01) 4421 : : { 4422 : : switch(var2) 4423 : : { 4424 : : case 0x00ul: 4425 : : return false; 4426 : : case 0x01ul: 4427 : : return false; 4428 : : case 0x02ul: 4429 : : return false; 4430 : : case 0x03ul: 4431 : : return false; 4432 : : case 0x04ul: 4433 : : return false; 4434 : : case 0x07ul: 4435 : : return true; 4436 : : case 0x08ul: 4437 : : return true; 4438 : : case 0x09ul: 4439 : : return true; 4440 : : case 0x0Aul: 4441 : : return false; 4442 : : case 0x0Bul: 4443 : : return true; 4444 : : case 0x0Cul: 4445 : : return true; 4446 : : case 0x0Dul: 4447 : : return false; 4448 : : default: 4449 : : return false; 4450 : : } 4451 : : } 4452 : : #endif 4453 : : return false; 4454 : : #endif 4455 : : } 4456 : : 4457 : : /* ========= Errata 74 ========= */ 4458 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4459 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4460 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4461 : : #define NRF51_ERRATA_74_PRESENT 1 4462 : : #else 4463 : : #define NRF51_ERRATA_74_PRESENT 0 4464 : : #endif 4465 : : 4466 : : #ifndef NRF51_ERRATA_74_ENABLE_WORKAROUND 4467 : : #define NRF51_ERRATA_74_ENABLE_WORKAROUND NRF51_ERRATA_74_PRESENT 4468 : : #endif 4469 : : 4470 : 0 : static bool nrf51_errata_74(void) 4471 : : { 4472 : : #ifndef NRF51_SERIES 4473 : 0 : return false; 4474 : : #else 4475 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4476 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4477 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4478 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4479 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4480 : : #endif 4481 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4482 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4483 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4484 : : if (var1 == 0x01) 4485 : : { 4486 : : switch(var2) 4487 : : { 4488 : : case 0x00ul: 4489 : : return false; 4490 : : case 0x01ul: 4491 : : return false; 4492 : : case 0x02ul: 4493 : : return true; 4494 : : case 0x03ul: 4495 : : return false; 4496 : : case 0x04ul: 4497 : : return true; 4498 : : case 0x07ul: 4499 : : return true; 4500 : : case 0x08ul: 4501 : : return true; 4502 : : case 0x09ul: 4503 : : return true; 4504 : : case 0x0Aul: 4505 : : return false; 4506 : : case 0x0Bul: 4507 : : return true; 4508 : : case 0x0Cul: 4509 : : return true; 4510 : : case 0x0Dul: 4511 : : return false; 4512 : : default: 4513 : : return false; 4514 : : } 4515 : : } 4516 : : #endif 4517 : : return false; 4518 : : #endif 4519 : : } 4520 : : 4521 : : /* ========= Errata 75 ========= */ 4522 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4523 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4524 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4525 : : #define NRF51_ERRATA_75_PRESENT 1 4526 : : #else 4527 : : #define NRF51_ERRATA_75_PRESENT 0 4528 : : #endif 4529 : : 4530 : : #ifndef NRF51_ERRATA_75_ENABLE_WORKAROUND 4531 : : #define NRF51_ERRATA_75_ENABLE_WORKAROUND NRF51_ERRATA_75_PRESENT 4532 : : #endif 4533 : : 4534 : 0 : static bool nrf51_errata_75(void) 4535 : : { 4536 : : #ifndef NRF51_SERIES 4537 : 0 : return false; 4538 : : #else 4539 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4540 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4541 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4542 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4543 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4544 : : #endif 4545 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4546 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4547 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4548 : : if (var1 == 0x01) 4549 : : { 4550 : : switch(var2) 4551 : : { 4552 : : case 0x00ul: 4553 : : return false; 4554 : : case 0x01ul: 4555 : : return false; 4556 : : case 0x02ul: 4557 : : return true; 4558 : : case 0x03ul: 4559 : : return false; 4560 : : case 0x04ul: 4561 : : return true; 4562 : : case 0x07ul: 4563 : : return true; 4564 : : case 0x08ul: 4565 : : return true; 4566 : : case 0x09ul: 4567 : : return true; 4568 : : case 0x0Aul: 4569 : : return true; 4570 : : case 0x0Bul: 4571 : : return true; 4572 : : case 0x0Cul: 4573 : : return true; 4574 : : case 0x0Dul: 4575 : : return true; 4576 : : default: 4577 : : return true; 4578 : : } 4579 : : } 4580 : : #endif 4581 : : return false; 4582 : : #endif 4583 : : } 4584 : : 4585 : : /* ========= Errata 76 ========= */ 4586 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4587 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4588 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4589 : : #define NRF51_ERRATA_76_PRESENT 1 4590 : : #else 4591 : : #define NRF51_ERRATA_76_PRESENT 0 4592 : : #endif 4593 : : 4594 : : #ifndef NRF51_ERRATA_76_ENABLE_WORKAROUND 4595 : : #define NRF51_ERRATA_76_ENABLE_WORKAROUND NRF51_ERRATA_76_PRESENT 4596 : : #endif 4597 : : 4598 : 0 : static bool nrf51_errata_76(void) 4599 : : { 4600 : : #ifndef NRF51_SERIES 4601 : 0 : return false; 4602 : : #else 4603 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4604 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4605 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4606 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4607 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4608 : : #endif 4609 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4610 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4611 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4612 : : if (var1 == 0x01) 4613 : : { 4614 : : switch(var2) 4615 : : { 4616 : : case 0x00ul: 4617 : : return false; 4618 : : case 0x01ul: 4619 : : return false; 4620 : : case 0x02ul: 4621 : : return false; 4622 : : case 0x03ul: 4623 : : return false; 4624 : : case 0x04ul: 4625 : : return false; 4626 : : case 0x07ul: 4627 : : return false; 4628 : : case 0x08ul: 4629 : : return false; 4630 : : case 0x09ul: 4631 : : return false; 4632 : : case 0x0Aul: 4633 : : return true; 4634 : : case 0x0Bul: 4635 : : return false; 4636 : : case 0x0Cul: 4637 : : return false; 4638 : : case 0x0Dul: 4639 : : return true; 4640 : : default: 4641 : : return true; 4642 : : } 4643 : : } 4644 : : #endif 4645 : : return false; 4646 : : #endif 4647 : : } 4648 : : 4649 : : /* ========= Errata 77 ========= */ 4650 : : #define NRF51_ERRATA_77_PRESENT 0 4651 : : 4652 : : #ifndef NRF51_ERRATA_77_ENABLE_WORKAROUND 4653 : : #define NRF51_ERRATA_77_ENABLE_WORKAROUND NRF51_ERRATA_77_PRESENT 4654 : : #endif 4655 : : 4656 : 0 : static bool nrf51_errata_77(void) 4657 : : { 4658 : : #ifndef NRF51_SERIES 4659 : 0 : return false; 4660 : : #else 4661 : : return false; 4662 : : #endif 4663 : : } 4664 : : 4665 : : /* ========= Errata 78 ========= */ 4666 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422) \ 4667 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422) \ 4668 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4669 : : #define NRF51_ERRATA_78_PRESENT 1 4670 : : #else 4671 : : #define NRF51_ERRATA_78_PRESENT 0 4672 : : #endif 4673 : : 4674 : : #ifndef NRF51_ERRATA_78_ENABLE_WORKAROUND 4675 : : #define NRF51_ERRATA_78_ENABLE_WORKAROUND NRF51_ERRATA_78_PRESENT 4676 : : #endif 4677 : : 4678 : 0 : static bool nrf51_errata_78(void) 4679 : : { 4680 : : #ifndef NRF51_SERIES 4681 : 0 : return false; 4682 : : #else 4683 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4684 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4685 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4686 : : uint32_t var1 = ((*(uint32_t *)0xF0000FE0ul) & 0x000000FFul); 4687 : : uint32_t var2 = ((*(uint32_t *)0xF0000FE8ul) & 0x000000F0ul) >> 4; 4688 : : #endif 4689 : : #if defined (NRF51422_XXAA) || defined (DEVELOP_IN_NRF51422)\ 4690 : : || defined (NRF51422_XXAB) || defined (DEVELOP_IN_NRF51422)\ 4691 : : || defined (NRF51422_XXAC) || defined (DEVELOP_IN_NRF51422) 4692 : : if (var1 == 0x01) 4693 : : { 4694 : : switch(var2) 4695 : : { 4696 : : case 0x00ul: 4697 : : return false; 4698 : : case 0x01ul: 4699 : : return false; 4700 : : case 0x02ul: 4701 : : return true; 4702 : : case 0x03ul: 4703 : : return false; 4704 : : case 0x04ul: 4705 : : return true; 4706 : : case 0x07ul: 4707 : : return true; 4708 : : case 0x08ul: 4709 : : return true; 4710 : : case 0x09ul: 4711 : : return true; 4712 : : case 0x0Aul: 4713 : : return false; 4714 : : case 0x0Bul: 4715 : : return true; 4716 : : case 0x0Cul: 4717 : : return true; 4718 : : case 0x0Dul: 4719 : : return false; 4720 : : default: 4721 : : return false; 4722 : : } 4723 : : } 4724 : : #endif 4725 : : return false; 4726 : : #endif 4727 : : } 4728 : : 4729 : : #endif /* NRF51_ERRATAS_H */