blob: 2833a873a903a08d2f3e26f1a57e98fbaa35026c [file] [log] [blame]
Thomas Gleixner57844a82009-08-19 14:48:38 +02001#ifndef _ASM_X86_PLATFORM_H
2#define _ASM_X86_PLATFORM_H
3
Thomas Gleixner52fdb562009-08-20 12:45:33 +02004struct mpc_bus;
Thomas Gleixnerfd6c6662009-08-20 10:41:58 +02005struct mpc_cpu;
Thomas Gleixner72302142009-08-20 12:18:32 +02006struct mpc_table;
Thomas Gleixnerfd6c6662009-08-20 10:41:58 +02007
Thomas Gleixner57844a82009-08-19 14:48:38 +02008/**
Thomas Gleixnerf4848472009-08-20 12:05:01 +02009 * struct x86_init_mpparse - platform specific mpparse ops
10 * @mpc_record: platform specific mpc record accounting
Thomas Gleixnerde934102009-08-20 09:27:29 +020011 * @setup_ioapic_ids: platform specific ioapic id override
Thomas Gleixnerfd6c6662009-08-20 10:41:58 +020012 * @mpc_apic_id: platform specific mpc apic id assignment
Thomas Gleixner72302142009-08-20 12:18:32 +020013 * @smp_read_mpc_oem: platform specific oem mpc table setup
Thomas Gleixner52fdb562009-08-20 12:45:33 +020014 * @mpc_oem_pci_bus: platform specific pci bus setup (default NULL)
Thomas Gleixner90e1c692009-08-20 12:34:47 +020015 * @mpc_oem_bus_info: platform specific mpc bus info
Thomas Gleixnerf4848472009-08-20 12:05:01 +020016 */
17struct x86_init_mpparse {
18 void (*mpc_record)(unsigned int mode);
Thomas Gleixnerde934102009-08-20 09:27:29 +020019 void (*setup_ioapic_ids)(void);
Thomas Gleixnerfd6c6662009-08-20 10:41:58 +020020 int (*mpc_apic_id)(struct mpc_cpu *m);
Thomas Gleixner72302142009-08-20 12:18:32 +020021 void (*smp_read_mpc_oem)(struct mpc_table *mpc);
Thomas Gleixner52fdb562009-08-20 12:45:33 +020022 void (*mpc_oem_pci_bus)(struct mpc_bus *m);
Thomas Gleixner90e1c692009-08-20 12:34:47 +020023 void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name);
Thomas Gleixnerf4848472009-08-20 12:05:01 +020024};
25
26/**
Thomas Gleixnerf7cf5a52009-08-19 14:43:56 +020027 * struct x86_init_resources - platform specific resource related ops
28 * @probe_roms: probe BIOS roms
Thomas Gleixner8fee6972009-08-19 14:55:50 +020029 * @reserve_resources: reserve the standard resources for the
30 * platform
Thomas Gleixner816c25e2009-08-19 14:36:27 +020031 * @reserve_ebda_region: reserve the extended bios data area
Thomas Gleixner6b18ae32009-08-20 10:19:54 +020032 * @memory_setup: platform specific memory setup
Thomas Gleixnerf7cf5a52009-08-19 14:43:56 +020033 *
34 */
35struct x86_init_resources {
36 void (*probe_roms)(void);
Thomas Gleixner8fee6972009-08-19 14:55:50 +020037 void (*reserve_resources)(void);
Thomas Gleixner816c25e2009-08-19 14:36:27 +020038 void (*reserve_ebda_region)(void);
Thomas Gleixner6b18ae32009-08-20 10:19:54 +020039 char *(*memory_setup)(void);
Thomas Gleixnerf7cf5a52009-08-19 14:43:56 +020040};
41
42/**
Thomas Gleixner57844a82009-08-19 14:48:38 +020043 * struct x86_init_ops - functions for platform specific setup
44 *
45 */
46struct x86_init_ops {
Thomas Gleixnerf4848472009-08-20 12:05:01 +020047 struct x86_init_resources resources;
48 struct x86_init_mpparse mpparse;
Thomas Gleixner57844a82009-08-19 14:48:38 +020049};
50
51extern struct x86_init_ops x86_init;
52
53extern void x86_init_noop(void);
Thomas Gleixnerf4848472009-08-20 12:05:01 +020054extern void x86_init_uint_noop(unsigned int unused);
Thomas Gleixner57844a82009-08-19 14:48:38 +020055
56#endif