device_id.h 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. /*
  2. * Copyright (2003-2004) Dominik Brodowski <linux@brodo.de>
  3. * David Woodhouse
  4. *
  5. * License: GPL v2
  6. */
  7. #define PCMCIA_DEVICE_MANF_CARD(manf, card) { \
  8. .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
  9. PCMCIA_DEV_ID_MATCH_CARD_ID, \
  10. .manf_id = (manf), \
  11. .card_id = (card), }
  12. #define PCMCIA_DEVICE_FUNC_ID(func) { \
  13. .match_flags = PCMCIA_DEV_ID_MATCH_FUNC_ID, \
  14. .func_id = (func), }
  15. #define PCMCIA_DEVICE_PROD_ID1(v1, vh1) { \
  16. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1, \
  17. .prod_id = { (v1), NULL, NULL, NULL }, \
  18. .prod_id_hash = { (vh1), 0, 0, 0 }, }
  19. #define PCMCIA_DEVICE_PROD_ID2(v2, vh2) { \
  20. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2, \
  21. .prod_id = { NULL, (v2), NULL, NULL }, \
  22. .prod_id_hash = { 0, (vh2), 0, 0 }, }
  23. #define PCMCIA_DEVICE_PROD_ID12(v1, v2, vh1, vh2) { \
  24. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  25. PCMCIA_DEV_ID_MATCH_PROD_ID2, \
  26. .prod_id = { (v1), (v2), NULL, NULL }, \
  27. .prod_id_hash = { (vh1), (vh2), 0, 0 }, }
  28. #define PCMCIA_DEVICE_PROD_ID13(v1, v3, vh1, vh3) { \
  29. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  30. PCMCIA_DEV_ID_MATCH_PROD_ID3, \
  31. .prod_id = { (v1), NULL, (v3), NULL }, \
  32. .prod_id_hash = { (vh1), 0, (vh3), 0 }, }
  33. #define PCMCIA_DEVICE_PROD_ID14(v1, v4, vh1, vh4) { \
  34. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  35. PCMCIA_DEV_ID_MATCH_PROD_ID4, \
  36. .prod_id = { (v1), NULL, NULL, (v4) }, \
  37. .prod_id_hash = { (vh1), 0, 0, (vh4) }, }
  38. #define PCMCIA_DEVICE_PROD_ID123(v1, v2, v3, vh1, vh2, vh3) { \
  39. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  40. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  41. PCMCIA_DEV_ID_MATCH_PROD_ID3, \
  42. .prod_id = { (v1), (v2), (v3), NULL },\
  43. .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, }
  44. #define PCMCIA_DEVICE_PROD_ID124(v1, v2, v4, vh1, vh2, vh4) { \
  45. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  46. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  47. PCMCIA_DEV_ID_MATCH_PROD_ID4, \
  48. .prod_id = { (v1), (v2), NULL, (v4) }, \
  49. .prod_id_hash = { (vh1), (vh2), 0, (vh4) }, }
  50. #define PCMCIA_DEVICE_PROD_ID134(v1, v3, v4, vh1, vh3, vh4) { \
  51. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  52. PCMCIA_DEV_ID_MATCH_PROD_ID3| \
  53. PCMCIA_DEV_ID_MATCH_PROD_ID4, \
  54. .prod_id = { (v1), NULL, (v3), (v4) }, \
  55. .prod_id_hash = { (vh1), 0, (vh3), (vh4) }, }
  56. #define PCMCIA_DEVICE_PROD_ID1234(v1, v2, v3, v4, vh1, vh2, vh3, vh4) { \
  57. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  58. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  59. PCMCIA_DEV_ID_MATCH_PROD_ID3| \
  60. PCMCIA_DEV_ID_MATCH_PROD_ID4, \
  61. .prod_id = { (v1), (v2), (v3), (v4) }, \
  62. .prod_id_hash = { (vh1), (vh2), (vh3), (vh4) }, }
  63. #define PCMCIA_DEVICE_MANF_CARD_PROD_ID1(manf, card, v1, vh1) { \
  64. .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
  65. PCMCIA_DEV_ID_MATCH_CARD_ID| \
  66. PCMCIA_DEV_ID_MATCH_PROD_ID1, \
  67. .manf_id = (manf), \
  68. .card_id = (card), \
  69. .prod_id = { (v1), NULL, NULL, NULL }, \
  70. .prod_id_hash = { (vh1), 0, 0, 0 }, }
  71. /* multi-function devices */
  72. #define PCMCIA_MFC_DEVICE_MANF_CARD(mfc, manf, card) { \
  73. .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
  74. PCMCIA_DEV_ID_MATCH_CARD_ID| \
  75. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  76. .manf_id = (manf), \
  77. .card_id = (card), \
  78. .function = (mfc), }
  79. #define PCMCIA_MFC_DEVICE_PROD_ID1(mfc, v1, vh1) { \
  80. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  81. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  82. .prod_id = { (v1), NULL, NULL, NULL }, \
  83. .prod_id_hash = { (vh1), 0, 0, 0 }, \
  84. .function = (mfc), }
  85. #define PCMCIA_MFC_DEVICE_PROD_ID2(mfc, v2, vh2) { \
  86. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  87. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  88. .prod_id = { NULL, (v2), NULL, NULL }, \
  89. .prod_id_hash = { 0, (vh2), 0, 0 }, \
  90. .function = (mfc), }
  91. #define PCMCIA_MFC_DEVICE_PROD_ID12(mfc, v1, v2, vh1, vh2) { \
  92. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  93. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  94. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  95. .prod_id = { (v1), (v2), NULL, NULL }, \
  96. .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
  97. .function = (mfc), }
  98. #define PCMCIA_MFC_DEVICE_PROD_ID13(mfc, v1, v3, vh1, vh3) { \
  99. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  100. PCMCIA_DEV_ID_MATCH_PROD_ID3| \
  101. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  102. .prod_id = { (v1), NULL, (v3), NULL }, \
  103. .prod_id_hash = { (vh1), 0, (vh3), 0 }, \
  104. .function = (mfc), }
  105. #define PCMCIA_MFC_DEVICE_PROD_ID123(mfc, v1, v2, v3, vh1, vh2, vh3) { \
  106. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  107. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  108. PCMCIA_DEV_ID_MATCH_PROD_ID3| \
  109. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  110. .prod_id = { (v1), (v2), (v3), NULL },\
  111. .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
  112. .function = (mfc), }
  113. /* pseudo multi-function devices */
  114. #define PCMCIA_PFC_DEVICE_MANF_CARD(mfc, manf, card) { \
  115. .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
  116. PCMCIA_DEV_ID_MATCH_CARD_ID| \
  117. PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
  118. .manf_id = (manf), \
  119. .card_id = (card), \
  120. .device_no = (mfc), }
  121. #define PCMCIA_PFC_DEVICE_PROD_ID1(mfc, v1, vh1) { \
  122. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  123. PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
  124. .prod_id = { (v1), NULL, NULL, NULL }, \
  125. .prod_id_hash = { (vh1), 0, 0, 0 }, \
  126. .device_no = (mfc), }
  127. #define PCMCIA_PFC_DEVICE_PROD_ID2(mfc, v2, vh2) { \
  128. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  129. PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
  130. .prod_id = { NULL, (v2), NULL, NULL }, \
  131. .prod_id_hash = { 0, (vh2), 0, 0 }, \
  132. .device_no = (mfc), }
  133. #define PCMCIA_PFC_DEVICE_PROD_ID12(mfc, v1, v2, vh1, vh2) { \
  134. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  135. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  136. PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
  137. .prod_id = { (v1), (v2), NULL, NULL }, \
  138. .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
  139. .device_no = (mfc), }
  140. #define PCMCIA_PFC_DEVICE_PROD_ID13(mfc, v1, v3, vh1, vh3) { \
  141. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  142. PCMCIA_DEV_ID_MATCH_PROD_ID3| \
  143. PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
  144. .prod_id = { (v1), NULL, (v3), NULL }, \
  145. .prod_id_hash = { (vh1), 0, (vh3), 0 }, \
  146. .device_no = (mfc), }
  147. #define PCMCIA_PFC_DEVICE_PROD_ID123(mfc, v1, v2, v3, vh1, vh2, vh3) { \
  148. .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  149. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  150. PCMCIA_DEV_ID_MATCH_PROD_ID3| \
  151. PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
  152. .prod_id = { (v1), (v2), (v3), NULL },\
  153. .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
  154. .device_no = (mfc), }
  155. /* cards needing a CIS override */
  156. #define PCMCIA_DEVICE_CIS_MANF_CARD(manf, card, _cisfile) { \
  157. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  158. PCMCIA_DEV_ID_MATCH_MANF_ID| \
  159. PCMCIA_DEV_ID_MATCH_CARD_ID, \
  160. .manf_id = (manf), \
  161. .card_id = (card), \
  162. .cisfile = (_cisfile)}
  163. #define PCMCIA_DEVICE_CIS_PROD_ID12(v1, v2, vh1, vh2, _cisfile) { \
  164. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  165. PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  166. PCMCIA_DEV_ID_MATCH_PROD_ID2, \
  167. .prod_id = { (v1), (v2), NULL, NULL }, \
  168. .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
  169. .cisfile = (_cisfile)}
  170. #define PCMCIA_DEVICE_CIS_PROD_ID123(v1, v2, v3, vh1, vh2, vh3, _cisfile) { \
  171. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  172. PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  173. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  174. PCMCIA_DEV_ID_MATCH_PROD_ID3, \
  175. .prod_id = { (v1), (v2), (v3), NULL },\
  176. .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
  177. .cisfile = (_cisfile)}
  178. #define PCMCIA_DEVICE_CIS_PROD_ID2(v2, vh2, _cisfile) { \
  179. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  180. PCMCIA_DEV_ID_MATCH_PROD_ID2, \
  181. .prod_id = { NULL, (v2), NULL, NULL }, \
  182. .prod_id_hash = { 0, (vh2), 0, 0 }, \
  183. .cisfile = (_cisfile)}
  184. #define PCMCIA_PFC_DEVICE_CIS_PROD_ID12(mfc, v1, v2, vh1, vh2, _cisfile) { \
  185. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  186. PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  187. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  188. PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
  189. .prod_id = { (v1), (v2), NULL, NULL }, \
  190. .prod_id_hash = { (vh1), (vh2), 0, 0 },\
  191. .device_no = (mfc), \
  192. .cisfile = (_cisfile)}
  193. #define PCMCIA_MFC_DEVICE_CIS_MANF_CARD(mfc, manf, card, _cisfile) { \
  194. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  195. PCMCIA_DEV_ID_MATCH_MANF_ID| \
  196. PCMCIA_DEV_ID_MATCH_CARD_ID| \
  197. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  198. .manf_id = (manf), \
  199. .card_id = (card), \
  200. .function = (mfc), \
  201. .cisfile = (_cisfile)}
  202. #define PCMCIA_MFC_DEVICE_CIS_PROD_ID12(mfc, v1, v2, vh1, vh2, _cisfile) { \
  203. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  204. PCMCIA_DEV_ID_MATCH_PROD_ID1| \
  205. PCMCIA_DEV_ID_MATCH_PROD_ID2| \
  206. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  207. .prod_id = { (v1), (v2), NULL, NULL }, \
  208. .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
  209. .function = (mfc), \
  210. .cisfile = (_cisfile)}
  211. #define PCMCIA_MFC_DEVICE_CIS_PROD_ID4(mfc, v4, vh4, _cisfile) { \
  212. .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
  213. PCMCIA_DEV_ID_MATCH_PROD_ID4| \
  214. PCMCIA_DEV_ID_MATCH_FUNCTION, \
  215. .prod_id = { NULL, NULL, NULL, (v4) }, \
  216. .prod_id_hash = { 0, 0, 0, (vh4) }, \
  217. .function = (mfc), \
  218. .cisfile = (_cisfile)}
  219. #define PCMCIA_DEVICE_NULL { .match_flags = 0, }