1// SPDX-License-Identifier: GPL-2.0
2#include <linux/kernel.h>
3#include <linux/init.h>
4#include <linux/pnp.h>
5
6#include <asm/setup.h>
7#include <asm/bios_ebda.h>
8
9void __init x86_early_init_platform_quirks(void)
10{
11 x86_platform.legacy.i8042 = X86_LEGACY_I8042_EXPECTED_PRESENT;
12 x86_platform.legacy.rtc = 1;
13 x86_platform.legacy.warm_reset = 1;
14 x86_platform.legacy.reserve_bios_regions = 0;
15 x86_platform.legacy.devices.pnpbios = 1;
16
17 switch (boot_params.hdr.hardware_subarch) {
18 case X86_SUBARCH_PC:
19 x86_platform.legacy.reserve_bios_regions = 1;
20 break;
21 case X86_SUBARCH_XEN:
22 x86_platform.legacy.devices.pnpbios = 0;
23 x86_platform.legacy.rtc = 0;
24 break;
25 case X86_SUBARCH_INTEL_MID:
26 case X86_SUBARCH_CE4100:
27 x86_platform.legacy.devices.pnpbios = 0;
28 x86_platform.legacy.rtc = 0;
29 x86_platform.legacy.i8042 = X86_LEGACY_I8042_PLATFORM_ABSENT;
30 break;
31 }
32
33 if (x86_platform.set_legacy_features)
34 x86_platform.set_legacy_features();
35}
36
37bool __init x86_pnpbios_disabled(void)
38{
39 return x86_platform.legacy.devices.pnpbios == 0;
40}
41
42#if defined(CONFIG_PNPBIOS)
43bool __init arch_pnpbios_disabled(void)
44{
45 return x86_pnpbios_disabled();
46}
47#endif
48

source code of linux/arch/x86/kernel/platform-quirks.c