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