Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * device_id.h -- PCMCIA driver matching helpers
0004  *
0005  * (C) 2003 - 2004  David Woodhouse
0006  * (C) 2003 - 2004  Dominik Brodowski
0007  */
0008 
0009 #ifndef _LINUX_PCMCIA_DEVICE_ID_H
0010 #define _LINUX_PCMCIA_DEVICE_ID_H
0011 
0012 #ifdef __KERNEL__
0013 
0014 #define PCMCIA_DEVICE_MANF_CARD(manf, card) { \
0015     .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
0016             PCMCIA_DEV_ID_MATCH_CARD_ID, \
0017     .manf_id = (manf), \
0018     .card_id = (card), }
0019 
0020 #define PCMCIA_DEVICE_FUNC_ID(func) { \
0021     .match_flags = PCMCIA_DEV_ID_MATCH_FUNC_ID, \
0022     .func_id = (func), }
0023 
0024 #define PCMCIA_DEVICE_PROD_ID1(v1, vh1) { \
0025     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1, \
0026     .prod_id = { (v1), NULL, NULL, NULL }, \
0027     .prod_id_hash = { (vh1), 0, 0, 0 }, }
0028 
0029 #define PCMCIA_DEVICE_PROD_ID2(v2, vh2) { \
0030     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2, \
0031     .prod_id = { NULL, (v2), NULL, NULL },  \
0032     .prod_id_hash = { 0, (vh2), 0, 0 }, }
0033 
0034 #define PCMCIA_DEVICE_PROD_ID3(v3, vh3) { \
0035     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID3, \
0036     .prod_id = { NULL, NULL, (v3), NULL },  \
0037     .prod_id_hash = { 0, 0, (vh3), 0 }, }
0038 
0039 #define PCMCIA_DEVICE_PROD_ID12(v1, v2, vh1, vh2) { \
0040     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0041             PCMCIA_DEV_ID_MATCH_PROD_ID2, \
0042     .prod_id = { (v1), (v2), NULL, NULL }, \
0043     .prod_id_hash = { (vh1), (vh2), 0, 0 }, }
0044 
0045 #define PCMCIA_DEVICE_PROD_ID13(v1, v3, vh1, vh3) { \
0046     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0047             PCMCIA_DEV_ID_MATCH_PROD_ID3, \
0048     .prod_id = { (v1), NULL, (v3), NULL }, \
0049     .prod_id_hash = { (vh1), 0, (vh3), 0 }, }
0050 
0051 #define PCMCIA_DEVICE_PROD_ID14(v1, v4, vh1, vh4) { \
0052     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0053             PCMCIA_DEV_ID_MATCH_PROD_ID4, \
0054     .prod_id = { (v1), NULL, NULL, (v4) }, \
0055     .prod_id_hash = { (vh1), 0, 0, (vh4) }, }
0056 
0057 #define PCMCIA_DEVICE_PROD_ID123(v1, v2, v3, vh1, vh2, vh3) { \
0058     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0059             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0060             PCMCIA_DEV_ID_MATCH_PROD_ID3, \
0061     .prod_id = { (v1), (v2), (v3), NULL },\
0062     .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, }
0063 
0064 #define PCMCIA_DEVICE_PROD_ID124(v1, v2, v4, vh1, vh2, vh4) { \
0065     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0066             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0067             PCMCIA_DEV_ID_MATCH_PROD_ID4, \
0068     .prod_id = { (v1), (v2), NULL, (v4) }, \
0069     .prod_id_hash = { (vh1), (vh2), 0, (vh4) }, }
0070 
0071 #define PCMCIA_DEVICE_PROD_ID134(v1, v3, v4, vh1, vh3, vh4) { \
0072     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0073             PCMCIA_DEV_ID_MATCH_PROD_ID3| \
0074             PCMCIA_DEV_ID_MATCH_PROD_ID4, \
0075     .prod_id = { (v1), NULL, (v3), (v4) }, \
0076     .prod_id_hash = { (vh1), 0, (vh3), (vh4) }, }
0077 
0078 #define PCMCIA_DEVICE_PROD_ID1234(v1, v2, v3, v4, vh1, vh2, vh3, vh4) { \
0079     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0080             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0081             PCMCIA_DEV_ID_MATCH_PROD_ID3| \
0082             PCMCIA_DEV_ID_MATCH_PROD_ID4, \
0083     .prod_id = { (v1), (v2), (v3), (v4) }, \
0084     .prod_id_hash = { (vh1), (vh2), (vh3), (vh4) }, }
0085 
0086 #define PCMCIA_DEVICE_MANF_CARD_PROD_ID1(manf, card, v1, vh1) { \
0087     .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
0088             PCMCIA_DEV_ID_MATCH_CARD_ID| \
0089             PCMCIA_DEV_ID_MATCH_PROD_ID1, \
0090     .manf_id = (manf), \
0091     .card_id = (card), \
0092     .prod_id = { (v1), NULL, NULL, NULL }, \
0093     .prod_id_hash = { (vh1), 0, 0, 0 }, }
0094 
0095 #define PCMCIA_DEVICE_MANF_CARD_PROD_ID3(manf, card, v3, vh3) { \
0096     .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
0097             PCMCIA_DEV_ID_MATCH_CARD_ID| \
0098             PCMCIA_DEV_ID_MATCH_PROD_ID3, \
0099     .manf_id = (manf), \
0100     .card_id = (card), \
0101     .prod_id = { NULL, NULL, (v3), NULL }, \
0102     .prod_id_hash = { 0, 0, (vh3), 0 }, }
0103 
0104 
0105 /* multi-function devices */
0106 
0107 #define PCMCIA_MFC_DEVICE_MANF_CARD(mfc, manf, card) { \
0108     .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
0109             PCMCIA_DEV_ID_MATCH_CARD_ID| \
0110             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0111     .manf_id = (manf), \
0112     .card_id = (card), \
0113     .function = (mfc), }
0114 
0115 #define PCMCIA_MFC_DEVICE_PROD_ID1(mfc, v1, vh1) { \
0116     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0117             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0118     .prod_id = { (v1), NULL, NULL, NULL }, \
0119     .prod_id_hash = { (vh1), 0, 0, 0 }, \
0120     .function = (mfc), }
0121 
0122 #define PCMCIA_MFC_DEVICE_PROD_ID2(mfc, v2, vh2) { \
0123     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0124             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0125     .prod_id = { NULL, (v2), NULL, NULL },  \
0126     .prod_id_hash = { 0, (vh2), 0, 0 }, \
0127     .function = (mfc), }
0128 
0129 #define PCMCIA_MFC_DEVICE_PROD_ID12(mfc, v1, v2, vh1, vh2) { \
0130     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0131             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0132             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0133     .prod_id = { (v1), (v2), NULL, NULL }, \
0134     .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
0135     .function = (mfc), }
0136 
0137 #define PCMCIA_MFC_DEVICE_PROD_ID13(mfc, v1, v3, vh1, vh3) { \
0138     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0139             PCMCIA_DEV_ID_MATCH_PROD_ID3| \
0140             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0141     .prod_id = { (v1), NULL, (v3), NULL }, \
0142     .prod_id_hash = { (vh1), 0, (vh3), 0 }, \
0143     .function = (mfc), }
0144 
0145 #define PCMCIA_MFC_DEVICE_PROD_ID123(mfc, v1, v2, v3, vh1, vh2, vh3) { \
0146     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0147             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0148             PCMCIA_DEV_ID_MATCH_PROD_ID3| \
0149             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0150     .prod_id = { (v1), (v2), (v3), NULL },\
0151     .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
0152     .function = (mfc), }
0153 
0154 /* pseudo multi-function devices */
0155 
0156 #define PCMCIA_PFC_DEVICE_MANF_CARD(mfc, manf, card) { \
0157     .match_flags = PCMCIA_DEV_ID_MATCH_MANF_ID| \
0158             PCMCIA_DEV_ID_MATCH_CARD_ID| \
0159             PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
0160     .manf_id = (manf), \
0161     .card_id = (card), \
0162     .device_no = (mfc), }
0163 
0164 #define PCMCIA_PFC_DEVICE_PROD_ID1(mfc, v1, vh1) { \
0165     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0166             PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
0167     .prod_id = { (v1), NULL, NULL, NULL }, \
0168     .prod_id_hash = { (vh1), 0, 0, 0 }, \
0169     .device_no = (mfc), }
0170 
0171 #define PCMCIA_PFC_DEVICE_PROD_ID2(mfc, v2, vh2) { \
0172     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0173             PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
0174     .prod_id = { NULL, (v2), NULL, NULL },  \
0175     .prod_id_hash = { 0, (vh2), 0, 0 }, \
0176     .device_no = (mfc), }
0177 
0178 #define PCMCIA_PFC_DEVICE_PROD_ID12(mfc, v1, v2, vh1, vh2) { \
0179     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0180             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0181             PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
0182     .prod_id = { (v1), (v2), NULL, NULL }, \
0183     .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
0184     .device_no = (mfc), }
0185 
0186 #define PCMCIA_PFC_DEVICE_PROD_ID13(mfc, v1, v3, vh1, vh3) { \
0187     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0188             PCMCIA_DEV_ID_MATCH_PROD_ID3| \
0189             PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
0190     .prod_id = { (v1), NULL, (v3), NULL }, \
0191     .prod_id_hash = { (vh1), 0, (vh3), 0 }, \
0192     .device_no = (mfc), }
0193 
0194 #define PCMCIA_PFC_DEVICE_PROD_ID123(mfc, v1, v2, v3, vh1, vh2, vh3) { \
0195     .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0196             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0197             PCMCIA_DEV_ID_MATCH_PROD_ID3| \
0198             PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
0199     .prod_id = { (v1), (v2), (v3), NULL },\
0200     .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
0201     .device_no = (mfc), }
0202 
0203 /* cards needing a CIS override */
0204 
0205 #define PCMCIA_DEVICE_CIS_MANF_CARD(manf, card, _cisfile) { \
0206     .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0207             PCMCIA_DEV_ID_MATCH_MANF_ID| \
0208             PCMCIA_DEV_ID_MATCH_CARD_ID, \
0209     .manf_id = (manf), \
0210     .card_id = (card), \
0211     .cisfile = (_cisfile)}
0212 
0213 #define PCMCIA_DEVICE_CIS_PROD_ID12(v1, v2, vh1, vh2, _cisfile) { \
0214     .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0215             PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0216             PCMCIA_DEV_ID_MATCH_PROD_ID2, \
0217     .prod_id = { (v1), (v2), NULL, NULL }, \
0218     .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
0219     .cisfile = (_cisfile)}
0220 
0221 #define PCMCIA_DEVICE_CIS_PROD_ID123(v1, v2, v3, vh1, vh2, vh3, _cisfile) { \
0222     .match_flags = PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0223             PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0224             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0225             PCMCIA_DEV_ID_MATCH_PROD_ID3, \
0226     .prod_id = { (v1), (v2), (v3), NULL },\
0227     .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, \
0228     .cisfile = (_cisfile)}
0229 
0230 
0231 #define PCMCIA_DEVICE_CIS_PROD_ID2(v2, vh2, _cisfile) { \
0232     .match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0233             PCMCIA_DEV_ID_MATCH_PROD_ID2, \
0234     .prod_id = { NULL, (v2), NULL, NULL },  \
0235     .prod_id_hash = { 0, (vh2), 0, 0 }, \
0236     .cisfile = (_cisfile)}
0237 
0238 #define PCMCIA_PFC_DEVICE_CIS_PROD_ID12(mfc, v1, v2, vh1, vh2, _cisfile) { \
0239     .match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0240             PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0241             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0242             PCMCIA_DEV_ID_MATCH_DEVICE_NO, \
0243     .prod_id = { (v1), (v2), NULL, NULL }, \
0244     .prod_id_hash = { (vh1), (vh2), 0, 0 },\
0245     .device_no = (mfc), \
0246     .cisfile = (_cisfile)}
0247 
0248 #define PCMCIA_MFC_DEVICE_CIS_MANF_CARD(mfc, manf, card, _cisfile) { \
0249     .match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0250             PCMCIA_DEV_ID_MATCH_MANF_ID| \
0251             PCMCIA_DEV_ID_MATCH_CARD_ID| \
0252             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0253     .manf_id = (manf), \
0254     .card_id = (card), \
0255     .function = (mfc), \
0256     .cisfile = (_cisfile)}
0257 
0258 #define PCMCIA_MFC_DEVICE_CIS_PROD_ID12(mfc, v1, v2, vh1, vh2, _cisfile) { \
0259     .match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0260             PCMCIA_DEV_ID_MATCH_PROD_ID1| \
0261             PCMCIA_DEV_ID_MATCH_PROD_ID2| \
0262             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0263     .prod_id = { (v1), (v2), NULL, NULL }, \
0264     .prod_id_hash = { (vh1), (vh2), 0, 0 }, \
0265     .function = (mfc), \
0266     .cisfile = (_cisfile)}
0267 
0268 #define PCMCIA_MFC_DEVICE_CIS_PROD_ID4(mfc, v4, vh4, _cisfile) { \
0269     .match_flags =  PCMCIA_DEV_ID_MATCH_FAKE_CIS | \
0270             PCMCIA_DEV_ID_MATCH_PROD_ID4| \
0271             PCMCIA_DEV_ID_MATCH_FUNCTION, \
0272     .prod_id = { NULL, NULL, NULL, (v4) }, \
0273     .prod_id_hash = { 0, 0, 0, (vh4) }, \
0274     .function = (mfc), \
0275     .cisfile = (_cisfile)}
0276 
0277 
0278 #define PCMCIA_DEVICE_NULL { .match_flags = 0, }
0279 
0280 #endif /* __KERNEL__ */
0281 #endif /* _LINUX_PCMCIA_DEVICE_ID_H */