mux.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. #ifdef CONFIG_DAVINCI_MUX
  128. /* setup pin muxing */
  129. extern int davinci_cfg_reg(unsigned long reg_cfg);
  130. #else
  131. /* boot loader does it all (no warnings from CONFIG_DAVINCI_MUX_WARNINGS) */
  132. static inline int davinci_cfg_reg(unsigned long reg_cfg) { return 0; }
  133. #endif
  134. #endif /* __INC_MACH_MUX_H */