sp_porting.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /****************************************************************
  2. ****************************************************************
  3. ** **
  4. ** (C)Copyright 2005-2006, American Megatrends Inc. **
  5. ** **
  6. ** All Rights Reserved. **
  7. ** **
  8. ** 6145-F, Northbelt Parkway, Norcross, **
  9. ** **
  10. ** Georgia - 30071, USA. Phone-(770)-246-8600. **
  11. ** **
  12. ****************************************************************
  13. *
  14. * sp_porting.h
  15. * Platfor specfic porting
  16. *
  17. * Author: Govind Kothandapani <govindk@ami.com>
  18. *
  19. *****************************************************************/
  20. #ifndef SP_PORTING_H
  21. #define SP_PORTING_H
  22. #include "sp_types.h"
  23. #include "SoftProc.h"
  24. //#include "OSPort.h"
  25. #include "PDKHooks.h"
  26. #include "Debug.h"
  27. #include "PDKHW.h"
  28. #include "libi2c.h"
  29. #include "memory.h"
  30. #include "gpio_info.h"
  31. #define IPMI_Malloc malloc
  32. #define SP_MALLOC(SIZE, PTR) \
  33. do \
  34. { \
  35. PTR = IPMI_Malloc (SIZE); \
  36. } while (0)
  37. #define SP_MEMCPY memcpy
  38. #define SP_MEMSET memset
  39. #define SP_STRNCMP strncmp
  40. #define SP_ASSERT(P1) IPMI_ASSERT (P1);
  41. #define SP_DELAY_MS(MS) OS_TIME_DELAY_HMSM (0, 0, 0, MS)
  42. #if defined (HOST_BIG_ENDIAN)
  43. #define SPTOH16(VAL) VAL
  44. #define HTOSP16(VAL) VAL
  45. #define SPTOH32(VAL) VAL
  46. #define HTOSP32(VAL) VAL
  47. #elif defined (HOST_LITTLE_ENDIAN)
  48. #define SPTOH16(P1) ((u16)(((P1) >> 8) + ((P1) << 8)))
  49. #define HTOSP16(P1) ((u16)(((P1) >> 8) + ((P1) << 8)))
  50. #define SPTOH32(P1) ((SPTOH16 ((P1) & 0xffff) << 16) + (SPTOH16 ((P1) >> 16)))
  51. #define HTOSP32(P1) ((HTOSP16 ((P1) & 0xffff) << 16) + (HTOSP16 ((P1) >> 16)))
  52. #else
  53. #error "Error HOST BYTE ORDER/ENDIAN not defined"
  54. #endif
  55. #define SPTOHU16_32(VAL) SPTOH16(VAL)
  56. #define HTOSPU16_32(VAL) HTOSP16(VAL)
  57. #define SP_ENTER_CRITICAL_SECTION()
  58. #define SP_EXIT_CRITICAL_SECTION()
  59. #define SP_ACQUIRE_SLOCK()
  60. #define SP_RELEASE_SLOCK()
  61. #define SP_OEM_CMD(CMD, REGS, PRED, MEM) (PDK_SPOEMInstruction (CMD, (SPRegs_T*)REGS, MEM))
  62. #define SP_READ_I2C_REG(BUS, SA, REG, VAL) (0)
  63. #define SP_WRITE_I2C_REG(BUS, SA, REG, VAL) (0)
  64. #define SP_RW_I2C(BUS, SA, NUM_WRITE, WRITE_BUF, NUM_READ, READ_BUF) (0)
  65. #define SP_READ_GPIO(MEM,VAL,pErr) do { \
  66. *pErr = get_gpio_data (SPTOH16 (MEM)); \
  67. if ( -1 != *pErr ) VAL = (u8) (*pErr); \
  68. }while (0)
  69. #define SP_WRITE_GPIO(MEM,VAL,pErr) \
  70. do { \
  71. if (VAL) { if ( -1 == set_gpio_data_high (SPTOH16 (MEM))) *pErr = -1; } \
  72. else { if ( -1 == set_gpio_data_low (SPTOH16 (MEM))) *pErr = -1; } \
  73. } while (0)
  74. #define SP_GET_DIR(MEM,VAL,pErr) do { \
  75. *pErr = get_gpio_dir (SPTOH16 (MEM)); \
  76. if ( -1 != *pErr ) VAL = (u8) (*pErr); \
  77. }while (0)
  78. #define SP_SET_DIR(MEM,VAL,pErr) \
  79. do { \
  80. if (VAL) { set_gpio_dir_output (SPTOH16 (MEM)); } \
  81. else { set_gpio_dir_input (SPTOH16 (MEM)); } \
  82. } while (0)
  83. #define SP_GET_POL(MEM,VAL,pErr) do { \
  84. *pErr = get_gpio_pol (SPTOH16 (MEM)); \
  85. if ( -1 != *pErr ) VAL = (u8) (*pErr); \
  86. }while (0)
  87. #define SP_SET_POL(MEM,VAL,pErr) do { \
  88. if (VAL) { set_gpio_pol_high (SPTOH16 (MEM)); } \
  89. else { set_gpio_pol_low (SPTOH16 (MEM)); } \
  90. } while (0)
  91. #define SP_READ_HOST_MEM_BYTE(VAL, MEM) (VAL = get_gpio_data (SPTOH16 (MEM)))
  92. #define SP_READ_HOST_MEM_WORD(VAL, MEM) (VAL = get_gpio_data (SPTOH16 (MEM)))
  93. #define SP_WRITE_HOST_MEM_BYTE(MEM, VAL) \
  94. do { \
  95. if (VAL) { set_gpio_high (SPTOH16 (MEM));} \
  96. else { set_gpio_low (SPTOH16 (MEM));} \
  97. } while (0)
  98. #define SP_WRITE_HOST_MEM_WORD(MEM, VAL) \
  99. do { \
  100. if (VAL) { set_gpio_high (SPTOH16 (MEM));} \
  101. else { set_gpio_low (SPTOH16 (MEM));} \
  102. } while (0)
  103. /*** DEBUG MACROS ***/
  104. #define SP_DBG_INIT() PDK_DebugPortInit ()
  105. #define SP_DBG_WRITE_BYTE(BYTE) PDK_DbgOut (BYTE)
  106. #define SP_DBG_READ_BYTE(PTRBYTE) PDK_DbgIn (PTRBYTE)
  107. #endif //SP_PORTING_H