ck_irq.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * Copyright (C) 2017-2019 Alibaba Group Holding Limited
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2020-08-20 zx.chen CSI Source File for IRQ Driver
  9. */
  10. #include <stdint.h>
  11. #include <soc.h>
  12. #include <csi_core.h>
  13. #include <csi_config.h>
  14. extern void Default_Handler(void);
  15. extern void (*g_irqvector[])(void);
  16. extern void (*g_nmivector)(void);
  17. /**
  18. \brief enable irq.
  19. \param[in] irq_num Number of IRQ.
  20. \return None.
  21. */
  22. void drv_irq_enable(uint32_t irq_num)
  23. {
  24. if (NMI_EXPn != irq_num)
  25. {
  26. #ifdef CONFIG_SYSTEM_SECURE
  27. csi_vic_enable_sirq(irq_num);
  28. #else
  29. csi_vic_enable_irq(irq_num);
  30. #endif
  31. }
  32. }
  33. /**
  34. \brief disable irq.
  35. \param[in] irq_num Number of IRQ.
  36. \return None.
  37. */
  38. void drv_irq_disable(uint32_t irq_num)
  39. {
  40. if (NMI_EXPn != irq_num)
  41. {
  42. #ifdef CONFIG_SYSTEM_SECURE
  43. csi_vic_disable_sirq(irq_num);
  44. #else
  45. csi_vic_disable_irq(irq_num);
  46. #endif
  47. }
  48. }
  49. /**
  50. \brief register irq handler.
  51. \param[in] irq_num Number of IRQ.
  52. \param[in] irq_handler IRQ Handler.
  53. \return None.
  54. */
  55. void drv_irq_register(uint32_t irq_num, void *irq_handler)
  56. {
  57. if (NMI_EXPn != irq_num)
  58. {
  59. g_irqvector[irq_num] = irq_handler;
  60. }
  61. else
  62. {
  63. g_nmivector = irq_handler;
  64. }
  65. }
  66. /**
  67. \brief unregister irq handler.
  68. \param[in] irq_num Number of IRQ.
  69. \return None.
  70. */
  71. void drv_irq_unregister(uint32_t irq_num)
  72. {
  73. if (NMI_EXPn != irq_num)
  74. {
  75. g_irqvector[irq_num] = (void *)Default_Handler;
  76. }
  77. else
  78. {
  79. g_nmivector = (void *)Default_Handler;
  80. }
  81. }