2009-08-19 14:48:38 +02:00
/*
* Copyright ( C ) 2009 Thomas Gleixner < tglx @ linutronix . de >
*
* For licencing details see kernel - base / COPYING
*/
# include <linux/init.h>
2009-08-29 17:51:26 +02:00
# include <linux/ioport.h>
2010-07-07 16:57:46 -07:00
# include <linux/module.h>
2010-10-06 16:12:28 -04:00
# include <linux/pci.h>
2009-08-19 14:48:38 +02:00
2009-08-19 14:36:27 +02:00
# include <asm/bios_ebda.h>
2009-08-20 13:19:57 +02:00
# include <asm/paravirt.h>
2009-08-29 16:24:51 +02:00
# include <asm/pci_x86.h>
2010-10-06 16:12:28 -04:00
# include <asm/pci.h>
2009-08-20 10:41:58 +02:00
# include <asm/mpspec.h>
2009-08-19 14:55:50 +02:00
# include <asm/setup.h>
2009-08-19 12:35:53 +02:00
# include <asm/apic.h>
2009-08-20 10:19:54 +02:00
# include <asm/e820.h>
2009-08-19 15:37:03 +02:00
# include <asm/time.h>
2009-08-20 09:41:38 +02:00
# include <asm/irq.h>
2009-11-19 14:23:41 -06:00
# include <asm/pat.h>
2009-08-20 17:06:25 +02:00
# include <asm/tsc.h>
2009-10-27 16:34:44 +09:00
# include <asm/iommu.h>
2011-11-10 13:43:05 +00:00
# include <asm/mach_traps.h>
2009-08-19 14:48:38 +02:00
void __cpuinit x86_init_noop ( void ) { }
2009-08-20 12:05:01 +02:00
void __init x86_init_uint_noop ( unsigned int unused ) { }
2009-08-20 14:30:02 +02:00
void __init x86_init_pgd_noop ( pgd_t * unused ) { }
2009-11-10 19:46:12 +09:00
int __init iommu_init_noop ( void ) { return 0 ; }
2009-11-16 11:44:30 +09:00
void iommu_shutdown_noop ( void ) { }
2011-11-10 13:42:02 +00:00
void wallclock_init_noop ( void ) { }
2009-08-19 14:48:38 +02:00
/*
* The platform setup functions are preset with the default functions
* for standard PC hardware .
*/
2009-09-16 08:42:26 +02:00
struct x86_init_ops x86_init __initdata = {
2009-08-19 14:43:56 +02:00
. resources = {
2011-03-08 10:36:19 -08:00
. probe_roms = probe_roms ,
2009-08-19 14:55:50 +02:00
. reserve_resources = reserve_standard_io_resources ,
2009-08-20 10:19:54 +02:00
. memory_setup = default_machine_specific_memory_setup ,
2009-08-19 14:43:56 +02:00
} ,
2009-08-20 12:05:01 +02:00
. mpparse = {
. mpc_record = x86_init_uint_noop ,
2009-08-20 09:27:29 +02:00
. setup_ioapic_ids = x86_init_noop ,
2009-08-20 10:41:58 +02:00
. mpc_apic_id = default_mpc_apic_id ,
2009-08-20 12:18:32 +02:00
. smp_read_mpc_oem = default_smp_read_mpc_oem ,
2009-08-20 12:34:47 +02:00
. mpc_oem_bus_info = default_mpc_oem_bus_info ,
2009-08-20 11:11:52 +02:00
. find_smp_config = default_find_smp_config ,
. get_smp_config = default_get_smp_config ,
2009-08-20 12:05:01 +02:00
} ,
2009-08-20 09:41:38 +02:00
. irqs = {
. pre_vector_init = init_ISA_irqs ,
2009-08-20 09:59:09 +02:00
. intr_init = native_init_IRQ ,
2009-08-20 10:35:46 +02:00
. trap_init = x86_init_noop ,
2009-08-20 09:41:38 +02:00
} ,
2009-08-20 13:04:10 +02:00
. oem = {
. arch_setup = x86_init_noop ,
2009-08-20 13:19:57 +02:00
. banner = default_banner ,
2009-08-20 13:04:10 +02:00
} ,
2009-08-20 14:30:02 +02:00
2011-04-14 15:49:41 +01:00
. mapping = {
. pagetable_reserve = native_pagetable_reserve ,
} ,
2009-08-20 14:30:02 +02:00
. paging = {
. pagetable_setup_start = native_pagetable_setup_start ,
. pagetable_setup_done = native_pagetable_setup_done ,
} ,
2009-08-19 12:35:53 +02:00
. timers = {
. setup_percpu_clockev = setup_boot_APIC_clock ,
2009-08-19 15:37:03 +02:00
. tsc_pre_init = x86_init_noop ,
. timer_init = hpet_time_init ,
2011-02-15 00:13:31 +08:00
. wallclock_init = x86_init_noop ,
2009-08-19 12:35:53 +02:00
} ,
2009-11-10 19:46:12 +09:00
. iommu = {
. iommu_init = iommu_init_noop ,
} ,
2009-08-29 16:24:51 +02:00
. pci = {
. init = x86_default_pci_init ,
2009-08-29 17:47:33 +02:00
. init_irq = x86_default_pci_init_irq ,
2009-08-29 17:51:26 +02:00
. fixup_irqs = x86_default_pci_fixup_irqs ,
2009-08-29 16:24:51 +02:00
} ,
2009-08-19 12:35:53 +02:00
} ;
2009-09-16 08:42:26 +02:00
struct x86_cpuinit_ops x86_cpuinit __cpuinitdata = {
2009-08-19 12:35:53 +02:00
. setup_percpu_clockev = setup_secondary_APIC_clock ,
2011-12-05 16:20:37 +08:00
. fixup_cpu_id = x86_default_fixup_cpu_id ,
2009-08-19 14:48:38 +02:00
} ;
2009-08-20 17:06:25 +02:00
2010-02-26 10:49:12 -06:00
static void default_nmi_init ( void ) { } ;
2010-07-05 23:03:18 +08:00
static int default_i8042_detect ( void ) { return 1 ; } ;
2010-02-26 10:49:12 -06:00
2009-08-20 17:06:25 +02:00
struct x86_platform_ops x86_platform = {
. calibrate_tsc = native_calibrate_tsc ,
2011-11-10 13:42:02 +00:00
. wallclock_init = wallclock_init_noop ,
2009-09-10 10:48:56 +08:00
. get_wallclock = mach_get_cmos_time ,
. set_wallclock = mach_set_rtc_mmss ,
2009-10-27 16:34:44 +09:00
. iommu_shutdown = iommu_shutdown_noop ,
2009-11-23 14:46:07 -08:00
. is_untracked_pat_range = is_ISA_range ,
2010-07-05 23:03:18 +08:00
. nmi_init = default_nmi_init ,
2011-11-10 13:43:05 +00:00
. get_nmi_reason = default_get_nmi_reason ,
2010-07-05 23:03:18 +08:00
. i8042_detect = default_i8042_detect
2009-08-20 17:06:25 +02:00
} ;
2010-07-07 16:57:46 -07:00
EXPORT_SYMBOL_GPL ( x86_platform ) ;
2010-10-06 16:12:28 -04:00
struct x86_msi_ops x86_msi = {
. setup_msi_irqs = native_setup_msi_irqs ,
. teardown_msi_irq = native_teardown_msi_irq ,
. teardown_msi_irqs = default_teardown_msi_irqs ,
2011-12-16 17:38:18 -05:00
. restore_msi_irqs = default_restore_msi_irqs ,
2010-10-06 16:12:28 -04:00
} ;