mux.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. /*
  2. * Table of the DAVINCI register configurations for the PINMUX combinations
  3. *
  4. * Author: Vladimir Barinov, MontaVista Software, Inc. <source@mvista.com>
  5. *
  6. * Based on linux/include/asm-arm/arch-omap/mux.h:
  7. * Copyright (C) 2003 - 2005 Nokia Corporation
  8. *
  9. * Written by Tony Lindgren
  10. *
  11. * 2007 (c) MontaVista Software, Inc. This file is licensed under
  12. * the terms of the GNU General Public License version 2. This program
  13. * is licensed "as is" without any warranty of any kind, whether express
  14. * or implied.
  15. *
  16. * Copyright (C) 2008 Texas Instruments.
  17. */
  18. #ifndef __INC_MACH_MUX_H
  19. #define __INC_MACH_MUX_H
  20. struct mux_config {
  21. const char *name;
  22. const char *mux_reg_name;
  23. const unsigned char mux_reg;
  24. const unsigned char mask_offset;
  25. const unsigned char mask;
  26. const unsigned char mode;
  27. bool debug;
  28. };
  29. enum davinci_dm644x_index {
  30. /* ATA and HDDIR functions */
  31. DM644X_HDIREN,
  32. DM644X_ATAEN,
  33. DM644X_ATAEN_DISABLE,
  34. /* HPI functions */
  35. DM644X_HPIEN_DISABLE,
  36. /* AEAW functions */
  37. DM644X_AEAW,
  38. /* Memory Stick */
  39. DM644X_MSTK,
  40. /* I2C */
  41. DM644X_I2C,
  42. /* ASP function */
  43. DM644X_MCBSP,
  44. /* UART1 */
  45. DM644X_UART1,
  46. /* UART2 */
  47. DM644X_UART2,
  48. /* PWM0 */
  49. DM644X_PWM0,
  50. /* PWM1 */
  51. DM644X_PWM1,
  52. /* PWM2 */
  53. DM644X_PWM2,
  54. /* VLYNQ function */
  55. DM644X_VLYNQEN,
  56. DM644X_VLSCREN,
  57. DM644X_VLYNQWD,
  58. /* EMAC and MDIO function */
  59. DM644X_EMACEN,
  60. /* GPIO3V[0:16] pins */
  61. DM644X_GPIO3V,
  62. /* GPIO pins */
  63. DM644X_GPIO0,
  64. DM644X_GPIO3,
  65. DM644X_GPIO43_44,
  66. DM644X_GPIO46_47,
  67. /* VPBE */
  68. DM644X_RGB666,
  69. /* LCD */
  70. DM644X_LOEEN,
  71. DM644X_LFLDEN,
  72. };
  73. enum davinci_dm646x_index {
  74. /* ATA function */
  75. DM646X_ATAEN,
  76. /* AUDIO Clock */
  77. DM646X_AUDCK1,
  78. DM646X_AUDCK0,
  79. /* CRGEN Control */
  80. DM646X_CRGMUX,
  81. /* VPIF Control */
  82. DM646X_STSOMUX_DISABLE,
  83. DM646X_STSIMUX_DISABLE,
  84. DM646X_PTSOMUX_DISABLE,
  85. DM646X_PTSIMUX_DISABLE,
  86. /* TSIF Control */
  87. DM646X_STSOMUX,
  88. DM646X_STSIMUX,
  89. DM646X_PTSOMUX_PARALLEL,
  90. DM646X_PTSIMUX_PARALLEL,
  91. DM646X_PTSOMUX_SERIAL,
  92. DM646X_PTSIMUX_SERIAL,
  93. };
  94. enum davinci_dm355_index {
  95. /* MMC/SD 0 */
  96. DM355_MMCSD0,
  97. /* MMC/SD 1 */
  98. DM355_SD1_CLK,
  99. DM355_SD1_CMD,
  100. DM355_SD1_DATA3,
  101. DM355_SD1_DATA2,
  102. DM355_SD1_DATA1,
  103. DM355_SD1_DATA0,
  104. /* I2C */
  105. DM355_I2C_SDA,
  106. DM355_I2C_SCL,
  107. /* ASP0 function */
  108. DM355_MCBSP0_BDX,
  109. DM355_MCBSP0_X,
  110. DM355_MCBSP0_BFSX,
  111. DM355_MCBSP0_BDR,
  112. DM355_MCBSP0_R,
  113. DM355_MCBSP0_BFSR,
  114. /* SPI0 */
  115. DM355_SPI0_SDI,
  116. DM355_SPI0_SDENA0,
  117. DM355_SPI0_SDENA1,
  118. /* IRQ muxing */
  119. DM355_INT_EDMA_CC,
  120. DM355_INT_EDMA_TC0_ERR,
  121. DM355_INT_EDMA_TC1_ERR,
  122. /* EDMA event muxing */
  123. DM355_EVT8_ASP1_TX,
  124. DM355_EVT9_ASP1_RX,
  125. DM355_EVT26_MMC0_RX,
  126. };
  127. enum davinci_dm365_index {
  128. /* MMC/SD 0 */
  129. DM365_MMCSD0,
  130. /* MMC/SD 1 */
  131. DM365_SD1_CLK,
  132. DM365_SD1_CMD,
  133. DM365_SD1_DATA3,
  134. DM365_SD1_DATA2,
  135. DM365_SD1_DATA1,
  136. DM365_SD1_DATA0,
  137. /* I2C */
  138. DM365_I2C_SDA,
  139. DM365_I2C_SCL,
  140. /* AEMIF */
  141. DM365_AEMIF_AR,
  142. DM365_AEMIF_A3,
  143. DM365_AEMIF_A7,
  144. DM365_AEMIF_D15_8,
  145. DM365_AEMIF_CE0,
  146. /* ASP0 function */
  147. DM365_MCBSP0_BDX,
  148. DM365_MCBSP0_X,
  149. DM365_MCBSP0_BFSX,
  150. DM365_MCBSP0_BDR,
  151. DM365_MCBSP0_R,
  152. DM365_MCBSP0_BFSR,
  153. /* SPI0 */
  154. DM365_SPI0_SCLK,
  155. DM365_SPI0_SDI,
  156. DM365_SPI0_SDO,
  157. DM365_SPI0_SDENA0,
  158. DM365_SPI0_SDENA1,
  159. /* UART */
  160. DM365_UART0_RXD,
  161. DM365_UART0_TXD,
  162. DM365_UART1_RXD,
  163. DM365_UART1_TXD,
  164. DM365_UART1_RTS,
  165. DM365_UART1_CTS,
  166. /* EMAC */
  167. DM365_EMAC_TX_EN,
  168. DM365_EMAC_TX_CLK,
  169. DM365_EMAC_COL,
  170. DM365_EMAC_TXD3,
  171. DM365_EMAC_TXD2,
  172. DM365_EMAC_TXD1,
  173. DM365_EMAC_TXD0,
  174. DM365_EMAC_RXD3,
  175. DM365_EMAC_RXD2,
  176. DM365_EMAC_RXD1,
  177. DM365_EMAC_RXD0,
  178. DM365_EMAC_RX_CLK,
  179. DM365_EMAC_RX_DV,
  180. DM365_EMAC_RX_ER,
  181. DM365_EMAC_CRS,
  182. DM365_EMAC_MDIO,
  183. DM365_EMAC_MDCLK,
  184. /* IRQ muxing */
  185. DM365_INT_EDMA_CC,
  186. DM365_INT_EDMA_TC0_ERR,
  187. DM365_INT_EDMA_TC1_ERR,
  188. DM365_INT_PRTCSS,
  189. DM365_INT_EMAC_RXTHRESH,
  190. DM365_INT_EMAC_RXPULSE,
  191. DM365_INT_EMAC_TXPULSE,
  192. DM365_INT_EMAC_MISCPULSE,
  193. /* EDMA event muxing */
  194. DM365_EVT2_ASP_TX,
  195. DM365_EVT3_ASP_RX,
  196. DM365_EVT26_MMC0_RX,
  197. };
  198. #ifdef CONFIG_DAVINCI_MUX
  199. /* setup pin muxing */
  200. extern int davinci_cfg_reg(unsigned long reg_cfg);
  201. #else
  202. /* boot loader does it all (no warnings from CONFIG_DAVINCI_MUX_WARNINGS) */
  203. static inline int davinci_cfg_reg(unsigned long reg_cfg) { return 0; }
  204. #endif
  205. #endif /* __INC_MACH_MUX_H */