3
3
*
4
4
* Check to see if the given machine has a known bad ACPI BIOS
5
5
* or if the BIOS is too old.
6
- * Check given machine against acpi_osi_dmi_table [].
6
+ * Check given machine against acpi_rev_dmi_table [].
7
7
*
8
8
* Copyright (C) 2004 Len Brown <[email protected] >
9
9
* Copyright (C) 2002 Andy Grover <[email protected] >
@@ -47,7 +47,7 @@ struct acpi_blacklist_item {
47
47
u32 is_critical_error ;
48
48
};
49
49
50
- static struct dmi_system_id acpi_osi_dmi_table [] __initdata ;
50
+ static struct dmi_system_id acpi_rev_dmi_table [] __initdata ;
51
51
52
52
/*
53
53
* POLICY: If *anything* doesn't work, put it on the blacklist.
@@ -128,41 +128,12 @@ int __init acpi_blacklisted(void)
128
128
}
129
129
}
130
130
131
- dmi_check_system (acpi_osi_dmi_table );
131
+ (void )early_acpi_osi_init ();
132
+ dmi_check_system (acpi_rev_dmi_table );
132
133
133
134
return blacklisted ;
134
135
}
135
136
#ifdef CONFIG_DMI
136
- static int __init dmi_enable_osi_darwin (const struct dmi_system_id * d )
137
- {
138
- acpi_osi_dmi_darwin (true, d );
139
- return 0 ;
140
- }
141
- static int __init dmi_enable_osi_linux (const struct dmi_system_id * d )
142
- {
143
- acpi_osi_dmi_linux (true, d );
144
- return 0 ;
145
- }
146
- static int __init dmi_disable_osi_vista (const struct dmi_system_id * d )
147
- {
148
- pr_notice (PREFIX "DMI detected: %s\n" , d -> ident );
149
- acpi_osi_setup ("!Windows 2006" );
150
- acpi_osi_setup ("!Windows 2006 SP1" );
151
- acpi_osi_setup ("!Windows 2006 SP2" );
152
- return 0 ;
153
- }
154
- static int __init dmi_disable_osi_win7 (const struct dmi_system_id * d )
155
- {
156
- pr_notice (PREFIX "DMI detected: %s\n" , d -> ident );
157
- acpi_osi_setup ("!Windows 2009" );
158
- return 0 ;
159
- }
160
- static int __init dmi_disable_osi_win8 (const struct dmi_system_id * d )
161
- {
162
- pr_notice (PREFIX "DMI detected: %s\n" , d -> ident );
163
- acpi_osi_setup ("!Windows 2012" );
164
- return 0 ;
165
- }
166
137
#ifdef CONFIG_ACPI_REV_OVERRIDE_POSSIBLE
167
138
static int __init dmi_enable_rev_override (const struct dmi_system_id * d )
168
139
{
@@ -173,187 +144,7 @@ static int __init dmi_enable_rev_override(const struct dmi_system_id *d)
173
144
}
174
145
#endif
175
146
176
- static struct dmi_system_id acpi_osi_dmi_table [] __initdata = {
177
- {
178
- .callback = dmi_disable_osi_vista ,
179
- .ident = "Fujitsu Siemens" ,
180
- .matches = {
181
- DMI_MATCH (DMI_SYS_VENDOR , "FUJITSU SIEMENS" ),
182
- DMI_MATCH (DMI_PRODUCT_NAME , "ESPRIMO Mobile V5505" ),
183
- },
184
- },
185
- {
186
- /*
187
- * There have a NVIF method in MSI GX723 DSDT need call by Nvidia
188
- * driver (e.g. nouveau) when user press brightness hotkey.
189
- * Currently, nouveau driver didn't do the job and it causes there
190
- * have a infinite while loop in DSDT when user press hotkey.
191
- * We add MSI GX723's dmi information to this table for workaround
192
- * this issue.
193
- * Will remove MSI GX723 from the table after nouveau grows support.
194
- */
195
- .callback = dmi_disable_osi_vista ,
196
- .ident = "MSI GX723" ,
197
- .matches = {
198
- DMI_MATCH (DMI_SYS_VENDOR , "Micro-Star International" ),
199
- DMI_MATCH (DMI_PRODUCT_NAME , "GX723" ),
200
- },
201
- },
202
- {
203
- .callback = dmi_disable_osi_vista ,
204
- .ident = "Sony VGN-NS10J_S" ,
205
- .matches = {
206
- DMI_MATCH (DMI_SYS_VENDOR , "Sony Corporation" ),
207
- DMI_MATCH (DMI_PRODUCT_NAME , "VGN-NS10J_S" ),
208
- },
209
- },
210
- {
211
- .callback = dmi_disable_osi_vista ,
212
- .ident = "Sony VGN-SR290J" ,
213
- .matches = {
214
- DMI_MATCH (DMI_SYS_VENDOR , "Sony Corporation" ),
215
- DMI_MATCH (DMI_PRODUCT_NAME , "VGN-SR290J" ),
216
- },
217
- },
218
- {
219
- .callback = dmi_disable_osi_vista ,
220
- .ident = "VGN-NS50B_L" ,
221
- .matches = {
222
- DMI_MATCH (DMI_SYS_VENDOR , "Sony Corporation" ),
223
- DMI_MATCH (DMI_PRODUCT_NAME , "VGN-NS50B_L" ),
224
- },
225
- },
226
- {
227
- .callback = dmi_disable_osi_vista ,
228
- .ident = "VGN-SR19XN" ,
229
- .matches = {
230
- DMI_MATCH (DMI_SYS_VENDOR , "Sony Corporation" ),
231
- DMI_MATCH (DMI_PRODUCT_NAME , "VGN-SR19XN" ),
232
- },
233
- },
234
- {
235
- .callback = dmi_disable_osi_vista ,
236
- .ident = "Toshiba Satellite L355" ,
237
- .matches = {
238
- DMI_MATCH (DMI_SYS_VENDOR , "TOSHIBA" ),
239
- DMI_MATCH (DMI_PRODUCT_VERSION , "Satellite L355" ),
240
- },
241
- },
242
- {
243
- .callback = dmi_disable_osi_win7 ,
244
- .ident = "ASUS K50IJ" ,
245
- .matches = {
246
- DMI_MATCH (DMI_SYS_VENDOR , "ASUSTeK Computer Inc." ),
247
- DMI_MATCH (DMI_PRODUCT_NAME , "K50IJ" ),
248
- },
249
- },
250
- {
251
- .callback = dmi_disable_osi_vista ,
252
- .ident = "Toshiba P305D" ,
253
- .matches = {
254
- DMI_MATCH (DMI_SYS_VENDOR , "TOSHIBA" ),
255
- DMI_MATCH (DMI_PRODUCT_NAME , "Satellite P305D" ),
256
- },
257
- },
258
- {
259
- .callback = dmi_disable_osi_vista ,
260
- .ident = "Toshiba NB100" ,
261
- .matches = {
262
- DMI_MATCH (DMI_SYS_VENDOR , "TOSHIBA" ),
263
- DMI_MATCH (DMI_PRODUCT_NAME , "NB100" ),
264
- },
265
- },
266
-
267
- /*
268
- * The wireless hotkey does not work on those machines when
269
- * returning true for _OSI("Windows 2012")
270
- */
271
- {
272
- .callback = dmi_disable_osi_win8 ,
273
- .ident = "Dell Inspiron 7737" ,
274
- .matches = {
275
- DMI_MATCH (DMI_SYS_VENDOR , "Dell Inc." ),
276
- DMI_MATCH (DMI_PRODUCT_NAME , "Inspiron 7737" ),
277
- },
278
- },
279
- {
280
- .callback = dmi_disable_osi_win8 ,
281
- .ident = "Dell Inspiron 7537" ,
282
- .matches = {
283
- DMI_MATCH (DMI_SYS_VENDOR , "Dell Inc." ),
284
- DMI_MATCH (DMI_PRODUCT_NAME , "Inspiron 7537" ),
285
- },
286
- },
287
- {
288
- .callback = dmi_disable_osi_win8 ,
289
- .ident = "Dell Inspiron 5437" ,
290
- .matches = {
291
- DMI_MATCH (DMI_SYS_VENDOR , "Dell Inc." ),
292
- DMI_MATCH (DMI_PRODUCT_NAME , "Inspiron 5437" ),
293
- },
294
- },
295
- {
296
- .callback = dmi_disable_osi_win8 ,
297
- .ident = "Dell Inspiron 3437" ,
298
- .matches = {
299
- DMI_MATCH (DMI_SYS_VENDOR , "Dell Inc." ),
300
- DMI_MATCH (DMI_PRODUCT_NAME , "Inspiron 3437" ),
301
- },
302
- },
303
- {
304
- .callback = dmi_disable_osi_win8 ,
305
- .ident = "Dell Vostro 3446" ,
306
- .matches = {
307
- DMI_MATCH (DMI_SYS_VENDOR , "Dell Inc." ),
308
- DMI_MATCH (DMI_PRODUCT_NAME , "Vostro 3446" ),
309
- },
310
- },
311
- {
312
- .callback = dmi_disable_osi_win8 ,
313
- .ident = "Dell Vostro 3546" ,
314
- .matches = {
315
- DMI_MATCH (DMI_SYS_VENDOR , "Dell Inc." ),
316
- DMI_MATCH (DMI_PRODUCT_NAME , "Vostro 3546" ),
317
- },
318
- },
319
-
320
- /*
321
- * BIOS invocation of _OSI(Linux) is almost always a BIOS bug.
322
- * Linux ignores it, except for the machines enumerated below.
323
- */
324
-
325
- /*
326
- * Without this this EEEpc exports a non working WMI interface, with
327
- * this it exports a working "good old" eeepc_laptop interface, fixing
328
- * both brightness control, and rfkill not working.
329
- */
330
- {
331
- .callback = dmi_enable_osi_linux ,
332
- .ident = "Asus EEE PC 1015PX" ,
333
- .matches = {
334
- DMI_MATCH (DMI_SYS_VENDOR , "ASUSTeK Computer INC." ),
335
- DMI_MATCH (DMI_PRODUCT_NAME , "1015PX" ),
336
- },
337
- },
338
-
339
- /*
340
- * Enable _OSI("Darwin") for all apple platforms.
341
- */
342
- {
343
- .callback = dmi_enable_osi_darwin ,
344
- .ident = "Apple hardware" ,
345
- .matches = {
346
- DMI_MATCH (DMI_SYS_VENDOR , "Apple Inc." ),
347
- },
348
- },
349
- {
350
- .callback = dmi_enable_osi_darwin ,
351
- .ident = "Apple hardware" ,
352
- .matches = {
353
- DMI_MATCH (DMI_SYS_VENDOR , "Apple Computer, Inc." ),
354
- },
355
- },
356
-
147
+ static struct dmi_system_id acpi_rev_dmi_table [] __initdata = {
357
148
#ifdef CONFIG_ACPI_REV_OVERRIDE_POSSIBLE
358
149
/*
359
150
* DELL XPS 13 (2015) switches sound between HDA and I2S
0 commit comments