gd_gpio.h 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. /*
  2. *******************************************************************************
  3. **
  4. ** \file gd_gpio.h
  5. **
  6. ** \brief General purpose input output driver.
  7. **
  8. **
  9. ** Copyright: 2012 - 2013 (C) GoKe Microelectronics ShangHai Branch
  10. **
  11. ** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
  12. ** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
  13. ** OMMISSIONS.
  14. **
  15. ** \version
  16. **
  17. *******************************************************************************
  18. */
  19. #ifndef _GD_GPIO_H_
  20. #define _GD_GPIO_H_
  21. #include <gtypes.h>
  22. #include <gmodids.h>
  23. //#include "gd_int.h"
  24. /*!
  25. *******************************************************************************
  26. **
  27. ** \brief GPIO driver error codes.
  28. **
  29. *******************************************************************************
  30. */
  31. #define GD_GPIO_ERR_BASE (GD_GPIO_MODULE_ID<<16) //!< The GPIO base error code.
  32. enum
  33. {
  34. /*!
  35. ** The GPIO is not of the right mode to to perform
  36. ** a requested function, e.g. writing to a GPIO which was
  37. ** configured as input.
  38. */
  39. GD_ERR_GPIO_INVALID_TYPE = GD_GPIO_ERR_BASE,
  40. GD_ERR_GPIO_OPEN_FAILED,
  41. };
  42. /*!
  43. *******************************************************************************
  44. **
  45. ** \brief All available GPIO pins named by number.
  46. **
  47. ** \sa GD_GPIO_Open()
  48. ** \sa GD_GPIO_OpenFunctionMode()
  49. ** \sa GD_GPIO_SetType()
  50. **
  51. *******************************************************************************
  52. */
  53. typedef enum
  54. {
  55. GD_GPIO_0 = 0, //!< Value representing GPIO 0.
  56. GD_GPIO_1 = 1, //!< Value representing GPIO 1.
  57. GD_GPIO_2 = 2, //!< Value representing GPIO 2.
  58. GD_GPIO_3 = 3, //!< Value representing GPIO 3.
  59. GD_GPIO_4 = 4, //!< Value representing GPIO 4.
  60. GD_GPIO_5 = 5, //!< Value representing GPIO 5.
  61. GD_GPIO_6 = 6, //!< Value representing GPIO 6.
  62. GD_GPIO_7 = 7, //!< Value representing GPIO 7.
  63. GD_GPIO_8 = 8, //!< Value representing GPIO 8.
  64. GD_GPIO_9 = 9, //!< Value representing GPIO 9.
  65. GD_GPIO_10 = 10, //!< Value representing GPIO 10.
  66. GD_GPIO_11 = 11, //!< Value representing GPIO 11.
  67. GD_GPIO_12 = 12, //!< Value representing GPIO 12.
  68. GD_GPIO_13 = 13, //!< Value representing GPIO 13.
  69. GD_GPIO_14 = 14, //!< Value representing GPIO 14.
  70. GD_GPIO_15 = 15, //!< Value representing GPIO 15.
  71. GD_GPIO_16 = 16, //!< Value representing GPIO 16.
  72. GD_GPIO_17 = 17, //!< Value representing GPIO 17.
  73. GD_GPIO_18 = 18, //!< Value representing GPIO 18.
  74. GD_GPIO_19 = 19, //!< Value representing GPIO 19.
  75. GD_GPIO_20 = 20, //!< Value representing GPIO 20.
  76. GD_GPIO_21 = 21, //!< Value representing GPIO 21.
  77. GD_GPIO_22 = 22, //!< Value representing GPIO 22.
  78. GD_GPIO_23 = 23, //!< Value representing GPIO 23.
  79. GD_GPIO_24 = 24, //!< Value representing GPIO 24.
  80. GD_GPIO_25 = 25, //!< Value representing GPIO 25.
  81. GD_GPIO_26 = 26, //!< Value representing GPIO 26.
  82. GD_GPIO_27 = 27, //!< Value representing GPIO 27.
  83. GD_GPIO_28 = 28, //!< Value representing GPIO 28.
  84. GD_GPIO_29 = 29, //!< Value representing GPIO 29.
  85. GD_GPIO_30 = 30, //!< Value representing GPIO 30.
  86. GD_GPIO_31 = 31, //!< Value representing GPIO 31.
  87. GD_GPIO_32 = 32, //!< Value representing GPIO 32.
  88. GD_GPIO_33 = 33, //!< Value representing GPIO 33.
  89. GD_GPIO_34 = 34, //!< Value representing GPIO 34.
  90. GD_GPIO_35 = 35, //!< Value representing GPIO 35.
  91. GD_GPIO_36 = 36, //!< Value representing GPIO 36.
  92. GD_GPIO_37 = 37, //!< Value representing GPIO 37.
  93. GD_GPIO_38 = 38, //!< Value representing GPIO 38.
  94. GD_GPIO_39 = 39, //!< Value representing GPIO 39.
  95. GD_GPIO_40 = 40, //!< Value representing GPIO 40.
  96. GD_GPIO_41 = 41, //!< Value representing GPIO 41.
  97. GD_GPIO_42 = 42, //!< Value representing GPIO 42.
  98. GD_GPIO_43 = 43, //!< Value representing GPIO 43.
  99. GD_GPIO_44 = 44, //!< Value representing GPIO 44.
  100. GD_GPIO_45 = 45, //!< Value representing GPIO 45.
  101. GD_GPIO_46 = 46, //!< Value representing GPIO 46.
  102. GD_GPIO_47 = 47, //!< Value representing GPIO 47.
  103. GD_GPIO_48 = 48, //!< Value representing GPIO 48.
  104. GD_GPIO_49 = 49, //!< Value representing GPIO 49.
  105. GD_GPIO_50 = 50, //!< Value representing GPIO 50.
  106. GD_GPIO_51 = 51, //!< Value representing GPIO 51.
  107. GD_GPIO_52 = 52, //!< Value representing GPIO 52.
  108. GD_GPIO_53 = 53, //!< Value representing GPIO 53.
  109. GD_GPIO_54 = 54, //!< Value representing GPIO 54.
  110. GD_GPIO_55 = 55, //!< Value representing GPIO 55.
  111. GD_GPIO_NUM,
  112. }GD_GPIO_PIN_E;;
  113. /*!
  114. *******************************************************************************
  115. **
  116. ** \brief GPIO types.
  117. ** \high 30-31:00:unused; 01: in; 10:out; 11:in & out.
  118. ** \[ 7: 0]: OUTPUT_CFG out_sel
  119. ** \ 0x00: tied to 1¡¯b0, always output 0
  120. ** \ 0x01: tied to 1¡¯b1, always output 1
  121. ** \ 0x02~0x3f: data inputs from internal modules
  122. ** \[15: 8]: INPUT_CFG in_sel
  123. ** \ 0x00: tied to 1¡¯b0, module¡¯s input is always 0
  124. ** \ 0x01: tied to 1¡¯b1, module¡¯s input is always 1
  125. ** \ 0x02~0x3f: mux selection(gpio_input[61:0])
  126. ** \[21:16]: OUTPUT_CFG oen_sel
  127. ** \ 0x00: tied to 1¡¯b0, always output
  128. ** \ 0x01: tied to 1¡¯b1, always input
  129. ** \ 0x02~0x3f: oen inputs from internal modules
  130. ** \[22:22]: out_invert
  131. ** \[23:23]: oen_invert
  132. ** \[29:24]: IOCTRL
  133. ** \ [25:24]: 0=2mA,1=4mA,2=8mA,3=12mA
  134. ** \ [29:28]: tied to 1¡¯b0, always output
  135. **
  136. ** \sa GD_GPIO_SetType()
  137. ** \sa GD_GPIO_Open()
  138. **
  139. *******************************************************************************
  140. */
  141. #define GD_GPIO_OUT_SEL(n) ((n))
  142. #define GD_GPIO_IN_SEL(n) ((n)<<8)
  143. #define GD_GPIO_OEN_SEL(n) ((n)<<16)
  144. #define GD_GPIO_OUT_INVERT(n) ((n)<<22)
  145. #define GD_GPIO_OEN_INVERT(n) ((n)<<23)
  146. #define GD_GPIO_IOCTRL(n) ((n)<<24)
  147. #define GD_GPIO_FUNC(n) ((n)<<30)
  148. #define GD_GPIO_GET_OUT_SEL(n) (((n)&0x000000FF))
  149. #define GD_GPIO_GET_IN_SEL(n) (((n)&0x0000FF00)>>8)
  150. #define GD_GPIO_GET_OEN_SEL(n) (((n)&0x003F0000)>>16)
  151. #define GD_GPIO_GET_OUT_INVERT(n) (((n)&0x00400000)>>22)
  152. #define GD_GPIO_GET_OEN_INVERT(n) (((n)&0x00800000)>>23)
  153. #define GD_GPIO_GET_IOCTRL(n) (((n)&0x3F000000)>>24)
  154. #define GD_GPIO_GET_FUNC(n) (((n)&0xC0000000)>>30)
  155. #define GD_GPIO_FUNC_IN 1
  156. #define GD_GPIO_FUNC_OUT 2
  157. #define GD_GPIO_FUNC_INOUT 3
  158. #define IOCTRL_NORMAL 0x00 //!< Hi-z
  159. #define IOCTRL_PULL_UP 0x10 //!< PULL_UP
  160. #define IOCTRL_PULL_DOWN 0x20 //!< PULL_DOWN
  161. #define IOCTRL_REPEAT 0x30 //!< REPEAT
  162. #define IOCTRL_2MA 0x00 //!< 2mA
  163. #define IOCTRL_4MA 0x01 //!< 4mA
  164. #define IOCTRL_8MA 0x02 //!< 8mA
  165. #define IOCTRL_12MA 0x03 //!< 12mA
  166. typedef enum
  167. {
  168. /* ----------------------------------- GPIO output function define ----------------------------------- */
  169. GD_GPIO_TYPE_OUTPUT_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 0), //!< Output type: value = 0
  170. GD_GPIO_TYPE_OUTPUT_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 1), //!< Output type: value = 1
  171. GD_GPIO_TYPE_OUTPUT_SPI1_SO = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 2) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 2), //!< Output type: tssi_txd
  172. GD_GPIO_TYPE_OUTPUT_SPI1_CS0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 3), //!< Output type: tssi_cs0_n
  173. GD_GPIO_TYPE_OUTPUT_SPI1_SCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 4), //!< Output type: tssi_sclk_out
  174. GD_GPIO_TYPE_OUTPUT_UART2_RTS_N = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 5), //!< Output type: uart2_rts_n
  175. GD_GPIO_TYPE_OUTPUT_UART2_DTR_N = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 6), //!< Output type: uart2_dtr_n
  176. GD_GPIO_TYPE_OUTPUT_UART2_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 7), //!< Output type: uart2_tx
  177. GD_GPIO_TYPE_OUTPUT_UART1_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 8), //!< Output type: uart1_tx
  178. GD_GPIO_TYPE_OUTPUT_UART0_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 9), //!< Output type: uart0_tx
  179. GD_GPIO_TYPE_OUTPUT_PWM3_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(10), //!< Output type: pwm3_out
  180. GD_GPIO_TYPE_OUTPUT_PWM2_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(11), //!< Output type: pwm2_out
  181. GD_GPIO_TYPE_OUTPUT_PWM1_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(12), //!< Output type: pwm1_out
  182. GD_GPIO_TYPE_OUTPUT_PWM0_OUT = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(13), //!< Output type: pwm0_out
  183. GD_GPIO_TYPE_OUTPUT_SPI0_SO = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 7) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(14), //!< Output type: ssi_txd
  184. GD_GPIO_TYPE_OUTPUT_SPI0_CS7 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(15), //!< Output type: ssi_cs7_n
  185. GD_GPIO_TYPE_OUTPUT_SPI0_CS6 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(16), //!< Output type: ssi_cs6_n
  186. GD_GPIO_TYPE_OUTPUT_SPI0_CS5 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(17), //!< Output type: ssi_cs5_n
  187. GD_GPIO_TYPE_OUTPUT_SPI0_CS4 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(18), //!< Output type: ssi_cs4_n
  188. GD_GPIO_TYPE_OUTPUT_SPI0_CS1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(19), //!< Output type: ssi_cs1_n
  189. GD_GPIO_TYPE_OUTPUT_SPI0_CS0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(20), //!< Output type: ssi_cs0_n
  190. GD_GPIO_TYPE_OUTPUT_SPI0_SCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(21), //!< Output type: ssi_sclk_out
  191. //GD_GPIO_TYPE_INOUT_SD_DATA_0 GD_GPIO_OEN_SEL( 8) GD_GPIO_OUT_SEL(22)
  192. //GD_GPIO_TYPE_INOUT_SD_DATA_1 GD_GPIO_OEN_SEL( 9) GD_GPIO_OUT_SEL(23)
  193. //GD_GPIO_TYPE_INOUT_SD_DATA_2 GD_GPIO_OEN_SEL(10) GD_GPIO_OUT_SEL(24)
  194. //GD_GPIO_TYPE_INOUT_SD_DATA_3 GD_GPIO_OEN_SEL(11) GD_GPIO_OUT_SEL(25)
  195. //GD_GPIO_TYPE_INOUT_SD_DATA_4 GD_GPIO_OEN_SEL(12) GD_GPIO_OUT_SEL(26)
  196. //GD_GPIO_TYPE_INOUT_SD_DATA_5 GD_GPIO_OEN_SEL(13) GD_GPIO_OUT_SEL(27)
  197. //GD_GPIO_TYPE_INOUT_SD_DATA_6 GD_GPIO_OEN_SEL(14) GD_GPIO_OUT_SEL(28)
  198. //GD_GPIO_TYPE_INOUT_SD_DATA_7 GD_GPIO_OEN_SEL(15) GD_GPIO_OUT_SEL(29)
  199. //GD_GPIO_TYPE_INOUT_SDIO_CMD GD_GPIO_OEN_SEL(16) GD_GPIO_OUT_SEL(30)
  200. GD_GPIO_TYPE_OUTPUT_SDIO_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(31), //!< Output type: sd_clk_sdcard
  201. GD_GPIO_TYPE_OUTPUT_AOMCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(32), //!< Output type: i2s_au_clk
  202. GD_GPIO_TYPE_OUTPUT_AOBCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(17) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(33), //!< Output type: i2s_clk_o
  203. GD_GPIO_TYPE_OUTPUT_AOLRCLK = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(18) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(34), //!< Output type: i2s_ws_o
  204. GD_GPIO_TYPE_OUTPUT_AO_DATA0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(35), //!< Output type: i2s_so
  205. GD_GPIO_TYPE_OUTPUT_SF_CS0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(36), //!< Output type: sf_cs0_n
  206. GD_GPIO_TYPE_OUTPUT_SF_CS1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(37), //!< Output type: sf_cs1_n
  207. GD_GPIO_TYPE_OUTPUT_EPHY_LED_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(38), //!< Output type: ephy_led[0] hcd ok
  208. GD_GPIO_TYPE_OUTPUT_EPHY_LED_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(39), //!< Output type: ephy_led[1] duplex
  209. GD_GPIO_TYPE_OUTPUT_EPHY_LED_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(40), //!< Output type: ephy_led[2] 10M CRS out
  210. GD_GPIO_TYPE_OUTPUT_EPHY_LED_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(41), //!< Output type: ephy_led[3] 100M CRS out
  211. GD_GPIO_TYPE_OUTPUT_EPHY_LED_4 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(42), //!< Output type: ephy_led[4] clo gs
  212. GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(43), //!< Output type: enet_phy_txd[0]
  213. GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(44), //!< Output type: enet_phy_txd[1]
  214. GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(45), //!< Output type: enet_phy_txd[2]
  215. GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(46), //!< Output type: enet_phy_txd[3]
  216. GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXER = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(47), //!< Output type: enet_phy_txer
  217. GD_GPIO_TYPE_OUTPUT_ENET_PHY_TXEN = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(48), //!< Output type: enet_phy_txen
  218. // GD_GPIO_TYPE_INOUT_ETH_MDIO GD_GPIO_OUT_SEL(49)
  219. GD_GPIO_TYPE_OUTPUT_ENET_PHY_RESET = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(61), //!< Output type: enet_phy_reset
  220. GD_GPIO_TYPE_OUTPUT_ENET_GMII_MDC_O = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(50), //!< Output type: enet_gmii_mdc_o
  221. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(51), //!< Output type: ahb_dac_dr[0]
  222. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(52), //!< Output type: ahb_dac_dr[1]
  223. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(53), //!< Output type: ahb_dac_dr[2]
  224. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(54), //!< Output type: ahb_dac_dr[3]
  225. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_4 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(55), //!< Output type: ahb_dac_dr[4]
  226. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_5 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(56), //!< Output type: ahb_dac_dr[5]
  227. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_6 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(57), //!< Output type: ahb_dac_dr[6]
  228. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_7 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(58), //!< Output type: ahb_dac_dr[7]
  229. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_8 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(59), //!< Output type: ahb_dac_dr[8]
  230. GD_GPIO_TYPE_OUTPUT_AHB_DAC_DR_9 = GD_GPIO_FUNC(GD_GPIO_FUNC_OUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 0) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL(60), //!< Output type: ahb_dac_dr[9]
  231. /* ----------------------------------- GPIO input function define ----------------------------------- */
  232. GD_GPIO_TYPE_INPUT_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL( 0) | GD_GPIO_OUT_SEL( 0), //!< Input type: normal input
  233. GD_GPIO_TYPE_INPUT_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL( 1) | GD_GPIO_OUT_SEL( 0), //!< Input type: normal input
  234. GD_GPIO_TYPE_INPUT_SPI1_SI = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 0) | GD_GPIO_OUT_SEL( 0), //!< Input type: tssi_rxd
  235. //GD_GPIO_TYPE_INOUT_I2C_DATA GD_GPIO_IN_SEL(2+ 1)
  236. //GD_GPIO_TYPE_INOUT_I2C_CLK GD_GPIO_IN_SEL(2+ 2)
  237. //GD_GPIO_TYPE_INOUT_I2C_DATA2 GD_GPIO_IN_SEL(2+ 3)
  238. //GD_GPIO_TYPE_INOUT_I2C_CLK2 GD_GPIO_IN_SEL(2+ 4)
  239. GD_GPIO_TYPE_INPUT_UART2_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 5) | GD_GPIO_OUT_SEL( 0), //!< Input type: uart2_rx
  240. GD_GPIO_TYPE_INPUT_UART1_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 6) | GD_GPIO_OUT_SEL( 0), //!< Input type: uart1_rx
  241. GD_GPIO_TYPE_INPUT_UART0_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 7) | GD_GPIO_OUT_SEL( 0), //!< Input type: uart0_rx
  242. GD_GPIO_TYPE_INPUT_TIMER1_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 8) | GD_GPIO_OUT_SEL( 0), //!< Input type: timer1_clk
  243. GD_GPIO_TYPE_INPUT_TIMER2_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+ 9) | GD_GPIO_OUT_SEL( 0), //!< Input type: timer2_clk
  244. GD_GPIO_TYPE_INPUT_TIMER3_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+10) | GD_GPIO_OUT_SEL( 0), //!< Input type: timer3_clk
  245. GD_GPIO_TYPE_INPUT_SPI0_SI = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+11) | GD_GPIO_OUT_SEL( 0), //!< Input type: ssi_rxd
  246. GD_GPIO_TYPE_INPUT_SD_WP_N = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+12) | GD_GPIO_OUT_SEL( 0), //!< Input type: sd_wp_n
  247. GD_GPIO_TYPE_INPUT_SD_CD_N = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+13) | GD_GPIO_OUT_SEL( 0), //!< Input type: sd_cd_n
  248. //GD_GPIO_TYPE_INOUT_SD_DATA_0 GD_GPIO_IN_SEL(2+14)
  249. //GD_GPIO_TYPE_INOUT_SD_DATA_1 GD_GPIO_IN_SEL(2+15)
  250. //GD_GPIO_TYPE_INOUT_SD_DATA_2 GD_GPIO_IN_SEL(2+16)
  251. //GD_GPIO_TYPE_INOUT_SD_DATA_3 GD_GPIO_IN_SEL(2+17)
  252. //GD_GPIO_TYPE_INOUT_SD_DATA_4 GD_GPIO_IN_SEL(2+18)
  253. //GD_GPIO_TYPE_INOUT_SD_DATA_5 GD_GPIO_IN_SEL(2+19)
  254. //GD_GPIO_TYPE_INOUT_SD_DATA_6 GD_GPIO_IN_SEL(2+20)
  255. //GD_GPIO_TYPE_INOUT_SD_DATA_7 GD_GPIO_IN_SEL(2+21)
  256. //GD_GPIO_TYPE_INOUT_SDIO_CMD GD_GPIO_IN_SEL(2+22)
  257. GD_GPIO_TYPE_INPUT_I2S_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+23) | GD_GPIO_OUT_SEL( 0), //!< Input type: i2s_clk
  258. GD_GPIO_TYPE_INPUT_I2S_WS = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+24) | GD_GPIO_OUT_SEL( 0), //!< Input type: i2s_ws
  259. GD_GPIO_TYPE_INPUT_I2S_SI = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+25) | GD_GPIO_OUT_SEL( 0), //!< Input type: i2s_si
  260. GD_GPIO_TYPE_INPUT_CLK_AU = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+26) | GD_GPIO_OUT_SEL( 0), //!< Input type: clk_au
  261. GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+27) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[0]
  262. GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+28) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[1]
  263. GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+29) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[2]
  264. GD_GPIO_TYPE_INPUT_ENET_PHY_RXD_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+30) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxd[3]
  265. GD_GPIO_TYPE_INPUT_ENET_PHY_COL = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+31) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_col
  266. GD_GPIO_TYPE_INPUT_ENET_PHY_CRS = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+32) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_crs
  267. GD_GPIO_TYPE_INPUT_ENET_PHY_RXER = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+33) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxer
  268. GD_GPIO_TYPE_INPUT_ENET_PHY_RXDV = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+34) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_phy_rxdv
  269. // GD_GPIO_TYPE_INOUT_ETH_MDIO GD_GPIO_IN_SEL(2+35)
  270. GD_GPIO_TYPE_INPUT_ENET_CLK_RX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+36) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_clk_rx
  271. GD_GPIO_TYPE_INPUT_ENET_CLK_TX = GD_GPIO_FUNC(GD_GPIO_FUNC_IN) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 1) | GD_GPIO_IN_SEL(2+37) | GD_GPIO_OUT_SEL( 0), //!< Input type: enet_clk_tx
  272. /* ----------------------------------- GPIO input&&output function define ----------------------------------- */
  273. GD_GPIO_TYPE_INOUT_I2C_DATA = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 3) | GD_GPIO_IN_SEL(2+ 1) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_sda
  274. GD_GPIO_TYPE_INOUT_I2C_CLK = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 4) | GD_GPIO_IN_SEL(2+ 2) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_scl
  275. GD_GPIO_TYPE_INOUT_I2C_DATA2 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 5) | GD_GPIO_IN_SEL(2+ 3) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_sda2
  276. GD_GPIO_TYPE_INOUT_I2C_CLK2 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(0) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 6) | GD_GPIO_IN_SEL(2+ 4) | GD_GPIO_OUT_SEL( 0), //!< Input/Output type: i2c_scl2
  277. GD_GPIO_TYPE_INOUT_ETH_MDIO = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_DOWN|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(19) | GD_GPIO_IN_SEL(2+35) | GD_GPIO_OUT_SEL(49), //!< Input/Output type: enet_gmii_mdi/enet_gmii_mod_o
  278. GD_GPIO_TYPE_INOUT_SD_DATA_0 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 8) | GD_GPIO_IN_SEL(2+14) | GD_GPIO_OUT_SEL(22), //!< Input/Output type: sd_data_out[0]
  279. GD_GPIO_TYPE_INOUT_SD_DATA_1 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL( 9) | GD_GPIO_IN_SEL(2+15) | GD_GPIO_OUT_SEL(23), //!< Input/Output type: sd_data_out[1]
  280. GD_GPIO_TYPE_INOUT_SD_DATA_2 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(10) | GD_GPIO_IN_SEL(2+16) | GD_GPIO_OUT_SEL(24), //!< Input/Output type: sd_data_out[2]
  281. GD_GPIO_TYPE_INOUT_SD_DATA_3 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(11) | GD_GPIO_IN_SEL(2+17) | GD_GPIO_OUT_SEL(25), //!< Input/Output type: sd_data_out[3]
  282. GD_GPIO_TYPE_INOUT_SD_DATA_4 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(12) | GD_GPIO_IN_SEL(2+18) | GD_GPIO_OUT_SEL(26), //!< Input/Output type: sd_data_out[4]
  283. GD_GPIO_TYPE_INOUT_SD_DATA_5 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(13) | GD_GPIO_IN_SEL(2+19) | GD_GPIO_OUT_SEL(27), //!< Input/Output type: sd_data_out[5]
  284. GD_GPIO_TYPE_INOUT_SD_DATA_6 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(14) | GD_GPIO_IN_SEL(2+20) | GD_GPIO_OUT_SEL(28), //!< Input/Output type: sd_data_out[6]
  285. GD_GPIO_TYPE_INOUT_SD_DATA_7 = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(15) | GD_GPIO_IN_SEL(2+21) | GD_GPIO_OUT_SEL(29), //!< Input/Output type: sd_data_out[7]
  286. GD_GPIO_TYPE_INOUT_SD_CMD = GD_GPIO_FUNC(GD_GPIO_FUNC_INOUT) | GD_GPIO_IOCTRL(IOCTRL_PULL_UP|IOCTRL_2MA) | GD_GPIO_OEN_INVERT(1) | GD_GPIO_OUT_INVERT(0) | GD_GPIO_OEN_SEL(16) | GD_GPIO_IN_SEL(2+22) | GD_GPIO_OUT_SEL(30), //!< Input/Output : sd_cmd
  287. GD_GPIO_TYPE_UNDEFINED = 0,
  288. } GD_GPIO_TYPE_E;
  289. /*!
  290. *******************************************************************************
  291. **
  292. ** \brief Interrupt trigger types.
  293. **
  294. *******************************************************************************
  295. */
  296. typedef enum
  297. {
  298. GD_GPIO_INT_TRIGGER_LOW_LEVEL, //!< Interrupt trigger on low level.
  299. GD_GPIO_INT_TRIGGER_HIGH_LEVEL, //!< Interrupt trigger on high level.
  300. GD_GPIO_INT_TRIGGER_RISING_EDGE, //!< Interrupt trigger on rising edge.
  301. GD_GPIO_INT_TRIGGER_FALLING_EDGE, //!< Interrupt trigger on falling edge.
  302. GD_GPIO_INT_TRIGGER_BOTH_EDGE //!< Interrupt trigger on both edge.
  303. }GD_GPIO_INT_TRIGGER_E;
  304. /*!
  305. *******************************************************************************
  306. **
  307. ** \brief Interrupt configuration.
  308. **
  309. ** \sa GD_GPIO_Open()
  310. **
  311. *******************************************************************************
  312. */
  313. typedef struct
  314. {
  315. /*!
  316. ** The interrupt trigger type.
  317. */
  318. GD_GPIO_INT_TRIGGER_E trigger;
  319. /*!
  320. ** Flag to enable/disable the interrupt.
  321. */
  322. GBOOL enable;
  323. /*!
  324. ** The notification function which shall be called when an interrupt
  325. ** occurs.
  326. */
  327. void (*notifyFct)();
  328. }GD_GPIO_INT_CONFIG_S;
  329. /*!
  330. *******************************************************************************
  331. **
  332. ** \brief GPIO cross reference between GPIO pins and functions.
  333. **
  334. ** \sa GD_GPIO_Init()
  335. **
  336. *******************************************************************************
  337. */
  338. typedef struct
  339. {
  340. U8 pin;
  341. GD_GPIO_TYPE_E type;
  342. }GD_GPIO_XREF_S;
  343. /*!
  344. *******************************************************************************
  345. **
  346. ** \brief Parameters for initialisation.
  347. **
  348. ** \sa GD_GPIO_Init()
  349. **
  350. *******************************************************************************
  351. */
  352. typedef struct
  353. {
  354. /*!
  355. ** General interrupt priority for all GPIO interrupts,
  356. ** either #GD_INT_LOW_PRIORITY or #GD_INT_MID_PRIORITY.
  357. */
  358. S8 irqPriority;
  359. U8 phyType;
  360. U8 Reserve;
  361. U16 xrefTableCount;
  362. GD_GPIO_XREF_S* xrefTable;
  363. }GD_GPIO_INIT_PARAMS_S;
  364. /*
  365. *******************************************************************************
  366. **
  367. ** \brief Available API functions.
  368. **
  369. *******************************************************************************
  370. */
  371. #ifdef __cplusplus
  372. extern "C" {
  373. #endif
  374. GERR GD_GPIO_Init(GD_GPIO_INIT_PARAMS_S* pInitParams);
  375. GERR GD_GPIO_Exit(void);
  376. GERR GD_GPIO_Open(U8 number, GD_GPIO_TYPE_E type, GD_GPIO_INT_CONFIG_S* pIntConfig, GD_HANDLE* pHandle);
  377. GERR GD_GPIO_Close(GD_HANDLE* pHandle);
  378. GERR GD_GPIO_CloseWithType(U32 type);
  379. GERR GD_GPIO_Read(GD_HANDLE handle, U8 *pBit);
  380. GERR GD_GPIO_Write(GD_HANDLE handle, U8 bit);
  381. GERR GD_GPIO_SetType(GD_HANDLE handle, GD_GPIO_TYPE_E type);
  382. GERR GD_GPIO_DisableInterrupt(void);
  383. GERR GD_GPIO_EnableInterrupt(void);
  384. GERR GD_GPIO_OpenFunctionMode(GD_GPIO_TYPE_E type, GD_HANDLE* pHandle);
  385. GERR GD_GPIO_ControlInvertData(GD_HANDLE handle, U8 modeValue);
  386. GERR GD_GPIO_ControlInvertEnable(GD_HANDLE handle, U8 modeValue);
  387. #ifdef __cplusplus
  388. }
  389. #endif
  390. #endif