omap3.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /*++
  2. Copyright (c) 2012 Minoca Corp. All Rights Reserved
  3. Module Name:
  4. omap3.h
  5. Abstract:
  6. This header defines support for OMAP3 hardware layer plugins.
  7. Author:
  8. Evan Green 31-Oct-2012
  9. Environment:
  10. Kernel
  11. --*/
  12. //
  13. // ------------------------------------------------------------------- Includes
  14. //
  15. //
  16. // ---------------------------------------------------------------- Definitions
  17. //
  18. // Define the integrator allocation tag.
  19. //
  20. #define OMAP3_ALLOCATION_TAG 0x33504D4F // '3PMO'
  21. //
  22. // Define the signature of the OMAP3 ACPI table.
  23. //
  24. #define OMAP3_SIGNATURE 0x33504D4F // '3PMO'
  25. //
  26. // Define the number of timers in an OMAP3.
  27. //
  28. #define OMAP3_TIMER_COUNT 12
  29. //
  30. // Define the bit width for the timers.
  31. //
  32. #define OMAP3_TIMER_BIT_WIDTH 32
  33. //
  34. // Define the fixed frequency for the first timers.
  35. //
  36. #define OMAP3_TIMER_FIXED_FREQUENCY 32768
  37. //
  38. // Define the size of one timer's register space.
  39. //
  40. #define OMAP3_TIMER_CONTROLLER_SIZE 0x1000
  41. //
  42. // Define the number of *unique* interrupt priorities in the OMAP controller.
  43. //
  44. #define OMAP3_INTERRUPT_PRIORITY_COUNT 63
  45. //
  46. // Define the size of the interrupt controller register space.
  47. //
  48. #define OMAP3_INTERRUPT_CONTROLLER_SIZE 0x1000
  49. //
  50. // Define the number of interrupt lines in an OMAP3 interrupt controller.
  51. //
  52. #define OMAP3_INTERRUPT_LINE_COUNT 96
  53. //
  54. // Define the size of the PRCM register space.
  55. //
  56. #define OMAP3_PRCM_SIZE 0x2000
  57. //
  58. // ------------------------------------------------------ Data Type Definitions
  59. //
  60. /*++
  61. Structure Description:
  62. This structure describes the OMAP3 ACPI table.
  63. Members:
  64. Header - Stores the standard ACPI table header. The signature here is
  65. 'OMP3'.
  66. InterruptControllerPhysicalAddress - Stores the physical address of the
  67. interrupt controller.
  68. InterruptControllerGsiBase - Stores the Global System Interrupt number of
  69. the first line of the interrupt controller.
  70. TimerBlockPhysicalAddress - Stores the physical address of the timer block.
  71. PrcmPhysicalAddress - Stores the physical address of the power and clock
  72. module.
  73. DebugUartPhysicalAddress - Stores the physical address of the UART used for
  74. serial debug communications.
  75. --*/
  76. typedef struct _OMAP3_TABLE {
  77. DESCRIPTION_HEADER Header;
  78. ULONGLONG InterruptControllerPhysicalAddress;
  79. ULONG InterruptControllerGsiBase;
  80. ULONGLONG TimerPhysicalAddress[OMAP3_TIMER_COUNT];
  81. ULONG TimerGsi[OMAP3_TIMER_COUNT];
  82. ULONGLONG PrcmPhysicalAddress;
  83. ULONGLONG DebugUartPhysicalAddress;
  84. } PACKED OMAP3_TABLE, *POMAP3_TABLE;
  85. //
  86. // -------------------------------------------------------------------- Globals
  87. //
  88. //
  89. // Store a pointer to the OMAP3 ACPI table.
  90. //
  91. extern POMAP3_TABLE HlOmap3Table;
  92. //
  93. // ------------------------------------------------------------------ Functions
  94. //
  95. KSTATUS
  96. HlpOmap3InitializePowerAndClocks (
  97. );
  98. /*++
  99. Routine Description:
  100. This routine initializes the PRCM and turns on clocks and power domains
  101. needed by the system.
  102. Arguments:
  103. None.
  104. Return Value:
  105. Status code.
  106. --*/