/drivers/staging/cxt1e1/sbeid.c

https://bitbucket.org/wisechild/galaxy-nexus · C · 217 lines · 160 code · 15 blank · 42 comment · 5 complexity · 51fa69508e31e33194267746cdc441da MD5 · raw file

  1. /* Copyright (C) 2005 SBE, Inc.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation; either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. */
  13. #include <linux/types.h>
  14. #include "pmcc4_sysdep.h"
  15. #include "sbecom_inline_linux.h"
  16. #include "libsbew.h"
  17. #include "pmcc4_private.h"
  18. #include "pmcc4.h"
  19. #include "sbe_bid.h"
  20. #ifdef SBE_INCLUDE_SYMBOLS
  21. #define STATIC
  22. #else
  23. #define STATIC static
  24. #endif
  25. char *
  26. sbeid_get_bdname (ci_t * ci)
  27. {
  28. char *np = 0;
  29. switch (ci->brd_id)
  30. {
  31. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1):
  32. np = "wanPTMC-256T3 <E1>";
  33. break;
  34. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1):
  35. np = "wanPTMC-256T3 <T1>";
  36. break;
  37. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1):
  38. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1_L):
  39. np = "wanPMC-C4T1E1";
  40. break;
  41. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1):
  42. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1_L):
  43. np = "wanPMC-C2T1E1";
  44. break;
  45. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1):
  46. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1_L):
  47. np = "wanPMC-C1T1E1";
  48. break;
  49. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1):
  50. np = "wanPCI-C4T1E1";
  51. break;
  52. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1):
  53. np = "wanPCI-C2T1E1";
  54. break;
  55. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1):
  56. np = "wanPCI-C1T1E1";
  57. break;
  58. default:
  59. /*** np = "<unknown>"; ***/
  60. np = "wanPCI-CxT1E1";
  61. break;
  62. }
  63. return np;
  64. }
  65. /* given the presetting of brd_id, set the corresponding hdw_id */
  66. void
  67. sbeid_set_hdwbid (ci_t * ci)
  68. {
  69. /*
  70. * set SBE's unique hardware identification (for legacy boards might not
  71. * have this register implemented)
  72. */
  73. switch (ci->brd_id)
  74. {
  75. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1):
  76. ci->hdw_bid = SBE_BID_256T3_E1; /* 0x46 - SBE wanPTMC-256T3 (E1
  77. * Version) */
  78. break;
  79. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1):
  80. ci->hdw_bid = SBE_BID_256T3_T1; /* 0x42 - SBE wanPTMC-256T3 (T1
  81. * Version) */
  82. break;
  83. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1):
  84. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1_L):
  85. /*
  86. * This Board ID is a generic identification. Use the found number
  87. * of ports to further define this hardware.
  88. */
  89. switch (ci->max_port)
  90. {
  91. default: /* shouldn't need a default, but have one
  92. * anyway */
  93. case 4:
  94. ci->hdw_bid = SBE_BID_PMC_C4T1E1; /* 0xC4 - SBE wanPMC-C4T1E1 */
  95. break;
  96. case 2:
  97. ci->hdw_bid = SBE_BID_PMC_C2T1E1; /* 0xC2 - SBE wanPMC-C2T1E1 */
  98. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1);
  99. break;
  100. case 1:
  101. ci->hdw_bid = SBE_BID_PMC_C1T1E1; /* 0xC1 - SBE wanPMC-C1T1E1 */
  102. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1);
  103. break;
  104. }
  105. break;
  106. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1):
  107. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1_L):
  108. ci->hdw_bid = SBE_BID_PMC_C2T1E1; /* 0xC2 - SBE wanPMC-C2T1E1 */
  109. break;
  110. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1):
  111. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1_L):
  112. ci->hdw_bid = SBE_BID_PMC_C1T1E1; /* 0xC1 - SBE wanPMC-C1T1E1 */
  113. break;
  114. #ifdef SBE_PMCC4_ENABLE
  115. /*
  116. * This case is entered as a result of the inability to obtain the
  117. * <bid> from the board's EEPROM. Assume a PCI board and set
  118. * <hdsbid> according to the number ofr found ports.
  119. */
  120. case 0:
  121. /* start by assuming 4-port for ZERO casing */
  122. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
  123. /* drop thru to set hdw_bid and alternate PCI CxT1E1 settings */
  124. #endif
  125. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1):
  126. /*
  127. * This Board ID is a generic identification. Use the number of
  128. * found ports to further define this hardware.
  129. */
  130. switch (ci->max_port)
  131. {
  132. default: /* shouldn't need a default, but have one
  133. * anyway */
  134. case 4:
  135. ci->hdw_bid = SBE_BID_PCI_C4T1E1; /* 0x04 - SBE wanPCI-C4T1E1 */
  136. break;
  137. case 2:
  138. ci->hdw_bid = SBE_BID_PCI_C2T1E1; /* 0x02 - SBE wanPCI-C2T1E1 */
  139. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1);
  140. break;
  141. case 1:
  142. ci->hdw_bid = SBE_BID_PCI_C1T1E1; /* 0x01 - SBE wanPCI-C1T1E1 */
  143. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1);
  144. break;
  145. }
  146. break;
  147. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1):
  148. ci->hdw_bid = SBE_BID_PCI_C2T1E1; /* 0x02 - SBE wanPCI-C2T1E1 */
  149. break;
  150. case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1):
  151. ci->hdw_bid = SBE_BID_PCI_C1T1E1; /* 0x01 - SBE wanPCI-C1T1E1 */
  152. break;
  153. default:
  154. /*** bid = "<unknown>"; ***/
  155. ci->hdw_bid = SBE_BID_PMC_C4T1E1; /* 0x41 - SBE wanPTMC-C4T1E1 */
  156. break;
  157. }
  158. }
  159. /* given the presetting of hdw_bid, set the corresponding brd_id */
  160. void
  161. sbeid_set_bdtype (ci_t * ci)
  162. {
  163. /* set SBE's unique PCI VENDOR/DEVID */
  164. switch (ci->hdw_bid)
  165. {
  166. case SBE_BID_C1T3: /* SBE wanPMC-C1T3 */
  167. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T3);
  168. break;
  169. case SBE_BID_C24TE1: /* SBE wanPTMC-C24TE1 */
  170. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_C24TE1);
  171. break;
  172. case SBE_BID_256T3_E1: /* SBE wanPTMC-256T3 E1 Version */
  173. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_E1);
  174. break;
  175. case SBE_BID_256T3_T1: /* SBE wanPTMC-256T3 T1 Version */
  176. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPTMC_256T3_T1);
  177. break;
  178. case SBE_BID_PMC_C4T1E1: /* 0xC4 - SBE wanPMC-C4T1E1 */
  179. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C4T1E1);
  180. break;
  181. case SBE_BID_PMC_C2T1E1: /* 0xC2 - SBE wanPMC-C2T1E1 */
  182. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C2T1E1);
  183. break;
  184. case SBE_BID_PMC_C1T1E1: /* 0xC1 - SBE wanPMC-C1T1E1 */
  185. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1);
  186. break;
  187. case SBE_BID_PCI_C4T1E1: /* 0x04 - SBE wanPCI-C4T1E1 */
  188. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
  189. break;
  190. case SBE_BID_PCI_C2T1E1: /* 0x02 - SBE wanPCI-C2T1E1 */
  191. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C2T1E1);
  192. break;
  193. case SBE_BID_PCI_C1T1E1: /* 0x01 - SBE wanPCI-C1T1E1 */
  194. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C1T1E1);
  195. break;
  196. default:
  197. /*** hdw_bid = "<unknown>"; ***/
  198. ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
  199. break;
  200. }
  201. }
  202. /*** End-of-File ***/