diff options
Diffstat (limited to 'arch/x86/include/asm/x86_init.h')
| -rw-r--r-- | arch/x86/include/asm/x86_init.h | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index 1ae89a2721d6..4dcdf74dfed8 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h @@ -142,6 +142,44 @@ struct x86_cpuinit_ops {  struct timespec;  /** + * struct x86_legacy_devices - legacy x86 devices + * + * @pnpbios: this platform can have a PNPBIOS. If this is disabled the platform + * 	is known to never have a PNPBIOS. + * + * These are devices known to require LPC or ISA bus. The definition of legacy + * devices adheres to the ACPI 5.2.9.3 IA-PC Boot Architecture flag + * ACPI_FADT_LEGACY_DEVICES. These devices consist of user visible devices on + * the LPC or ISA bus. User visible devices are devices that have end-user + * accessible connectors (for example, LPT parallel port). Legacy devices on + * the LPC bus consist for example of serial and parallel ports, PS/2 keyboard + * / mouse, and the floppy disk controller. A system that lacks all known + * legacy devices can assume all devices can be detected exclusively via + * standard device enumeration mechanisms including the ACPI namespace. + * + * A system which has does not have ACPI_FADT_LEGACY_DEVICES enabled must not + * have any of the legacy devices enumerated below present. + */ +struct x86_legacy_devices { +	int pnpbios; +}; + +/** + * struct x86_legacy_features - legacy x86 features + * + * @rtc: this device has a CMOS real-time clock present + * @ebda_search: it's safe to search for the EBDA signature in the hardware's + * 	low RAM + * @devices: legacy x86 devices, refer to struct x86_legacy_devices + * 	documentation for further details. + */ +struct x86_legacy_features { +	int rtc; +	int ebda_search; +	struct x86_legacy_devices devices; +}; + +/**   * struct x86_platform_ops - platform specific runtime functions   * @calibrate_tsc:		calibrate TSC   * @get_wallclock:		get time from HW clock like RTC etc. @@ -152,6 +190,14 @@ struct timespec;   * @save_sched_clock_state:	save state for sched_clock() on suspend   * @restore_sched_clock_state:	restore state for sched_clock() on resume   * @apic_post_init:		adjust apic if neeeded + * @legacy:			legacy features + * @set_legacy_features:	override legacy features. Use of this callback + * 				is highly discouraged. You should only need + * 				this if your hardware platform requires further + * 				custom fine tuning far beyong what may be + * 				possible in x86_early_init_platform_quirks() by + * 				only using the current x86_hardware_subarch + * 				semantics.   */  struct x86_platform_ops {  	unsigned long (*calibrate_tsc)(void); @@ -165,6 +211,8 @@ struct x86_platform_ops {  	void (*save_sched_clock_state)(void);  	void (*restore_sched_clock_state)(void);  	void (*apic_post_init)(void); +	struct x86_legacy_features legacy; +	void (*set_legacy_features)(void);  };  struct pci_dev; @@ -186,6 +234,8 @@ extern struct x86_cpuinit_ops x86_cpuinit;  extern struct x86_platform_ops x86_platform;  extern struct x86_msi_ops x86_msi;  extern struct x86_io_apic_ops x86_io_apic_ops; + +extern void x86_early_init_platform_quirks(void);  extern void x86_init_noop(void);  extern void x86_init_uint_noop(unsigned int unused);  |