excite_fpga.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef EXCITE_FPGA_H_INCLUDED
  2. #define EXCITE_FPGA_H_INCLUDED
  3. /**
  4. * Address alignment of the individual FPGA bytes.
  5. * The address arrangement of the individual bytes of the FPGA is two
  6. * byte aligned at the embedded MK2 platform.
  7. */
  8. #ifdef EXCITE_CCI_FPGA_MK2
  9. typedef unsigned char excite_cci_fpga_align_t __attribute__ ((aligned(2)));
  10. #else
  11. typedef unsigned char excite_cci_fpga_align_t;
  12. #endif
  13. /**
  14. * Size of Dual Ported RAM.
  15. */
  16. #define EXCITE_DPR_SIZE 263
  17. /**
  18. * Size of Reserved Status Fields in Dual Ported RAM.
  19. */
  20. #define EXCITE_DPR_STATUS_SIZE 7
  21. /**
  22. * FPGA.
  23. * Hardware register layout of the FPGA interface. The FPGA must accessed
  24. * byte wise solely.
  25. * @see EXCITE_CCI_DPR_MK2
  26. */
  27. typedef struct excite_fpga {
  28. /**
  29. * Dual Ported RAM.
  30. */
  31. excite_cci_fpga_align_t dpr[EXCITE_DPR_SIZE];
  32. /**
  33. * Status.
  34. */
  35. excite_cci_fpga_align_t status[EXCITE_DPR_STATUS_SIZE];
  36. #ifdef EXCITE_CCI_FPGA_MK2
  37. /**
  38. * RM9000 Interrupt.
  39. * Write access initiates interrupt at the RM9000 (MIPS) processor of the eXcite.
  40. */
  41. excite_cci_fpga_align_t rm9k_int;
  42. #else
  43. /**
  44. * MK2 Interrupt.
  45. * Write access initiates interrupt at the ARM processor of the MK2.
  46. */
  47. excite_cci_fpga_align_t mk2_int;
  48. excite_cci_fpga_align_t gap[0x1000-0x10f];
  49. /**
  50. * IRQ Source/Acknowledge.
  51. */
  52. excite_cci_fpga_align_t rm9k_irq_src;
  53. /**
  54. * IRQ Mask.
  55. * Set bits enable the related interrupt.
  56. */
  57. excite_cci_fpga_align_t rm9k_irq_mask;
  58. #endif
  59. } excite_fpga;
  60. #endif /* ndef EXCITE_FPGA_H_INCLUDED */