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