1 #ifndef NRF91_ERRATAS_H
2 #define NRF91_ERRATAS_H
3
4 /*
5
6 Copyright (c) 2010 - 2020, Nordic Semiconductor ASA All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
11 1. Redistributions of source code must retain the above copyright notice, this
12 list of conditions and the following disclaimer.
13
14 2. Redistributions in binary form must reproduce the above copyright
15 notice, this list of conditions and the following disclaimer in the
16 documentation and/or other materials provided with the distribution.
17
18 3. Neither the name of Nordic Semiconductor ASA nor the names of its
19 contributors may be used to endorse or promote products derived from this
20 software without specific prior written permission.
21
22 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE
25 ARE DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
26 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 POSSIBILITY OF SUCH DAMAGE.
33
34 */
35
36 #include <stdint.h>
37 #include <stdbool.h>
38 #include "compiler_abstraction.h"
39
40 static bool nrf91_errata_1(void) __UNUSED;
41 static bool nrf91_errata_2(void) __UNUSED;
42 static bool nrf91_errata_4(void) __UNUSED;
43 static bool nrf91_errata_6(void) __UNUSED;
44 static bool nrf91_errata_7(void) __UNUSED;
45 static bool nrf91_errata_8(void) __UNUSED;
46 static bool nrf91_errata_9(void) __UNUSED;
47 static bool nrf91_errata_10(void) __UNUSED;
48 static bool nrf91_errata_12(void) __UNUSED;
49 static bool nrf91_errata_14(void) __UNUSED;
50 static bool nrf91_errata_15(void) __UNUSED;
51 static bool nrf91_errata_16(void) __UNUSED;
52 static bool nrf91_errata_17(void) __UNUSED;
53 static bool nrf91_errata_20(void) __UNUSED;
54 static bool nrf91_errata_21(void) __UNUSED;
55 static bool nrf91_errata_23(void) __UNUSED;
56 static bool nrf91_errata_24(void) __UNUSED;
57 static bool nrf91_errata_26(void) __UNUSED;
58 static bool nrf91_errata_27(void) __UNUSED;
59 static bool nrf91_errata_28(void) __UNUSED;
60 static bool nrf91_errata_29(void) __UNUSED;
61 static bool nrf91_errata_30(void) __UNUSED;
62 static bool nrf91_errata_31(void) __UNUSED;
63 static bool nrf91_errata_32(void) __UNUSED;
64 static bool nrf91_errata_33(void) __UNUSED;
65
nrf91_errata_1(void)66 static bool nrf91_errata_1(void)
67 {
68 #ifndef NRF91_SERIES
69 return false;
70 #else
71 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
72 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
73 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
74 #endif
75 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
76 if (var1 == 0x09)
77 {
78 switch(var2)
79 {
80 case 0x01ul:
81 return true;
82 case 0x02ul:
83 return true;
84 default:
85 return true;
86 }
87 }
88 #endif
89 return false;
90 #endif
91 }
92
nrf91_errata_2(void)93 static bool nrf91_errata_2(void)
94 {
95 #ifndef NRF91_SERIES
96 return false;
97 #else
98 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
99 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
100 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
101 #endif
102 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
103 if (var1 == 0x09)
104 {
105 switch(var2)
106 {
107 case 0x01ul:
108 return true;
109 case 0x02ul:
110 return true;
111 default:
112 return true;
113 }
114 }
115 #endif
116 return false;
117 #endif
118 }
119
nrf91_errata_4(void)120 static bool nrf91_errata_4(void)
121 {
122 #ifndef NRF91_SERIES
123 return false;
124 #else
125 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
126 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
127 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
128 #endif
129 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
130 if (var1 == 0x09)
131 {
132 switch(var2)
133 {
134 case 0x01ul:
135 return true;
136 case 0x02ul:
137 return true;
138 default:
139 return true;
140 }
141 }
142 #endif
143 return false;
144 #endif
145 }
146
nrf91_errata_6(void)147 static bool nrf91_errata_6(void)
148 {
149 #ifndef NRF91_SERIES
150 return false;
151 #else
152 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
153 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
154 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
155 #endif
156 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
157 if (var1 == 0x09)
158 {
159 switch(var2)
160 {
161 case 0x01ul:
162 return true;
163 case 0x02ul:
164 return true;
165 default:
166 return true;
167 }
168 }
169 #endif
170 return false;
171 #endif
172 }
173
nrf91_errata_7(void)174 static bool nrf91_errata_7(void)
175 {
176 #ifndef NRF91_SERIES
177 return false;
178 #else
179 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
180 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
181 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
182 #endif
183 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
184 if (var1 == 0x09)
185 {
186 switch(var2)
187 {
188 case 0x01ul:
189 return true;
190 case 0x02ul:
191 return true;
192 default:
193 return true;
194 }
195 }
196 #endif
197 return false;
198 #endif
199 }
200
nrf91_errata_8(void)201 static bool nrf91_errata_8(void)
202 {
203 #ifndef NRF91_SERIES
204 return false;
205 #else
206 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
207 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
208 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
209 #endif
210 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
211 if (var1 == 0x09)
212 {
213 switch(var2)
214 {
215 case 0x01ul:
216 return true;
217 case 0x02ul:
218 return false;
219 default:
220 return false;
221 }
222 }
223 #endif
224 return false;
225 #endif
226 }
227
nrf91_errata_9(void)228 static bool nrf91_errata_9(void)
229 {
230 #ifndef NRF91_SERIES
231 return false;
232 #else
233 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
234 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
235 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
236 #endif
237 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
238 if (var1 == 0x09)
239 {
240 switch(var2)
241 {
242 case 0x01ul:
243 return false;
244 case 0x02ul:
245 return true;
246 default:
247 return true;
248 }
249 }
250 #endif
251 return false;
252 #endif
253 }
254
nrf91_errata_10(void)255 static bool nrf91_errata_10(void)
256 {
257 #ifndef NRF91_SERIES
258 return false;
259 #else
260 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
261 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
262 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
263 #endif
264 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
265 if (var1 == 0x09)
266 {
267 switch(var2)
268 {
269 case 0x01ul:
270 return true;
271 case 0x02ul:
272 return false;
273 default:
274 return false;
275 }
276 }
277 #endif
278 return false;
279 #endif
280 }
281
nrf91_errata_12(void)282 static bool nrf91_errata_12(void)
283 {
284 #ifndef NRF91_SERIES
285 return false;
286 #else
287 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
288 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
289 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
290 #endif
291 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
292 if (var1 == 0x09)
293 {
294 switch(var2)
295 {
296 case 0x01ul:
297 return true;
298 case 0x02ul:
299 return false;
300 default:
301 return false;
302 }
303 }
304 #endif
305 return false;
306 #endif
307 }
308
nrf91_errata_14(void)309 static bool nrf91_errata_14(void)
310 {
311 #ifndef NRF91_SERIES
312 return false;
313 #else
314 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
315 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
316 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
317 #endif
318 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
319 if (var1 == 0x09)
320 {
321 switch(var2)
322 {
323 case 0x01ul:
324 return true;
325 case 0x02ul:
326 return false;
327 default:
328 return false;
329 }
330 }
331 #endif
332 return false;
333 #endif
334 }
335
nrf91_errata_15(void)336 static bool nrf91_errata_15(void)
337 {
338 #ifndef NRF91_SERIES
339 return false;
340 #else
341 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
342 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
343 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
344 #endif
345 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
346 if (var1 == 0x09)
347 {
348 switch(var2)
349 {
350 case 0x01ul:
351 return false;
352 case 0x02ul:
353 return true;
354 default:
355 return true;
356 }
357 }
358 #endif
359 return false;
360 #endif
361 }
362
nrf91_errata_16(void)363 static bool nrf91_errata_16(void)
364 {
365 #ifndef NRF91_SERIES
366 return false;
367 #else
368 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
369 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
370 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
371 #endif
372 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
373 if (var1 == 0x09)
374 {
375 switch(var2)
376 {
377 case 0x01ul:
378 return true;
379 case 0x02ul:
380 return false;
381 default:
382 return false;
383 }
384 }
385 #endif
386 return false;
387 #endif
388 }
389
nrf91_errata_17(void)390 static bool nrf91_errata_17(void)
391 {
392 #ifndef NRF91_SERIES
393 return false;
394 #else
395 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
396 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
397 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
398 #endif
399 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
400 if (var1 == 0x09)
401 {
402 switch(var2)
403 {
404 case 0x01ul:
405 return true;
406 case 0x02ul:
407 return false;
408 default:
409 return false;
410 }
411 }
412 #endif
413 return false;
414 #endif
415 }
416
nrf91_errata_20(void)417 static bool nrf91_errata_20(void)
418 {
419 #ifndef NRF91_SERIES
420 return false;
421 #else
422 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
423 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
424 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
425 #endif
426 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
427 if (var1 == 0x09)
428 {
429 switch(var2)
430 {
431 case 0x01ul:
432 return true;
433 case 0x02ul:
434 return false;
435 default:
436 return false;
437 }
438 }
439 #endif
440 return false;
441 #endif
442 }
443
nrf91_errata_21(void)444 static bool nrf91_errata_21(void)
445 {
446 #ifndef NRF91_SERIES
447 return false;
448 #else
449 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
450 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
451 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
452 #endif
453 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
454 if (var1 == 0x09)
455 {
456 switch(var2)
457 {
458 case 0x01ul:
459 return true;
460 case 0x02ul:
461 return true;
462 default:
463 return true;
464 }
465 }
466 #endif
467 return false;
468 #endif
469 }
470
nrf91_errata_23(void)471 static bool nrf91_errata_23(void)
472 {
473 #ifndef NRF91_SERIES
474 return false;
475 #else
476 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
477 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
478 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
479 #endif
480 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
481 if (var1 == 0x09)
482 {
483 switch(var2)
484 {
485 case 0x01ul:
486 return true;
487 case 0x02ul:
488 return true;
489 default:
490 return true;
491 }
492 }
493 #endif
494 return false;
495 #endif
496 }
497
nrf91_errata_24(void)498 static bool nrf91_errata_24(void)
499 {
500 #ifndef NRF91_SERIES
501 return false;
502 #else
503 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
504 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
505 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
506 #endif
507 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
508 if (var1 == 0x09)
509 {
510 switch(var2)
511 {
512 case 0x01ul:
513 return true;
514 case 0x02ul:
515 return true;
516 default:
517 return true;
518 }
519 }
520 #endif
521 return false;
522 #endif
523 }
524
nrf91_errata_26(void)525 static bool nrf91_errata_26(void)
526 {
527 #ifndef NRF91_SERIES
528 return false;
529 #else
530 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
531 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
532 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
533 #endif
534 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
535 if (var1 == 0x09)
536 {
537 switch(var2)
538 {
539 case 0x01ul:
540 return true;
541 case 0x02ul:
542 return true;
543 default:
544 return true;
545 }
546 }
547 #endif
548 return false;
549 #endif
550 }
551
nrf91_errata_27(void)552 static bool nrf91_errata_27(void)
553 {
554 #ifndef NRF91_SERIES
555 return false;
556 #else
557 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
558 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
559 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
560 #endif
561 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
562 if (var1 == 0x09)
563 {
564 switch(var2)
565 {
566 case 0x01ul:
567 return false;
568 case 0x02ul:
569 return true;
570 default:
571 return true;
572 }
573 }
574 #endif
575 return false;
576 #endif
577 }
578
nrf91_errata_28(void)579 static bool nrf91_errata_28(void)
580 {
581 #ifndef NRF91_SERIES
582 return false;
583 #else
584 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
585 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
586 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
587 #endif
588 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
589 if (var1 == 0x09)
590 {
591 switch(var2)
592 {
593 case 0x01ul:
594 return true;
595 case 0x02ul:
596 return true;
597 default:
598 return true;
599 }
600 }
601 #endif
602 return false;
603 #endif
604 }
605
nrf91_errata_29(void)606 static bool nrf91_errata_29(void)
607 {
608 #ifndef NRF91_SERIES
609 return false;
610 #else
611 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
612 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
613 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
614 #endif
615 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
616 if (var1 == 0x09)
617 {
618 switch(var2)
619 {
620 case 0x01ul:
621 return true;
622 case 0x02ul:
623 return true;
624 default:
625 return true;
626 }
627 }
628 #endif
629 return false;
630 #endif
631 }
632
nrf91_errata_30(void)633 static bool nrf91_errata_30(void)
634 {
635 #ifndef NRF91_SERIES
636 return false;
637 #else
638 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
639 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
640 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
641 #endif
642 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
643 if (var1 == 0x09)
644 {
645 switch(var2)
646 {
647 case 0x01ul:
648 return true;
649 case 0x02ul:
650 return true;
651 default:
652 return true;
653 }
654 }
655 #endif
656 return false;
657 #endif
658 }
659
nrf91_errata_31(void)660 static bool nrf91_errata_31(void)
661 {
662 #ifndef NRF91_SERIES
663 return false;
664 #else
665 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
666 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
667 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
668 #endif
669 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
670 if (var1 == 0x09)
671 {
672 switch(var2)
673 {
674 case 0x01ul:
675 return true;
676 case 0x02ul:
677 return true;
678 default:
679 return true;
680 }
681 }
682 #endif
683 return false;
684 #endif
685 }
686
nrf91_errata_32(void)687 static bool nrf91_errata_32(void)
688 {
689 #ifndef NRF91_SERIES
690 return false;
691 #else
692 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
693 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
694 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
695 #endif
696 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
697 if (var1 == 0x09)
698 {
699 switch(var2)
700 {
701 case 0x01ul:
702 return true;
703 case 0x02ul:
704 return true;
705 default:
706 return true;
707 }
708 }
709 #endif
710 return false;
711 #endif
712 }
713
nrf91_errata_33(void)714 static bool nrf91_errata_33(void)
715 {
716 #ifndef NRF91_SERIES
717 return false;
718 #else
719 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
720 uint32_t var1 = *(uint32_t *)0x00FF0130ul;
721 uint32_t var2 = *(uint32_t *)0x00FF0134ul;
722 #endif
723 #if defined (NRF9160_XXAA) || defined (DEVELOP_IN_NRF9160)
724 if (var1 == 0x09)
725 {
726 switch(var2)
727 {
728 case 0x01ul:
729 return true;
730 case 0x02ul:
731 return true;
732 default:
733 return true;
734 }
735 }
736 #endif
737 return false;
738 #endif
739 }
740
741 #endif /* NRF91_ERRATAS_H */
742