platform-quirks.c 1008 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <linux/kernel.h>
  2. #include <linux/init.h>
  3. #include <asm/setup.h>
  4. #include <asm/bios_ebda.h>
  5. void __init x86_early_init_platform_quirks(void)
  6. {
  7. x86_platform.legacy.i8042 = X86_LEGACY_I8042_EXPECTED_PRESENT;
  8. x86_platform.legacy.rtc = 1;
  9. x86_platform.legacy.reserve_bios_regions = 0;
  10. x86_platform.legacy.devices.pnpbios = 1;
  11. switch (boot_params.hdr.hardware_subarch) {
  12. case X86_SUBARCH_PC:
  13. x86_platform.legacy.reserve_bios_regions = 1;
  14. break;
  15. case X86_SUBARCH_XEN:
  16. case X86_SUBARCH_LGUEST:
  17. x86_platform.legacy.devices.pnpbios = 0;
  18. x86_platform.legacy.rtc = 0;
  19. break;
  20. case X86_SUBARCH_INTEL_MID:
  21. case X86_SUBARCH_CE4100:
  22. x86_platform.legacy.devices.pnpbios = 0;
  23. x86_platform.legacy.rtc = 0;
  24. x86_platform.legacy.i8042 = X86_LEGACY_I8042_PLATFORM_ABSENT;
  25. break;
  26. }
  27. if (x86_platform.set_legacy_features)
  28. x86_platform.set_legacy_features();
  29. }
  30. #if defined(CONFIG_PNPBIOS)
  31. bool __init arch_pnpbios_disabled(void)
  32. {
  33. return x86_platform.legacy.devices.pnpbios == 0;
  34. }
  35. #endif