1 #ifndef __DEVICES_FILTER_H
2 #define __DEVICES_FILTER_H
5 #define USB_ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
10 const char *manufacturer;
15 static usb_parameter not_skip_device_list[] = {
16 {0x12D1, 0x1001, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", "HUAWEI Mobile",NULL},
17 // {0x12D1, 0x1411, "HUAWEI Technology", "HUAWEI Mobile",NULL},
20 static usb_parameter skip_device_list[] = {
21 {0x12D1, 0x1DA1, NULL, NULL, NULL},
22 {0x12D1, 0x1D09, NULL, NULL, NULL},
23 {0x12D1, 0x1520, NULL, NULL, NULL},
24 {0x12D1, 0x14AC, NULL, NULL, NULL},
25 {0x12D1, 0x1465, NULL, NULL, NULL},
26 {0x12D1, 0x1446, NULL, NULL, NULL},
27 {0x12D1, 0x1414, NULL, NULL, NULL},
28 {0x12D1, 0x140C, NULL, NULL, NULL},
29 {0x12D1, 0x1003, NULL, NULL, NULL},
30 {0x12D1, 0x1001, NULL, NULL, NULL},
31 {0x12D1, 0x1505, NULL, NULL, NULL},
32 {0x12D1, 0x14FE, NULL, NULL, NULL},
33 {0x12D1, 0x1506, NULL, NULL, NULL},
34 {0x19D2, 0xFFF5, NULL, NULL, NULL},
35 {0x19D2, 0xFFF1, NULL, NULL, NULL},
36 {0x19D2, 0x2000, NULL, NULL, NULL},
37 {0x19D2, 0x0120, NULL, NULL, NULL},
38 {0x19D2, 0x0094, NULL, NULL, NULL},
39 {0x19D2, 0x0079, NULL, NULL, NULL},
40 {0x19D2, 0x0073, NULL, NULL, NULL},
41 {0x19D2, 0x0033, NULL, NULL, NULL},
42 {0x19D2, 0x0031, NULL, NULL, NULL},
43 {0x19D2, 0x0026, NULL, NULL, NULL},
44 {0x19D2, 0x0017, NULL, NULL, NULL},
45 {0x19D2, 0x0015, NULL, NULL, NULL},
46 {0x19D2, 0x0154, NULL, NULL, NULL},
47 {0x19D2, 0x2003, NULL, NULL, NULL},
48 {0x19D2, 0x0151, NULL, NULL, NULL},
49 {0x04CC, 0x225A, NULL, NULL, NULL},
50 {0x04CC, 0x2259, NULL, NULL, NULL},
52 {0x1410, 0x5010, NULL, NULL, NULL},
53 {0x1410, 0x4400, NULL, NULL, NULL},
55 {0x1D09, 0xAEF4, NULL, NULL, NULL},
57 {0x1BBB, 0xF000, NULL, NULL, NULL},
58 {0x1BBB, 0x0017, NULL, NULL, NULL},
61 // {0x05C6, -1, NULL, NULL, NULL},
62 {0x05C6, 0x1000, NULL, NULL, NULL},
63 {0x05C6, 0xF000, NULL, NULL, NULL},
64 {0x05C6, 0x0016, NULL, NULL, NULL},
65 {0x1AB7, 0x5700, NULL, NULL, NULL},
66 {0x20B9, 0x1682, NULL, NULL, NULL},
68 {0x028A, 0x1006, NULL, NULL, NULL},
70 {0x1C9E, 0x6061, NULL, NULL, NULL},
71 {0x1C9E, 0x6000, NULL, NULL, NULL},
72 {0x1C9E, 0x1001, NULL, NULL, NULL},
74 {0x1C9E, 0xF000, NULL, NULL, NULL},
75 {0x1C9E, 0x9605, NULL, NULL, NULL},
76 {0x21F5, 0x2008, NULL, NULL, NULL},
77 {0x21F5, 0x1000, NULL, NULL, NULL},
79 {0x6000, 0x1000, NULL, NULL, NULL},
81 {0x0685, 0x7000, NULL, NULL, NULL},
83 {0x20A6, 0xF00E, NULL, NULL, NULL},
84 {0x20A6, 0x1105, NULL, NULL, NULL},
85 {0x1614, 0x0800, NULL, NULL, NULL},
87 {0x1A8D, 0x2000, NULL, NULL, NULL},
88 {0x1C9E, 0x9913, NULL, NULL, NULL},
89 {0x1C9E, 0x9915, NULL, NULL, NULL},
90 {0x230D, 0x000C, NULL, NULL, NULL},
91 {0x230D, 0x0003, NULL, NULL, NULL},
92 {0x230D, 0x0001, NULL, NULL, NULL},
93 {0x257A, 0x2601, NULL, NULL, NULL},
94 {0x1E89, 0x1E16, NULL, NULL, NULL},
95 {0x1C9E, 0x9800, NULL, NULL, NULL},
96 {0x1dbc, 0x0669, NULL, NULL, NULL},
97 {0x2020, 0x0002, NULL, NULL, NULL},
98 {0x2020, 0x4000, NULL, NULL, NULL},
99 {0x1C9E, 0x9916, NULL, NULL, NULL},
100 {0x1C9E, 0x9918, NULL, NULL, NULL},
101 {0x2001, 0xA80B, NULL, NULL, NULL},
102 {0x2001, 0x7D00, NULL, NULL, NULL},
103 {0x0421, 0x0610, NULL, NULL, NULL},
104 {0x0af0, 0xd157, NULL, NULL, NULL},
105 {0x19d2, 0x1216, NULL, NULL, NULL},
106 {0x19d2, 0x1218, NULL, NULL, NULL},
107 {0x05c6, 0x9000, NULL, NULL, NULL},
108 {0x19d2, 0x0016, NULL, NULL, NULL},//MF110
109 {0x1C9E, 0x9914, NULL, NULL, NULL},//SMART BRO WM66E
110 {0x2077, 0xF000, NULL, NULL, NULL},
111 {0x2077, 0xA000, NULL, NULL, NULL},//beyond
112 {0x12d1, 0x140b, NULL, NULL, NULL},//EC122 India
113 {0x19D2, 0x1266, NULL, NULL, NULL},//MF190U
114 {0x19D2, 0x1514, NULL, NULL, NULL},
115 {0x19D2, 0x1515, NULL, NULL, NULL},//MF195
116 {0x1bbb, 0xf017, NULL, NULL, NULL},
117 {0x19d2, 0x0117, NULL, NULL, NULL},
118 {0x1C9E, 0xF001, NULL, NULL, NULL},
119 {0x1C9E, 0x9801, NULL, NULL, NULL},
126 static int __must_check inline match_for_each_entry(usb_parameter* pusbp1, usb_parameter* pusbp2)
128 if( pusbp1->vid>=0 && pusbp1->vid!=pusbp2->vid)
131 if( pusbp1->pid>=0 && pusbp1->pid!=pusbp2->pid)
134 if( pusbp1->manufacturer )
136 if( pusbp2->manufacturer==NULL )
138 else if( strcmp(pusbp1->manufacturer, pusbp2->manufacturer) )
142 if( pusbp1->product )
144 if( pusbp2->product==NULL )
146 else if( strcmp(pusbp1->product, pusbp2->product) )
157 static int is_skip_device(usb_parameter *pusbp)
161 在 not_skip_device_list 中寻找匹配,找到则该 device 正常流程
162 在 skip_device_list 中寻找匹配,找到则该 device 跳过attach
163 对于不在 skip_device_list,not_skip_device_list,则正常流程
165 for(i = 0; i < USB_ARRAY_SIZE(not_skip_device_list); i++)
167 if(match_for_each_entry(not_skip_device_list+i, pusbp)){
172 for(i = 0; i < USB_ARRAY_SIZE(skip_device_list); i++)
174 if(match_for_each_entry(skip_device_list+i, pusbp)){
182 #endif //__DEVICES_FILTER_H