intc_i.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. *********************************************************************************************************
  3. * AR100 SYSTEM
  4. * AR100 Software System Develop Kits
  5. * interrupt module
  6. *
  7. * (c) Copyright 2012-2016, Sunny China
  8. * All Rights Reserved
  9. *
  10. * File : intc_i.h
  11. * By : Sunny
  12. * Version : v1.0
  13. * Date : 2012-5-3
  14. * Descript: interrupt controller internal header.
  15. * Update : date auther ver notes
  16. * 2012-5-3 13:27:40 Sunny 1.0 Create this file.
  17. *********************************************************************************************************
  18. */
  19. #ifndef __INTC_I_H__
  20. #define __INTC_I_H__
  21. #include <hal_interrupt.h>
  22. #include <sunxi_hal_common.h>
  23. /*interrput controller registers Offset*/
  24. typedef struct intc_regs {
  25. /*offset 0x00 */
  26. volatile u32 vector;
  27. volatile u32 base_addr;
  28. volatile u32 reserved0;
  29. volatile u32 control;
  30. /*offset 0x10 */
  31. volatile u32 pending;
  32. volatile u32 pending1;
  33. volatile u32 pending2;
  34. volatile u32 reserved1[9];
  35. /*offset 0x40 */
  36. volatile u32 enable;
  37. volatile u32 enable1;
  38. volatile u32 enable2;
  39. volatile u32 reserved2[1];
  40. /*offset 0x50 */
  41. volatile u32 mask;
  42. volatile u32 mask1;
  43. volatile u32 mask2;
  44. volatile u32 reserved3[5];
  45. /*offset 0x70 */
  46. volatile u32 fast_forcing;
  47. volatile u32 reserved4[3];
  48. /*offset 0x80 */
  49. volatile u32 priority0;
  50. volatile u32 priority1;
  51. volatile u32 reserved5[14];
  52. /*offset 0xc0 */
  53. volatile u32 group_config0;
  54. volatile u32 group_config1;
  55. volatile u32 group_config2;
  56. volatile u32 group_config3;
  57. } intc_regs_t;
  58. struct int_isr_node {
  59. __pISR_hdle_t pisr; /*ISR process handler */
  60. void *parg; /*argument for isr process */
  61. };
  62. /*local functions*/
  63. s32 intc_init(void);
  64. s32 intc_exit(void);
  65. s32 intc_set_fiq_triggermode(u32 triggermode);
  66. s32 intc_enable_interrupt(u32 intno);
  67. s32 intc_disable_interrupt(u32 intno);
  68. u32 intc_get_current_interrupt(void);
  69. s32 intc_set_mask(u32 intno, u32 mask);
  70. s32 intc_set_group_config(u32 grp_irq_num, u32 mask);
  71. s32 isr_default(int dummy, void *arg);
  72. /*pointer of register list*/
  73. extern struct intc_regs *pintc_regs;
  74. #endif /*__INTC_I_H__*/