interrupt_descriptor_table.c 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. // http://www.apache.org/licenses/LICENSE-2.0
  7. //
  8. // Unless required by applicable law or agreed to in writing, software
  9. // distributed under the License is distributed on an "AS IS" BASIS,
  10. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. // See the License for the specific language governing permissions and
  12. // limitations under the License.
  13. #include "sdkconfig.h"
  14. #include "hal/interrupt_controller_hal.h"
  15. #include "soc/soc_caps.h"
  16. #include "soc/soc.h"
  17. // TODO ESP32-C3 IDF-2126 check this table is correct, some interrupts may be unnecessarily reserved or not reserved
  18. // or marked as the wrong type
  19. //This is basically a software-readable version of the interrupt usage table in include/soc/soc.h
  20. const int_desc_t interrupt_descriptor_table[32] = {
  21. { 1, INTTP_LEVEL, {INTDESC_RESVD } }, //0
  22. { 1, INTTP_LEVEL, {INTDESC_SPECIAL } }, //1
  23. { 1, INTTP_LEVEL, {INTDESC_NORMAL } }, //2
  24. { 1, INTTP_LEVEL, {INTDESC_NORMAL } }, //3
  25. { 1, INTTP_LEVEL, {INTDESC_NORMAL } }, //4
  26. { 1, INTTP_LEVEL, {INTDESC_SPECIAL } }, //5
  27. { 1, INTTP_NA, {INTDESC_NORMAL } }, //6
  28. { 1, INTTP_NA, {INTDESC_NORMAL } }, //7
  29. { 1, INTTP_LEVEL, {INTDESC_SPECIAL } }, //8
  30. { 1, INTTP_LEVEL, {INTDESC_SPECIAL } }, //9
  31. { 1, INTTP_EDGE, {INTDESC_NORMAL } }, //10
  32. { 3, INTTP_NA, {INTDESC_NORMAL } }, //11
  33. { 1, INTTP_LEVEL, {INTDESC_SPECIAL } }, //12
  34. { 1, INTTP_LEVEL, {INTDESC_NORMAL } }, //13
  35. { 7, INTTP_LEVEL, {INTDESC_NORMAL } }, //14
  36. { 3, INTTP_NA, {INTDESC_NORMAL } }, //15
  37. { 5, INTTP_NA, {INTDESC_NORMAL } }, //16
  38. { 1, INTTP_LEVEL, {INTDESC_NORMAL } }, //17
  39. { 1, INTTP_LEVEL, {INTDESC_NORMAL } }, //18
  40. { 2, INTTP_LEVEL, {INTDESC_NORMAL } }, //19
  41. { 2, INTTP_LEVEL, {INTDESC_NORMAL } }, //20
  42. { 2, INTTP_LEVEL, {INTDESC_NORMAL } }, //21
  43. { 3, INTTP_EDGE, {INTDESC_NORMAL } }, //22
  44. { 3, INTTP_LEVEL, {INTDESC_NORMAL } }, //23
  45. { 4, INTTP_LEVEL, {INTDESC_NORMAL } }, //24
  46. { 4, INTTP_LEVEL, {INTDESC_NORMAL } }, //25
  47. { 5, INTTP_LEVEL, {INTDESC_NORMAL } }, //26
  48. { 3, INTTP_LEVEL, {INTDESC_NORMAL } }, //27
  49. { 4, INTTP_EDGE, {INTDESC_NORMAL } }, //28
  50. { 3, INTTP_NA, {INTDESC_NORMAL } }, //29
  51. { 4, INTTP_EDGE, {INTDESC_NORMAL } }, //30
  52. { 5, INTTP_LEVEL, {INTDESC_NORMAL } }, //31
  53. };
  54. const int_desc_t *interrupt_controller_hal_desc_table(void)
  55. {
  56. return interrupt_descriptor_table;
  57. }